@hedystia/db 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cache/manager.cjs +23 -0
- package/dist/cache/manager.cjs.map +1 -1
- package/dist/cache/manager.d.cts +14 -0
- package/dist/cache/manager.d.mts +14 -0
- package/dist/cache/manager.mjs +23 -0
- package/dist/cache/manager.mjs.map +1 -1
- package/dist/cli/commands/migration.cjs +3 -2
- package/dist/cli/commands/migration.cjs.map +1 -1
- package/dist/cli/commands/migration.mjs +3 -2
- package/dist/cli/commands/migration.mjs.map +1 -1
- package/dist/core/database.cjs +9 -4
- package/dist/core/database.cjs.map +1 -1
- package/dist/core/database.d.cts +4 -9
- package/dist/core/database.d.mts +4 -9
- package/dist/core/database.mjs +9 -4
- package/dist/core/database.mjs.map +1 -1
- package/dist/core/repository.cjs +32 -10
- package/dist/core/repository.cjs.map +1 -1
- package/dist/core/repository.d.cts +8 -1
- package/dist/core/repository.d.mts +8 -1
- package/dist/core/repository.mjs +32 -10
- package/dist/core/repository.mjs.map +1 -1
- package/dist/drivers/sql-compiler.cjs +6 -0
- package/dist/drivers/sql-compiler.cjs.map +1 -1
- package/dist/drivers/sql-compiler.mjs +6 -0
- package/dist/drivers/sql-compiler.mjs.map +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/schema/column.cjs +2 -2
- package/dist/schema/column.cjs.map +1 -1
- package/dist/schema/column.d.cts +2 -2
- package/dist/schema/column.d.mts +2 -2
- package/dist/schema/column.mjs +2 -2
- package/dist/schema/column.mjs.map +1 -1
- package/dist/schema/columns/index.cjs +12 -0
- package/dist/schema/columns/index.cjs.map +1 -1
- package/dist/schema/columns/index.d.cts +10 -2
- package/dist/schema/columns/index.d.mts +10 -2
- package/dist/schema/columns/index.mjs +12 -1
- package/dist/schema/columns/index.mjs.map +1 -1
- package/dist/schema/table.cjs +2 -1
- package/dist/schema/table.cjs.map +1 -1
- package/dist/schema/table.d.cts +4 -2
- package/dist/schema/table.d.mts +4 -2
- package/dist/schema/table.mjs +2 -1
- package/dist/schema/table.mjs.map +1 -1
- package/dist/types.d.cts +101 -3
- package/dist/types.d.mts +101 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/schema/columns/index.ts"],"sourcesContent":["import { ColumnBuilder } from \"../column\";\n\n/**\n * Create an INTEGER column\n * @returns {ColumnBuilder<number>} Column builder for integer type\n */\nexport const integer = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"integer\");\n\n/**\n * Create a BIGINT column\n * @returns {ColumnBuilder<number>} Column builder for bigint type\n */\nexport const bigint = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"bigint\");\n\n/**\n * Create a VARCHAR column with specified length\n * @param {number} [length=255] - Maximum character length\n * @returns {ColumnBuilder<string>} Column builder for varchar type\n */\nexport const varchar = (length = 255): ColumnBuilder<string> =>\n new ColumnBuilder<string>(\"varchar\", length);\n\n/**\n * Create a CHAR column with specified length\n * @param {number} [length=1] - Fixed character length\n * @returns {ColumnBuilder<string>} Column builder for char type\n */\nexport const char = (length = 1): ColumnBuilder<string> =>\n new ColumnBuilder<string>(\"char\", length);\n\n/**\n * Create a TEXT column\n * @returns {ColumnBuilder<string>} Column builder for text type\n */\nexport const text = (): ColumnBuilder<string> => new ColumnBuilder<string>(\"text\");\n\n/**\n * Create a BOOLEAN column\n * @returns {ColumnBuilder<boolean>} Column builder for boolean type\n */\nexport const boolean = (): ColumnBuilder<boolean> => new ColumnBuilder<boolean>(\"boolean\");\n\n/**\n * Create a JSON column\n * @returns {ColumnBuilder<unknown>} Column builder for json type\n */\nexport const json = (): ColumnBuilder<unknown> => new ColumnBuilder<unknown>(\"json\");\n\n/**\n * Create a DATETIME column\n * @returns {ColumnBuilder<Date>} Column builder for datetime type\n */\nexport const datetime = (): ColumnBuilder<Date> => new ColumnBuilder<Date>(\"datetime\");\n\n/**\n * Create a TIMESTAMP column\n * @returns {ColumnBuilder<Date>} Column builder for timestamp type\n */\nexport const timestamp = (): ColumnBuilder<Date> => new ColumnBuilder<Date>(\"timestamp\");\n\n/**\n * Create a DECIMAL column with precision and scale\n * @param {number} [precision=10] - Total number of digits\n * @param {number} [scale=2] - Number of decimal digits\n * @returns {ColumnBuilder<number>} Column builder for decimal type\n */\nexport const decimal = (precision = 10, scale = 2): ColumnBuilder<number> =>\n new ColumnBuilder<number>(\"decimal\", undefined, precision, scale);\n\n/**\n * Create a FLOAT column\n * @returns {ColumnBuilder<number>} Column builder for float type\n */\nexport const float = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"float\");\n\n/**\n * Create a BLOB column\n * @returns {ColumnBuilder<Buffer>} Column builder for blob type\n */\nexport const blob = (): ColumnBuilder<Buffer> => new ColumnBuilder<Buffer>(\"blob\");\n\n/**\n * Starter class for creating columns with a pre-set database column name\n * @example\n * // Start with name, then pick column type\n * guildId: name(\"guild_id\").varchar(255)\n */\nexport class NamedColumnStarter {\n private _alias: string;\n\n constructor(alias: string) {\n this._alias = alias;\n }\n\n /** Create an INTEGER column with this database column name */\n integer(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"integer\").name(this._alias);\n }\n\n /** Create a BIGINT column with this database column name */\n bigint(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"bigint\").name(this._alias);\n }\n\n /** Create a VARCHAR column with this database column name\n * @param {number} [length=255] - Maximum character length\n */\n varchar(length = 255): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"varchar\", length).name(this._alias);\n }\n\n /** Create a CHAR column with this database column name\n * @param {number} [length=1] - Fixed character length\n */\n char(length = 1): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"char\", length).name(this._alias);\n }\n\n /** Create a TEXT column with this database column name */\n text(): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"text\").name(this._alias);\n }\n\n /** Create a BOOLEAN column with this database column name */\n boolean(): ColumnBuilder<boolean> {\n return new ColumnBuilder<boolean>(\"boolean\").name(this._alias);\n }\n\n /** Create a JSON column with this database column name */\n json(): ColumnBuilder<unknown> {\n return new ColumnBuilder<unknown>(\"json\").name(this._alias);\n }\n\n /** Create a DATETIME column with this database column name */\n datetime(): ColumnBuilder<Date> {\n return new ColumnBuilder<Date>(\"datetime\").name(this._alias);\n }\n\n /** Create a TIMESTAMP column with this database column name */\n timestamp(): ColumnBuilder<Date> {\n return new ColumnBuilder<Date>(\"timestamp\").name(this._alias);\n }\n\n /** Create a DECIMAL column with this database column name\n * @param {number} [precision=10] - Total number of digits\n * @param {number} [scale=2] - Number of decimal digits\n */\n decimal(precision = 10, scale = 2): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"decimal\", undefined, precision, scale).name(this._alias);\n }\n\n /** Create a FLOAT column with this database column name */\n float(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"float\").name(this._alias);\n }\n\n /** Create a BLOB column with this database column name */\n blob(): ColumnBuilder<Buffer> {\n return new ColumnBuilder<Buffer>(\"blob\").name(this._alias);\n }\n}\n\n/**\n * Create a column with a custom database column name, then pick the column type\n * @param {string} alias - The column name to use in the database\n * @returns {NamedColumnStarter} A starter object to pick the column type\n * @example\n * guildId: name(\"guild_id\").varchar(255).notNull()\n */\nexport const name = (alias: string): NamedColumnStarter => new NamedColumnStarter(alias);\n\n/**\n * Column type helpers object for schema definitions\n * @returns {typeof d} Column type helpers\n */\nexport const d = {\n integer,\n bigint,\n varchar,\n char,\n text,\n boolean,\n json,\n datetime,\n timestamp,\n decimal,\n float,\n blob,\n name,\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/schema/columns/index.ts"],"sourcesContent":["import { ColumnBuilder } from \"../column\";\n\n/**\n * Create an INTEGER column\n * @returns {ColumnBuilder<number>} Column builder for integer type\n */\nexport const integer = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"integer\");\n\n/**\n * Create a BIGINT column\n * @returns {ColumnBuilder<number>} Column builder for bigint type\n */\nexport const bigint = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"bigint\");\n\n/**\n * Create a VARCHAR column with specified length\n * @param {number} [length=255] - Maximum character length\n * @returns {ColumnBuilder<string>} Column builder for varchar type\n */\nexport const varchar = (length = 255): ColumnBuilder<string> =>\n new ColumnBuilder<string>(\"varchar\", length);\n\n/**\n * Create a CHAR column with specified length\n * @param {number} [length=1] - Fixed character length\n * @returns {ColumnBuilder<string>} Column builder for char type\n */\nexport const char = (length = 1): ColumnBuilder<string> =>\n new ColumnBuilder<string>(\"char\", length);\n\n/**\n * Create a TEXT column\n * @returns {ColumnBuilder<string>} Column builder for text type\n */\nexport const text = (): ColumnBuilder<string> => new ColumnBuilder<string>(\"text\");\n\n/**\n * Create a BOOLEAN column\n * @returns {ColumnBuilder<boolean>} Column builder for boolean type\n */\nexport const boolean = (): ColumnBuilder<boolean> => new ColumnBuilder<boolean>(\"boolean\");\n\n/**\n * Create a JSON column\n * @returns {ColumnBuilder<unknown>} Column builder for json type\n */\nexport const json = (): ColumnBuilder<unknown> => new ColumnBuilder<unknown>(\"json\");\n\n/**\n * Create an ARRAY column (stored as JSON)\n * @returns {ColumnBuilder<unknown[]>} Column builder for array type\n */\nexport const array = (): ColumnBuilder<unknown[]> => new ColumnBuilder<unknown[]>(\"array\");\n\n/**\n * Create a DATETIME column\n * @returns {ColumnBuilder<Date>} Column builder for datetime type\n */\nexport const datetime = (): ColumnBuilder<Date> => new ColumnBuilder<Date>(\"datetime\");\n\n/**\n * Create a TIMESTAMP column\n * @returns {ColumnBuilder<Date>} Column builder for timestamp type\n */\nexport const timestamp = (): ColumnBuilder<Date> => new ColumnBuilder<Date>(\"timestamp\");\n\n/**\n * Create a DECIMAL column with precision and scale\n * @param {number} [precision=10] - Total number of digits\n * @param {number} [scale=2] - Number of decimal digits\n * @returns {ColumnBuilder<number>} Column builder for decimal type\n */\nexport const decimal = (precision = 10, scale = 2): ColumnBuilder<number> =>\n new ColumnBuilder<number>(\"decimal\", undefined, precision, scale);\n\n/**\n * Create a FLOAT column\n * @returns {ColumnBuilder<number>} Column builder for float type\n */\nexport const float = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"float\");\n\n/**\n * Create a BLOB column\n * @returns {ColumnBuilder<Buffer>} Column builder for blob type\n */\nexport const blob = (): ColumnBuilder<Buffer> => new ColumnBuilder<Buffer>(\"blob\");\n\n/**\n * Starter class for creating columns with a pre-set database column name\n * @example\n * // Start with name, then pick column type\n * guildId: name(\"guild_id\").varchar(255)\n */\nexport class NamedColumnStarter {\n private _alias: string;\n\n constructor(alias: string) {\n this._alias = alias;\n }\n\n /** Create an INTEGER column with this database column name */\n integer(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"integer\").name(this._alias);\n }\n\n /** Create a BIGINT column with this database column name */\n bigint(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"bigint\").name(this._alias);\n }\n\n /** Create a VARCHAR column with this database column name\n * @param {number} [length=255] - Maximum character length\n */\n varchar(length = 255): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"varchar\", length).name(this._alias);\n }\n\n /** Create a CHAR column with this database column name\n * @param {number} [length=1] - Fixed character length\n */\n char(length = 1): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"char\", length).name(this._alias);\n }\n\n /** Create a TEXT column with this database column name */\n text(): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"text\").name(this._alias);\n }\n\n /** Create a BOOLEAN column with this database column name */\n boolean(): ColumnBuilder<boolean> {\n return new ColumnBuilder<boolean>(\"boolean\").name(this._alias);\n }\n\n /** Create a JSON column with this database column name */\n json(): ColumnBuilder<unknown> {\n return new ColumnBuilder<unknown>(\"json\").name(this._alias);\n }\n\n /** Create an ARRAY column with this database column name */\n array(): ColumnBuilder<unknown[]> {\n return new ColumnBuilder<unknown[]>(\"array\").name(this._alias);\n }\n\n /** Create a DATETIME column with this database column name */\n datetime(): ColumnBuilder<Date> {\n return new ColumnBuilder<Date>(\"datetime\").name(this._alias);\n }\n\n /** Create a TIMESTAMP column with this database column name */\n timestamp(): ColumnBuilder<Date> {\n return new ColumnBuilder<Date>(\"timestamp\").name(this._alias);\n }\n\n /** Create a DECIMAL column with this database column name\n * @param {number} [precision=10] - Total number of digits\n * @param {number} [scale=2] - Number of decimal digits\n */\n decimal(precision = 10, scale = 2): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"decimal\", undefined, precision, scale).name(this._alias);\n }\n\n /** Create a FLOAT column with this database column name */\n float(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"float\").name(this._alias);\n }\n\n /** Create a BLOB column with this database column name */\n blob(): ColumnBuilder<Buffer> {\n return new ColumnBuilder<Buffer>(\"blob\").name(this._alias);\n }\n}\n\n/**\n * Create a column with a custom database column name, then pick the column type\n * @param {string} alias - The column name to use in the database\n * @returns {NamedColumnStarter} A starter object to pick the column type\n * @example\n * guildId: name(\"guild_id\").varchar(255).notNull()\n */\nexport const name = (alias: string): NamedColumnStarter => new NamedColumnStarter(alias);\n\n/**\n * Column type helpers object for schema definitions\n * @returns {typeof d} Column type helpers\n */\nexport const d = {\n integer,\n bigint,\n varchar,\n char,\n text,\n boolean,\n json,\n array,\n datetime,\n timestamp,\n decimal,\n float,\n blob,\n name,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAa,gBAAuC,IAAI,cAAsB,UAAU;;;;;AAMxF,MAAa,eAAsC,IAAI,cAAsB,SAAS;;;;;;AAOtF,MAAa,WAAW,SAAS,QAC/B,IAAI,cAAsB,WAAW,OAAO;;;;;;AAO9C,MAAa,QAAQ,SAAS,MAC5B,IAAI,cAAsB,QAAQ,OAAO;;;;;AAM3C,MAAa,aAAoC,IAAI,cAAsB,OAAO;;;;;AAMlF,MAAa,gBAAwC,IAAI,cAAuB,UAAU;;;;;AAM1F,MAAa,aAAqC,IAAI,cAAuB,OAAO;;;;;AAMpF,MAAa,cAAwC,IAAI,cAAyB,QAAQ;;;;;AAM1F,MAAa,iBAAsC,IAAI,cAAoB,WAAW;;;;;AAMtF,MAAa,kBAAuC,IAAI,cAAoB,YAAY;;;;;;;AAQxF,MAAa,WAAW,YAAY,IAAI,QAAQ,MAC9C,IAAI,cAAsB,WAAW,KAAA,GAAW,WAAW,MAAM;;;;;AAMnE,MAAa,cAAqC,IAAI,cAAsB,QAAQ;;;;;AAMpF,MAAa,aAAoC,IAAI,cAAsB,OAAO;;;;;;;AAQlF,IAAa,qBAAb,MAAgC;CAC9B;CAEA,YAAY,OAAe;AACzB,OAAK,SAAS;;;CAIhB,UAAiC;AAC/B,SAAO,IAAI,cAAsB,UAAU,CAAC,KAAK,KAAK,OAAO;;;CAI/D,SAAgC;AAC9B,SAAO,IAAI,cAAsB,SAAS,CAAC,KAAK,KAAK,OAAO;;;;;CAM9D,QAAQ,SAAS,KAA4B;AAC3C,SAAO,IAAI,cAAsB,WAAW,OAAO,CAAC,KAAK,KAAK,OAAO;;;;;CAMvE,KAAK,SAAS,GAA0B;AACtC,SAAO,IAAI,cAAsB,QAAQ,OAAO,CAAC,KAAK,KAAK,OAAO;;;CAIpE,OAA8B;AAC5B,SAAO,IAAI,cAAsB,OAAO,CAAC,KAAK,KAAK,OAAO;;;CAI5D,UAAkC;AAChC,SAAO,IAAI,cAAuB,UAAU,CAAC,KAAK,KAAK,OAAO;;;CAIhE,OAA+B;AAC7B,SAAO,IAAI,cAAuB,OAAO,CAAC,KAAK,KAAK,OAAO;;;CAI7D,QAAkC;AAChC,SAAO,IAAI,cAAyB,QAAQ,CAAC,KAAK,KAAK,OAAO;;;CAIhE,WAAgC;AAC9B,SAAO,IAAI,cAAoB,WAAW,CAAC,KAAK,KAAK,OAAO;;;CAI9D,YAAiC;AAC/B,SAAO,IAAI,cAAoB,YAAY,CAAC,KAAK,KAAK,OAAO;;;;;;CAO/D,QAAQ,YAAY,IAAI,QAAQ,GAA0B;AACxD,SAAO,IAAI,cAAsB,WAAW,KAAA,GAAW,WAAW,MAAM,CAAC,KAAK,KAAK,OAAO;;;CAI5F,QAA+B;AAC7B,SAAO,IAAI,cAAsB,QAAQ,CAAC,KAAK,KAAK,OAAO;;;CAI7D,OAA8B;AAC5B,SAAO,IAAI,cAAsB,OAAO,CAAC,KAAK,KAAK,OAAO;;;;;;;;;;AAW9D,MAAa,QAAQ,UAAsC,IAAI,mBAAmB,MAAM;;;;;AAMxF,MAAa,IAAI;CACf;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
|
package/dist/schema/table.cjs
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @param {Record<string, ColumnBuilder<any>>} columns - Column definitions
|
|
6
6
|
* @returns {TableDefinition<T, C>} The table definition object with column accessors
|
|
7
7
|
*/
|
|
8
|
-
function table(name, columns) {
|
|
8
|
+
function table(name, columns, options) {
|
|
9
9
|
const columnsArray = [];
|
|
10
10
|
const deferredRefs = [];
|
|
11
11
|
const columnMap = {};
|
|
@@ -29,6 +29,7 @@ function table(name, columns) {
|
|
|
29
29
|
__name: name,
|
|
30
30
|
__columns: columnsArray,
|
|
31
31
|
__columnMap: columnMap,
|
|
32
|
+
__cache: options?.cache,
|
|
32
33
|
__deferredRefs: deferredRefs,
|
|
33
34
|
...columns
|
|
34
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.cjs","names":[],"sources":["../../src/schema/table.ts"],"sourcesContent":["import type { ColumnMetadata, DeferredRefMeta, TableDefinition } from \"../types\";\nimport type { ColumnBuilder } from \"./column\";\n\ntype BindColumn<C, TableName extends string, ColName extends string> =\n C extends ColumnBuilder<infer T, any, any, infer Ref>\n ? ColumnBuilder<\n T,\n TableName,\n ColName,\n Ref extends DeferredRefMeta<any, infer ToTable, infer ToColumn, infer RelName>\n ? DeferredRefMeta<ColName, ToTable, ToColumn, RelName>\n : never\n >\n : never;\n\ntype BoundColumns<C extends Record<string, ColumnBuilder<any, any, any, any>>, N extends string> = {\n [K in keyof C]: BindColumn<C[K], N, Extract<K, string>>;\n};\n\ntype ExtractDeferredRefs<C extends Record<string, ColumnBuilder<any, any, any, any>>> = {\n [K in keyof C]: C[K] extends ColumnBuilder<any, any, any, infer Ref> ? Ref : never;\n}[keyof C];\n\n/**\n * Define a database table with its columns\n * @param {string} name - The table name\n * @param {Record<string, ColumnBuilder<any>>} columns - Column definitions\n * @returns {TableDefinition<T, C>} The table definition object with column accessors\n */\nexport function table<\n N extends string,\n C extends Record<string, ColumnBuilder<any, any, any, any>>,\n>(\n name: N,\n columns: C,\n): TableDefinition<\n { [K in keyof C]: C[K][\"__type\"] },\n BoundColumns<C, N>,\n N,\n ExtractDeferredRefs<BoundColumns<C, N>>\n> {\n const columnsArray: ColumnMetadata[] = [];\n const deferredRefs: TableDefinition[\"__deferredRefs\"] = [];\n const columnMap: Record<string, string> = {};\n\n for (const [key, builder] of Object.entries(columns)) {\n const meta = builder.__build(key);\n columnsArray.push(meta);\n columnMap[key] = meta.name;\n\n const ref = builder.__getDeferredRef();\n if (ref) {\n deferredRefs.push({\n columnName: key,\n resolve: ref.resolve,\n onDelete: ref.onDelete,\n onUpdate: ref.onUpdate,\n relationName: ref.relationName,\n });\n }\n\n (builder as any).__tableName = name;\n (builder as any).__columnName = key;\n }\n\n const def = {\n __table: true,\n __name: name,\n __columns: columnsArray,\n __columnMap: columnMap,\n __deferredRefs: deferredRefs,\n ...columns,\n };\n\n return def as any;\n}\n"],"mappings":";;;;;;;AA6BA,SAAgB,MAId,MACA,SAMA;CACA,MAAM,eAAiC,EAAE;CACzC,MAAM,eAAkD,EAAE;CAC1D,MAAM,YAAoC,EAAE;AAE5C,MAAK,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,QAAQ,EAAE;EACpD,MAAM,OAAO,QAAQ,QAAQ,IAAI;AACjC,eAAa,KAAK,KAAK;AACvB,YAAU,OAAO,KAAK;EAEtB,MAAM,MAAM,QAAQ,kBAAkB;AACtC,MAAI,IACF,cAAa,KAAK;GAChB,YAAY;GACZ,SAAS,IAAI;GACb,UAAU,IAAI;GACd,UAAU,IAAI;GACd,cAAc,IAAI;GACnB,CAAC;AAGH,UAAgB,cAAc;AAC9B,UAAgB,eAAe;;
|
|
1
|
+
{"version":3,"file":"table.cjs","names":[],"sources":["../../src/schema/table.ts"],"sourcesContent":["import type { ColumnMetadata, DeferredRefMeta, TableCacheConfig, TableDefinition } from \"../types\";\nimport type { ColumnBuilder } from \"./column\";\n\ntype BindColumn<C, TableName extends string, ColName extends string> =\n C extends ColumnBuilder<infer T, any, any, infer Ref>\n ? ColumnBuilder<\n T,\n TableName,\n ColName,\n Ref extends DeferredRefMeta<any, infer ToTable, infer ToColumn, infer RelName>\n ? DeferredRefMeta<ColName, ToTable, ToColumn, RelName>\n : never\n >\n : never;\n\ntype BoundColumns<C extends Record<string, ColumnBuilder<any, any, any, any>>, N extends string> = {\n [K in keyof C]: BindColumn<C[K], N, Extract<K, string>>;\n};\n\ntype ExtractDeferredRefs<C extends Record<string, ColumnBuilder<any, any, any, any>>> = {\n [K in keyof C]: C[K] extends ColumnBuilder<any, any, any, infer Ref> ? Ref : never;\n}[keyof C];\n\n/**\n * Define a database table with its columns\n * @param {string} name - The table name\n * @param {Record<string, ColumnBuilder<any>>} columns - Column definitions\n * @returns {TableDefinition<T, C>} The table definition object with column accessors\n */\nexport function table<\n N extends string,\n C extends Record<string, ColumnBuilder<any, any, any, any>>,\n>(\n name: N,\n columns: C,\n options?: { cache?: TableCacheConfig },\n): TableDefinition<\n { [K in keyof C]: C[K][\"__type\"] },\n BoundColumns<C, N>,\n N,\n ExtractDeferredRefs<BoundColumns<C, N>>\n> {\n const columnsArray: ColumnMetadata[] = [];\n const deferredRefs: TableDefinition[\"__deferredRefs\"] = [];\n const columnMap: Record<string, string> = {};\n\n for (const [key, builder] of Object.entries(columns)) {\n const meta = builder.__build(key);\n columnsArray.push(meta);\n columnMap[key] = meta.name;\n\n const ref = builder.__getDeferredRef();\n if (ref) {\n deferredRefs.push({\n columnName: key,\n resolve: ref.resolve,\n onDelete: ref.onDelete,\n onUpdate: ref.onUpdate,\n relationName: ref.relationName,\n });\n }\n\n (builder as any).__tableName = name;\n (builder as any).__columnName = key;\n }\n\n const def = {\n __table: true,\n __name: name,\n __columns: columnsArray,\n __columnMap: columnMap,\n __cache: options?.cache,\n __deferredRefs: deferredRefs,\n ...columns,\n };\n\n return def as any;\n}\n"],"mappings":";;;;;;;AA6BA,SAAgB,MAId,MACA,SACA,SAMA;CACA,MAAM,eAAiC,EAAE;CACzC,MAAM,eAAkD,EAAE;CAC1D,MAAM,YAAoC,EAAE;AAE5C,MAAK,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,QAAQ,EAAE;EACpD,MAAM,OAAO,QAAQ,QAAQ,IAAI;AACjC,eAAa,KAAK,KAAK;AACvB,YAAU,OAAO,KAAK;EAEtB,MAAM,MAAM,QAAQ,kBAAkB;AACtC,MAAI,IACF,cAAa,KAAK;GAChB,YAAY;GACZ,SAAS,IAAI;GACb,UAAU,IAAI;GACd,UAAU,IAAI;GACd,cAAc,IAAI;GACnB,CAAC;AAGH,UAAgB,cAAc;AAC9B,UAAgB,eAAe;;AAalC,QAVY;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,SAAS,SAAS;EAClB,gBAAgB;EAChB,GAAG;EACJ"}
|
package/dist/schema/table.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DeferredRefMeta, TableDefinition } from "../types.cjs";
|
|
1
|
+
import { DeferredRefMeta, TableCacheConfig, TableDefinition } from "../types.cjs";
|
|
2
2
|
import { ColumnBuilder } from "./column.cjs";
|
|
3
3
|
|
|
4
4
|
//#region src/schema/table.d.ts
|
|
@@ -11,7 +11,9 @@ type ExtractDeferredRefs<C extends Record<string, ColumnBuilder<any, any, any, a
|
|
|
11
11
|
* @param {Record<string, ColumnBuilder<any>>} columns - Column definitions
|
|
12
12
|
* @returns {TableDefinition<T, C>} The table definition object with column accessors
|
|
13
13
|
*/
|
|
14
|
-
declare function table<N extends string, C extends Record<string, ColumnBuilder<any, any, any, any>>>(name: N, columns: C
|
|
14
|
+
declare function table<N extends string, C extends Record<string, ColumnBuilder<any, any, any, any>>>(name: N, columns: C, options?: {
|
|
15
|
+
cache?: TableCacheConfig;
|
|
16
|
+
}): TableDefinition<{ [K in keyof C]: C[K]["__type"] }, BoundColumns<C, N>, N, ExtractDeferredRefs<BoundColumns<C, N>>>;
|
|
15
17
|
//#endregion
|
|
16
18
|
export { table };
|
|
17
19
|
//# sourceMappingURL=table.d.cts.map
|
package/dist/schema/table.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DeferredRefMeta, TableDefinition } from "../types.mjs";
|
|
1
|
+
import { DeferredRefMeta, TableCacheConfig, TableDefinition } from "../types.mjs";
|
|
2
2
|
import { ColumnBuilder } from "./column.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/schema/table.d.ts
|
|
@@ -11,7 +11,9 @@ type ExtractDeferredRefs<C extends Record<string, ColumnBuilder<any, any, any, a
|
|
|
11
11
|
* @param {Record<string, ColumnBuilder<any>>} columns - Column definitions
|
|
12
12
|
* @returns {TableDefinition<T, C>} The table definition object with column accessors
|
|
13
13
|
*/
|
|
14
|
-
declare function table<N extends string, C extends Record<string, ColumnBuilder<any, any, any, any>>>(name: N, columns: C
|
|
14
|
+
declare function table<N extends string, C extends Record<string, ColumnBuilder<any, any, any, any>>>(name: N, columns: C, options?: {
|
|
15
|
+
cache?: TableCacheConfig;
|
|
16
|
+
}): TableDefinition<{ [K in keyof C]: C[K]["__type"] }, BoundColumns<C, N>, N, ExtractDeferredRefs<BoundColumns<C, N>>>;
|
|
15
17
|
//#endregion
|
|
16
18
|
export { table };
|
|
17
19
|
//# sourceMappingURL=table.d.mts.map
|
package/dist/schema/table.mjs
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @param {Record<string, ColumnBuilder<any>>} columns - Column definitions
|
|
6
6
|
* @returns {TableDefinition<T, C>} The table definition object with column accessors
|
|
7
7
|
*/
|
|
8
|
-
function table(name, columns) {
|
|
8
|
+
function table(name, columns, options) {
|
|
9
9
|
const columnsArray = [];
|
|
10
10
|
const deferredRefs = [];
|
|
11
11
|
const columnMap = {};
|
|
@@ -29,6 +29,7 @@ function table(name, columns) {
|
|
|
29
29
|
__name: name,
|
|
30
30
|
__columns: columnsArray,
|
|
31
31
|
__columnMap: columnMap,
|
|
32
|
+
__cache: options?.cache,
|
|
32
33
|
__deferredRefs: deferredRefs,
|
|
33
34
|
...columns
|
|
34
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.mjs","names":[],"sources":["../../src/schema/table.ts"],"sourcesContent":["import type { ColumnMetadata, DeferredRefMeta, TableDefinition } from \"../types\";\nimport type { ColumnBuilder } from \"./column\";\n\ntype BindColumn<C, TableName extends string, ColName extends string> =\n C extends ColumnBuilder<infer T, any, any, infer Ref>\n ? ColumnBuilder<\n T,\n TableName,\n ColName,\n Ref extends DeferredRefMeta<any, infer ToTable, infer ToColumn, infer RelName>\n ? DeferredRefMeta<ColName, ToTable, ToColumn, RelName>\n : never\n >\n : never;\n\ntype BoundColumns<C extends Record<string, ColumnBuilder<any, any, any, any>>, N extends string> = {\n [K in keyof C]: BindColumn<C[K], N, Extract<K, string>>;\n};\n\ntype ExtractDeferredRefs<C extends Record<string, ColumnBuilder<any, any, any, any>>> = {\n [K in keyof C]: C[K] extends ColumnBuilder<any, any, any, infer Ref> ? Ref : never;\n}[keyof C];\n\n/**\n * Define a database table with its columns\n * @param {string} name - The table name\n * @param {Record<string, ColumnBuilder<any>>} columns - Column definitions\n * @returns {TableDefinition<T, C>} The table definition object with column accessors\n */\nexport function table<\n N extends string,\n C extends Record<string, ColumnBuilder<any, any, any, any>>,\n>(\n name: N,\n columns: C,\n): TableDefinition<\n { [K in keyof C]: C[K][\"__type\"] },\n BoundColumns<C, N>,\n N,\n ExtractDeferredRefs<BoundColumns<C, N>>\n> {\n const columnsArray: ColumnMetadata[] = [];\n const deferredRefs: TableDefinition[\"__deferredRefs\"] = [];\n const columnMap: Record<string, string> = {};\n\n for (const [key, builder] of Object.entries(columns)) {\n const meta = builder.__build(key);\n columnsArray.push(meta);\n columnMap[key] = meta.name;\n\n const ref = builder.__getDeferredRef();\n if (ref) {\n deferredRefs.push({\n columnName: key,\n resolve: ref.resolve,\n onDelete: ref.onDelete,\n onUpdate: ref.onUpdate,\n relationName: ref.relationName,\n });\n }\n\n (builder as any).__tableName = name;\n (builder as any).__columnName = key;\n }\n\n const def = {\n __table: true,\n __name: name,\n __columns: columnsArray,\n __columnMap: columnMap,\n __deferredRefs: deferredRefs,\n ...columns,\n };\n\n return def as any;\n}\n"],"mappings":";;;;;;;AA6BA,SAAgB,MAId,MACA,SAMA;CACA,MAAM,eAAiC,EAAE;CACzC,MAAM,eAAkD,EAAE;CAC1D,MAAM,YAAoC,EAAE;AAE5C,MAAK,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,QAAQ,EAAE;EACpD,MAAM,OAAO,QAAQ,QAAQ,IAAI;AACjC,eAAa,KAAK,KAAK;AACvB,YAAU,OAAO,KAAK;EAEtB,MAAM,MAAM,QAAQ,kBAAkB;AACtC,MAAI,IACF,cAAa,KAAK;GAChB,YAAY;GACZ,SAAS,IAAI;GACb,UAAU,IAAI;GACd,UAAU,IAAI;GACd,cAAc,IAAI;GACnB,CAAC;AAGH,UAAgB,cAAc;AAC9B,UAAgB,eAAe;;
|
|
1
|
+
{"version":3,"file":"table.mjs","names":[],"sources":["../../src/schema/table.ts"],"sourcesContent":["import type { ColumnMetadata, DeferredRefMeta, TableCacheConfig, TableDefinition } from \"../types\";\nimport type { ColumnBuilder } from \"./column\";\n\ntype BindColumn<C, TableName extends string, ColName extends string> =\n C extends ColumnBuilder<infer T, any, any, infer Ref>\n ? ColumnBuilder<\n T,\n TableName,\n ColName,\n Ref extends DeferredRefMeta<any, infer ToTable, infer ToColumn, infer RelName>\n ? DeferredRefMeta<ColName, ToTable, ToColumn, RelName>\n : never\n >\n : never;\n\ntype BoundColumns<C extends Record<string, ColumnBuilder<any, any, any, any>>, N extends string> = {\n [K in keyof C]: BindColumn<C[K], N, Extract<K, string>>;\n};\n\ntype ExtractDeferredRefs<C extends Record<string, ColumnBuilder<any, any, any, any>>> = {\n [K in keyof C]: C[K] extends ColumnBuilder<any, any, any, infer Ref> ? Ref : never;\n}[keyof C];\n\n/**\n * Define a database table with its columns\n * @param {string} name - The table name\n * @param {Record<string, ColumnBuilder<any>>} columns - Column definitions\n * @returns {TableDefinition<T, C>} The table definition object with column accessors\n */\nexport function table<\n N extends string,\n C extends Record<string, ColumnBuilder<any, any, any, any>>,\n>(\n name: N,\n columns: C,\n options?: { cache?: TableCacheConfig },\n): TableDefinition<\n { [K in keyof C]: C[K][\"__type\"] },\n BoundColumns<C, N>,\n N,\n ExtractDeferredRefs<BoundColumns<C, N>>\n> {\n const columnsArray: ColumnMetadata[] = [];\n const deferredRefs: TableDefinition[\"__deferredRefs\"] = [];\n const columnMap: Record<string, string> = {};\n\n for (const [key, builder] of Object.entries(columns)) {\n const meta = builder.__build(key);\n columnsArray.push(meta);\n columnMap[key] = meta.name;\n\n const ref = builder.__getDeferredRef();\n if (ref) {\n deferredRefs.push({\n columnName: key,\n resolve: ref.resolve,\n onDelete: ref.onDelete,\n onUpdate: ref.onUpdate,\n relationName: ref.relationName,\n });\n }\n\n (builder as any).__tableName = name;\n (builder as any).__columnName = key;\n }\n\n const def = {\n __table: true,\n __name: name,\n __columns: columnsArray,\n __columnMap: columnMap,\n __cache: options?.cache,\n __deferredRefs: deferredRefs,\n ...columns,\n };\n\n return def as any;\n}\n"],"mappings":";;;;;;;AA6BA,SAAgB,MAId,MACA,SACA,SAMA;CACA,MAAM,eAAiC,EAAE;CACzC,MAAM,eAAkD,EAAE;CAC1D,MAAM,YAAoC,EAAE;AAE5C,MAAK,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,QAAQ,EAAE;EACpD,MAAM,OAAO,QAAQ,QAAQ,IAAI;AACjC,eAAa,KAAK,KAAK;AACvB,YAAU,OAAO,KAAK;EAEtB,MAAM,MAAM,QAAQ,kBAAkB;AACtC,MAAI,IACF,cAAa,KAAK;GAChB,YAAY;GACZ,SAAS,IAAI;GACb,UAAU,IAAI;GACd,UAAU,IAAI;GACd,cAAc,IAAI;GACnB,CAAC;AAGH,UAAgB,cAAc;AAC9B,UAAgB,eAAe;;AAalC,QAVY;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,SAAS,SAAS;EAClB,gBAAgB;EAChB,GAAG;EACJ"}
|
package/dist/types.d.cts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
//#region src/types.d.ts
|
|
2
|
-
|
|
2
|
+
/** Supported column data types for schema definitions */
|
|
3
|
+
type ColumnDataType = "integer" | "varchar" | "text" | "boolean" | "json" | "array" | "datetime" | "decimal" | "float" | "char" | "timestamp" | "bigint" | "blob";
|
|
4
|
+
/**
|
|
5
|
+
* Database type identifier — can be a simple string shorthand or an object
|
|
6
|
+
* specifying both the database name and the driver provider to use
|
|
7
|
+
*/
|
|
3
8
|
type DatabaseType = "mysql" | "mariadb" | "sqlite" | "file" | {
|
|
4
9
|
name: "mysql";
|
|
5
10
|
provider: "mysql" | "mysql2";
|
|
@@ -13,18 +18,31 @@ type DatabaseType = "mysql" | "mariadb" | "sqlite" | "file" | {
|
|
|
13
18
|
name: "file";
|
|
14
19
|
provider: string;
|
|
15
20
|
};
|
|
21
|
+
/** Metadata describing a single database column */
|
|
16
22
|
interface ColumnMetadata {
|
|
23
|
+
/** Column name in the database */
|
|
17
24
|
name: string;
|
|
25
|
+
/** Data type of the column */
|
|
18
26
|
type: ColumnDataType;
|
|
27
|
+
/** Whether this column is a primary key */
|
|
19
28
|
primaryKey: boolean;
|
|
29
|
+
/** Whether this column auto-increments */
|
|
20
30
|
autoIncrement: boolean;
|
|
31
|
+
/** Whether this column disallows NULL values */
|
|
21
32
|
notNull: boolean;
|
|
33
|
+
/** Whether this column has a UNIQUE constraint */
|
|
22
34
|
unique: boolean;
|
|
35
|
+
/** Default value for the column, or `undefined` if none */
|
|
23
36
|
defaultValue: unknown;
|
|
37
|
+
/** Maximum character length (for varchar/char types) */
|
|
24
38
|
length?: number;
|
|
39
|
+
/** Total number of digits (for decimal types) */
|
|
25
40
|
precision?: number;
|
|
41
|
+
/** Number of decimal digits (for decimal types) */
|
|
26
42
|
scale?: number;
|
|
43
|
+
/** Custom database column name alias, if different from the property key */
|
|
27
44
|
columnAlias?: string;
|
|
45
|
+
/** Foreign key reference metadata, resolved after registration */
|
|
28
46
|
references?: {
|
|
29
47
|
table: string;
|
|
30
48
|
column: string;
|
|
@@ -33,11 +51,16 @@ interface ColumnMetadata {
|
|
|
33
51
|
relationName?: string;
|
|
34
52
|
};
|
|
35
53
|
}
|
|
54
|
+
/** Action to take when a referenced row is deleted or updated */
|
|
36
55
|
type ReferenceAction = "CASCADE" | "SET NULL" | "RESTRICT" | "NO ACTION";
|
|
56
|
+
/** Metadata describing a database table and its columns */
|
|
37
57
|
interface TableMetadata {
|
|
58
|
+
/** Table name in the database */
|
|
38
59
|
name: string;
|
|
60
|
+
/** Array of column metadata for this table */
|
|
39
61
|
columns: ColumnMetadata[];
|
|
40
62
|
}
|
|
63
|
+
/** Deferred foreign key reference metadata, used internally for lazy resolution */
|
|
41
64
|
type DeferredRefMeta<ColumnName extends string = string, TargetTable extends string = string, TargetColumn extends string = string, RelationName extends string | undefined = string | undefined> = {
|
|
42
65
|
columnName: ColumnName;
|
|
43
66
|
targetTable: TargetTable;
|
|
@@ -46,6 +69,10 @@ type DeferredRefMeta<ColumnName extends string = string, TargetTable extends str
|
|
|
46
69
|
onDelete?: ReferenceAction;
|
|
47
70
|
onUpdate?: ReferenceAction;
|
|
48
71
|
};
|
|
72
|
+
/**
|
|
73
|
+
* Internal representation of a table schema, including column metadata,
|
|
74
|
+
* deferred references, and optional per-table cache configuration
|
|
75
|
+
*/
|
|
49
76
|
type TableDefinition<T extends Record<string, any> = Record<string, any>, C extends Record<string, any> = {}, N extends string = string, Refs extends DeferredRefMeta = any> = {
|
|
50
77
|
__table: true;
|
|
51
78
|
__name: N;
|
|
@@ -53,6 +80,7 @@ type TableDefinition<T extends Record<string, any> = Record<string, any>, C exte
|
|
|
53
80
|
__refs: Refs;
|
|
54
81
|
__columns: ColumnMetadata[];
|
|
55
82
|
__columnMap: Record<string, string>;
|
|
83
|
+
__cache?: TableCacheConfig;
|
|
56
84
|
__deferredRefs: Array<{
|
|
57
85
|
columnName: string;
|
|
58
86
|
resolve: () => {
|
|
@@ -64,12 +92,16 @@ type TableDefinition<T extends Record<string, any> = Record<string, any>, C exte
|
|
|
64
92
|
relationName?: string;
|
|
65
93
|
}>;
|
|
66
94
|
} & C;
|
|
95
|
+
/** Extract the row type from a table definition */
|
|
67
96
|
type InferRow<T> = T extends {
|
|
68
97
|
__row: infer R;
|
|
69
98
|
} ? R : never;
|
|
99
|
+
/** Extract the insertable type from a table definition (auto-increment keys become optional) */
|
|
70
100
|
type InferInsert<T> = T extends TableDefinition<infer R, any, any> ? { [K in keyof R as K extends AutoIncrementKeys<T> ? never : K]: R[K] } & { [K in AutoIncrementKeys<T>]?: R[K] } : never;
|
|
71
101
|
type AutoIncrementKeys<T> = T extends TableDefinition<infer R, any, any> ? keyof R : never;
|
|
102
|
+
/** Extract the updatable type from a table definition (all fields become optional) */
|
|
72
103
|
type InferUpdate<T> = T extends TableDefinition<infer R, any, any> ? Partial<R> : never;
|
|
104
|
+
/** Condition operators for a single column in a WHERE clause */
|
|
73
105
|
interface WhereCondition {
|
|
74
106
|
eq?: unknown;
|
|
75
107
|
neq?: unknown;
|
|
@@ -84,25 +116,38 @@ interface WhereCondition {
|
|
|
84
116
|
isNull?: boolean;
|
|
85
117
|
between?: [unknown, unknown];
|
|
86
118
|
}
|
|
119
|
+
/** Type-safe WHERE clause supporting equality, operators, and logical combinators (OR/AND) */
|
|
87
120
|
type WhereClause<T = Record<string, any>> = { [K in keyof T]?: T[K] | WhereCondition } & {
|
|
88
121
|
OR?: WhereClause<T>[];
|
|
89
122
|
AND?: WhereClause<T>[];
|
|
90
123
|
};
|
|
124
|
+
/** Options for querying rows — filtering, sorting, pagination, and relation loading */
|
|
91
125
|
interface QueryOptions<T = Record<string, any>, Rel extends Record<string, any> = {}> {
|
|
126
|
+
/** Filter conditions */
|
|
92
127
|
where?: WhereClause<T>;
|
|
128
|
+
/** Columns to include in the result */
|
|
93
129
|
select?: Extract<keyof T, string>[];
|
|
130
|
+
/** Sort order for results */
|
|
94
131
|
orderBy?: Partial<Record<Extract<keyof T, string>, "asc" | "desc">>;
|
|
132
|
+
/** Maximum number of rows to return */
|
|
95
133
|
take?: number;
|
|
134
|
+
/** Number of rows to skip (for pagination) */
|
|
96
135
|
skip?: number;
|
|
136
|
+
/** Related tables to eagerly load */
|
|
97
137
|
with?: { [K in keyof Rel]?: boolean | QueryOptions<Rel[K] extends {
|
|
98
138
|
row: infer R;
|
|
99
139
|
} ? R : Rel[K]> };
|
|
100
140
|
}
|
|
141
|
+
/** Options for an UPDATE operation */
|
|
101
142
|
interface UpdateOptions<T = Record<string, any>> {
|
|
143
|
+
/** Filter to select which rows to update */
|
|
102
144
|
where: WhereClause<T>;
|
|
145
|
+
/** Partial data to apply to matching rows */
|
|
103
146
|
data: Partial<T>;
|
|
104
147
|
}
|
|
148
|
+
/** Options for a DELETE operation */
|
|
105
149
|
interface DeleteOptions<T = Record<string, any>> {
|
|
150
|
+
/** Filter to select which rows to delete */
|
|
106
151
|
where: WhereClause<T>;
|
|
107
152
|
}
|
|
108
153
|
interface MySQLConnectionConfig {
|
|
@@ -112,28 +157,74 @@ interface MySQLConnectionConfig {
|
|
|
112
157
|
password: string;
|
|
113
158
|
database: string;
|
|
114
159
|
}
|
|
160
|
+
/** Connection configuration for SQLite databases */
|
|
115
161
|
interface SQLiteConnectionConfig {
|
|
162
|
+
/** Path to the SQLite database file */
|
|
116
163
|
filename: string;
|
|
117
164
|
}
|
|
165
|
+
/** Connection configuration for file-based (JSON) storage */
|
|
118
166
|
interface FileConnectionConfig {
|
|
167
|
+
/** Directory where data files are stored */
|
|
119
168
|
directory: string;
|
|
120
169
|
}
|
|
170
|
+
/** Union of all supported connection configurations */
|
|
121
171
|
type ConnectionConfig = MySQLConnectionConfig | SQLiteConnectionConfig | FileConnectionConfig;
|
|
172
|
+
/**
|
|
173
|
+
* Global cache configuration for the database instance.
|
|
174
|
+
* Controls query result caching and entity caching behavior.
|
|
175
|
+
*/
|
|
122
176
|
interface CacheConfig {
|
|
177
|
+
/** Whether caching is enabled */
|
|
123
178
|
enabled: boolean;
|
|
179
|
+
/** Base time-to-live in milliseconds (default: 60000) */
|
|
124
180
|
ttl?: number;
|
|
181
|
+
/** Maximum TTL in milliseconds — limits adaptive TTL scaling (default: 300000) */
|
|
125
182
|
maxTtl?: number;
|
|
183
|
+
/** Maximum number of cache entries before eviction (default: 10000) */
|
|
126
184
|
maxEntries?: number;
|
|
127
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Per-table cache configuration. Set on individual table definitions to override
|
|
188
|
+
* or enable caching for specific tables independently of the global setting.
|
|
189
|
+
* Useful for frequently accessed tables like user sessions or login data.
|
|
190
|
+
*/
|
|
191
|
+
interface TableCacheConfig {
|
|
192
|
+
/** Whether caching is enabled for this table */
|
|
193
|
+
enabled: boolean;
|
|
194
|
+
/** Base time-to-live in milliseconds for this table's cache entries */
|
|
195
|
+
ttl?: number;
|
|
196
|
+
/** Maximum TTL in milliseconds for this table's cache entries */
|
|
197
|
+
maxTtl?: number;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Top-level configuration for creating a database instance.
|
|
201
|
+
* Defines schemas, database type, connection, and optional features like
|
|
202
|
+
* schema sync, migrations, and caching.
|
|
203
|
+
*/
|
|
128
204
|
interface DatabaseConfig {
|
|
129
|
-
|
|
205
|
+
/**
|
|
206
|
+
* Table definitions — either an array of tables or a module namespace object.
|
|
207
|
+
* @example
|
|
208
|
+
* // Array form
|
|
209
|
+
* schemas: [users, posts]
|
|
210
|
+
* // Module namespace form (import * as schemas from "./schemas")
|
|
211
|
+
* schemas: schemas
|
|
212
|
+
*/
|
|
213
|
+
schemas: readonly AnyTableDef[] | Record<string, unknown>;
|
|
214
|
+
/** Migration definitions to run on initialization */
|
|
130
215
|
migrations?: any[];
|
|
216
|
+
/** Database type and optional driver provider */
|
|
131
217
|
database: DatabaseType;
|
|
218
|
+
/** Connection configuration (or array for future multi-connection support) */
|
|
132
219
|
connection: ConnectionConfig | ConnectionConfig[];
|
|
220
|
+
/** Whether to run pending migrations on initialization */
|
|
133
221
|
runMigrations?: boolean;
|
|
222
|
+
/** Whether to auto-create tables and add missing columns on initialization */
|
|
134
223
|
syncSchemas?: boolean;
|
|
224
|
+
/** Enable caching — `true` for defaults, or a {@link CacheConfig} object for fine-tuning */
|
|
135
225
|
cache?: boolean | CacheConfig;
|
|
136
226
|
}
|
|
227
|
+
/** Context object passed to migration up/down functions */
|
|
137
228
|
interface MigrationContext {
|
|
138
229
|
schema: {
|
|
139
230
|
createTable: (table: TableDefinition) => Promise<void>;
|
|
@@ -146,11 +237,16 @@ interface MigrationContext {
|
|
|
146
237
|
};
|
|
147
238
|
sql: (query: string, params?: unknown[]) => Promise<unknown>;
|
|
148
239
|
}
|
|
240
|
+
/** A named migration with up (apply) and down (rollback) functions */
|
|
149
241
|
interface MigrationDefinition {
|
|
242
|
+
/** Unique migration name (used for tracking executed migrations) */
|
|
150
243
|
name: string;
|
|
244
|
+
/** Function to apply the migration */
|
|
151
245
|
up: (ctx: MigrationContext) => Promise<void>;
|
|
246
|
+
/** Function to rollback the migration */
|
|
152
247
|
down: (ctx: MigrationContext) => Promise<void>;
|
|
153
248
|
}
|
|
249
|
+
/** Low-level database driver interface — implemented per database backend */
|
|
154
250
|
interface DatabaseDriver {
|
|
155
251
|
connect(): Promise<void>;
|
|
156
252
|
disconnect(): Promise<void>;
|
|
@@ -166,6 +262,7 @@ interface DatabaseDriver {
|
|
|
166
262
|
transaction<T>(fn: () => Promise<T>): Promise<T>;
|
|
167
263
|
getAllTableColumns?(): Promise<Record<string, ColumnMetadata[]>>;
|
|
168
264
|
}
|
|
265
|
+
/** Generic repository interface providing CRUD operations for a table */
|
|
169
266
|
interface Repository<T extends Record<string, any>> {
|
|
170
267
|
find(options?: QueryOptions<T>): Promise<T[]>;
|
|
171
268
|
findMany(options?: QueryOptions<T>): Promise<T[]>;
|
|
@@ -206,6 +303,7 @@ type ReverseRelationEntry<U extends AnyTableDef, TargetName extends string> = Ta
|
|
|
206
303
|
} } : never : never;
|
|
207
304
|
type ReverseRelationEntries<S extends readonly AnyTableDef[], T extends AnyTableDef> = ReverseRelationEntry<S[number], TableName<T>>;
|
|
208
305
|
type RelationsFor<S extends readonly AnyTableDef[], T extends AnyTableDef> = Simplify<UnionToIntersection<ForwardRelationEntries<S, T> | ReverseRelationEntries<S, T>>>;
|
|
306
|
+
type InferSchemas<T> = T extends readonly AnyTableDef[] ? T : T extends Record<string, any> ? Array<{ [K in keyof T]: T[K] extends AnyTableDef ? T[K] : never }[keyof T]> : readonly AnyTableDef[];
|
|
209
307
|
type DepthPrev = [never, 0, 1, 2, 3];
|
|
210
308
|
type ExtractRelationRow<Rel> = Rel extends {
|
|
211
309
|
table: infer R;
|
|
@@ -225,5 +323,5 @@ type ResolveResult<S extends readonly AnyTableDef[], T extends AnyTableDef, O> =
|
|
|
225
323
|
with: infer W;
|
|
226
324
|
} ? W : undefined>;
|
|
227
325
|
//#endregion
|
|
228
|
-
export { AnyTableDef, CacheConfig, ColumnDataType, ColumnMetadata, ConnectionConfig, DatabaseConfig, DatabaseDriver, DatabaseType, DeferredRefMeta, DeleteOptions, FileConnectionConfig, InferInsert, InferRow, InferUpdate, MigrationContext, MigrationDefinition, MySQLConnectionConfig, QueryOptions, ReferenceAction, RelationQueryMap, RelationsFor, Repository, ResolveResult, SQLiteConnectionConfig, TableDefinition, TableMetadata, UpdateOptions, WhereClause, WhereCondition };
|
|
326
|
+
export { AnyTableDef, CacheConfig, ColumnDataType, ColumnMetadata, ConnectionConfig, DatabaseConfig, DatabaseDriver, DatabaseType, DeferredRefMeta, DeleteOptions, FileConnectionConfig, InferInsert, InferRow, InferSchemas, InferUpdate, MigrationContext, MigrationDefinition, MySQLConnectionConfig, QueryOptions, ReferenceAction, RelationQueryMap, RelationsFor, Repository, ResolveResult, SQLiteConnectionConfig, TableCacheConfig, TableDefinition, TableMetadata, UpdateOptions, WhereClause, WhereCondition };
|
|
229
327
|
//# sourceMappingURL=types.d.cts.map
|
package/dist/types.d.mts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
//#region src/types.d.ts
|
|
2
|
-
|
|
2
|
+
/** Supported column data types for schema definitions */
|
|
3
|
+
type ColumnDataType = "integer" | "varchar" | "text" | "boolean" | "json" | "array" | "datetime" | "decimal" | "float" | "char" | "timestamp" | "bigint" | "blob";
|
|
4
|
+
/**
|
|
5
|
+
* Database type identifier — can be a simple string shorthand or an object
|
|
6
|
+
* specifying both the database name and the driver provider to use
|
|
7
|
+
*/
|
|
3
8
|
type DatabaseType = "mysql" | "mariadb" | "sqlite" | "file" | {
|
|
4
9
|
name: "mysql";
|
|
5
10
|
provider: "mysql" | "mysql2";
|
|
@@ -13,18 +18,31 @@ type DatabaseType = "mysql" | "mariadb" | "sqlite" | "file" | {
|
|
|
13
18
|
name: "file";
|
|
14
19
|
provider: string;
|
|
15
20
|
};
|
|
21
|
+
/** Metadata describing a single database column */
|
|
16
22
|
interface ColumnMetadata {
|
|
23
|
+
/** Column name in the database */
|
|
17
24
|
name: string;
|
|
25
|
+
/** Data type of the column */
|
|
18
26
|
type: ColumnDataType;
|
|
27
|
+
/** Whether this column is a primary key */
|
|
19
28
|
primaryKey: boolean;
|
|
29
|
+
/** Whether this column auto-increments */
|
|
20
30
|
autoIncrement: boolean;
|
|
31
|
+
/** Whether this column disallows NULL values */
|
|
21
32
|
notNull: boolean;
|
|
33
|
+
/** Whether this column has a UNIQUE constraint */
|
|
22
34
|
unique: boolean;
|
|
35
|
+
/** Default value for the column, or `undefined` if none */
|
|
23
36
|
defaultValue: unknown;
|
|
37
|
+
/** Maximum character length (for varchar/char types) */
|
|
24
38
|
length?: number;
|
|
39
|
+
/** Total number of digits (for decimal types) */
|
|
25
40
|
precision?: number;
|
|
41
|
+
/** Number of decimal digits (for decimal types) */
|
|
26
42
|
scale?: number;
|
|
43
|
+
/** Custom database column name alias, if different from the property key */
|
|
27
44
|
columnAlias?: string;
|
|
45
|
+
/** Foreign key reference metadata, resolved after registration */
|
|
28
46
|
references?: {
|
|
29
47
|
table: string;
|
|
30
48
|
column: string;
|
|
@@ -33,11 +51,16 @@ interface ColumnMetadata {
|
|
|
33
51
|
relationName?: string;
|
|
34
52
|
};
|
|
35
53
|
}
|
|
54
|
+
/** Action to take when a referenced row is deleted or updated */
|
|
36
55
|
type ReferenceAction = "CASCADE" | "SET NULL" | "RESTRICT" | "NO ACTION";
|
|
56
|
+
/** Metadata describing a database table and its columns */
|
|
37
57
|
interface TableMetadata {
|
|
58
|
+
/** Table name in the database */
|
|
38
59
|
name: string;
|
|
60
|
+
/** Array of column metadata for this table */
|
|
39
61
|
columns: ColumnMetadata[];
|
|
40
62
|
}
|
|
63
|
+
/** Deferred foreign key reference metadata, used internally for lazy resolution */
|
|
41
64
|
type DeferredRefMeta<ColumnName extends string = string, TargetTable extends string = string, TargetColumn extends string = string, RelationName extends string | undefined = string | undefined> = {
|
|
42
65
|
columnName: ColumnName;
|
|
43
66
|
targetTable: TargetTable;
|
|
@@ -46,6 +69,10 @@ type DeferredRefMeta<ColumnName extends string = string, TargetTable extends str
|
|
|
46
69
|
onDelete?: ReferenceAction;
|
|
47
70
|
onUpdate?: ReferenceAction;
|
|
48
71
|
};
|
|
72
|
+
/**
|
|
73
|
+
* Internal representation of a table schema, including column metadata,
|
|
74
|
+
* deferred references, and optional per-table cache configuration
|
|
75
|
+
*/
|
|
49
76
|
type TableDefinition<T extends Record<string, any> = Record<string, any>, C extends Record<string, any> = {}, N extends string = string, Refs extends DeferredRefMeta = any> = {
|
|
50
77
|
__table: true;
|
|
51
78
|
__name: N;
|
|
@@ -53,6 +80,7 @@ type TableDefinition<T extends Record<string, any> = Record<string, any>, C exte
|
|
|
53
80
|
__refs: Refs;
|
|
54
81
|
__columns: ColumnMetadata[];
|
|
55
82
|
__columnMap: Record<string, string>;
|
|
83
|
+
__cache?: TableCacheConfig;
|
|
56
84
|
__deferredRefs: Array<{
|
|
57
85
|
columnName: string;
|
|
58
86
|
resolve: () => {
|
|
@@ -64,12 +92,16 @@ type TableDefinition<T extends Record<string, any> = Record<string, any>, C exte
|
|
|
64
92
|
relationName?: string;
|
|
65
93
|
}>;
|
|
66
94
|
} & C;
|
|
95
|
+
/** Extract the row type from a table definition */
|
|
67
96
|
type InferRow<T> = T extends {
|
|
68
97
|
__row: infer R;
|
|
69
98
|
} ? R : never;
|
|
99
|
+
/** Extract the insertable type from a table definition (auto-increment keys become optional) */
|
|
70
100
|
type InferInsert<T> = T extends TableDefinition<infer R, any, any> ? { [K in keyof R as K extends AutoIncrementKeys<T> ? never : K]: R[K] } & { [K in AutoIncrementKeys<T>]?: R[K] } : never;
|
|
71
101
|
type AutoIncrementKeys<T> = T extends TableDefinition<infer R, any, any> ? keyof R : never;
|
|
102
|
+
/** Extract the updatable type from a table definition (all fields become optional) */
|
|
72
103
|
type InferUpdate<T> = T extends TableDefinition<infer R, any, any> ? Partial<R> : never;
|
|
104
|
+
/** Condition operators for a single column in a WHERE clause */
|
|
73
105
|
interface WhereCondition {
|
|
74
106
|
eq?: unknown;
|
|
75
107
|
neq?: unknown;
|
|
@@ -84,25 +116,38 @@ interface WhereCondition {
|
|
|
84
116
|
isNull?: boolean;
|
|
85
117
|
between?: [unknown, unknown];
|
|
86
118
|
}
|
|
119
|
+
/** Type-safe WHERE clause supporting equality, operators, and logical combinators (OR/AND) */
|
|
87
120
|
type WhereClause<T = Record<string, any>> = { [K in keyof T]?: T[K] | WhereCondition } & {
|
|
88
121
|
OR?: WhereClause<T>[];
|
|
89
122
|
AND?: WhereClause<T>[];
|
|
90
123
|
};
|
|
124
|
+
/** Options for querying rows — filtering, sorting, pagination, and relation loading */
|
|
91
125
|
interface QueryOptions<T = Record<string, any>, Rel extends Record<string, any> = {}> {
|
|
126
|
+
/** Filter conditions */
|
|
92
127
|
where?: WhereClause<T>;
|
|
128
|
+
/** Columns to include in the result */
|
|
93
129
|
select?: Extract<keyof T, string>[];
|
|
130
|
+
/** Sort order for results */
|
|
94
131
|
orderBy?: Partial<Record<Extract<keyof T, string>, "asc" | "desc">>;
|
|
132
|
+
/** Maximum number of rows to return */
|
|
95
133
|
take?: number;
|
|
134
|
+
/** Number of rows to skip (for pagination) */
|
|
96
135
|
skip?: number;
|
|
136
|
+
/** Related tables to eagerly load */
|
|
97
137
|
with?: { [K in keyof Rel]?: boolean | QueryOptions<Rel[K] extends {
|
|
98
138
|
row: infer R;
|
|
99
139
|
} ? R : Rel[K]> };
|
|
100
140
|
}
|
|
141
|
+
/** Options for an UPDATE operation */
|
|
101
142
|
interface UpdateOptions<T = Record<string, any>> {
|
|
143
|
+
/** Filter to select which rows to update */
|
|
102
144
|
where: WhereClause<T>;
|
|
145
|
+
/** Partial data to apply to matching rows */
|
|
103
146
|
data: Partial<T>;
|
|
104
147
|
}
|
|
148
|
+
/** Options for a DELETE operation */
|
|
105
149
|
interface DeleteOptions<T = Record<string, any>> {
|
|
150
|
+
/** Filter to select which rows to delete */
|
|
106
151
|
where: WhereClause<T>;
|
|
107
152
|
}
|
|
108
153
|
interface MySQLConnectionConfig {
|
|
@@ -112,28 +157,74 @@ interface MySQLConnectionConfig {
|
|
|
112
157
|
password: string;
|
|
113
158
|
database: string;
|
|
114
159
|
}
|
|
160
|
+
/** Connection configuration for SQLite databases */
|
|
115
161
|
interface SQLiteConnectionConfig {
|
|
162
|
+
/** Path to the SQLite database file */
|
|
116
163
|
filename: string;
|
|
117
164
|
}
|
|
165
|
+
/** Connection configuration for file-based (JSON) storage */
|
|
118
166
|
interface FileConnectionConfig {
|
|
167
|
+
/** Directory where data files are stored */
|
|
119
168
|
directory: string;
|
|
120
169
|
}
|
|
170
|
+
/** Union of all supported connection configurations */
|
|
121
171
|
type ConnectionConfig = MySQLConnectionConfig | SQLiteConnectionConfig | FileConnectionConfig;
|
|
172
|
+
/**
|
|
173
|
+
* Global cache configuration for the database instance.
|
|
174
|
+
* Controls query result caching and entity caching behavior.
|
|
175
|
+
*/
|
|
122
176
|
interface CacheConfig {
|
|
177
|
+
/** Whether caching is enabled */
|
|
123
178
|
enabled: boolean;
|
|
179
|
+
/** Base time-to-live in milliseconds (default: 60000) */
|
|
124
180
|
ttl?: number;
|
|
181
|
+
/** Maximum TTL in milliseconds — limits adaptive TTL scaling (default: 300000) */
|
|
125
182
|
maxTtl?: number;
|
|
183
|
+
/** Maximum number of cache entries before eviction (default: 10000) */
|
|
126
184
|
maxEntries?: number;
|
|
127
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Per-table cache configuration. Set on individual table definitions to override
|
|
188
|
+
* or enable caching for specific tables independently of the global setting.
|
|
189
|
+
* Useful for frequently accessed tables like user sessions or login data.
|
|
190
|
+
*/
|
|
191
|
+
interface TableCacheConfig {
|
|
192
|
+
/** Whether caching is enabled for this table */
|
|
193
|
+
enabled: boolean;
|
|
194
|
+
/** Base time-to-live in milliseconds for this table's cache entries */
|
|
195
|
+
ttl?: number;
|
|
196
|
+
/** Maximum TTL in milliseconds for this table's cache entries */
|
|
197
|
+
maxTtl?: number;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Top-level configuration for creating a database instance.
|
|
201
|
+
* Defines schemas, database type, connection, and optional features like
|
|
202
|
+
* schema sync, migrations, and caching.
|
|
203
|
+
*/
|
|
128
204
|
interface DatabaseConfig {
|
|
129
|
-
|
|
205
|
+
/**
|
|
206
|
+
* Table definitions — either an array of tables or a module namespace object.
|
|
207
|
+
* @example
|
|
208
|
+
* // Array form
|
|
209
|
+
* schemas: [users, posts]
|
|
210
|
+
* // Module namespace form (import * as schemas from "./schemas")
|
|
211
|
+
* schemas: schemas
|
|
212
|
+
*/
|
|
213
|
+
schemas: readonly AnyTableDef[] | Record<string, unknown>;
|
|
214
|
+
/** Migration definitions to run on initialization */
|
|
130
215
|
migrations?: any[];
|
|
216
|
+
/** Database type and optional driver provider */
|
|
131
217
|
database: DatabaseType;
|
|
218
|
+
/** Connection configuration (or array for future multi-connection support) */
|
|
132
219
|
connection: ConnectionConfig | ConnectionConfig[];
|
|
220
|
+
/** Whether to run pending migrations on initialization */
|
|
133
221
|
runMigrations?: boolean;
|
|
222
|
+
/** Whether to auto-create tables and add missing columns on initialization */
|
|
134
223
|
syncSchemas?: boolean;
|
|
224
|
+
/** Enable caching — `true` for defaults, or a {@link CacheConfig} object for fine-tuning */
|
|
135
225
|
cache?: boolean | CacheConfig;
|
|
136
226
|
}
|
|
227
|
+
/** Context object passed to migration up/down functions */
|
|
137
228
|
interface MigrationContext {
|
|
138
229
|
schema: {
|
|
139
230
|
createTable: (table: TableDefinition) => Promise<void>;
|
|
@@ -146,11 +237,16 @@ interface MigrationContext {
|
|
|
146
237
|
};
|
|
147
238
|
sql: (query: string, params?: unknown[]) => Promise<unknown>;
|
|
148
239
|
}
|
|
240
|
+
/** A named migration with up (apply) and down (rollback) functions */
|
|
149
241
|
interface MigrationDefinition {
|
|
242
|
+
/** Unique migration name (used for tracking executed migrations) */
|
|
150
243
|
name: string;
|
|
244
|
+
/** Function to apply the migration */
|
|
151
245
|
up: (ctx: MigrationContext) => Promise<void>;
|
|
246
|
+
/** Function to rollback the migration */
|
|
152
247
|
down: (ctx: MigrationContext) => Promise<void>;
|
|
153
248
|
}
|
|
249
|
+
/** Low-level database driver interface — implemented per database backend */
|
|
154
250
|
interface DatabaseDriver {
|
|
155
251
|
connect(): Promise<void>;
|
|
156
252
|
disconnect(): Promise<void>;
|
|
@@ -166,6 +262,7 @@ interface DatabaseDriver {
|
|
|
166
262
|
transaction<T>(fn: () => Promise<T>): Promise<T>;
|
|
167
263
|
getAllTableColumns?(): Promise<Record<string, ColumnMetadata[]>>;
|
|
168
264
|
}
|
|
265
|
+
/** Generic repository interface providing CRUD operations for a table */
|
|
169
266
|
interface Repository<T extends Record<string, any>> {
|
|
170
267
|
find(options?: QueryOptions<T>): Promise<T[]>;
|
|
171
268
|
findMany(options?: QueryOptions<T>): Promise<T[]>;
|
|
@@ -206,6 +303,7 @@ type ReverseRelationEntry<U extends AnyTableDef, TargetName extends string> = Ta
|
|
|
206
303
|
} } : never : never;
|
|
207
304
|
type ReverseRelationEntries<S extends readonly AnyTableDef[], T extends AnyTableDef> = ReverseRelationEntry<S[number], TableName<T>>;
|
|
208
305
|
type RelationsFor<S extends readonly AnyTableDef[], T extends AnyTableDef> = Simplify<UnionToIntersection<ForwardRelationEntries<S, T> | ReverseRelationEntries<S, T>>>;
|
|
306
|
+
type InferSchemas<T> = T extends readonly AnyTableDef[] ? T : T extends Record<string, any> ? Array<{ [K in keyof T]: T[K] extends AnyTableDef ? T[K] : never }[keyof T]> : readonly AnyTableDef[];
|
|
209
307
|
type DepthPrev = [never, 0, 1, 2, 3];
|
|
210
308
|
type ExtractRelationRow<Rel> = Rel extends {
|
|
211
309
|
table: infer R;
|
|
@@ -225,5 +323,5 @@ type ResolveResult<S extends readonly AnyTableDef[], T extends AnyTableDef, O> =
|
|
|
225
323
|
with: infer W;
|
|
226
324
|
} ? W : undefined>;
|
|
227
325
|
//#endregion
|
|
228
|
-
export { AnyTableDef, CacheConfig, ColumnDataType, ColumnMetadata, ConnectionConfig, DatabaseConfig, DatabaseDriver, DatabaseType, DeferredRefMeta, DeleteOptions, FileConnectionConfig, InferInsert, InferRow, InferUpdate, MigrationContext, MigrationDefinition, MySQLConnectionConfig, QueryOptions, ReferenceAction, RelationQueryMap, RelationsFor, Repository, ResolveResult, SQLiteConnectionConfig, TableDefinition, TableMetadata, UpdateOptions, WhereClause, WhereCondition };
|
|
326
|
+
export { AnyTableDef, CacheConfig, ColumnDataType, ColumnMetadata, ConnectionConfig, DatabaseConfig, DatabaseDriver, DatabaseType, DeferredRefMeta, DeleteOptions, FileConnectionConfig, InferInsert, InferRow, InferSchemas, InferUpdate, MigrationContext, MigrationDefinition, MySQLConnectionConfig, QueryOptions, ReferenceAction, RelationQueryMap, RelationsFor, Repository, ResolveResult, SQLiteConnectionConfig, TableCacheConfig, TableDefinition, TableMetadata, UpdateOptions, WhereClause, WhereCondition };
|
|
229
327
|
//# sourceMappingURL=types.d.mts.map
|