very-simple-orm
Version:
This is simple orm for typesript/javascript projects
123 lines (110 loc) • 2.48 kB
text/typescript
/** used in table cor creatation */
/**
* string and size
*/
interface StringType{
String : "String";
size ?:number ;
}
/**
* property number and autoincrement
*/
interface NumberType{
Number: "Number";
autoIncrement ?:Boolean;
}
/**
* enum and enum values
*/
interface EnumType {
Enum : "Enum";
enumValues : any[]
}
/**
* Date
*/
interface DateType {
Date: "Date";
}
/**
* DateTime
*/
interface DateTimeType{
DateTime : "DateTime";
}
/**
* Boolean
*/
interface BooleanType{
Boolean : "Boolean";
}
/**
* double
*/
interface DoubleType{
Double : "Double";
}
/**
* Text
*/
interface TextType{
Text : "Text";
}
interface CURRENT_TIMESTAMP_TYPE{
CURRENT_TIMESTAMP : "CURRENT_TIMESTAMP";
}
interface NULL_TYPE {
NULL : "NULL"
}
interface AS_DEFINED_TYPE {
AS_DEFINED : "AS DEFINED"
value : any
}
interface FIELD{
/**
* name of the field
*/
fieldName:string;
/**
* example type : {"String" : "string", "size" : 123}
*
* StringType has 'size' as one more property
*
* NumberType has 'autoIncrement' as one more property
*
* EnumType has "enumValues" as one more property
*/
type : StringType | NumberType | EnumType | DateType | DateTimeType|TextType | BooleanType | DoubleType | TextType
/**
* is the filed primery key
*/
PrimeryKey ?: boolean;
/**
* exaple { "AS_DEFINED_TYPE" : "AS_DEFINED_TYPE", value ; "India"}
* AS_DEFINED_TYPE has on property of value
*/
default ?: CURRENT_TIMESTAMP_TYPE | NULL_TYPE | AS_DEFINED_TYPE;
unique ?: boolean;
/**
* false means required
* true means not required
*/
null ?:boolean;
/**
* This is function is field validadtor before insert and update operations
* @fieldValue value is value of the current field use this inside your custom validadtion function
* return true if success or return false in faliure of validation
*/
validate ?: (fieldValue:any)=>boolean;
}
/**
* each field of table
/**
* Table interface
*/
interface TABLE{
tableName : string;
fields:FIELD[],
}
export type {TABLE, FIELD }
export type { StringType, NumberType, EnumType, DateType, DateTimeType,BooleanType, DoubleType, TextType, CURRENT_TIMESTAMP_TYPE, NULL_TYPE, AS_DEFINED_TYPE}