drizzle-orm 1.0.0-beta.1-e4b0766 → 1.0.0-beta.1-2e234ba

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 (103) hide show
  1. package/aws-data-api/pg/driver.cjs +1 -1
  2. package/aws-data-api/pg/driver.cjs.map +1 -1
  3. package/aws-data-api/pg/driver.js +1 -1
  4. package/aws-data-api/pg/driver.js.map +1 -1
  5. package/mysql-core/columns/decimal.cjs +86 -1
  6. package/mysql-core/columns/decimal.cjs.map +1 -1
  7. package/mysql-core/columns/decimal.d.cts +47 -3
  8. package/mysql-core/columns/decimal.d.ts +47 -3
  9. package/mysql-core/columns/decimal.js +82 -1
  10. package/mysql-core/columns/decimal.js.map +1 -1
  11. package/mysql-core/dialect.cjs +5 -2
  12. package/mysql-core/dialect.cjs.map +1 -1
  13. package/mysql-core/dialect.js +5 -2
  14. package/mysql-core/dialect.js.map +1 -1
  15. package/mysql2/driver.cjs +2 -1
  16. package/mysql2/driver.cjs.map +1 -1
  17. package/mysql2/driver.js +2 -1
  18. package/mysql2/driver.js.map +1 -1
  19. package/neon-http/driver.cjs +5 -0
  20. package/neon-http/driver.cjs.map +1 -1
  21. package/neon-http/driver.js +5 -0
  22. package/neon-http/driver.js.map +1 -1
  23. package/neon-serverless/session.cjs +6 -0
  24. package/neon-serverless/session.cjs.map +1 -1
  25. package/neon-serverless/session.js +6 -0
  26. package/neon-serverless/session.js.map +1 -1
  27. package/node-postgres/session.cjs +6 -0
  28. package/node-postgres/session.cjs.map +1 -1
  29. package/node-postgres/session.js +6 -0
  30. package/node-postgres/session.js.map +1 -1
  31. package/package.json +25 -25
  32. package/pg-core/columns/numeric.cjs +86 -1
  33. package/pg-core/columns/numeric.cjs.map +1 -1
  34. package/pg-core/columns/numeric.d.cts +61 -6
  35. package/pg-core/columns/numeric.d.ts +61 -6
  36. package/pg-core/columns/numeric.js +82 -1
  37. package/pg-core/columns/numeric.js.map +1 -1
  38. package/pg-core/dialect.cjs +3 -1
  39. package/pg-core/dialect.cjs.map +1 -1
  40. package/pg-core/dialect.js +3 -1
  41. package/pg-core/dialect.js.map +1 -1
  42. package/pglite/session.cjs +8 -0
  43. package/pglite/session.cjs.map +1 -1
  44. package/pglite/session.js +8 -0
  45. package/pglite/session.js.map +1 -1
  46. package/postgres-js/driver.cjs +1 -1
  47. package/postgres-js/driver.cjs.map +1 -1
  48. package/postgres-js/driver.js +1 -1
  49. package/postgres-js/driver.js.map +1 -1
  50. package/singlestore/driver.cjs +1 -3
  51. package/singlestore/driver.cjs.map +1 -1
  52. package/singlestore/driver.js +1 -3
  53. package/singlestore/driver.js.map +1 -1
  54. package/singlestore-core/columns/binary.cjs +11 -0
  55. package/singlestore-core/columns/binary.cjs.map +1 -1
  56. package/singlestore-core/columns/binary.d.cts +1 -0
  57. package/singlestore-core/columns/binary.d.ts +1 -0
  58. package/singlestore-core/columns/binary.js +11 -0
  59. package/singlestore-core/columns/binary.js.map +1 -1
  60. package/singlestore-core/columns/decimal.cjs +92 -5
  61. package/singlestore-core/columns/decimal.cjs.map +1 -1
  62. package/singlestore-core/columns/decimal.d.cts +50 -3
  63. package/singlestore-core/columns/decimal.d.ts +50 -3
  64. package/singlestore-core/columns/decimal.js +88 -5
  65. package/singlestore-core/columns/decimal.js.map +1 -1
  66. package/singlestore-core/columns/varbinary.cjs +11 -0
  67. package/singlestore-core/columns/varbinary.cjs.map +1 -1
  68. package/singlestore-core/columns/varbinary.d.cts +1 -0
  69. package/singlestore-core/columns/varbinary.d.ts +1 -0
  70. package/singlestore-core/columns/varbinary.js +11 -0
  71. package/singlestore-core/columns/varbinary.js.map +1 -1
  72. package/singlestore-core/columns/varchar.cjs.map +1 -1
  73. package/singlestore-core/columns/varchar.d.cts +1 -1
  74. package/singlestore-core/columns/varchar.d.ts +1 -1
  75. package/singlestore-core/columns/varchar.js.map +1 -1
  76. package/singlestore-core/dialect.cjs +2 -2
  77. package/singlestore-core/dialect.cjs.map +1 -1
  78. package/singlestore-core/dialect.js +2 -2
  79. package/singlestore-core/dialect.js.map +1 -1
  80. package/sqlite-core/columns/blob.cjs +4 -1
  81. package/sqlite-core/columns/blob.cjs.map +1 -1
  82. package/sqlite-core/columns/blob.d.cts +1 -1
  83. package/sqlite-core/columns/blob.d.ts +1 -1
  84. package/sqlite-core/columns/blob.js +4 -1
  85. package/sqlite-core/columns/blob.js.map +1 -1
  86. package/sqlite-core/columns/numeric.cjs +64 -2
  87. package/sqlite-core/columns/numeric.cjs.map +1 -1
  88. package/sqlite-core/columns/numeric.d.cts +43 -2
  89. package/sqlite-core/columns/numeric.d.ts +43 -2
  90. package/sqlite-core/columns/numeric.js +60 -2
  91. package/sqlite-core/columns/numeric.js.map +1 -1
  92. package/sqlite-core/dialect.cjs +20 -5
  93. package/sqlite-core/dialect.cjs.map +1 -1
  94. package/sqlite-core/dialect.js +20 -5
  95. package/sqlite-core/dialect.js.map +1 -1
  96. package/vercel-postgres/session.cjs +6 -0
  97. package/vercel-postgres/session.cjs.map +1 -1
  98. package/vercel-postgres/session.js +6 -0
  99. package/vercel-postgres/session.js.map +1 -1
  100. package/version.cjs +1 -1
  101. package/version.d.cts +1 -1
  102. package/version.d.ts +1 -1
  103. package/version.js +1 -1
