@hedystia/db 2.0.6 → 2.0.8

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.
Files changed (67) hide show
  1. package/dist/cache/index.mjs +12 -0
  2. package/dist/cache/index.mjs.map +1 -0
  3. package/dist/cache/manager.mjs +156 -153
  4. package/dist/cache/manager.mjs.map +1 -1
  5. package/dist/cache/memory-store.mjs +113 -111
  6. package/dist/cache/memory-store.mjs.map +1 -1
  7. package/dist/cli/commands/migrate.cjs +78 -0
  8. package/dist/cli/commands/migrate.cjs.map +1 -0
  9. package/dist/cli/commands/migrate.mjs +83 -0
  10. package/dist/cli/commands/migrate.mjs.map +1 -0
  11. package/dist/cli/commands/migration.cjs +3 -2
  12. package/dist/cli/commands/migration.cjs.map +1 -1
  13. package/dist/cli/commands/migration.mjs +4 -3
  14. package/dist/cli/commands/migration.mjs.map +1 -1
  15. package/dist/cli.cjs +44 -5
  16. package/dist/cli.cjs.map +1 -1
  17. package/dist/cli.mjs +45 -5
  18. package/dist/cli.mjs.map +1 -1
  19. package/dist/core/database.cjs +75 -29
  20. package/dist/core/database.cjs.map +1 -1
  21. package/dist/core/database.d.cts +11 -0
  22. package/dist/core/database.d.mts +11 -0
  23. package/dist/core/database.mjs +91 -34
  24. package/dist/core/database.mjs.map +1 -1
  25. package/dist/core/repository.mjs +414 -410
  26. package/dist/core/repository.mjs.map +1 -1
  27. package/dist/drivers/driver.mjs +9 -7
  28. package/dist/drivers/driver.mjs.map +1 -1
  29. package/dist/drivers/file.mjs +315 -312
  30. package/dist/drivers/file.mjs.map +1 -1
  31. package/dist/drivers/index.mjs +15 -6
  32. package/dist/drivers/index.mjs.map +1 -1
  33. package/dist/drivers/mysql.mjs +261 -256
  34. package/dist/drivers/mysql.mjs.map +1 -1
  35. package/dist/drivers/sql-compiler.mjs +4 -1
  36. package/dist/drivers/sql-compiler.mjs.map +1 -1
  37. package/dist/drivers/sqlite.cjs +12 -1
  38. package/dist/drivers/sqlite.cjs.map +1 -1
  39. package/dist/drivers/sqlite.mjs +258 -242
  40. package/dist/drivers/sqlite.mjs.map +1 -1
  41. package/dist/errors.mjs +48 -64
  42. package/dist/errors.mjs.map +1 -1
  43. package/dist/index.mjs +21 -9
  44. package/dist/index.mjs.map +1 -1
  45. package/dist/migrations/templates.cjs +4 -3
  46. package/dist/migrations/templates.cjs.map +1 -1
  47. package/dist/migrations/templates.d.cts +3 -2
  48. package/dist/migrations/templates.d.mts +3 -2
  49. package/dist/migrations/templates.mjs +4 -3
  50. package/dist/migrations/templates.mjs.map +1 -1
  51. package/dist/schema/column.mjs +155 -157
  52. package/dist/schema/column.mjs.map +1 -1
  53. package/dist/schema/columns/index.mjs +103 -171
  54. package/dist/schema/columns/index.mjs.map +1 -1
  55. package/dist/schema/index.mjs +15 -0
  56. package/dist/schema/index.mjs.map +1 -0
  57. package/dist/schema/registry.mjs +122 -119
  58. package/dist/schema/registry.mjs.map +1 -1
  59. package/dist/schema/table.mjs +4 -1
  60. package/dist/schema/table.mjs.map +1 -1
  61. package/dist/sync/synchronizer.mjs +2 -1
  62. package/dist/sync/synchronizer.mjs.map +1 -1
  63. package/dist/utils/naming.cjs +9 -0
  64. package/dist/utils/naming.cjs.map +1 -1
  65. package/dist/utils/naming.mjs +9 -1
  66. package/dist/utils/naming.mjs.map +1 -1
  67. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"column.mjs","names":[],"sources":["../../src/schema/column.ts"],"sourcesContent":["import type { ColumnDataType, ColumnMetadata, DeferredRefMeta, ReferenceAction } from \"../types\";\n\n/**\n * Base column builder with chainable methods for defining column properties\n * @template T - The TypeScript type this column resolves to\n * @template TN - The table name this column belongs to (set by table())\n * @template CN - The column name (set by table())\n * @template Ref - The deferred reference metadata (set by references())\n */\nexport class ColumnBuilder<\n T = unknown,\n TN extends string = string,\n CN extends string = string,\n Ref extends DeferredRefMeta = never,\n> {\n declare readonly __type: T;\n declare readonly __tableName: TN;\n declare readonly __columnName: CN;\n declare readonly __ref: Ref;\n private _type: ColumnDataType;\n private _primaryKey = false;\n private _autoIncrement = false;\n private _notNull = false;\n private _unique = false;\n private _defaultValue: unknown = undefined;\n private _length?: number;\n private _precision?: number;\n private _scale?: number;\n private _columnAlias?: string;\n private _references?: {\n resolve: () => { table: string; column: string };\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n };\n\n constructor(type: ColumnDataType, length?: number, precision?: number, scale?: number) {\n this._type = type;\n this._length = length;\n this._precision = precision;\n this._scale = scale;\n }\n\n /**\n * Set a custom database column name different from the property key\n * @param {string} alias - The column name to use in the database\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n * @example\n * // In code: guildId, In database: guild_id\n * guildId: varchar(255).name(\"guild_id\")\n */\n name(alias: string): ColumnBuilder<T, TN, CN, Ref> {\n this._columnAlias = alias;\n return this;\n }\n\n /**\n * Override the TypeScript type for this column with a custom type literal\n * @template U - The custom type to use\n * @returns {ColumnBuilder<U, TN, CN, Ref>} The column builder with the new type\n * @example\n * // Limits autocomplete to specific values\n * locale: varchar(25).type<\"en_US\" | \"es_ES\">()\n */\n type<U>(): ColumnBuilder<U, TN, CN, Ref> {\n return this as unknown as ColumnBuilder<U, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as a primary key\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n primaryKey(): ColumnBuilder<T, TN, CN, Ref> {\n this._primaryKey = true;\n return this;\n }\n\n /**\n * Mark this column as auto-incrementing\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n autoIncrement(): ColumnBuilder<T, TN, CN, Ref> {\n this._autoIncrement = true;\n return this;\n }\n\n /**\n * Mark this column as NOT NULL\n * @returns {ColumnBuilder<NonNullable<T>, TN, CN, Ref>} The column builder for chaining\n */\n notNull(): ColumnBuilder<NonNullable<T>, TN, CN, Ref> {\n this._notNull = true;\n return this as unknown as ColumnBuilder<NonNullable<T>, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n nullable(): ColumnBuilder<T | null, TN, CN, Ref> {\n this._notNull = false;\n return this as unknown as ColumnBuilder<T | null, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable (alias for {@link nullable})\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n null(): ColumnBuilder<T | null, TN, CN, Ref> {\n return this.nullable();\n }\n\n /**\n * Set a default value for this column\n * @param {T} value - The default value\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n default(value: T): ColumnBuilder<T, TN, CN, Ref> {\n this._defaultValue = value;\n return this;\n }\n\n /**\n * Mark this column as having a unique constraint\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n unique(): ColumnBuilder<T, TN, CN, Ref> {\n this._unique = true;\n return this;\n }\n\n /**\n * Add a foreign key reference to another table's column\n * @param {(() => ColumnBuilder<any>) | ColumnBuilder<any>} ref - A column reference or a function returning one\n * @param {object} [options] - Reference options\n * @param {ReferenceAction} [options.onDelete] - Action on delete\n * @param {ReferenceAction} [options.onUpdate] - Action on update\n * @param {string} [options.relationName] - Name for the relation\n * @returns {ColumnBuilder<T>} The column builder for chaining\n */\n references<\n R extends ColumnBuilder<any, string, string, any>,\n O extends {\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n } = never,\n >(\n ref: (() => R) | R,\n options?: O,\n ): ColumnBuilder<\n T,\n TN,\n CN,\n DeferredRefMeta<\n CN,\n R[\"__tableName\"],\n R[\"__columnName\"],\n O extends { relationName: infer N extends string } ? N : undefined\n >\n > {\n this._references = {\n resolve: () => {\n const col = typeof ref === \"function\" ? ref() : ref;\n return {\n table: (col as any).__tableName ?? \"\",\n column: (col as any).__columnName ?? \"\",\n };\n },\n onDelete: options?.onDelete,\n onUpdate: options?.onUpdate,\n relationName: options?.relationName,\n };\n return this as any;\n }\n\n /**\n * Build the column metadata from the builder configuration\n * @param {string} name - The column name\n * @returns {ColumnMetadata} The built column metadata\n */\n __build(name: string): ColumnMetadata {\n return {\n name: this._columnAlias ?? name,\n type: this._type,\n primaryKey: this._primaryKey,\n autoIncrement: this._autoIncrement,\n notNull: this._notNull || this._primaryKey,\n unique: this._unique || this._primaryKey,\n defaultValue: this._defaultValue,\n length: this._length,\n precision: this._precision,\n scale: this._scale,\n columnAlias: this._columnAlias,\n };\n }\n\n /**\n * Get deferred reference data if this column has a foreign key reference\n * @returns {object | null} The deferred reference data or null\n */\n __getDeferredRef(): {\n resolve: () => { table: string; column: string };\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n } | null {\n return this._references ?? null;\n }\n}\n"],"mappings":";;;;;;;;AASA,IAAa,gBAAb,MAKE;CAKA;CACA,cAAsB;CACtB,iBAAyB;CACzB,WAAmB;CACnB,UAAkB;CAClB,gBAAiC,KAAA;CACjC;CACA;CACA;CACA;CACA;CAOA,YAAY,MAAsB,QAAiB,WAAoB,OAAgB;AACrF,OAAK,QAAQ;AACb,OAAK,UAAU;AACf,OAAK,aAAa;AAClB,OAAK,SAAS;;;;;;;;;;CAWhB,KAAK,OAA8C;AACjD,OAAK,eAAe;AACpB,SAAO;;;;;;;;;;CAWT,OAAyC;AACvC,SAAO;;;;;;CAOT,aAA4C;AAC1C,OAAK,cAAc;AACnB,SAAO;;;;;;CAOT,gBAA+C;AAC7C,OAAK,iBAAiB;AACtB,SAAO;;;;;;CAOT,UAAsD;AACpD,OAAK,WAAW;AAChB,SAAO;;;;;;CAOT,WAAiD;AAC/C,OAAK,WAAW;AAChB,SAAO;;;;;;CAOT,OAA6C;AAC3C,SAAO,KAAK,UAAU;;;;;;;CAQxB,QAAQ,OAAyC;AAC/C,OAAK,gBAAgB;AACrB,SAAO;;;;;;CAOT,SAAwC;AACtC,OAAK,UAAU;AACf,SAAO;;;;;;;;;;;CAYT,WAQE,KACA,SAWA;AACA,OAAK,cAAc;GACjB,eAAe;IACb,MAAM,MAAM,OAAO,QAAQ,aAAa,KAAK,GAAG;AAChD,WAAO;KACL,OAAQ,IAAY,eAAe;KACnC,QAAS,IAAY,gBAAgB;KACtC;;GAEH,UAAU,SAAS;GACnB,UAAU,SAAS;GACnB,cAAc,SAAS;GACxB;AACD,SAAO;;;;;;;CAQT,QAAQ,MAA8B;AACpC,SAAO;GACL,MAAM,KAAK,gBAAgB;GAC3B,MAAM,KAAK;GACX,YAAY,KAAK;GACjB,eAAe,KAAK;GACpB,SAAS,KAAK,YAAY,KAAK;GAC/B,QAAQ,KAAK,WAAW,KAAK;GAC7B,cAAc,KAAK;GACnB,QAAQ,KAAK;GACb,WAAW,KAAK;GAChB,OAAO,KAAK;GACZ,aAAa,KAAK;GACnB;;;;;;CAOH,mBAKS;AACP,SAAO,KAAK,eAAe"}
