UNPKG

miniorm

Version:

A lightweight, minimal TypeScript ORM & query‑builder for MySQL, PostgreSQL and SQLite

99 lines (98 loc) 2.77 kB
type Operator = ' =' | ' <' | ' >' | ' <=' | ' >=' | ' <>' | ' !='; type InOperator = ' IN '; type LikeOperator = ' LIKE ' | ' NOT LIKE '; type WithOperators<T> = { [K in keyof T as `${K & string}${Operator}`]?: T[K]; }; type WithInOperator<T> = { [K in keyof T as `${K & string}${InOperator}`]?: T[K][]; }; type WithLikeOperator<T> = { [K in keyof T as `${K & string}${LikeOperator}`]?: T[K] | string; }; export type WhereObject<T> = { [K in keyof T]?: T[K] | 'IS NULL' | 'IS NOT NULL'; } & WithOperators<T> & WithInOperator<T> & WithLikeOperator<T> & { _OR?: boolean; _AND?: boolean; }; export declare enum DatabaseColumnType { NULL = "NULL", INTEGER = "INTEGER", INT = "INT", TINYINT = "TINYINT", SMALLINT = "SMALLINT", MEDIUMINT = "MEDIUMINT", BIGINT = "BIGINT", UNSIGNED_BIG_INT = "UNSIGNED BIG INT", INT2 = "INT2", INT8 = "INT8", BIT = "BIT",// MySQL REAL = "REAL", DOUBLE = "DOUBLE", DOUBLE_PRECISION = "DOUBLE PRECISION", FLOAT = "FLOAT", TEXT = "TEXT", CHARACTER = "CHARACTER", CHAR = "CHAR", VARCHAR = "VARCHAR", VARYING_CHARACTER = "VARYING CHARACTER", NCHAR = "NCHAR", NATIVE_CHARACTER = "NATIVE CHARACTER", NVARCHAR = "NVARCHAR", CLOB = "CLOB", TINYTEXT = "TINYTEXT", MEDIUMTEXT = "MEDIUMTEXT", LONGTEXT = "LONGTEXT", NUMERIC = "NUMERIC", DECIMAL = "DECIMAL", BOOLEAN = "BOOLEAN", BOOL = "BOOL",// MySQL DATE = "DATE", DATETIME = "DATETIME", TIME = "TIME", TIMESTAMP = "TIMESTAMP", YEAR = "YEAR",// MySQL BLOB = "BLOB", BINARY = "BINARY", VARBINARY = "VARBINARY", TINYBLOB = "TINYBLOB", MEDIUMBLOB = "MEDIUMBLOB", LONGBLOB = "LONGBLOB", ENUM = "ENUM", SET = "SET", JSON = "JSON", GEOMETRY = "GEOMETRY", POINT = "POINT", LINESTRING = "LINESTRING", POLYGON = "POLYGON", MULTIPOINT = "MULTIPOINT", MULTILINESTRING = "MULTILINESTRING", MULTIPOLYGON = "MULTIPOLYGON", GEOMETRYCOLLECTION = "GEOMETRYCOLLECTION", ANY = "ANY" } export interface DatabaseColumn { name: string; type: keyof typeof DatabaseColumnType; primaryKey?: boolean; notNull?: boolean; unique?: boolean; defaultValue?: string | number | boolean | null; check?: string; length?: number; autoIncrement?: boolean; collate?: string; enum?: string[] | number[] | boolean[]; references?: { table: string; column: string; onDelete?: 'SET NULL' | 'SET DEFAULT' | 'RESTRICT' | 'NO ACTION' | 'CASCADE'; onUpdate?: 'SET NULL' | 'SET DEFAULT' | 'RESTRICT' | 'NO ACTION' | 'CASCADE'; }; } export interface SQLiteTable { name: string; columns: DatabaseColumn[]; } export {};