@@ -19,7 +19,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var numeric_exports = {};
20
20
  __export(numeric_exports, {
21
21
  PgNumeric: () => PgNumeric,
22
+ PgNumericBigInt: () => PgNumericBigInt,
23
+ PgNumericBigIntBuilder: () => PgNumericBigIntBuilder,
22
24
  PgNumericBuilder: () => PgNumericBuilder,
25
+ PgNumericNumber: () => PgNumericNumber,
26
+ PgNumericNumberBuilder: () => PgNumericNumberBuilder,
23
27
  decimal: () => decimal,
24
28
  numeric: () => numeric
25
29
  });
@@ -63,15 +67,96 @@ class PgNumeric extends import_common.PgColumn {
63
67
  }
64
68
  }
65
69
  }
70
+ class PgNumericNumberBuilder extends import_common.PgColumnBuilder {
71
+ static [import_entity.entityKind] = "PgNumericNumberBuilder";
72
+ constructor(name, precision, scale) {
73
+ super(name, "number", "PgNumericNumber");
74
+ this.config.precision = precision;
75
+ this.config.scale = scale;
76
+ }
77
+ /** @internal */
78
+ build(table) {
79
+ return new PgNumericNumber(
80
+ table,
81
+ this.config
82
+ );
83
+ }
84
+ }
85
+ class PgNumericNumber extends import_common.PgColumn {
86
+ static [import_entity.entityKind] = "PgNumericNumber";
87
+ precision;
88
+ scale;
89
+ constructor(table, config) {
90
+ super(table, config);
91
+ this.precision = config.precision;
92
+ this.scale = config.scale;
93
+ }
94
+ mapFromDriverValue(value) {
95
+ if (typeof value === "number")
96
+ return value;
97
+ return Number(value);
98
+ }
99
+ mapToDriverValue = String;
100
+ getSQLType() {
101
+ if (this.precision !== void 0 && this.scale !== void 0) {
102
+ return `numeric(${this.precision}, ${this.scale})`;
103
+ } else if (this.precision === void 0) {
104
+ return "numeric";
105
+ } else {
106
+ return `numeric(${this.precision})`;
107
+ }
108
+ }
109
+ }
110
+ class PgNumericBigIntBuilder extends import_common.PgColumnBuilder {
111
+ static [import_entity.entityKind] = "PgNumericBigIntBuilder";
112
+ constructor(name, precision, scale) {
113
+ super(name, "bigint", "PgNumericBigInt");
114
+ this.config.precision = precision;
115
+ this.config.scale = scale;
116
+ }
117
+ /** @internal */
118
+ build(table) {
119
+ return new PgNumericBigInt(
120
+ table,
121
+ this.config
122
+ );
123
+ }
124
+ }
125
+ class PgNumericBigInt extends import_common.PgColumn {
126
+ static [import_entity.entityKind] = "PgNumericBigInt";
127
+ precision;
128
+ scale;
129
+ constructor(table, config) {
130
+ super(table, config);
131
+ this.precision = config.precision;
132
+ this.scale = config.scale;
133
+ }
134
+ mapFromDriverValue = BigInt;
135
+ mapToDriverValue = String;
136
+ getSQLType() {
137
+ if (this.precision !== void 0 && this.scale !== void 0) {
138
+ return `numeric(${this.precision}, ${this.scale})`;
139
+ } else if (this.precision === void 0) {
140
+ return "numeric";
141
+ } else {
142
+ return `numeric(${this.precision})`;
143
+ }
144
+ }
145
+ }
66
146
  function numeric(a, b) {
67
147
  const { name, config } = (0, import_utils.getColumnNameAndConfig)(a, b);
68
- return new PgNumericBuilder(name, config?.precision, config?.scale);
148
+ const mode = config?.mode;
149
+ return mode === "number" ? new PgNumericNumberBuilder(name, config?.precision, config?.scale) : mode === "bigint" ? new PgNumericBigIntBuilder(name, config?.precision, config?.scale) : new PgNumericBuilder(name, config?.precision, config?.scale);
69
150
  }
70
151
  const decimal = numeric;
71
152
  // Annotate the CommonJS export names for ESM import in node:
72
153
  0 && (module.exports = {
73
154
  PgNumeric,
155
+ PgNumericBigInt,
156
+ PgNumericBigIntBuilder,
74
157
  PgNumericBuilder,
158
+ PgNumericNumber,
159
+ PgNumericNumberBuilder,
75
160
  decimal,
76
161
  numeric
77
162
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/pg-core/columns/numeric.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport { getColumnNameAndConfig } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgNumericBuilderInitial<TName extends string> = PgNumericBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgNumeric';\n\tdata: string;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgNumericBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgNumeric'>> extends PgColumnBuilder<\n\tT,\n\t{\n\t\tprecision: number | undefined;\n\t\tscale: number | undefined;\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'PgNumericBuilder';\n\n\tconstructor(name: T['name'], precision?: number, scale?: number) {\n\t\tsuper(name, 'string', 'PgNumeric');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgNumeric<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgNumeric<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);\n\t}\n}\n\nexport class PgNumeric<T extends ColumnBaseConfig<'string', 'PgNumeric'>> extends PgColumn<T> {\n\tstatic override readonly [entityKind]: string = 'PgNumeric';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgNumericBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue(value: unknown): string {\n\t\tif (typeof value === 'string') return value;\n\n\t\treturn String(value);\n\t}\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `numeric(${this.precision}, ${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'numeric';\n\t\t} else {\n\t\t\treturn `numeric(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport type PgNumericConfig =\n\t| { precision: number; scale?: number }\n\t| { precision?: number; scale: number }\n\t| { precision: number; scale: number };\n\nexport function numeric(): PgNumericBuilderInitial<''>;\nexport function numeric(\n\tconfig?: PgNumericConfig,\n): PgNumericBuilderInitial<''>;\nexport function numeric<TName extends string>(\n\tname: TName,\n\tconfig?: PgNumericConfig,\n): PgNumericBuilderInitial<TName>;\nexport function numeric(a?: string | PgNumericConfig, b?: PgNumericConfig) {\n\tconst { name, config } = getColumnNameAndConfig<PgNumericConfig>(a, b);\n\treturn new PgNumericBuilder(name, config?.precision, config?.scale);\n}\n\nexport const decimal = numeric;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAE3B,mBAAuC;AACvC,oBAA0C;AAWnC,MAAM,yBAAmF,8BAM9F;AAAA,EACD,QAA0B,wBAAU,IAAY;AAAA,EAEhD,YAAY,MAAiB,WAAoB,OAAgB;AAChE,UAAM,MAAM,UAAU,WAAW;AACjC,SAAK,OAAO,YAAY;AACxB,SAAK,OAAO,QAAQ;AAAA,EACrB;AAAA;AAAA,EAGS,MACR,OAC6C;AAC7C,WAAO,IAAI,UAA2C,OAAO,KAAK,MAA8C;AAAA,EACjH;AACD;AAEO,MAAM,kBAAqE,uBAAY;AAAA,EAC7F,QAA0B,wBAAU,IAAY;AAAA,EAEvC;AAAA,EACA;AAAA,EAET,YAAY,OAA6C,QAAuC;AAC/F,UAAM,OAAO,MAAM;AACnB,SAAK,YAAY,OAAO;AACxB,SAAK,QAAQ,OAAO;AAAA,EACrB;AAAA,EAES,mBAAmB,OAAwB;AACnD,QAAI,OAAO,UAAU;AAAU,aAAO;AAEtC,WAAO,OAAO,KAAK;AAAA,EACpB;AAAA,EAEA,aAAqB;AACpB,QAAI,KAAK,cAAc,UAAa,KAAK,UAAU,QAAW;AAC7D,aAAO,WAAW,KAAK,SAAS,KAAK,KAAK,KAAK;AAAA,IAChD,WAAW,KAAK,cAAc,QAAW;AACxC,aAAO;AAAA,IACR,OAAO;AACN,aAAO,WAAW,KAAK,SAAS;AAAA,IACjC;AAAA,EACD;AACD;AAeO,SAAS,QAAQ,GAA8B,GAAqB;AAC1E,QAAM,EAAE,MAAM,OAAO,QAAI,qCAAwC,GAAG,CAAC;AACrE,SAAO,IAAI,iBAAiB,MAAM,QAAQ,WAAW,QAAQ,KAAK;AACnE;AAEO,MAAM,UAAU;","names":[]}
1
+ {"version":3,"sources":["../../../src/pg-core/columns/numeric.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport { type Equal, getColumnNameAndConfig } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgNumericBuilderInitial<TName extends string> = PgNumericBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgNumeric';\n\tdata: string;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgNumericBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgNumeric'>> extends PgColumnBuilder<\n\tT,\n\t{\n\t\tprecision: number | undefined;\n\t\tscale: number | undefined;\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'PgNumericBuilder';\n\n\tconstructor(name: T['name'], precision?: number, scale?: number) {\n\t\tsuper(name, 'string', 'PgNumeric');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgNumeric<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgNumeric<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);\n\t}\n}\n\nexport class PgNumeric<T extends ColumnBaseConfig<'string', 'PgNumeric'>> extends PgColumn<T> {\n\tstatic override readonly [entityKind]: string = 'PgNumeric';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgNumericBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue(value: unknown): string {\n\t\tif (typeof value === 'string') return value;\n\n\t\treturn String(value);\n\t}\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `numeric(${this.precision}, ${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'numeric';\n\t\t} else {\n\t\t\treturn `numeric(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport type PgNumericNumberBuilderInitial<TName extends string> = PgNumericNumberBuilder<{\n\tname: TName;\n\tdataType: 'number';\n\tcolumnType: 'PgNumericNumber';\n\tdata: number;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgNumericNumberBuilder<T extends ColumnBuilderBaseConfig<'number', 'PgNumericNumber'>>\n\textends PgColumnBuilder<\n\t\tT,\n\t\t{\n\t\t\tprecision: number | undefined;\n\t\t\tscale: number | undefined;\n\t\t}\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'PgNumericNumberBuilder';\n\n\tconstructor(name: T['name'], precision?: number, scale?: number) {\n\t\tsuper(name, 'number', 'PgNumericNumber');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgNumericNumber<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgNumericNumber<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgNumericNumber<T extends ColumnBaseConfig<'number', 'PgNumericNumber'>> extends PgColumn<T> {\n\tstatic override readonly [entityKind]: string = 'PgNumericNumber';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgNumericNumberBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue(value: unknown): number {\n\t\tif (typeof value === 'number') return value;\n\n\t\treturn Number(value);\n\t}\n\n\toverride mapToDriverValue = String;\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `numeric(${this.precision}, ${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'numeric';\n\t\t} else {\n\t\t\treturn `numeric(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport type PgNumericBigIntBuilderInitial<TName extends string> = PgNumericBigIntBuilder<{\n\tname: TName;\n\tdataType: 'bigint';\n\tcolumnType: 'PgNumericBigInt';\n\tdata: bigint;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgNumericBigIntBuilder<T extends ColumnBuilderBaseConfig<'bigint', 'PgNumericBigInt'>>\n\textends PgColumnBuilder<\n\t\tT,\n\t\t{\n\t\t\tprecision: number | undefined;\n\t\t\tscale: number | undefined;\n\t\t}\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'PgNumericBigIntBuilder';\n\n\tconstructor(name: T['name'], precision?: number, scale?: number) {\n\t\tsuper(name, 'bigint', 'PgNumericBigInt');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgNumericBigInt<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgNumericBigInt<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgNumericBigInt<T extends ColumnBaseConfig<'bigint', 'PgNumericBigInt'>> extends PgColumn<T> {\n\tstatic override readonly [entityKind]: string = 'PgNumericBigInt';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgNumericBigIntBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue = BigInt;\n\n\toverride mapToDriverValue = String;\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `numeric(${this.precision}, ${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'numeric';\n\t\t} else {\n\t\t\treturn `numeric(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport type PgNumericConfig<T extends 'string' | 'number' | 'bigint' = 'string' | 'number' | 'bigint'> =\n\t| { precision: number; scale?: number; mode?: T }\n\t| { precision?: number; scale: number; mode?: T }\n\t| { precision?: number; scale?: number; mode: T };\n\nexport function numeric<TMode extends 'string' | 'number' | 'bigint'>(\n\tconfig?: PgNumericConfig<TMode>,\n): Equal<TMode, 'number'> extends true ? PgNumericNumberBuilderInitial<''>\n\t: Equal<TMode, 'bigint'> extends true ? PgNumericBigIntBuilderInitial<''>\n\t: PgNumericBuilderInitial<''>;\nexport function numeric<TName extends string, TMode extends 'string' | 'number' | 'bigint'>(\n\tname: TName,\n\tconfig?: PgNumericConfig<TMode>,\n): Equal<TMode, 'number'> extends true ? PgNumericNumberBuilderInitial<TName>\n\t: Equal<TMode, 'bigint'> extends true ? PgNumericBigIntBuilderInitial<TName>\n\t: PgNumericBuilderInitial<TName>;\nexport function numeric(a?: string | PgNumericConfig, b?: PgNumericConfig) {\n\tconst { name, config } = getColumnNameAndConfig<PgNumericConfig>(a, b);\n\tconst mode = config?.mode;\n\treturn mode === 'number'\n\t\t? new PgNumericNumberBuilder(name, config?.precision, config?.scale)\n\t\t: mode === 'bigint'\n\t\t? new PgNumericBigIntBuilder(name, config?.precision, config?.scale)\n\t\t: new PgNumericBuilder(name, config?.precision, config?.scale);\n}\n\nexport const decimal = numeric;\n"],"mappings":"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","names":[]}
@@ -2,6 +2,7 @@ import type { ColumnBuilderBaseConfig } from "../../column-builder.cjs";
2
2
  import type { ColumnBaseConfig } from "../../column.cjs";
3
3
  import { entityKind } from "../../entity.cjs";
4
4
  import type { AnyPgTable } from "../table.cjs";
5
+ import { type Equal } from "../../utils.cjs";
5
6
  import { PgColumn, PgColumnBuilder } from "./common.cjs";
6
7
  export type PgNumericBuilderInitial<TName extends string> = PgNumericBuilder<{
7
8
  name: TName;
@@ -28,17 +29,71 @@ export declare class PgNumeric<T extends ColumnBaseConfig<'string', 'PgNumeric'>
28
29
  mapFromDriverValue(value: unknown): string;
29
30
  getSQLType(): string;
30
31
  }
31
- export type PgNumericConfig = {
32
+ export type PgNumericNumberBuilderInitial<TName extends string> = PgNumericNumberBuilder<{
33
+ name: TName;
34
+ dataType: 'number';
35
+ columnType: 'PgNumericNumber';
36
+ data: number;
37
+ driverParam: string;
38
+ enumValues: undefined;
39
+ }>;
40
+ export declare class PgNumericNumberBuilder<T extends ColumnBuilderBaseConfig<'number', 'PgNumericNumber'>> extends PgColumnBuilder<T, {
41
+ precision: number | undefined;
42
+ scale: number | undefined;
43
+ }> {
44
+ static readonly [entityKind]: string;
45
+ constructor(name: T['name'], precision?: number, scale?: number);
46
+ }
47
+ export declare class PgNumericNumber<T extends ColumnBaseConfig<'number', 'PgNumericNumber'>> extends PgColumn<T> {
48
+ static readonly [entityKind]: string;
49
+ readonly precision: number | undefined;
50
+ readonly scale: number | undefined;
51
+ constructor(table: AnyPgTable<{
52
+ name: T['tableName'];
53
+ }>, config: PgNumericNumberBuilder<T>['config']);
54
+ mapFromDriverValue(value: unknown): number;
55
+ mapToDriverValue: StringConstructor;
56
+ getSQLType(): string;
57
+ }
58
+ export type PgNumericBigIntBuilderInitial<TName extends string> = PgNumericBigIntBuilder<{
59
+ name: TName;
60
+ dataType: 'bigint';
61
+ columnType: 'PgNumericBigInt';
62
+ data: bigint;
63
+ driverParam: string;
64
+ enumValues: undefined;
65
+ }>;
66
+ export declare class PgNumericBigIntBuilder<T extends ColumnBuilderBaseConfig<'bigint', 'PgNumericBigInt'>> extends PgColumnBuilder<T, {
67
+ precision: number | undefined;
68
+ scale: number | undefined;
69
+ }> {
70
+ static readonly [entityKind]: string;
71
+ constructor(name: T['name'], precision?: number, scale?: number);
72
+ }
73
+ export declare class PgNumericBigInt<T extends ColumnBaseConfig<'bigint', 'PgNumericBigInt'>> extends PgColumn<T> {
74
+ static readonly [entityKind]: string;
75
+ readonly precision: number | undefined;
76
+ readonly scale: number | undefined;
77
+ constructor(table: AnyPgTable<{
78
+ name: T['tableName'];
79
+ }>, config: PgNumericBigIntBuilder<T>['config']);
80
+ mapFromDriverValue: BigIntConstructor;
81
+ mapToDriverValue: StringConstructor;
82
+ getSQLType(): string;
83
+ }
84
+ export type PgNumericConfig<T extends 'string' | 'number' | 'bigint' = 'string' | 'number' | 'bigint'> = {
32
85
  precision: number;
33
86
  scale?: number;
87
+ mode?: T;
34
88
  } | {
35
89
  precision?: number;
36
90
  scale: number;
91
+ mode?: T;
37
92
  } | {
38
- precision: number;
39
- scale: number;
93
+ precision?: number;
94
+ scale?: number;
95
+ mode: T;
40
96
  };
41
- export declare function numeric(): PgNumericBuilderInitial<''>;
42
- export declare function numeric(config?: PgNumericConfig): PgNumericBuilderInitial<''>;
43
- export declare function numeric<TName extends string>(name: TName, config?: PgNumericConfig): PgNumericBuilderInitial<TName>;
97
+ export declare function numeric<TMode extends 'string' | 'number' | 'bigint'>(config?: PgNumericConfig<TMode>): Equal<TMode, 'number'> extends true ? PgNumericNumberBuilderInitial<''> : Equal<TMode, 'bigint'> extends true ? PgNumericBigIntBuilderInitial<''> : PgNumericBuilderInitial<''>;
98
+ export declare function numeric<TName extends string, TMode extends 'string' | 'number' | 'bigint'>(name: TName, config?: PgNumericConfig<TMode>): Equal<TMode, 'number'> extends true ? PgNumericNumberBuilderInitial<TName> : Equal<TMode, 'bigint'> extends true ? PgNumericBigIntBuilderInitial<TName> : PgNumericBuilderInitial<TName>;
44
99
  export declare const decimal: typeof numeric;
@@ -2,6 +2,7 @@ import type { ColumnBuilderBaseConfig } from "../../column-builder.js";
2
2
  import type { ColumnBaseConfig } from "../../column.js";
3
3
  import { entityKind } from "../../entity.js";
4
4
  import type { AnyPgTable } from "../table.js";
5
+ import { type Equal } from "../../utils.js";
5
6
  import { PgColumn, PgColumnBuilder } from "./common.js";
6
7
  export type PgNumericBuilderInitial<TName extends string> = PgNumericBuilder<{
7
8
  name: TName;
@@ -28,17 +29,71 @@ export declare class PgNumeric<T extends ColumnBaseConfig<'string', 'PgNumeric'>
28
29
  mapFromDriverValue(value: unknown): string;
29
30
  getSQLType(): string;
30
31
  }
31
- export type PgNumericConfig = {
32
+ export type PgNumericNumberBuilderInitial<TName extends string> = PgNumericNumberBuilder<{
33
+ name: TName;
34
+ dataType: 'number';
35
+ columnType: 'PgNumericNumber';
36
+ data: number;
37
+ driverParam: string;
38
+ enumValues: undefined;
39
+ }>;
40
+ export declare class PgNumericNumberBuilder<T extends ColumnBuilderBaseConfig<'number', 'PgNumericNumber'>> extends PgColumnBuilder<T, {
41
+ precision: number | undefined;
42
+ scale: number | undefined;
43
+ }> {
44
+ static readonly [entityKind]: string;
45
+ constructor(name: T['name'], precision?: number, scale?: number);
46
+ }
47
+ export declare class PgNumericNumber<T extends ColumnBaseConfig<'number', 'PgNumericNumber'>> extends PgColumn<T> {
48
+ static readonly [entityKind]: string;
49
+ readonly precision: number | undefined;
50
+ readonly scale: number | undefined;
51
+ constructor(table: AnyPgTable<{
52
+ name: T['tableName'];
53
+ }>, config: PgNumericNumberBuilder<T>['config']);
54
+ mapFromDriverValue(value: unknown): number;
55
+ mapToDriverValue: StringConstructor;
56
+ getSQLType(): string;
57
+ }
58
+ export type PgNumericBigIntBuilderInitial<TName extends string> = PgNumericBigIntBuilder<{
59
+ name: TName;
60
+ dataType: 'bigint';
61
+ columnType: 'PgNumericBigInt';
62
+ data: bigint;
63
+ driverParam: string;
64
+ enumValues: undefined;
65
+ }>;
66
+ export declare class PgNumericBigIntBuilder<T extends ColumnBuilderBaseConfig<'bigint', 'PgNumericBigInt'>> extends PgColumnBuilder<T, {
67
+ precision: number | undefined;
68
+ scale: number | undefined;
69
+ }> {
70
+ static readonly [entityKind]: string;
71
+ constructor(name: T['name'], precision?: number, scale?: number);
72
+ }
73
+ export declare class PgNumericBigInt<T extends ColumnBaseConfig<'bigint', 'PgNumericBigInt'>> extends PgColumn<T> {
74
+ static readonly [entityKind]: string;
75
+ readonly precision: number | undefined;
76
+ readonly scale: number | undefined;
77
+ constructor(table: AnyPgTable<{
78
+ name: T['tableName'];
79
+ }>, config: PgNumericBigIntBuilder<T>['config']);
80
+ mapFromDriverValue: BigIntConstructor;
81
+ mapToDriverValue: StringConstructor;
82
+ getSQLType(): string;
83
+ }
84
+ export type PgNumericConfig<T extends 'string' | 'number' | 'bigint' = 'string' | 'number' | 'bigint'> = {
32
85
  precision: number;
33
86
  scale?: number;
87
+ mode?: T;
34
88
  } | {
35
89
  precision?: number;
36
90
  scale: number;
91
+ mode?: T;
37
92
  } | {
38
- precision: number;
39
- scale: number;
93
+ precision?: number;
94
+ scale?: number;
95
+ mode: T;
40
96
  };
41
- export declare function numeric(): PgNumericBuilderInitial<''>;
42
- export declare function numeric(config?: PgNumericConfig): PgNumericBuilderInitial<''>;
43
- export declare function numeric<TName extends string>(name: TName, config?: PgNumericConfig): PgNumericBuilderInitial<TName>;
97
+ export declare function numeric<TMode extends 'string' | 'number' | 'bigint'>(config?: PgNumericConfig<TMode>): Equal<TMode, 'number'> extends true ? PgNumericNumberBuilderInitial<''> : Equal<TMode, 'bigint'> extends true ? PgNumericBigIntBuilderInitial<''> : PgNumericBuilderInitial<''>;
98
+ export declare function numeric<TName extends string, TMode extends 'string' | 'number' | 'bigint'>(name: TName, config?: PgNumericConfig<TMode>): Equal<TMode, 'number'> extends true ? PgNumericNumberBuilderInitial<TName> : Equal<TMode, 'bigint'> extends true ? PgNumericBigIntBuilderInitial<TName> : PgNumericBuilderInitial<TName>;
44
99
  export declare const decimal: typeof numeric;
@@ -37,14 +37,95 @@ class PgNumeric extends PgColumn {
37
37
  }
38
38
  }
39
39
  }
40
+ class PgNumericNumberBuilder extends PgColumnBuilder {
41
+ static [entityKind] = "PgNumericNumberBuilder";
42
+ constructor(name, precision, scale) {
43
+ super(name, "number", "PgNumericNumber");
44
+ this.config.precision = precision;
45
+ this.config.scale = scale;
46
+ }
47
+ /** @internal */
48
+ build(table) {
49
+ return new PgNumericNumber(
50
+ table,
51
+ this.config
52
+ );
53
+ }
54
+ }
55
+ class PgNumericNumber extends PgColumn {
56
+ static [entityKind] = "PgNumericNumber";
57
+ precision;
58
+ scale;
59
+ constructor(table, config) {
60
+ super(table, config);
61
+ this.precision = config.precision;
62
+ this.scale = config.scale;
63
+ }
64
+ mapFromDriverValue(value) {
65
+ if (typeof value === "number")
66
+ return value;
67
+ return Number(value);
68
+ }
69
+ mapToDriverValue = String;
70
+ getSQLType() {
71
+ if (this.precision !== void 0 && this.scale !== void 0) {
72
+ return `numeric(${this.precision}, ${this.scale})`;
73
+ } else if (this.precision === void 0) {
74
+ return "numeric";
75
+ } else {
76
+ return `numeric(${this.precision})`;
77
+ }
78
+ }
79
+ }
80
+ class PgNumericBigIntBuilder extends PgColumnBuilder {
81
+ static [entityKind] = "PgNumericBigIntBuilder";
82
+ constructor(name, precision, scale) {
83
+ super(name, "bigint", "PgNumericBigInt");
84
+ this.config.precision = precision;
85
+ this.config.scale = scale;
86
+ }
87
+ /** @internal */
88
+ build(table) {
89
+ return new PgNumericBigInt(
90
+ table,
91
+ this.config
92
+ );
93
+ }
94
+ }
95
+ class PgNumericBigInt extends PgColumn {
96
+ static [entityKind] = "PgNumericBigInt";
97
+ precision;
98
+ scale;
99
+ constructor(table, config) {
100
+ super(table, config);
101
+ this.precision = config.precision;
102
+ this.scale = config.scale;
103
+ }
104
+ mapFromDriverValue = BigInt;
105
+ mapToDriverValue = String;
106
+ getSQLType() {
107
+ if (this.precision !== void 0 && this.scale !== void 0) {
108
+ return `numeric(${this.precision}, ${this.scale})`;
109
+ } else if (this.precision === void 0) {
110
+ return "numeric";
111
+ } else {
112
+ return `numeric(${this.precision})`;
113
+ }
114
+ }
115
+ }
40
116
  function numeric(a, b) {
41
117
  const { name, config } = getColumnNameAndConfig(a, b);
42
- return new PgNumericBuilder(name, config?.precision, config?.scale);
118
+ const mode = config?.mode;
119
+ return mode === "number" ? new PgNumericNumberBuilder(name, config?.precision, config?.scale) : mode === "bigint" ? new PgNumericBigIntBuilder(name, config?.precision, config?.scale) : new PgNumericBuilder(name, config?.precision, config?.scale);
43
120
  }
44
121
  const decimal = numeric;
45
122
  export {
46
123
  PgNumeric,
124
+ PgNumericBigInt,
125
+ PgNumericBigIntBuilder,
47
126
  PgNumericBuilder,
127
+ PgNumericNumber,
128
+ PgNumericNumberBuilder,
48
129
  decimal,
49
130
  numeric
50
131
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/pg-core/columns/numeric.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport { getColumnNameAndConfig } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgNumericBuilderInitial<TName extends string> = PgNumericBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgNumeric';\n\tdata: string;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgNumericBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgNumeric'>> extends PgColumnBuilder<\n\tT,\n\t{\n\t\tprecision: number | undefined;\n\t\tscale: number | undefined;\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'PgNumericBuilder';\n\n\tconstructor(name: T['name'], precision?: number, scale?: number) {\n\t\tsuper(name, 'string', 'PgNumeric');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgNumeric<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgNumeric<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);\n\t}\n}\n\nexport class PgNumeric<T extends ColumnBaseConfig<'string', 'PgNumeric'>> extends PgColumn<T> {\n\tstatic override readonly [entityKind]: string = 'PgNumeric';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgNumericBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue(value: unknown): string {\n\t\tif (typeof value === 'string') return value;\n\n\t\treturn String(value);\n\t}\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `numeric(${this.precision}, ${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'numeric';\n\t\t} else {\n\t\t\treturn `numeric(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport type PgNumericConfig =\n\t| { precision: number; scale?: number }\n\t| { precision?: number; scale: number }\n\t| { precision: number; scale: number };\n\nexport function numeric(): PgNumericBuilderInitial<''>;\nexport function numeric(\n\tconfig?: PgNumericConfig,\n): PgNumericBuilderInitial<''>;\nexport function numeric<TName extends string>(\n\tname: TName,\n\tconfig?: PgNumericConfig,\n): PgNumericBuilderInitial<TName>;\nexport function numeric(a?: string | PgNumericConfig, b?: PgNumericConfig) {\n\tconst { name, config } = getColumnNameAndConfig<PgNumericConfig>(a, b);\n\treturn new PgNumericBuilder(name, config?.precision, config?.scale);\n}\n\nexport const decimal = numeric;\n"],"mappings":"AAEA,SAAS,kBAAkB;AAE3B,SAAS,8BAA8B;AACvC,SAAS,UAAU,uBAAuB;AAWnC,MAAM,yBAAmF,gBAM9F;AAAA,EACD,QAA0B,UAAU,IAAY;AAAA,EAEhD,YAAY,MAAiB,WAAoB,OAAgB;AAChE,UAAM,MAAM,UAAU,WAAW;AACjC,SAAK,OAAO,YAAY;AACxB,SAAK,OAAO,QAAQ;AAAA,EACrB;AAAA;AAAA,EAGS,MACR,OAC6C;AAC7C,WAAO,IAAI,UAA2C,OAAO,KAAK,MAA8C;AAAA,EACjH;AACD;AAEO,MAAM,kBAAqE,SAAY;AAAA,EAC7F,QAA0B,UAAU,IAAY;AAAA,EAEvC;AAAA,EACA;AAAA,EAET,YAAY,OAA6C,QAAuC;AAC/F,UAAM,OAAO,MAAM;AACnB,SAAK,YAAY,OAAO;AACxB,SAAK,QAAQ,OAAO;AAAA,EACrB;AAAA,EAES,mBAAmB,OAAwB;AACnD,QAAI,OAAO,UAAU;AAAU,aAAO;AAEtC,WAAO,OAAO,KAAK;AAAA,EACpB;AAAA,EAEA,aAAqB;AACpB,QAAI,KAAK,cAAc,UAAa,KAAK,UAAU,QAAW;AAC7D,aAAO,WAAW,KAAK,SAAS,KAAK,KAAK,KAAK;AAAA,IAChD,WAAW,KAAK,cAAc,QAAW;AACxC,aAAO;AAAA,IACR,OAAO;AACN,aAAO,WAAW,KAAK,SAAS;AAAA,IACjC;AAAA,EACD;AACD;AAeO,SAAS,QAAQ,GAA8B,GAAqB;AAC1E,QAAM,EAAE,MAAM,OAAO,IAAI,uBAAwC,GAAG,CAAC;AACrE,SAAO,IAAI,iBAAiB,MAAM,QAAQ,WAAW,QAAQ,KAAK;AACnE;AAEO,MAAM,UAAU;","names":[]}
1
+ {"version":3,"sources":["../../../src/pg-core/columns/numeric.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport { type Equal, getColumnNameAndConfig } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgNumericBuilderInitial<TName extends string> = PgNumericBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgNumeric';\n\tdata: string;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgNumericBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgNumeric'>> extends PgColumnBuilder<\n\tT,\n\t{\n\t\tprecision: number | undefined;\n\t\tscale: number | undefined;\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'PgNumericBuilder';\n\n\tconstructor(name: T['name'], precision?: number, scale?: number) {\n\t\tsuper(name, 'string', 'PgNumeric');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgNumeric<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgNumeric<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);\n\t}\n}\n\nexport class PgNumeric<T extends ColumnBaseConfig<'string', 'PgNumeric'>> extends PgColumn<T> {\n\tstatic override readonly [entityKind]: string = 'PgNumeric';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgNumericBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue(value: unknown): string {\n\t\tif (typeof value === 'string') return value;\n\n\t\treturn String(value);\n\t}\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `numeric(${this.precision}, ${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'numeric';\n\t\t} else {\n\t\t\treturn `numeric(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport type PgNumericNumberBuilderInitial<TName extends string> = PgNumericNumberBuilder<{\n\tname: TName;\n\tdataType: 'number';\n\tcolumnType: 'PgNumericNumber';\n\tdata: number;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgNumericNumberBuilder<T extends ColumnBuilderBaseConfig<'number', 'PgNumericNumber'>>\n\textends PgColumnBuilder<\n\t\tT,\n\t\t{\n\t\t\tprecision: number | undefined;\n\t\t\tscale: number | undefined;\n\t\t}\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'PgNumericNumberBuilder';\n\n\tconstructor(name: T['name'], precision?: number, scale?: number) {\n\t\tsuper(name, 'number', 'PgNumericNumber');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgNumericNumber<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgNumericNumber<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgNumericNumber<T extends ColumnBaseConfig<'number', 'PgNumericNumber'>> extends PgColumn<T> {\n\tstatic override readonly [entityKind]: string = 'PgNumericNumber';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgNumericNumberBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue(value: unknown): number {\n\t\tif (typeof value === 'number') return value;\n\n\t\treturn Number(value);\n\t}\n\n\toverride mapToDriverValue = String;\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `numeric(${this.precision}, ${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'numeric';\n\t\t} else {\n\t\t\treturn `numeric(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport type PgNumericBigIntBuilderInitial<TName extends string> = PgNumericBigIntBuilder<{\n\tname: TName;\n\tdataType: 'bigint';\n\tcolumnType: 'PgNumericBigInt';\n\tdata: bigint;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgNumericBigIntBuilder<T extends ColumnBuilderBaseConfig<'bigint', 'PgNumericBigInt'>>\n\textends PgColumnBuilder<\n\t\tT,\n\t\t{\n\t\t\tprecision: number | undefined;\n\t\t\tscale: number | undefined;\n\t\t}\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'PgNumericBigIntBuilder';\n\n\tconstructor(name: T['name'], precision?: number, scale?: number) {\n\t\tsuper(name, 'bigint', 'PgNumericBigInt');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgNumericBigInt<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgNumericBigInt<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgNumericBigInt<T extends ColumnBaseConfig<'bigint', 'PgNumericBigInt'>> extends PgColumn<T> {\n\tstatic override readonly [entityKind]: string = 'PgNumericBigInt';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgNumericBigIntBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue = BigInt;\n\n\toverride mapToDriverValue = String;\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `numeric(${this.precision}, ${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'numeric';\n\t\t} else {\n\t\t\treturn `numeric(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport type PgNumericConfig<T extends 'string' | 'number' | 'bigint' = 'string' | 'number' | 'bigint'> =\n\t| { precision: number; scale?: number; mode?: T }\n\t| { precision?: number; scale: number; mode?: T }\n\t| { precision?: number; scale?: number; mode: T };\n\nexport function numeric<TMode extends 'string' | 'number' | 'bigint'>(\n\tconfig?: PgNumericConfig<TMode>,\n): Equal<TMode, 'number'> extends true ? PgNumericNumberBuilderInitial<''>\n\t: Equal<TMode, 'bigint'> extends true ? PgNumericBigIntBuilderInitial<''>\n\t: PgNumericBuilderInitial<''>;\nexport function numeric<TName extends string, TMode extends 'string' | 'number' | 'bigint'>(\n\tname: TName,\n\tconfig?: PgNumericConfig<TMode>,\n): Equal<TMode, 'number'> extends true ? PgNumericNumberBuilderInitial<TName>\n\t: Equal<TMode, 'bigint'> extends true ? PgNumericBigIntBuilderInitial<TName>\n\t: PgNumericBuilderInitial<TName>;\nexport function numeric(a?: string | PgNumericConfig, b?: PgNumericConfig) {\n\tconst { name, config } = getColumnNameAndConfig<PgNumericConfig>(a, b);\n\tconst mode = config?.mode;\n\treturn mode === 'number'\n\t\t? new PgNumericNumberBuilder(name, config?.precision, config?.scale)\n\t\t: mode === 'bigint'\n\t\t? new PgNumericBigIntBuilder(name, config?.precision, config?.scale)\n\t\t: new PgNumericBuilder(name, config?.precision, config?.scale);\n}\n\nexport const decimal = numeric;\n"],"mappings":"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","names":[]}
@@ -230,7 +230,7 @@ class PgDialect {
230
230
  return import_sql2.sql.join(joinsArray);
231
231
  }
232
232
  buildFromTable(table) {
233
- if ((0, import_entity.is)(table, import_table2.Table) && table[import_table2.Table.Symbol.OriginalName] !== table[import_table2.Table.Symbol.Name]) {
233
+ if ((0, import_entity.is)(table, import_table2.Table) && table[import_table2.Table.Symbol.IsAlias]) {
234
234
  let fullName = import_sql2.sql`${import_sql2.sql.identifier(table[import_table2.Table.Symbol.OriginalName])}`;
235
235
  if (table[import_table2.Table.Symbol.Schema]) {
236
236
  fullName = import_sql2.sql`${import_sql2.sql.identifier(table[import_table2.Table.Symbol.Schema])}.${fullName}`;
@@ -676,6 +676,8 @@ class PgDialect {
676
676
  }
677
677
  switch (targetType) {
678
678
  case "PgNumeric":
679
+ case "PgNumericNumber":
680
+ case "PgNumericBigInt":
679
681
  case "PgBigInt64":
680
682
  case "PgBigSerial64":
681
683
  case "PgTimestampString":