1
+ {"version":3,"file":"column.mjs","names":[],"sources":["../../src/schema/column.ts"],"sourcesContent":["import type { ColumnDataType, ColumnMetadata, DeferredRefMeta, ReferenceAction } from \"../types\";\n\n/**\n * Base column builder with chainable methods for defining column properties\n * @template T - The TypeScript type this column resolves to\n * @template TN - The table name this column belongs to (set by table())\n * @template CN - The column name (set by table())\n * @template Ref - The deferred reference metadata (set by references())\n */\nexport class ColumnBuilder<\n T = unknown,\n TN extends string = string,\n CN extends string = string,\n Ref extends DeferredRefMeta = never,\n> {\n declare readonly __type: T;\n declare readonly __tableName: TN;\n declare readonly __columnName: CN;\n declare readonly __ref: Ref;\n private _type: ColumnDataType;\n private _primaryKey = false;\n private _autoIncrement = false;\n private _notNull = false;\n private _unique = false;\n private _defaultValue: unknown = undefined;\n private _length?: number;\n private _precision?: number;\n private _scale?: number;\n private _columnAlias?: string;\n private _references?: {\n resolve: () => { table: string; column: string };\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n };\n\n constructor(type: ColumnDataType, length?: number, precision?: number, scale?: number) {\n this._type = type;\n this._length = length;\n this._precision = precision;\n this._scale = scale;\n }\n\n /**\n * Set a custom database column name different from the property key\n * @param {string} alias - The column name to use in the database\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n * @example\n * // In code: guildId, In database: guild_id\n * guildId: varchar(255).name(\"guild_id\")\n */\n name(alias: string): ColumnBuilder<T, TN, CN, Ref> {\n this._columnAlias = alias;\n return this;\n }\n\n /**\n * Override the TypeScript type for this column with a custom type literal\n * @template U - The custom type to use\n * @returns {ColumnBuilder<U, TN, CN, Ref>} The column builder with the new type\n * @example\n * // Limits autocomplete to specific values\n * locale: varchar(25).type<\"en_US\" | \"es_ES\">()\n */\n type<U>(): ColumnBuilder<U, TN, CN, Ref> {\n return this as unknown as ColumnBuilder<U, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as a primary key\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n primaryKey(): ColumnBuilder<T, TN, CN, Ref> {\n this._primaryKey = true;\n return this;\n }\n\n /**\n * Mark this column as auto-incrementing\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n autoIncrement(): ColumnBuilder<T, TN, CN, Ref> {\n this._autoIncrement = true;\n return this;\n }\n\n /**\n * Mark this column as NOT NULL\n * @returns {ColumnBuilder<NonNullable<T>, TN, CN, Ref>} The column builder for chaining\n */\n notNull(): ColumnBuilder<NonNullable<T>, TN, CN, Ref> {\n this._notNull = true;\n return this as unknown as ColumnBuilder<NonNullable<T>, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n nullable(): ColumnBuilder<T | null, TN, CN, Ref> {\n this._notNull = false;\n return this as unknown as ColumnBuilder<T | null, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable (alias for {@link nullable})\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n null(): ColumnBuilder<T | null, TN, CN, Ref> {\n return this.nullable();\n }\n\n /**\n * Set a default value for this column\n * @param {T} value - The default value\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n default(value: T): ColumnBuilder<T, TN, CN, Ref> {\n this._defaultValue = value;\n return this;\n }\n\n /**\n * Mark this column as having a unique constraint\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n unique(): ColumnBuilder<T, TN, CN, Ref> {\n this._unique = true;\n return this;\n }\n\n /**\n * Add a foreign key reference to another table's column\n * @param {(() => ColumnBuilder<any>) | ColumnBuilder<any>} ref - A column reference or a function returning one\n * @param {object} [options] - Reference options\n * @param {ReferenceAction} [options.onDelete] - Action on delete\n * @param {ReferenceAction} [options.onUpdate] - Action on update\n * @param {string} [options.relationName] - Name for the relation\n * @returns {ColumnBuilder<T>} The column builder for chaining\n */\n references<\n R extends ColumnBuilder<any, string, string, any>,\n O extends {\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n } = never,\n >(\n ref: (() => R) | R,\n options?: O,\n ): ColumnBuilder<\n T,\n TN,\n CN,\n DeferredRefMeta<\n CN,\n R[\"__tableName\"],\n R[\"__columnName\"],\n O extends { relationName: infer N extends string } ? N : undefined\n >\n > {\n this._references = {\n resolve: () => {\n const col = typeof ref === \"function\" ? ref() : ref;\n return {\n table: (col as any).__tableName ?? \"\",\n column: (col as any).__columnName ?? \"\",\n };\n },\n onDelete: options?.onDelete,\n onUpdate: options?.onUpdate,\n relationName: options?.relationName,\n };\n return this as any;\n }\n\n /**\n * Build the column metadata from the builder configuration\n * @param {string} name - The column name\n * @returns {ColumnMetadata} The built column metadata\n */\n __build(name: string): ColumnMetadata {\n return {\n name: this._columnAlias ?? name,\n type: this._type,\n primaryKey: this._primaryKey,\n autoIncrement: this._autoIncrement,\n notNull: this._notNull || this._primaryKey,\n unique: this._unique || this._primaryKey,\n defaultValue: this._defaultValue,\n length: this._length,\n precision: this._precision,\n scale: this._scale,\n columnAlias: this._columnAlias,\n };\n }\n\n /**\n * Get deferred reference data if this column has a foreign key reference\n * @returns {object | null} The deferred reference data or null\n */\n __getDeferredRef(): {\n resolve: () => { table: string; column: string };\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n } | null {\n return this._references ?? null;\n }\n}\n"],"mappings":";;;;AASa,iBAAb,MAKE;EAKA;EACA,cAAsB;EACtB,iBAAyB;EACzB,WAAmB;EACnB,UAAkB;EAClB,gBAAiC,KAAA;EACjC;EACA;EACA;EACA;EACA;EAOA,YAAY,MAAsB,QAAiB,WAAoB,OAAgB;AACrF,QAAK,QAAQ;AACb,QAAK,UAAU;AACf,QAAK,aAAa;AAClB,QAAK,SAAS;;;;;;;;;;EAWhB,KAAK,OAA8C;AACjD,QAAK,eAAe;AACpB,UAAO;;;;;;;;;;EAWT,OAAyC;AACvC,UAAO;;;;;;EAOT,aAA4C;AAC1C,QAAK,cAAc;AACnB,UAAO;;;;;;EAOT,gBAA+C;AAC7C,QAAK,iBAAiB;AACtB,UAAO;;;;;;EAOT,UAAsD;AACpD,QAAK,WAAW;AAChB,UAAO;;;;;;EAOT,WAAiD;AAC/C,QAAK,WAAW;AAChB,UAAO;;;;;;EAOT,OAA6C;AAC3C,UAAO,KAAK,UAAU;;;;;;;EAQxB,QAAQ,OAAyC;AAC/C,QAAK,gBAAgB;AACrB,UAAO;;;;;;EAOT,SAAwC;AACtC,QAAK,UAAU;AACf,UAAO;;;;;;;;;;;EAYT,WAQE,KACA,SAWA;AACA,QAAK,cAAc;IACjB,eAAe;KACb,MAAM,MAAM,OAAO,QAAQ,aAAa,KAAK,GAAG;AAChD,YAAO;MACL,OAAQ,IAAY,eAAe;MACnC,QAAS,IAAY,gBAAgB;MACtC;;IAEH,UAAU,SAAS;IACnB,UAAU,SAAS;IACnB,cAAc,SAAS;IACxB;AACD,UAAO;;;;;;;EAQT,QAAQ,MAA8B;AACpC,UAAO;IACL,MAAM,KAAK,gBAAgB;IAC3B,MAAM,KAAK;IACX,YAAY,KAAK;IACjB,eAAe,KAAK;IACpB,SAAS,KAAK,YAAY,KAAK;IAC/B,QAAQ,KAAK,WAAW,KAAK;IAC7B,cAAc,KAAK;IACnB,QAAQ,KAAK;IACb,WAAW,KAAK;IAChB,OAAO,KAAK;IACZ,aAAa,KAAK;IACnB;;;;;;EAOH,mBAKS;AACP,UAAO,KAAK,eAAe"}
@@ -1,5 +1,5 @@
1
- import { __exportAll } from "../../_virtual/_rolldown/runtime.mjs";
2
- import { ColumnBuilder } from "../column.mjs";
1
+ import { __esmMin, __exportAll } from "../../_virtual/_rolldown/runtime.mjs";
2
+ import { ColumnBuilder, init_column } from "../column.mjs";
3
3
  //#region src/schema/columns/index.ts
4
4
  var columns_exports = /* @__PURE__ */ __exportAll({
5
5
  NamedColumnStarter: () => NamedColumnStarter,
@@ -19,175 +19,107 @@ var columns_exports = /* @__PURE__ */ __exportAll({
19
19
  timestamp: () => timestamp,
20
20
  varchar: () => varchar
21
21
  });
22
- /**
23
- * Create an INTEGER column
24
- * @returns {ColumnBuilder<number>} Column builder for integer type
25
- */
26
- const integer = () => new ColumnBuilder("integer");
27
- /**
28
- * Create a BIGINT column
29
- * @returns {ColumnBuilder<number>} Column builder for bigint type
30
- */
31
- const bigint = () => new ColumnBuilder("bigint");
32
- /**
33
- * Create a VARCHAR column with specified length
34
- * @param {number} [length=255] - Maximum character length
35
- * @returns {ColumnBuilder<string>} Column builder for varchar type
36
- */
37
- const varchar = (length = 255) => new ColumnBuilder("varchar", length);
38
- /**
39
- * Create a CHAR column with specified length
40
- * @param {number} [length=1] - Fixed character length
41
- * @returns {ColumnBuilder<string>} Column builder for char type
42
- */
43
- const char = (length = 1) => new ColumnBuilder("char", length);
44
- /**
45
- * Create a TEXT column
46
- * @returns {ColumnBuilder<string>} Column builder for text type
47
- */
48
- const text = () => new ColumnBuilder("text");
49
- /**
50
- * Create a BOOLEAN column
51
- * @returns {ColumnBuilder<boolean>} Column builder for boolean type
52
- */
53
- const boolean = () => new ColumnBuilder("boolean");
54
- /**
55
- * Create a JSON column
56
- * @returns {ColumnBuilder<unknown>} Column builder for json type
57
- */
58
- const json = () => new ColumnBuilder("json");
59
- /**
60
- * Create an ARRAY column (stored as JSON)
61
- * @returns {ColumnBuilder<unknown[]>} Column builder for array type
62
- */
63
- const array = () => new ColumnBuilder("array");
64
- /**
65
- * Create a DATETIME column
66
- * @returns {ColumnBuilder<Date>} Column builder for datetime type
67
- */
68
- const datetime = () => new ColumnBuilder("datetime");
69
- /**
70
- * Create a TIMESTAMP column
71
- * @returns {ColumnBuilder<Date>} Column builder for timestamp type
72
- */
73
- const timestamp = () => new ColumnBuilder("timestamp");
74
- /**
75
- * Create a DECIMAL column with precision and scale
76
- * @param {number} [precision=10] - Total number of digits
77
- * @param {number} [scale=2] - Number of decimal digits
78
- * @returns {ColumnBuilder<number>} Column builder for decimal type
79
- */
80
- const decimal = (precision = 10, scale = 2) => new ColumnBuilder("decimal", void 0, precision, scale);
81
- /**
82
- * Create a FLOAT column
83
- * @returns {ColumnBuilder<number>} Column builder for float type
84
- */
85
- const float = () => new ColumnBuilder("float");
86
- /**
87
- * Create a BLOB column
88
- * @returns {ColumnBuilder<Buffer>} Column builder for blob type
89
- */
90
- const blob = () => new ColumnBuilder("blob");
91
- /**
92
- * Starter class for creating columns with a pre-set database column name
93
- * @example
94
- * // Start with name, then pick column type
95
- * guildId: name("guild_id").varchar(255)
96
- */
97
- var NamedColumnStarter = class {
98
- _alias;
99
- constructor(alias) {
100
- this._alias = alias;
101
- }
102
- /** Create an INTEGER column with this database column name */
103
- integer() {
104
- return new ColumnBuilder("integer").name(this._alias);
105
- }
106
- /** Create a BIGINT column with this database column name */
107
- bigint() {
108
- return new ColumnBuilder("bigint").name(this._alias);
109
- }
110
- /** Create a VARCHAR column with this database column name
111
- * @param {number} [length=255] - Maximum character length
112
- */
113
- varchar(length = 255) {
114
- return new ColumnBuilder("varchar", length).name(this._alias);
115
- }
116
- /** Create a CHAR column with this database column name
117
- * @param {number} [length=1] - Fixed character length
118
- */
119
- char(length = 1) {
120
- return new ColumnBuilder("char", length).name(this._alias);
121
- }
122
- /** Create a TEXT column with this database column name */
123
- text() {
124
- return new ColumnBuilder("text").name(this._alias);
125
- }
126
- /** Create a BOOLEAN column with this database column name */
127
- boolean() {
128
- return new ColumnBuilder("boolean").name(this._alias);
129
- }
130
- /** Create a JSON column with this database column name */
131
- json() {
132
- return new ColumnBuilder("json").name(this._alias);
133
- }
134
- /** Create an ARRAY column with this database column name */
135
- array() {
136
- return new ColumnBuilder("array").name(this._alias);
137
- }
138
- /** Create a DATETIME column with this database column name */
139
- datetime() {
140
- return new ColumnBuilder("datetime").name(this._alias);
141
- }
142
- /** Create a TIMESTAMP column with this database column name */
143
- timestamp() {
144
- return new ColumnBuilder("timestamp").name(this._alias);
145
- }
146
- /** Create a DECIMAL column with this database column name
147
- * @param {number} [precision=10] - Total number of digits
148
- * @param {number} [scale=2] - Number of decimal digits
149
- */
150
- decimal(precision = 10, scale = 2) {
151
- return new ColumnBuilder("decimal", void 0, precision, scale).name(this._alias);
152
- }
153
- /** Create a FLOAT column with this database column name */
154
- float() {
155
- return new ColumnBuilder("float").name(this._alias);
156
- }
157
- /** Create a BLOB column with this database column name */
158
- blob() {
159
- return new ColumnBuilder("blob").name(this._alias);
160
- }
161
- };
162
- /**
163
- * Create a column with a custom database column name, then pick the column type
164
- * @param {string} alias - The column name to use in the database
165
- * @returns {NamedColumnStarter} A starter object to pick the column type
166
- * @example
167
- * guildId: name("guild_id").varchar(255).notNull()
168
- */
169
- const name = (alias) => new NamedColumnStarter(alias);
170
- /**
171
- * Column type helpers object for schema definitions
172
- * @returns {typeof d} Column type helpers
173
- */
174
- const d = {
175
- integer,
176
- bigint,
177
- varchar,
178
- char,
179
- text,
180
- boolean,
181
- json,
182
- array,
183
- datetime,
184
- timestamp,
185
- decimal,
186
- float,
187
- blob,
188
- name
189
- };
22
+ var integer, bigint, varchar, char, text, boolean, json, array, datetime, timestamp, decimal, float, blob, NamedColumnStarter, name, d;
23
+ var init_columns = __esmMin((() => {
24
+ init_column();
25
+ integer = () => new ColumnBuilder("integer");
26
+ bigint = () => new ColumnBuilder("bigint");
27
+ varchar = (length = 255) => new ColumnBuilder("varchar", length);
28
+ char = (length = 1) => new ColumnBuilder("char", length);
29
+ text = () => new ColumnBuilder("text");
30
+ boolean = () => new ColumnBuilder("boolean");
31
+ json = () => new ColumnBuilder("json");
32
+ array = () => new ColumnBuilder("array");
33
+ datetime = () => new ColumnBuilder("datetime");
34
+ timestamp = () => new ColumnBuilder("timestamp");
35
+ decimal = (precision = 10, scale = 2) => new ColumnBuilder("decimal", void 0, precision, scale);
36
+ float = () => new ColumnBuilder("float");
37
+ blob = () => new ColumnBuilder("blob");
38
+ NamedColumnStarter = class {
39
+ _alias;
40
+ constructor(alias) {
41
+ this._alias = alias;
42
+ }
43
+ /** Create an INTEGER column with this database column name */
44
+ integer() {
45
+ return new ColumnBuilder("integer").name(this._alias);
46
+ }
47
+ /** Create a BIGINT column with this database column name */
48
+ bigint() {
49
+ return new ColumnBuilder("bigint").name(this._alias);
50
+ }
51
+ /** Create a VARCHAR column with this database column name
52
+ * @param {number} [length=255] - Maximum character length
53
+ */
54
+ varchar(length = 255) {
55
+ return new ColumnBuilder("varchar", length).name(this._alias);
56
+ }
57
+ /** Create a CHAR column with this database column name
58
+ * @param {number} [length=1] - Fixed character length
59
+ */
60
+ char(length = 1) {
61
+ return new ColumnBuilder("char", length).name(this._alias);
62
+ }
63
+ /** Create a TEXT column with this database column name */
64
+ text() {
65
+ return new ColumnBuilder("text").name(this._alias);
66
+ }
67
+ /** Create a BOOLEAN column with this database column name */
68
+ boolean() {
69
+ return new ColumnBuilder("boolean").name(this._alias);
70
+ }
71
+ /** Create a JSON column with this database column name */
72
+ json() {
73
+ return new ColumnBuilder("json").name(this._alias);
74
+ }
75
+ /** Create an ARRAY column with this database column name */
76
+ array() {
77
+ return new ColumnBuilder("array").name(this._alias);
78
+ }
79
+ /** Create a DATETIME column with this database column name */
80
+ datetime() {
81
+ return new ColumnBuilder("datetime").name(this._alias);
82
+ }
83
+ /** Create a TIMESTAMP column with this database column name */
84
+ timestamp() {
85
+ return new ColumnBuilder("timestamp").name(this._alias);
86
+ }
87
+ /** Create a DECIMAL column with this database column name
88
+ * @param {number} [precision=10] - Total number of digits
89
+ * @param {number} [scale=2] - Number of decimal digits
90
+ */
91
+ decimal(precision = 10, scale = 2) {
92
+ return new ColumnBuilder("decimal", void 0, precision, scale).name(this._alias);
93
+ }
94
+ /** Create a FLOAT column with this database column name */
95
+ float() {
96
+ return new ColumnBuilder("float").name(this._alias);
97
+ }
98
+ /** Create a BLOB column with this database column name */
99
+ blob() {
100
+ return new ColumnBuilder("blob").name(this._alias);
101
+ }
102
+ };
103
+ name = (alias) => new NamedColumnStarter(alias);
104
+ d = {
105
+ integer,
106
+ bigint,
107
+ varchar,
108
+ char,
109
+ text,
110
+ boolean,
111
+ json,
112
+ array,
113
+ datetime,
114
+ timestamp,
115
+ decimal,
116
+ float,
117
+ blob,
118
+ name
119
+ };
120
+ }));
190
121
  //#endregion
191
- export { NamedColumnStarter, array, bigint, blob, boolean, char, columns_exports, d, datetime, decimal, float, integer, json, name, text, timestamp, varchar };
122
+ init_columns();
123
+ export { NamedColumnStarter, array, bigint, blob, boolean, char, columns_exports, d, datetime, decimal, float, init_columns, integer, json, name, text, timestamp, varchar };
192
124
 
193
125
  //# sourceMappingURL=index.mjs.map
@@ -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 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"}
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":";;;;;;;;;;;;;;;;;;;;;;;cAA0C;AAM7B,iBAAuC,IAAI,cAAsB,UAAU;AAM3E,gBAAsC,IAAI,cAAsB,SAAS;AAOzE,YAAW,SAAS,QAC/B,IAAI,cAAsB,WAAW,OAAO;AAOjC,SAAQ,SAAS,MAC5B,IAAI,cAAsB,QAAQ,OAAO;AAM9B,cAAoC,IAAI,cAAsB,OAAO;AAMrE,iBAAwC,IAAI,cAAuB,UAAU;AAM7E,cAAqC,IAAI,cAAuB,OAAO;AAMvE,eAAwC,IAAI,cAAyB,QAAQ;AAM7E,kBAAsC,IAAI,cAAoB,WAAW;AAMzE,mBAAuC,IAAI,cAAoB,YAAY;AAQ3E,YAAW,YAAY,IAAI,QAAQ,MAC9C,IAAI,cAAsB,WAAW,KAAA,GAAW,WAAW,MAAM;AAMtD,eAAqC,IAAI,cAAsB,QAAQ;AAMvE,cAAoC,IAAI,cAAsB,OAAO;AAQrE,sBAAb,MAAgC;EAC9B;EAEA,YAAY,OAAe;AACzB,QAAK,SAAS;;;EAIhB,UAAiC;AAC/B,UAAO,IAAI,cAAsB,UAAU,CAAC,KAAK,KAAK,OAAO;;;EAI/D,SAAgC;AAC9B,UAAO,IAAI,cAAsB,SAAS,CAAC,KAAK,KAAK,OAAO;;;;;EAM9D,QAAQ,SAAS,KAA4B;AAC3C,UAAO,IAAI,cAAsB,WAAW,OAAO,CAAC,KAAK,KAAK,OAAO;;;;;EAMvE,KAAK,SAAS,GAA0B;AACtC,UAAO,IAAI,cAAsB,QAAQ,OAAO,CAAC,KAAK,KAAK,OAAO;;;EAIpE,OAA8B;AAC5B,UAAO,IAAI,cAAsB,OAAO,CAAC,KAAK,KAAK,OAAO;;;EAI5D,UAAkC;AAChC,UAAO,IAAI,cAAuB,UAAU,CAAC,KAAK,KAAK,OAAO;;;EAIhE,OAA+B;AAC7B,UAAO,IAAI,cAAuB,OAAO,CAAC,KAAK,KAAK,OAAO;;;EAI7D,QAAkC;AAChC,UAAO,IAAI,cAAyB,QAAQ,CAAC,KAAK,KAAK,OAAO;;;EAIhE,WAAgC;AAC9B,UAAO,IAAI,cAAoB,WAAW,CAAC,KAAK,KAAK,OAAO;;;EAI9D,YAAiC;AAC/B,UAAO,IAAI,cAAoB,YAAY,CAAC,KAAK,KAAK,OAAO;;;;;;EAO/D,QAAQ,YAAY,IAAI,QAAQ,GAA0B;AACxD,UAAO,IAAI,cAAsB,WAAW,KAAA,GAAW,WAAW,MAAM,CAAC,KAAK,KAAK,OAAO;;;EAI5F,QAA+B;AAC7B,UAAO,IAAI,cAAsB,QAAQ,CAAC,KAAK,KAAK,OAAO;;;EAI7D,OAA8B;AAC5B,UAAO,IAAI,cAAsB,OAAO,CAAC,KAAK,KAAK,OAAO;;;AAWjD,SAAQ,UAAsC,IAAI,mBAAmB,MAAM;AAM3E,KAAI;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
@@ -0,0 +1,15 @@
1
+ import { __esmMin } from "../_virtual/_rolldown/runtime.mjs";
2
+ import "./column.mjs";
3
+ import { init_columns } from "./columns/index.mjs";
4
+ import { init_registry } from "./registry.mjs";
5
+ import "./table.mjs";
6
+ //#region src/schema/index.ts
7
+ var init_schema = __esmMin((() => {
8
+ init_columns();
9
+ init_registry();
10
+ }));
11
+ //#endregion
12
+ init_schema();
13
+ export { init_schema };
14
+
15
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/schema/index.ts"],"sourcesContent":["export { ColumnBuilder } from \"./column\";\nexport * from \"./columns\";\nexport { d } from \"./columns\";\nexport { SchemaRegistry } from \"./registry\";\nexport { table } from \"./table\";\n"],"mappings":";;;;;;;;gBAG4C"}
@@ -1,125 +1,128 @@
1
- import { SchemaError } from "../errors.mjs";
1
+ import { __esmMin } from "../_virtual/_rolldown/runtime.mjs";
2
+ import { SchemaError, init_errors } from "../errors.mjs";
2
3
  //#region src/schema/registry.ts
3
- /**
4
- * Schema registry that manages table definitions and resolves references
5
- */
6
- var SchemaRegistry = class {
7
- tables = /* @__PURE__ */ new Map();
8
- definitions = /* @__PURE__ */ new Map();
9
- columnMaps = /* @__PURE__ */ new Map();
10
- reverseColumnMaps = /* @__PURE__ */ new Map();
11
- relations = /* @__PURE__ */ new Map();
12
- /**
13
- * Register table definitions and resolve all deferred references
14
- * @param {readonly TableDefinition[]} schemas - Table definitions to register
15
- */
16
- register(schemas) {
17
- for (const schema of schemas) {
18
- if (!schema.__table || !schema.__name) throw new SchemaError("Invalid table definition");
19
- this.definitions.set(schema.__name, schema);
20
- this.tables.set(schema.__name, {
21
- name: schema.__name,
22
- columns: [...schema.__columns]
23
- });
24
- const colMap = schema.__columnMap ?? {};
25
- this.columnMaps.set(schema.__name, colMap);
26
- const reverseMap = {};
27
- for (const [codeKey, dbName] of Object.entries(colMap)) reverseMap[dbName] = codeKey;
28
- this.reverseColumnMaps.set(schema.__name, reverseMap);
29
- }
30
- for (const schema of schemas) for (const ref of schema.__deferredRefs) {
31
- const resolved = ref.resolve();
32
- if (!resolved.table || !resolved.column) throw new SchemaError(`Failed to resolve reference for ${schema.__name}.${ref.columnName}`);
33
- if (!this.tables.has(resolved.table)) throw new SchemaError(`Referenced table "${resolved.table}" does not exist in schema registry`);
34
- const dbColumnName = (this.columnMaps.get(schema.__name) ?? {})[ref.columnName] ?? ref.columnName;
35
- const column = schema.__columns.find((c) => c.name === dbColumnName);
36
- if (column) column.references = {
37
- table: resolved.table,
38
- column: resolved.column,
39
- onDelete: ref.onDelete,
40
- onUpdate: ref.onUpdate,
41
- relationName: ref.relationName
42
- };
43
- const relationName = ref.relationName || ref.columnName.replace(/Id$/, "").replace(/_id$/, "");
44
- if (!this.relations.has(schema.__name)) this.relations.set(schema.__name, []);
45
- this.relations.get(schema.__name).push({
46
- from: {
47
- table: schema.__name,
48
- column: dbColumnName
49
- },
50
- to: {
51
- table: resolved.table,
52
- column: resolved.column
53
- },
54
- relationName
55
- });
56
- if (!this.relations.has(resolved.table)) this.relations.set(resolved.table, []);
57
- const reverseRelationName = schema.__name;
58
- this.relations.get(resolved.table).push({
59
- from: {
4
+ var SchemaRegistry;
5
+ var init_registry = __esmMin((() => {
6
+ init_errors();
7
+ SchemaRegistry = class {
8
+ tables = /* @__PURE__ */ new Map();
9
+ definitions = /* @__PURE__ */ new Map();
10
+ columnMaps = /* @__PURE__ */ new Map();
11
+ reverseColumnMaps = /* @__PURE__ */ new Map();
12
+ relations = /* @__PURE__ */ new Map();
13
+ /**
14
+ * Register table definitions and resolve all deferred references
15
+ * @param {readonly TableDefinition[]} schemas - Table definitions to register
16
+ */
17
+ register(schemas) {
18
+ for (const schema of schemas) {
19
+ if (!schema.__table || !schema.__name) throw new SchemaError("Invalid table definition");
20
+ this.definitions.set(schema.__name, schema);
21
+ this.tables.set(schema.__name, {
22
+ name: schema.__name,
23
+ columns: [...schema.__columns]
24
+ });
25
+ const colMap = schema.__columnMap ?? {};
26
+ this.columnMaps.set(schema.__name, colMap);
27
+ const reverseMap = {};
28
+ for (const [codeKey, dbName] of Object.entries(colMap)) reverseMap[dbName] = codeKey;
29
+ this.reverseColumnMaps.set(schema.__name, reverseMap);
30
+ }
31
+ for (const schema of schemas) for (const ref of schema.__deferredRefs) {
32
+ const resolved = ref.resolve();
33
+ if (!resolved.table || !resolved.column) throw new SchemaError(`Failed to resolve reference for ${schema.__name}.${ref.columnName}`);
34
+ if (!this.tables.has(resolved.table)) throw new SchemaError(`Referenced table "${resolved.table}" does not exist in schema registry`);
35
+ const dbColumnName = (this.columnMaps.get(schema.__name) ?? {})[ref.columnName] ?? ref.columnName;
36
+ const column = schema.__columns.find((c) => c.name === dbColumnName);
37
+ if (column) column.references = {
60
38
  table: resolved.table,
61
- column: resolved.column
62
- },
63
- to: {
64
- table: schema.__name,
65
- column: dbColumnName
66
- },
67
- relationName: reverseRelationName
68
- });
39
+ column: resolved.column,
40
+ onDelete: ref.onDelete,
41
+ onUpdate: ref.onUpdate,
42
+ relationName: ref.relationName
43
+ };
44
+ const relationName = ref.relationName || ref.columnName.replace(/Id$/, "").replace(/_id$/, "");
45
+ if (!this.relations.has(schema.__name)) this.relations.set(schema.__name, []);
46
+ this.relations.get(schema.__name).push({
47
+ from: {
48
+ table: schema.__name,
49
+ column: dbColumnName
50
+ },
51
+ to: {
52
+ table: resolved.table,
53
+ column: resolved.column
54
+ },
55
+ relationName
56
+ });
57
+ if (!this.relations.has(resolved.table)) this.relations.set(resolved.table, []);
58
+ const reverseRelationName = schema.__name;
59
+ this.relations.get(resolved.table).push({
60
+ from: {
61
+ table: resolved.table,
62
+ column: resolved.column
63
+ },
64
+ to: {
65
+ table: schema.__name,
66
+ column: dbColumnName
67
+ },
68
+ relationName: reverseRelationName
69
+ });
70
+ }
71
+ }
72
+ /**
73
+ * Get table metadata by name
74
+ * @param {string} name - Table name
75
+ * @returns {TableMetadata | undefined} The table metadata
76
+ */
77
+ getTable(name) {
78
+ return this.tables.get(name);
79
+ }
80
+ /**
81
+ * Get all registered table metadata
82
+ * @returns {Map<string, TableMetadata>} All registered tables
83
+ */
84
+ getAllTables() {
85
+ return this.tables;
86
+ }
87
+ /**
88
+ * Get relations for a table
89
+ * @param {string} tableName - Table name
90
+ * @returns {Array<object>} Relations for the table
91
+ */
92
+ getRelations(tableName) {
93
+ return this.relations.get(tableName) ?? [];
94
+ }
95
+ /**
96
+ * Get the primary key column name for a table (returns DB column name)
97
+ * @param {string} tableName - Table name
98
+ * @returns {string | null} The primary key column name or null
99
+ */
100
+ getPrimaryKey(tableName) {
101
+ const table = this.tables.get(tableName);
102
+ if (!table) return null;
103
+ for (const col of table.columns) if (col.primaryKey) return col.name;
104
+ return null;
105
+ }
106
+ /**
107
+ * Get the column name map (code key -> DB column name) for a table
108
+ * @param {string} tableName - Table name
109
+ * @returns {Record<string, string>} Column name map
110
+ */
111
+ getColumnMap(tableName) {
112
+ return this.columnMaps.get(tableName) ?? {};
113
+ }
114
+ /**
115
+ * Get the reverse column name map (DB column name -> code key) for a table
116
+ * @param {string} tableName - Table name
117
+ * @returns {Record<string, string>} Reverse column name map
118
+ */
119
+ getReverseColumnMap(tableName) {
120
+ return this.reverseColumnMaps.get(tableName) ?? {};
69
121
  }
70
- }
71
- /**
72
- * Get table metadata by name
73
- * @param {string} name - Table name
74
- * @returns {TableMetadata | undefined} The table metadata
75
- */
76
- getTable(name) {
77
- return this.tables.get(name);
78
- }
79
- /**
80
- * Get all registered table metadata
81
- * @returns {Map<string, TableMetadata>} All registered tables
82
- */
83
- getAllTables() {
84
- return this.tables;
85
- }
86
- /**
87
- * Get relations for a table
88
- * @param {string} tableName - Table name
89
- * @returns {Array<object>} Relations for the table
90
- */
91
- getRelations(tableName) {
92
- return this.relations.get(tableName) ?? [];
93
- }
94
- /**
95
- * Get the primary key column name for a table (returns DB column name)
96
- * @param {string} tableName - Table name
97
- * @returns {string | null} The primary key column name or null
98
- */
99
- getPrimaryKey(tableName) {
100
- const table = this.tables.get(tableName);
101
- if (!table) return null;
102
- for (const col of table.columns) if (col.primaryKey) return col.name;
103
- return null;
104
- }
105
- /**
106
- * Get the column name map (code key -> DB column name) for a table
107
- * @param {string} tableName - Table name
108
- * @returns {Record<string, string>} Column name map
109
- */
110
- getColumnMap(tableName) {
111
- return this.columnMaps.get(tableName) ?? {};
112
- }
113
- /**
114
- * Get the reverse column name map (DB column name -> code key) for a table
115
- * @param {string} tableName - Table name
116
- * @returns {Record<string, string>} Reverse column name map
117
- */
118
- getReverseColumnMap(tableName) {
119
- return this.reverseColumnMaps.get(tableName) ?? {};
120
- }
121
- };
122
+ };
123
+ }));
122
124
  //#endregion
123
- export { SchemaRegistry };
125
+ init_registry();
126
+ export { SchemaRegistry, init_registry };
124
127
 
125
128
  //# sourceMappingURL=registry.mjs.map