drizzle-orm 0.25.2 → 0.25.3

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 (60) hide show
  1. package/aws-data-api/pg/index.d.ts +2 -2
  2. package/aws-data-api/pg/migrator.d.ts +2 -2
  3. package/better-sqlite3/index.d.ts +2 -2
  4. package/better-sqlite3/migrator.d.ts +2 -2
  5. package/bun-sqlite/index.d.ts +2 -2
  6. package/bun-sqlite/migrator.d.ts +2 -2
  7. package/d1/index.d.ts +2 -2
  8. package/d1/migrator.d.ts +2 -2
  9. package/{db.d-66553b9e.d.ts → db.d-9136888c.d.ts} +2 -2
  10. package/{db.d-ae495c35.d.ts → db.d-fde890b4.d.ts} +2 -2
  11. package/{driver.d-e4bd120b.d.ts → driver.d-1e0a19a9.d.ts} +1 -1
  12. package/{driver.d-693f7f9f.d.ts → driver.d-2ed188ed.d.ts} +1 -1
  13. package/{driver.d-1f73a4a9.d.ts → driver.d-526bb7cb.d.ts} +1 -1
  14. package/{driver.d-0158cd93.d.ts → driver.d-858634da.d.ts} +1 -1
  15. package/{driver.d-f4b5b390.d.ts → driver.d-8e70cd6f.d.ts} +1 -1
  16. package/{driver.d-5f3fc125.d.ts → driver.d-95363f1a.d.ts} +1 -1
  17. package/{driver.d-6c43e393.d.ts → driver.d-95f6b950.d.ts} +1 -1
  18. package/{driver.d-2e907d12.d.ts → driver.d-9768329f.d.ts} +1 -1
  19. package/{driver.d-b00fc6ec.d.ts → driver.d-985f318c.d.ts} +2 -3
  20. package/{driver.d-59580d08.d.ts → driver.d-c79defcd.d.ts} +1 -1
  21. package/{driver.d-3a8adf2a.d.ts → driver.d-f63d5a57.d.ts} +1 -1
  22. package/{driver.d-3781598a.d.ts → driver.d-fd3bd023.d.ts} +1 -1
  23. package/libsql/index.d.ts +2 -2
  24. package/libsql/migrator.d.ts +2 -2
  25. package/mysql-core/index.cjs +1 -1
  26. package/mysql-core/index.cjs.map +1 -1
  27. package/mysql-core/index.d.ts +345 -345
  28. package/mysql-core/index.mjs +1 -1
  29. package/mysql-core/index.mjs.map +1 -1
  30. package/mysql2/index.d.ts +2 -2
  31. package/mysql2/migrator.d.ts +2 -2
  32. package/neon-serverless/index.d.ts +2 -2
  33. package/neon-serverless/migrator.d.ts +2 -2
  34. package/node-postgres/index.cjs +1 -1
  35. package/node-postgres/index.cjs.map +1 -1
  36. package/node-postgres/index.d.ts +2 -2
  37. package/node-postgres/index.mjs +1 -1
  38. package/node-postgres/index.mjs.map +1 -1
  39. package/node-postgres/migrator.d.ts +2 -2
  40. package/package.json +97 -33
  41. package/pg-core/index.cjs +1 -1
  42. package/pg-core/index.cjs.map +1 -1
  43. package/pg-core/index.d.ts +3 -3
  44. package/pg-core/index.mjs +1 -1
  45. package/planetscale-serverless/index.d.ts +2 -2
  46. package/planetscale-serverless/migrator.d.ts +2 -2
  47. package/postgres-js/index.d.ts +2 -2
  48. package/postgres-js/migrator.d.ts +2 -2
  49. package/{select.types.d-adb82002.d.ts → select.types.d-ffd2e526.d.ts} +2 -2
  50. package/sql-js/index.d.ts +2 -2
  51. package/sql-js/migrator.d.ts +2 -2
  52. package/sqlite-core/index.cjs +1 -1
  53. package/sqlite-core/index.cjs.map +1 -1
  54. package/sqlite-core/index.d.ts +3 -3
  55. package/sqlite-core/index.mjs +1 -1
  56. package/sqlite-proxy/index.d.ts +3 -3
  57. package/sqlite-proxy/migrator.d.ts +2 -2
  58. package/version.cjs +1 -1
  59. package/version.d.ts +1 -1
  60. package/version.mjs +1 -1
@@ -1,6 +1,6 @@
1
- import { M as MySqlColumnBuilderWithAutoIncrement, a as MySqlColumnWithAutoIncrement, b as MySqlColumnBuilder, c as MySqlColumn, A as AnyMySqlTable, B as BuildAliasTable, d as MySqlTableFn, m as mysqlView, e as AnyMySqlColumn, I as Index, F as ForeignKey, C as Check, P as PrimaryKey, f as MySqlView } from '../select.types.d-adb82002.js';
2
- export { l as AnyForeignKeyBuilder, q as AnyIndexBuilder, D as AnyMySqlInsertConfig, S as AnyMySqlSelect, g as CheckBuilder, k as ForeignKeyBuilder, G as GetColumnsTable, s as GetColumnsTableName, r as IndexBuilder, p as IndexBuilderOn, o as IndexColumn, V as JoinFn, O as JoinsValue, _ as LockConfig, Z as LockStrength, at as ManualViewBuilder, i as MySqlDatabase, y as MySqlDelete, x as MySqlDeleteConfig, j as MySqlDialect, J as MySqlInsert, H as MySqlInsertBuilder, z as MySqlInsertConfig, E as MySqlInsertValue, N as MySqlSelect, K as MySqlSelectBuilder, T as MySqlSelectConfig, a2 as MySqlSelectHKT, $ as MySqlSelectHKTBase, a0 as MySqlSelectKind, L as MySqlSelectQueryBuilder, a1 as MySqlSelectQueryBuilderHKT, ae as MySqlSession, al as MySqlTable, aj as MySqlTableExtraConfig, am as MySqlTableWithColumns, af as MySqlTransaction, ad as MySqlTransactionConfig, a6 as MySqlUpdate, a5 as MySqlUpdateBuilder, a3 as MySqlUpdateConfig, a4 as MySqlUpdateSetSource, au as MySqlViewBase, av as MySqlViewConfig, aw as MySqlViewWithSelection, ac as PreparedQuery, a9 as PreparedQueryConfig, aa as PreparedQueryHKT, ag as PreparedQueryHKTBase, ab as PreparedQueryKind, w as PrimaryKeyBuilder, Q as QueryBuilder, a7 as QueryResultHKT, a8 as QueryResultKind, R as Reference, X as SelectedFields, W as SelectedFieldsFlat, Y as SelectedFieldsOrdered, ah as SubqueryWithSelection, ak as TableConfig, U as UpdateDeleteAction, as as ViewBuilder, aq as ViewBuilderConfig, ar as ViewBuilderCore, ai as WithSubqueryWithSelection, h as check, n as foreignKey, t as index, ao as mysqlTable, ap as mysqlTableCreator, an as mysqlTableWithSchema, v as primaryKey, u as uniqueIndex } from '../select.types.d-adb82002.js';
3
- import { j as ColumnBuilderHKTBase, aj as Assume, h as ColumnBuilderBaseConfig, d as ColumnHKTBase, C as ColumnBaseConfig, W as WithEnum, aq as Writable, k as ColumnBuilderKind, ai as Simplify, p as UpdateCBConfig, ak as Equal, S as SQL, u as SelectedFields, A as AnyColumn, T as Table, a8 as TableConfig } from '../column.d-8b137277.js';
1
+ import { M as MySqlColumnBuilderWithAutoIncrement, a as MySqlColumnWithAutoIncrement, b as MySqlColumnBuilder, c as MySqlColumn, A as AnyMySqlTable, B as BuildAliasTable, d as MySqlTableFn, m as mysqlView, e as AnyMySqlColumn, I as Index, F as ForeignKey, C as Check, P as PrimaryKey, f as MySqlView } from '../select.types.d-ffd2e526.js';
2
+ export { r as AnyForeignKeyBuilder, v as AnyIndexBuilder, k as AnyMySqlColumnBuilder, L as AnyMySqlInsertConfig, Y as AnyMySqlSelect, g as CheckBuilder, q as ForeignKeyBuilder, G as GetColumnsTable, x as GetColumnsTableName, w as IndexBuilder, u as IndexBuilderOn, t as IndexColumn, _ as JoinFn, X as JoinsValue, a3 as LockConfig, a2 as LockStrength, ay as ManualViewBuilder, i as MySqlColumnBuilderHKT, j as MySqlColumnHKT, l as MySqlColumnWithAutoIncrementConfig, n as MySqlDatabase, J as MySqlDelete, H as MySqlDeleteConfig, o as MySqlDialect, Q as MySqlInsert, O as MySqlInsertBuilder, K as MySqlInsertConfig, N as MySqlInsertValue, W as MySqlSelect, T as MySqlSelectBuilder, Z as MySqlSelectConfig, a7 as MySqlSelectHKT, a4 as MySqlSelectHKTBase, a5 as MySqlSelectKind, V as MySqlSelectQueryBuilder, a6 as MySqlSelectQueryBuilderHKT, aj as MySqlSession, aq as MySqlTable, ao as MySqlTableExtraConfig, ar as MySqlTableWithColumns, ak as MySqlTransaction, ai as MySqlTransactionConfig, ab as MySqlUpdate, aa as MySqlUpdateBuilder, a8 as MySqlUpdateConfig, a9 as MySqlUpdateSetSource, az as MySqlViewBase, aA as MySqlViewConfig, aB as MySqlViewWithSelection, ah as PreparedQuery, ae as PreparedQueryConfig, af as PreparedQueryHKT, al as PreparedQueryHKTBase, ag as PreparedQueryKind, E as PrimaryKeyBuilder, S as QueryBuilder, ac as QueryResultHKT, ad as QueryResultKind, p as Reference, R as ReferenceConfig, a0 as SelectedFields, $ as SelectedFieldsFlat, a1 as SelectedFieldsOrdered, am as SubqueryWithSelection, ap as TableConfig, U as UpdateDeleteAction, ax as ViewBuilder, av as ViewBuilderConfig, aw as ViewBuilderCore, an as WithSubqueryWithSelection, h as check, s as foreignKey, y as index, at as mysqlTable, au as mysqlTableCreator, as as mysqlTableWithSchema, D as primaryKey, z as uniqueIndex } from '../select.types.d-ffd2e526.js';
3
+ import { j as ColumnBuilderHKTBase, aj as Assume, h as ColumnBuilderBaseConfig, d as ColumnHKTBase, C as ColumnBaseConfig, W as WithEnum, aq as Writable, ai as Simplify, ak as Equal, S as SQL, k as ColumnBuilderKind, p as UpdateCBConfig, u as SelectedFields, A as AnyColumn, T as Table, a8 as TableConfig } from '../column.d-8b137277.js';
4
4
  import '../select.types.d-c3e86d45.js';
5
5
  import 'mysql2/promise';
6
6
  import '../migrator.js';
@@ -78,6 +78,28 @@ interface MySqlBinaryConfig {
78
78
  }
79
79
  declare function binary<TName extends string>(name: TName, config?: MySqlBinaryConfig): MySqlBinaryBuilderInitial<TName>;
80
80
 
81
+ interface MySqlBooleanBuilderHKT extends ColumnBuilderHKTBase {
82
+ _type: MySqlBooleanBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
83
+ _columnHKT: MySqlBooleanHKT;
84
+ }
85
+ interface MySqlBooleanHKT extends ColumnHKTBase {
86
+ _type: MySqlBoolean<Assume<this['config'], ColumnBaseConfig>>;
87
+ }
88
+ type MySqlBooleanBuilderInitial<TName extends string> = MySqlBooleanBuilder<{
89
+ name: TName;
90
+ data: boolean;
91
+ driverParam: number | boolean;
92
+ notNull: false;
93
+ hasDefault: false;
94
+ }>;
95
+ declare class MySqlBooleanBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlBooleanBuilderHKT, T> {
96
+ }
97
+ declare class MySqlBoolean<T extends ColumnBaseConfig> extends MySqlColumn<MySqlBooleanHKT, T> {
98
+ getSQLType(): string;
99
+ mapFromDriverValue(value: number | boolean): boolean;
100
+ }
101
+ declare function boolean<TName extends string>(name: TName): MySqlBooleanBuilderInitial<TName>;
102
+
81
103
  interface MySqlCharBuilderHKT extends ColumnBuilderHKTBase {
82
104
  _type: MySqlCharBuilder<Assume<this['config'], ColumnBuilderBaseConfig & WithEnum>>;
83
105
  _columnHKT: MySqlCharHKT;
@@ -107,27 +129,254 @@ interface MySqlCharConfig<TEnum extends readonly string[] | string[]> {
107
129
  }
108
130
  declare function char<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>>(name: TName, config?: MySqlCharConfig<T | Writable<T>>): MySqlCharBuilderInitial<TName, Writable<T>>;
109
131
 
110
- interface MySqlBooleanBuilderHKT extends ColumnBuilderHKTBase {
111
- _type: MySqlBooleanBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
112
- _columnHKT: MySqlBooleanHKT;
132
+ type ConvertCustomConfig<TName extends string, T extends Partial<CustomTypeValues>> = Simplify<{
133
+ name: TName;
134
+ data: T['data'];
135
+ driverParam: T['driverData'];
136
+ notNull: T['notNull'] extends true ? true : false;
137
+ hasDefault: T['default'] extends true ? true : false;
138
+ }>;
139
+ interface MySqlCustomColumnInnerConfig {
140
+ customTypeValues: CustomTypeValues;
113
141
  }
114
- interface MySqlBooleanHKT extends ColumnHKTBase {
115
- _type: MySqlBoolean<Assume<this['config'], ColumnBaseConfig>>;
142
+ interface MySqlCustomColumnBuilderHKT extends ColumnBuilderHKTBase {
143
+ _type: MySqlCustomColumnBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
144
+ _columnHKT: MySqlCustomColumnHKT;
116
145
  }
117
- type MySqlBooleanBuilderInitial<TName extends string> = MySqlBooleanBuilder<{
146
+ interface MySqlCustomColumnHKT extends ColumnHKTBase {
147
+ _type: MySqlCustomColumn<Assume<this['config'], ColumnBaseConfig>>;
148
+ }
149
+ declare class MySqlCustomColumnBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlCustomColumnBuilderHKT, T, {
150
+ fieldConfig: CustomTypeValues['config'];
151
+ customTypeParams: CustomTypeParams<any>;
152
+ }, {
153
+ mysqlColumnBuilderBrand: 'MySqlCustomColumnBuilderBrand';
154
+ }> {
155
+ constructor(name: T['name'], fieldConfig: CustomTypeValues['config'], customTypeParams: CustomTypeParams<any>);
156
+ }
157
+ declare class MySqlCustomColumn<T extends ColumnBaseConfig> extends MySqlColumn<MySqlCustomColumnHKT, T> {
158
+ protected $mysqlColumnBrand: 'MySqlCustomColumn';
159
+ private sqlName;
160
+ private mapTo?;
161
+ private mapFrom?;
162
+ constructor(table: AnyMySqlTable<{
163
+ name: T['tableName'];
164
+ }>, config: MySqlCustomColumnBuilder<T>['config']);
165
+ getSQLType(): string;
166
+ mapFromDriverValue(value: T['driverParam']): T['data'];
167
+ mapToDriverValue(value: T['data']): T['driverParam'];
168
+ }
169
+ type CustomTypeValues = {
170
+ /**
171
+ * Required type for custom column, that will infer proper type model
172
+ *
173
+ * Examples:
174
+ *
175
+ * If you want your column to be `string` type after selecting/or on inserting - use `data: string`. Like `text`, `varchar`
176
+ *
177
+ * If you want your column to be `number` type after selecting/or on inserting - use `data: number`. Like `integer`
178
+ */
179
+ data: unknown;
180
+ /**
181
+ * Type helper, that represents what type database driver is accepting for specific database data type
182
+ */
183
+ driverData?: unknown;
184
+ /**
185
+ * What config type should be used for {@link CustomTypeParams} `dataType` generation
186
+ */
187
+ config?: unknown;
188
+ /**
189
+ * Whether the config argument should be required or not
190
+ * @default false
191
+ */
192
+ configRequired?: boolean;
193
+ /**
194
+ * If your custom data type should be notNull by default you can use `notNull: true`
195
+ *
196
+ * @example
197
+ * const customSerial = customType<{ data: number, notNull: true, default: true }>({
198
+ * dataType() {
199
+ * return 'serial';
200
+ * },
201
+ * });
202
+ */
203
+ notNull?: boolean;
204
+ /**
205
+ * If your custom data type has default you can use `default: true`
206
+ *
207
+ * @example
208
+ * const customSerial = customType<{ data: number, notNull: true, default: true }>({
209
+ * dataType() {
210
+ * return 'serial';
211
+ * },
212
+ * });
213
+ */
214
+ default?: boolean;
215
+ };
216
+ interface CustomTypeParams<T extends CustomTypeValues> {
217
+ /**
218
+ * Database data type string representation, that is used for migrations
219
+ * @example
220
+ * ```
221
+ * `jsonb`, `text`
222
+ * ```
223
+ *
224
+ * If database data type needs additional params you can use them from `config` param
225
+ * @example
226
+ * ```
227
+ * `varchar(256)`, `numeric(2,3)`
228
+ * ```
229
+ *
230
+ * To make `config` be of specific type please use config generic in {@link CustomTypeValues}
231
+ *
232
+ * @example
233
+ * Usage example
234
+ * ```
235
+ * dataType() {
236
+ * return 'boolean';
237
+ * },
238
+ * ```
239
+ * Or
240
+ * ```
241
+ * dataType(config) {
242
+ * return typeof config.length !== 'undefined' ? `varchar(${config.length})` : `varchar`;
243
+ * }
244
+ * ```
245
+ */
246
+ dataType: (config: T['config'] | (Equal<T['configRequired'], true> extends true ? never : undefined)) => string;
247
+ /**
248
+ * Optional mapping function, between user input and driver
249
+ * @example
250
+ * For example, when using jsonb we need to map JS/TS object to string before writing to database
251
+ * ```
252
+ * toDriver(value: TData): string {
253
+ * return JSON.stringify(value);
254
+ * }
255
+ * ```
256
+ */
257
+ toDriver?: (value: T['data']) => T['driverData'] | SQL;
258
+ /**
259
+ * Optional mapping function, that is responsible for data mapping from database to JS/TS code
260
+ * @example
261
+ * For example, when using timestamp we need to map string Date representation to JS Date
262
+ * ```
263
+ * fromDriver(value: string): Date {
264
+ * return new Date(value);
265
+ * },
266
+ * ```
267
+ */
268
+ fromDriver?: (value: T['driverData']) => T['data'];
269
+ }
270
+ /**
271
+ * Custom mysql database data type generator
272
+ */
273
+ declare function customType<T extends CustomTypeValues = CustomTypeValues>(customTypeParams: CustomTypeParams<T>): Equal<T['configRequired'], true> extends true ? <TName extends string>(dbName: TName, fieldConfig: T['config']) => MySqlCustomColumnBuilder<ConvertCustomConfig<TName, T>> : <TName extends string>(dbName: TName, fieldConfig?: T['config']) => MySqlCustomColumnBuilder<ConvertCustomConfig<TName, T>>;
274
+
275
+ interface MySqlDateBuilderHKT extends ColumnBuilderHKTBase {
276
+ _type: MySqlDateBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
277
+ _columnHKT: MySqlDateHKT;
278
+ }
279
+ interface MySqlDateHKT extends ColumnHKTBase {
280
+ _type: MySqlDate<Assume<this['config'], ColumnBaseConfig>>;
281
+ }
282
+ type MySqlDateBuilderInitial<TName extends string> = MySqlDateBuilder<{
118
283
  name: TName;
119
- data: boolean;
120
- driverParam: number | boolean;
284
+ data: Date;
285
+ driverParam: string | number;
121
286
  notNull: false;
122
287
  hasDefault: false;
123
288
  }>;
124
- declare class MySqlBooleanBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlBooleanBuilderHKT, T> {
289
+ declare class MySqlDateBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlDateBuilderHKT, T> {
125
290
  }
126
- declare class MySqlBoolean<T extends ColumnBaseConfig> extends MySqlColumn<MySqlBooleanHKT, T> {
291
+ declare class MySqlDate<T extends ColumnBaseConfig> extends MySqlColumn<MySqlDateHKT, T> {
292
+ constructor(table: AnyMySqlTable<{
293
+ name: T['tableName'];
294
+ }>, config: MySqlDateBuilder<T>['config']);
127
295
  getSQLType(): string;
128
- mapFromDriverValue(value: number | boolean): boolean;
296
+ mapFromDriverValue(value: string): Date;
129
297
  }
130
- declare function boolean<TName extends string>(name: TName): MySqlBooleanBuilderInitial<TName>;
298
+ interface MySqlDateStringBuilderHKT extends ColumnBuilderHKTBase {
299
+ _type: MySqlDateStringBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
300
+ _columnHKT: MySqlDateStringHKT;
301
+ }
302
+ interface MySqlDateStringHKT extends ColumnHKTBase {
303
+ _type: MySqlDateString<Assume<this['config'], ColumnBaseConfig>>;
304
+ }
305
+ type MySqlDateStringBuilderInitial<TName extends string> = MySqlDateStringBuilder<{
306
+ name: TName;
307
+ data: string;
308
+ driverParam: string | number;
309
+ notNull: false;
310
+ hasDefault: false;
311
+ }>;
312
+ declare class MySqlDateStringBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlDateStringBuilderHKT, T> {
313
+ }
314
+ declare class MySqlDateString<T extends ColumnBaseConfig> extends MySqlColumn<MySqlDateStringHKT, T> {
315
+ constructor(table: AnyMySqlTable<{
316
+ name: T['tableName'];
317
+ }>, config: MySqlDateStringBuilder<T>['config']);
318
+ getSQLType(): string;
319
+ }
320
+ interface MySqlDateConfig<TMode extends 'date' | 'string' = 'date' | 'string'> {
321
+ mode?: TMode;
322
+ }
323
+ declare function date<TName extends string, TMode extends MySqlDateConfig['mode'] & {}>(name: TName, config?: MySqlDateConfig<TMode>): Equal<TMode, 'string'> extends true ? MySqlDateStringBuilderInitial<TName> : MySqlDateBuilderInitial<TName>;
324
+
325
+ interface MySqlDateTimeBuilderHKT extends ColumnBuilderHKTBase {
326
+ _type: MySqlDateTimeBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
327
+ _columnHKT: MySqlDateTimeHKT;
328
+ }
329
+ interface MySqlDateTimeHKT extends ColumnHKTBase {
330
+ _type: MySqlDateTime<Assume<this['config'], ColumnBaseConfig>>;
331
+ }
332
+ type MySqlDateTimeBuilderInitial<TName extends string> = MySqlDateTimeBuilder<{
333
+ name: TName;
334
+ data: Date;
335
+ driverParam: string | number;
336
+ notNull: false;
337
+ hasDefault: false;
338
+ }>;
339
+ declare class MySqlDateTimeBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlDateTimeBuilderHKT, T, MySqlDatetimeConfig> {
340
+ constructor(name: T['name'], config: MySqlDatetimeConfig | undefined);
341
+ }
342
+ declare class MySqlDateTime<T extends ColumnBaseConfig> extends MySqlColumn<MySqlDateTimeHKT, T> {
343
+ readonly fsp: number | undefined;
344
+ constructor(table: AnyMySqlTable<{
345
+ name: T['tableName'];
346
+ }>, config: MySqlDateTimeBuilder<T>['config']);
347
+ getSQLType(): string;
348
+ mapFromDriverValue(value: string): Date;
349
+ }
350
+ interface MySqlDateTimeStringBuilderHKT extends ColumnBuilderHKTBase {
351
+ _type: MySqlDateTimeStringBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
352
+ _columnHKT: MySqlDateTimeStringHKT;
353
+ }
354
+ interface MySqlDateTimeStringHKT extends ColumnHKTBase {
355
+ _type: MySqlDateTimeString<Assume<this['config'], ColumnBaseConfig>>;
356
+ }
357
+ type MySqlDateTimeStringBuilderInitial<TName extends string> = MySqlDateTimeStringBuilder<{
358
+ name: TName;
359
+ data: string;
360
+ driverParam: string | number;
361
+ notNull: false;
362
+ hasDefault: false;
363
+ }>;
364
+ declare class MySqlDateTimeStringBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlDateTimeStringBuilderHKT, T, MySqlDatetimeConfig> {
365
+ constructor(name: T['name'], config: MySqlDatetimeConfig | undefined);
366
+ }
367
+ declare class MySqlDateTimeString<T extends ColumnBaseConfig> extends MySqlColumn<MySqlDateTimeStringHKT, T> {
368
+ readonly fsp: number | undefined;
369
+ constructor(table: AnyMySqlTable<{
370
+ name: T['tableName'];
371
+ }>, config: MySqlDateTimeStringBuilder<T>['config']);
372
+ getSQLType(): string;
373
+ }
374
+ type DatetimeFsp = 0 | 1 | 2 | 3 | 4 | 5 | 6;
375
+ interface MySqlDatetimeConfig<TMode extends 'date' | 'string' = 'date' | 'string'> {
376
+ mode?: TMode;
377
+ fsp?: DatetimeFsp;
378
+ }
379
+ declare function datetime<TName extends string, TMode extends MySqlDatetimeConfig['mode'] & {}>(name: TName, config?: MySqlDatetimeConfig<TMode>): Equal<TMode, 'string'> extends true ? MySqlDateTimeStringBuilderInitial<TName> : MySqlDateTimeBuilderInitial<TName>;
131
380
 
132
381
  interface MySqlDecimalBuilderHKT extends ColumnBuilderHKTBase {
133
382
  _type: MySqlDecimalBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
@@ -408,6 +657,32 @@ declare function tinytext<TName extends string, U extends string, T extends Read
408
657
  declare function mediumtext<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>>(name: TName, config?: MySqlTextConfig<T | Writable<T>>): MySqlTextBuilderInitial<TName, Writable<T>>;
409
658
  declare function longtext<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>>(name: TName, config?: MySqlTextConfig<T | Writable<T>>): MySqlTextBuilderInitial<TName, Writable<T>>;
410
659
 
660
+ interface MySqlTimeBuilderHKT extends ColumnBuilderHKTBase {
661
+ _type: MySqlTimeBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
662
+ _columnHKT: MySqlTimeHKT;
663
+ }
664
+ interface MySqlTimeHKT extends ColumnHKTBase {
665
+ _type: MySqlTime<Assume<this['config'], ColumnBaseConfig>>;
666
+ }
667
+ type MySqlTimeBuilderInitial<TName extends string> = MySqlTimeBuilder<{
668
+ name: TName;
669
+ data: string;
670
+ driverParam: string | number;
671
+ notNull: false;
672
+ hasDefault: false;
673
+ }>;
674
+ declare class MySqlTimeBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlTimeBuilderHKT, T, TimeConfig> {
675
+ constructor(name: T['name'], config: TimeConfig | undefined);
676
+ }
677
+ declare class MySqlTime<T extends ColumnBaseConfig> extends MySqlColumn<MySqlTimeHKT, T, TimeConfig> {
678
+ readonly fsp: number | undefined;
679
+ getSQLType(): string;
680
+ }
681
+ type TimeConfig = {
682
+ fsp?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
683
+ };
684
+ declare function time<TName extends string>(name: TName, config?: TimeConfig): MySqlTimeBuilderInitial<TName>;
685
+
411
686
  interface MySqlDateColumnBaseConfig {
412
687
  hasOnUpdateNow: boolean;
413
688
  }
@@ -451,235 +726,103 @@ interface MySqlTimestampStringBuilderHKT extends ColumnBuilderHKTBase {
451
726
  _columnHKT: MySqlTimestampStringHKT;
452
727
  }
453
728
  interface MySqlTimestampStringHKT extends ColumnHKTBase {
454
- _type: MySqlTimestampString<Assume<this['config'], ColumnBaseConfig>>;
455
- }
456
- type MySqlTimestampStringBuilderInitial<TName extends string> = MySqlTimestampStringBuilder<{
457
- name: TName;
458
- data: string;
459
- driverParam: string | number;
460
- notNull: false;
461
- hasDefault: false;
462
- }>;
463
- declare class MySqlTimestampStringBuilder<T extends ColumnBuilderBaseConfig> extends MySqlDateColumnBaseBuilder<MySqlTimestampStringBuilderHKT, T, MySqlTimestampConfig> {
464
- constructor(name: T['name'], config: MySqlTimestampConfig | undefined);
465
- }
466
- declare class MySqlTimestampString<T extends ColumnBaseConfig> extends MySqlDateBaseColumn<MySqlTimestampStringHKT, T, MySqlTimestampConfig> {
467
- readonly fsp: number | undefined;
468
- getSQLType(): string;
469
- }
470
- type TimestampFsp = 0 | 1 | 2 | 3 | 4 | 5 | 6;
471
- interface MySqlTimestampConfig<TMode extends 'string' | 'date' = 'string' | 'date'> {
472
- mode?: TMode;
473
- fsp?: TimestampFsp;
474
- }
475
- declare function timestamp<TName extends string, TMode extends MySqlTimestampConfig['mode'] & {}>(name: TName, config?: MySqlTimestampConfig<TMode>): Equal<TMode, 'string'> extends true ? MySqlTimestampStringBuilderInitial<TName> : MySqlTimestampBuilderInitial<TName>;
476
-
477
- interface MySqlTinyIntBuilderHKT extends ColumnBuilderHKTBase {
478
- _type: MySqlTinyIntBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
479
- _columnHKT: MySqlTinyIntHKT;
480
- }
481
- interface MySqlTinyIntHKT extends ColumnHKTBase {
482
- _type: MySqlTinyInt<Assume<this['config'], ColumnBaseConfig>>;
483
- }
484
- type MySqlTinyIntBuilderInitial<TName extends string> = MySqlTinyIntBuilder<{
485
- name: TName;
486
- data: number;
487
- driverParam: number | string;
488
- notNull: false;
489
- hasDefault: false;
490
- }>;
491
- declare class MySqlTinyIntBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilderWithAutoIncrement<MySqlTinyIntBuilderHKT, T> {
492
- }
493
- declare class MySqlTinyInt<T extends ColumnBaseConfig> extends MySqlColumnWithAutoIncrement<MySqlTinyIntHKT, T> {
494
- getSQLType(): string;
495
- mapFromDriverValue(value: number | string): number;
496
- }
497
- declare function tinyint<TName extends string>(name: TName): MySqlTinyIntBuilderInitial<TName>;
498
-
499
- interface MySqlVarBinaryBuilderHKT extends ColumnBuilderHKTBase {
500
- _type: MySqlVarBinaryBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
501
- _columnHKT: MySqlVarBinaryHKT;
502
- }
503
- interface MySqlVarBinaryHKT extends ColumnHKTBase {
504
- _type: MySqlVarBinary<Assume<this['config'], ColumnBaseConfig>>;
505
- }
506
- type MySqlVarBinaryBuilderInitial<TName extends string> = MySqlVarBinaryBuilder<{
507
- name: TName;
508
- data: string;
509
- driverParam: string;
510
- notNull: false;
511
- hasDefault: false;
512
- }>;
513
- declare class MySqlVarBinaryBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlVarBinaryBuilderHKT, T, MySqlVarbinaryOptions> {
514
- }
515
- declare class MySqlVarBinary<T extends ColumnBaseConfig> extends MySqlColumn<MySqlVarBinaryHKT, T, MySqlVarbinaryOptions> {
516
- length: number | undefined;
517
- getSQLType(): string;
518
- }
519
- interface MySqlVarbinaryOptions {
520
- length: number;
521
- }
522
- declare function varbinary<TName extends string>(name: TName, options: MySqlVarbinaryOptions): MySqlVarBinaryBuilderInitial<TName>;
523
-
524
- interface MySqlVarCharBuilderHKT extends ColumnBuilderHKTBase {
525
- _type: MySqlVarCharBuilder<Assume<this['config'], ColumnBuilderBaseConfig & WithEnum>>;
526
- _columnHKT: MySqlVarCharHKT;
527
- }
528
- interface MySqlVarCharHKT extends ColumnHKTBase {
529
- _type: MySqlVarChar<Assume<this['config'], ColumnBaseConfig & WithEnum>>;
530
- }
531
- type MySqlVarCharBuilderInitial<TName extends string, TEnum extends [string, ...string[]]> = MySqlVarCharBuilder<{
532
- name: TName;
533
- data: TEnum[number];
534
- driverParam: number | string;
535
- enumValues: TEnum;
536
- notNull: false;
537
- hasDefault: false;
538
- }>;
539
- declare class MySqlVarCharBuilder<T extends ColumnBuilderBaseConfig & WithEnum> extends MySqlColumnBuilder<MySqlVarCharBuilderHKT, T, MySqlVarCharConfig<T['enumValues']>> {
540
- }
541
- declare class MySqlVarChar<T extends ColumnBaseConfig & WithEnum> extends MySqlColumn<MySqlVarCharHKT, T, MySqlVarCharConfig<T['enumValues']>> implements WithEnum {
542
- readonly length: number | undefined;
543
- readonly enumValues: T['enumValues'];
544
- getSQLType(): string;
545
- }
546
- interface MySqlVarCharConfig<TEnum extends string[] | readonly string[]> {
547
- length: number;
548
- enum?: TEnum;
549
- }
550
- declare function varchar<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>>(name: TName, config: MySqlVarCharConfig<T | Writable<T>>): MySqlVarCharBuilderInitial<TName, Writable<T>>;
551
-
552
- interface MySqlDateBuilderHKT extends ColumnBuilderHKTBase {
553
- _type: MySqlDateBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
554
- _columnHKT: MySqlDateHKT;
555
- }
556
- interface MySqlDateHKT extends ColumnHKTBase {
557
- _type: MySqlDate<Assume<this['config'], ColumnBaseConfig>>;
558
- }
559
- type MySqlDateBuilderInitial<TName extends string> = MySqlDateBuilder<{
560
- name: TName;
561
- data: Date;
562
- driverParam: string | number;
563
- notNull: false;
564
- hasDefault: false;
565
- }>;
566
- declare class MySqlDateBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlDateBuilderHKT, T> {
567
- }
568
- declare class MySqlDate<T extends ColumnBaseConfig> extends MySqlColumn<MySqlDateHKT, T> {
569
- constructor(table: AnyMySqlTable<{
570
- name: T['tableName'];
571
- }>, config: MySqlDateBuilder<T>['config']);
572
- getSQLType(): string;
573
- mapFromDriverValue(value: string): Date;
574
- }
575
- interface MySqlDateStringBuilderHKT extends ColumnBuilderHKTBase {
576
- _type: MySqlDateStringBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
577
- _columnHKT: MySqlDateStringHKT;
578
- }
579
- interface MySqlDateStringHKT extends ColumnHKTBase {
580
- _type: MySqlDateString<Assume<this['config'], ColumnBaseConfig>>;
729
+ _type: MySqlTimestampString<Assume<this['config'], ColumnBaseConfig>>;
581
730
  }
582
- type MySqlDateStringBuilderInitial<TName extends string> = MySqlDateStringBuilder<{
731
+ type MySqlTimestampStringBuilderInitial<TName extends string> = MySqlTimestampStringBuilder<{
583
732
  name: TName;
584
733
  data: string;
585
734
  driverParam: string | number;
586
735
  notNull: false;
587
736
  hasDefault: false;
588
737
  }>;
589
- declare class MySqlDateStringBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlDateStringBuilderHKT, T> {
738
+ declare class MySqlTimestampStringBuilder<T extends ColumnBuilderBaseConfig> extends MySqlDateColumnBaseBuilder<MySqlTimestampStringBuilderHKT, T, MySqlTimestampConfig> {
739
+ constructor(name: T['name'], config: MySqlTimestampConfig | undefined);
590
740
  }
591
- declare class MySqlDateString<T extends ColumnBaseConfig> extends MySqlColumn<MySqlDateStringHKT, T> {
592
- constructor(table: AnyMySqlTable<{
593
- name: T['tableName'];
594
- }>, config: MySqlDateStringBuilder<T>['config']);
741
+ declare class MySqlTimestampString<T extends ColumnBaseConfig> extends MySqlDateBaseColumn<MySqlTimestampStringHKT, T, MySqlTimestampConfig> {
742
+ readonly fsp: number | undefined;
595
743
  getSQLType(): string;
596
744
  }
597
- interface MySqlDateConfig<TMode extends 'date' | 'string' = 'date' | 'string'> {
745
+ type TimestampFsp = 0 | 1 | 2 | 3 | 4 | 5 | 6;
746
+ interface MySqlTimestampConfig<TMode extends 'string' | 'date' = 'string' | 'date'> {
598
747
  mode?: TMode;
748
+ fsp?: TimestampFsp;
599
749
  }
600
- declare function date<TName extends string, TMode extends MySqlDateConfig['mode'] & {}>(name: TName, config?: MySqlDateConfig<TMode>): Equal<TMode, 'string'> extends true ? MySqlDateStringBuilderInitial<TName> : MySqlDateBuilderInitial<TName>;
750
+ declare function timestamp<TName extends string, TMode extends MySqlTimestampConfig['mode'] & {}>(name: TName, config?: MySqlTimestampConfig<TMode>): Equal<TMode, 'string'> extends true ? MySqlTimestampStringBuilderInitial<TName> : MySqlTimestampBuilderInitial<TName>;
601
751
 
602
- interface MySqlDateTimeBuilderHKT extends ColumnBuilderHKTBase {
603
- _type: MySqlDateTimeBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
604
- _columnHKT: MySqlDateTimeHKT;
752
+ interface MySqlTinyIntBuilderHKT extends ColumnBuilderHKTBase {
753
+ _type: MySqlTinyIntBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
754
+ _columnHKT: MySqlTinyIntHKT;
605
755
  }
606
- interface MySqlDateTimeHKT extends ColumnHKTBase {
607
- _type: MySqlDateTime<Assume<this['config'], ColumnBaseConfig>>;
756
+ interface MySqlTinyIntHKT extends ColumnHKTBase {
757
+ _type: MySqlTinyInt<Assume<this['config'], ColumnBaseConfig>>;
608
758
  }
609
- type MySqlDateTimeBuilderInitial<TName extends string> = MySqlDateTimeBuilder<{
759
+ type MySqlTinyIntBuilderInitial<TName extends string> = MySqlTinyIntBuilder<{
610
760
  name: TName;
611
- data: Date;
612
- driverParam: string | number;
761
+ data: number;
762
+ driverParam: number | string;
613
763
  notNull: false;
614
764
  hasDefault: false;
615
765
  }>;
616
- declare class MySqlDateTimeBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlDateTimeBuilderHKT, T, MySqlDatetimeConfig> {
617
- constructor(name: T['name'], config: MySqlDatetimeConfig | undefined);
766
+ declare class MySqlTinyIntBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilderWithAutoIncrement<MySqlTinyIntBuilderHKT, T> {
618
767
  }
619
- declare class MySqlDateTime<T extends ColumnBaseConfig> extends MySqlColumn<MySqlDateTimeHKT, T> {
620
- readonly fsp: number | undefined;
621
- constructor(table: AnyMySqlTable<{
622
- name: T['tableName'];
623
- }>, config: MySqlDateTimeBuilder<T>['config']);
768
+ declare class MySqlTinyInt<T extends ColumnBaseConfig> extends MySqlColumnWithAutoIncrement<MySqlTinyIntHKT, T> {
624
769
  getSQLType(): string;
625
- mapFromDriverValue(value: string): Date;
770
+ mapFromDriverValue(value: number | string): number;
626
771
  }
627
- interface MySqlDateTimeStringBuilderHKT extends ColumnBuilderHKTBase {
628
- _type: MySqlDateTimeStringBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
629
- _columnHKT: MySqlDateTimeStringHKT;
772
+ declare function tinyint<TName extends string>(name: TName): MySqlTinyIntBuilderInitial<TName>;
773
+
774
+ interface MySqlVarBinaryBuilderHKT extends ColumnBuilderHKTBase {
775
+ _type: MySqlVarBinaryBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
776
+ _columnHKT: MySqlVarBinaryHKT;
630
777
  }
631
- interface MySqlDateTimeStringHKT extends ColumnHKTBase {
632
- _type: MySqlDateTimeString<Assume<this['config'], ColumnBaseConfig>>;
778
+ interface MySqlVarBinaryHKT extends ColumnHKTBase {
779
+ _type: MySqlVarBinary<Assume<this['config'], ColumnBaseConfig>>;
633
780
  }
634
- type MySqlDateTimeStringBuilderInitial<TName extends string> = MySqlDateTimeStringBuilder<{
781
+ type MySqlVarBinaryBuilderInitial<TName extends string> = MySqlVarBinaryBuilder<{
635
782
  name: TName;
636
783
  data: string;
637
- driverParam: string | number;
784
+ driverParam: string;
638
785
  notNull: false;
639
786
  hasDefault: false;
640
787
  }>;
641
- declare class MySqlDateTimeStringBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlDateTimeStringBuilderHKT, T, MySqlDatetimeConfig> {
642
- constructor(name: T['name'], config: MySqlDatetimeConfig | undefined);
788
+ declare class MySqlVarBinaryBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlVarBinaryBuilderHKT, T, MySqlVarbinaryOptions> {
643
789
  }
644
- declare class MySqlDateTimeString<T extends ColumnBaseConfig> extends MySqlColumn<MySqlDateTimeStringHKT, T> {
645
- readonly fsp: number | undefined;
646
- constructor(table: AnyMySqlTable<{
647
- name: T['tableName'];
648
- }>, config: MySqlDateTimeStringBuilder<T>['config']);
790
+ declare class MySqlVarBinary<T extends ColumnBaseConfig> extends MySqlColumn<MySqlVarBinaryHKT, T, MySqlVarbinaryOptions> {
791
+ length: number | undefined;
649
792
  getSQLType(): string;
650
793
  }
651
- type DatetimeFsp = 0 | 1 | 2 | 3 | 4 | 5 | 6;
652
- interface MySqlDatetimeConfig<TMode extends 'date' | 'string' = 'date' | 'string'> {
653
- mode?: TMode;
654
- fsp?: DatetimeFsp;
794
+ interface MySqlVarbinaryOptions {
795
+ length: number;
655
796
  }
656
- declare function datetime<TName extends string, TMode extends MySqlDatetimeConfig['mode'] & {}>(name: TName, config?: MySqlDatetimeConfig<TMode>): Equal<TMode, 'string'> extends true ? MySqlDateTimeStringBuilderInitial<TName> : MySqlDateTimeBuilderInitial<TName>;
797
+ declare function varbinary<TName extends string>(name: TName, options: MySqlVarbinaryOptions): MySqlVarBinaryBuilderInitial<TName>;
657
798
 
658
- interface MySqlTimeBuilderHKT extends ColumnBuilderHKTBase {
659
- _type: MySqlTimeBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
660
- _columnHKT: MySqlTimeHKT;
799
+ interface MySqlVarCharBuilderHKT extends ColumnBuilderHKTBase {
800
+ _type: MySqlVarCharBuilder<Assume<this['config'], ColumnBuilderBaseConfig & WithEnum>>;
801
+ _columnHKT: MySqlVarCharHKT;
661
802
  }
662
- interface MySqlTimeHKT extends ColumnHKTBase {
663
- _type: MySqlTime<Assume<this['config'], ColumnBaseConfig>>;
803
+ interface MySqlVarCharHKT extends ColumnHKTBase {
804
+ _type: MySqlVarChar<Assume<this['config'], ColumnBaseConfig & WithEnum>>;
664
805
  }
665
- type MySqlTimeBuilderInitial<TName extends string> = MySqlTimeBuilder<{
806
+ type MySqlVarCharBuilderInitial<TName extends string, TEnum extends [string, ...string[]]> = MySqlVarCharBuilder<{
666
807
  name: TName;
667
- data: string;
668
- driverParam: string | number;
808
+ data: TEnum[number];
809
+ driverParam: number | string;
810
+ enumValues: TEnum;
669
811
  notNull: false;
670
812
  hasDefault: false;
671
813
  }>;
672
- declare class MySqlTimeBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlTimeBuilderHKT, T, TimeConfig> {
673
- constructor(name: T['name'], config: TimeConfig | undefined);
814
+ declare class MySqlVarCharBuilder<T extends ColumnBuilderBaseConfig & WithEnum> extends MySqlColumnBuilder<MySqlVarCharBuilderHKT, T, MySqlVarCharConfig<T['enumValues']>> {
674
815
  }
675
- declare class MySqlTime<T extends ColumnBaseConfig> extends MySqlColumn<MySqlTimeHKT, T, TimeConfig> {
676
- readonly fsp: number | undefined;
816
+ declare class MySqlVarChar<T extends ColumnBaseConfig & WithEnum> extends MySqlColumn<MySqlVarCharHKT, T, MySqlVarCharConfig<T['enumValues']>> implements WithEnum {
817
+ readonly length: number | undefined;
818
+ readonly enumValues: T['enumValues'];
677
819
  getSQLType(): string;
678
820
  }
679
- type TimeConfig = {
680
- fsp?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
681
- };
682
- declare function time<TName extends string>(name: TName, config?: TimeConfig): MySqlTimeBuilderInitial<TName>;
821
+ interface MySqlVarCharConfig<TEnum extends string[] | readonly string[]> {
822
+ length: number;
823
+ enum?: TEnum;
824
+ }
825
+ declare function varchar<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>>(name: TName, config: MySqlVarCharConfig<T | Writable<T>>): MySqlVarCharBuilderInitial<TName, Writable<T>>;
683
826
 
684
827
  interface MySqlYearBuilderHKT extends ColumnBuilderHKTBase {
685
828
  _type: MySqlYearBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
@@ -702,149 +845,6 @@ declare class MySqlYear<T extends ColumnBaseConfig> extends MySqlColumn<MySqlYea
702
845
  }
703
846
  declare function year<TName extends string>(name: TName): MySqlYearBuilderInitial<TName>;
704
847
 
705
- type ConvertCustomConfig<TName extends string, T extends Partial<CustomTypeValues>> = Simplify<{
706
- name: TName;
707
- data: T['data'];
708
- driverParam: T['driverData'];
709
- notNull: T['notNull'] extends true ? true : false;
710
- hasDefault: T['default'] extends true ? true : false;
711
- }>;
712
- interface MySqlCustomColumnInnerConfig {
713
- customTypeValues: CustomTypeValues;
714
- }
715
- interface MySqlCustomColumnBuilderHKT extends ColumnBuilderHKTBase {
716
- _type: MySqlCustomColumnBuilder<Assume<this['config'], ColumnBuilderBaseConfig>>;
717
- _columnHKT: MySqlCustomColumnHKT;
718
- }
719
- interface MySqlCustomColumnHKT extends ColumnHKTBase {
720
- _type: MySqlCustomColumn<Assume<this['config'], ColumnBaseConfig>>;
721
- }
722
- declare class MySqlCustomColumnBuilder<T extends ColumnBuilderBaseConfig> extends MySqlColumnBuilder<MySqlCustomColumnBuilderHKT, T, {
723
- fieldConfig: CustomTypeValues['config'];
724
- customTypeParams: CustomTypeParams<any>;
725
- }, {
726
- mysqlColumnBuilderBrand: 'MySqlCustomColumnBuilderBrand';
727
- }> {
728
- constructor(name: T['name'], fieldConfig: CustomTypeValues['config'], customTypeParams: CustomTypeParams<any>);
729
- }
730
- declare class MySqlCustomColumn<T extends ColumnBaseConfig> extends MySqlColumn<MySqlCustomColumnHKT, T> {
731
- protected $mysqlColumnBrand: 'MySqlCustomColumn';
732
- private sqlName;
733
- private mapTo?;
734
- private mapFrom?;
735
- constructor(table: AnyMySqlTable<{
736
- name: T['tableName'];
737
- }>, config: MySqlCustomColumnBuilder<T>['config']);
738
- getSQLType(): string;
739
- mapFromDriverValue(value: T['driverParam']): T['data'];
740
- mapToDriverValue(value: T['data']): T['driverParam'];
741
- }
742
- type CustomTypeValues = {
743
- /**
744
- * Required type for custom column, that will infer proper type model
745
- *
746
- * Examples:
747
- *
748
- * If you want your column to be `string` type after selecting/or on inserting - use `data: string`. Like `text`, `varchar`
749
- *
750
- * If you want your column to be `number` type after selecting/or on inserting - use `data: number`. Like `integer`
751
- */
752
- data: unknown;
753
- /**
754
- * Type helper, that represents what type database driver is accepting for specific database data type
755
- */
756
- driverData?: unknown;
757
- /**
758
- * What config type should be used for {@link CustomTypeParams} `dataType` generation
759
- */
760
- config?: unknown;
761
- /**
762
- * Whether the config argument should be required or not
763
- * @default false
764
- */
765
- configRequired?: boolean;
766
- /**
767
- * If your custom data type should be notNull by default you can use `notNull: true`
768
- *
769
- * @example
770
- * const customSerial = customType<{ data: number, notNull: true, default: true }>({
771
- * dataType() {
772
- * return 'serial';
773
- * },
774
- * });
775
- */
776
- notNull?: boolean;
777
- /**
778
- * If your custom data type has default you can use `default: true`
779
- *
780
- * @example
781
- * const customSerial = customType<{ data: number, notNull: true, default: true }>({
782
- * dataType() {
783
- * return 'serial';
784
- * },
785
- * });
786
- */
787
- default?: boolean;
788
- };
789
- interface CustomTypeParams<T extends CustomTypeValues> {
790
- /**
791
- * Database data type string representation, that is used for migrations
792
- * @example
793
- * ```
794
- * `jsonb`, `text`
795
- * ```
796
- *
797
- * If database data type needs additional params you can use them from `config` param
798
- * @example
799
- * ```
800
- * `varchar(256)`, `numeric(2,3)`
801
- * ```
802
- *
803
- * To make `config` be of specific type please use config generic in {@link CustomTypeValues}
804
- *
805
- * @example
806
- * Usage example
807
- * ```
808
- * dataType() {
809
- * return 'boolean';
810
- * },
811
- * ```
812
- * Or
813
- * ```
814
- * dataType(config) {
815
- * return typeof config.length !== 'undefined' ? `varchar(${config.length})` : `varchar`;
816
- * }
817
- * ```
818
- */
819
- dataType: (config: T['config'] | (Equal<T['configRequired'], true> extends true ? never : undefined)) => string;
820
- /**
821
- * Optional mapping function, between user input and driver
822
- * @example
823
- * For example, when using jsonb we need to map JS/TS object to string before writing to database
824
- * ```
825
- * toDriver(value: TData): string {
826
- * return JSON.stringify(value);
827
- * }
828
- * ```
829
- */
830
- toDriver?: (value: T['data']) => T['driverData'] | SQL;
831
- /**
832
- * Optional mapping function, that is responsible for data mapping from database to JS/TS code
833
- * @example
834
- * For example, when using timestamp we need to map string Date representation to JS Date
835
- * ```
836
- * fromDriver(value: string): Date {
837
- * return new Date(value);
838
- * },
839
- * ```
840
- */
841
- fromDriver?: (value: T['driverData']) => T['data'];
842
- }
843
- /**
844
- * Custom mysql database data type generator
845
- */
846
- declare function customType<T extends CustomTypeValues = CustomTypeValues>(customTypeParams: CustomTypeParams<T>): Equal<T['configRequired'], true> extends true ? <TName extends string>(dbName: TName, fieldConfig: T['config']) => MySqlCustomColumnBuilder<ConvertCustomConfig<TName, T>> : <TName extends string>(dbName: TName, fieldConfig?: T['config']) => MySqlCustomColumnBuilder<ConvertCustomConfig<TName, T>>;
847
-
848
848
  declare function alias<TTable extends AnyMySqlTable, TAlias extends string>(table: TTable, alias: TAlias): BuildAliasTable<TTable, TAlias>;
849
849
 
850
850
  declare class MySqlSchema<TName extends string = string> {
@@ -892,4 +892,4 @@ declare function getViewConfig<TName extends string = string, TExisting extends
892
892
  isAlias: boolean;
893
893
  };
894
894
 
895
- export { AnyMySqlColumn, AnyMySqlTable, BuildAliasTable, Check, ConvertCustomConfig, CustomTypeParams, CustomTypeValues, DatetimeFsp, ForeignKey, Index, MySqlBigInt53, MySqlBigInt53Builder, MySqlBigInt53BuilderHKT, MySqlBigInt53BuilderInitial, MySqlBigInt53HKT, MySqlBigInt64, MySqlBigInt64Builder, MySqlBigInt64BuilderHKT, MySqlBigInt64BuilderInitial, MySqlBigInt64HKT, MySqlBinary, MySqlBinaryBuilder, MySqlBinaryBuilderHKT, MySqlBinaryBuilderInitial, MySqlBinaryConfig, MySqlBinaryHKT, MySqlBoolean, MySqlBooleanBuilder, MySqlBooleanBuilderHKT, MySqlBooleanBuilderInitial, MySqlBooleanHKT, MySqlChar, MySqlCharBuilder, MySqlCharBuilderHKT, MySqlCharBuilderInitial, MySqlCharConfig, MySqlCharHKT, MySqlColumn, MySqlCustomColumn, MySqlCustomColumnBuilder, MySqlCustomColumnBuilderHKT, MySqlCustomColumnHKT, MySqlCustomColumnInnerConfig, MySqlDate, MySqlDateBuilder, MySqlDateBuilderHKT, MySqlDateBuilderInitial, MySqlDateConfig, MySqlDateHKT, MySqlDateString, MySqlDateStringBuilder, MySqlDateStringBuilderHKT, MySqlDateStringBuilderInitial, MySqlDateStringHKT, MySqlDateTime, MySqlDateTimeBuilder, MySqlDateTimeBuilderHKT, MySqlDateTimeBuilderInitial, MySqlDateTimeHKT, MySqlDateTimeString, MySqlDateTimeStringBuilder, MySqlDateTimeStringBuilderHKT, MySqlDateTimeStringBuilderInitial, MySqlDateTimeStringHKT, MySqlDatetimeConfig, MySqlDecimal, MySqlDecimalBuilder, MySqlDecimalBuilderHKT, MySqlDecimalBuilderInitial, MySqlDecimalConfig, MySqlDecimalHKT, MySqlDouble, MySqlDoubleBuilder, MySqlDoubleBuilderHKT, MySqlDoubleBuilderInitial, MySqlDoubleConfig, MySqlDoubleHKT, MySqlEnumColumn, MySqlEnumColumnBuilder, MySqlEnumColumnBuilderHKT, MySqlEnumColumnBuilderInitial, MySqlEnumColumnHKT, MySqlFloat, MySqlFloatBuilder, MySqlFloatBuilderHKT, MySqlFloatBuilderInitial, MySqlFloatHKT, MySqlInt, MySqlIntBuilder, MySqlIntBuilderHKT, MySqlIntBuilderInitial, MySqlIntHKT, MySqlJson, MySqlJsonBuilder, MySqlJsonBuilderHKT, MySqlJsonBuilderInitial, MySqlJsonHKT, MySqlMediumInt, MySqlMediumIntBuilder, MySqlMediumIntBuilderHKT, MySqlMediumIntBuilderInitial, MySqlMediumIntHKT, MySqlReal, MySqlRealBuilder, MySqlRealBuilderHKT, MySqlRealBuilderInitial, MySqlRealConfig, MySqlRealHKT, MySqlSchema, MySqlSerial, MySqlSerialBuilder, MySqlSerialBuilderHKT, MySqlSerialBuilderInitial, MySqlSerialHKT, MySqlSmallInt, MySqlSmallIntBuilder, MySqlSmallIntBuilderHKT, MySqlSmallIntBuilderInitial, MySqlSmallIntHKT, MySqlTableFn, MySqlText, MySqlTextBuilder, MySqlTextBuilderHKT, MySqlTextBuilderInitial, MySqlTextColumnType, MySqlTextConfig, MySqlTextHKT, MySqlTime, MySqlTimeBuilder, MySqlTimeBuilderHKT, MySqlTimeBuilderInitial, MySqlTimeHKT, MySqlTimestamp, MySqlTimestampBuilder, MySqlTimestampBuilderHKT, MySqlTimestampBuilderInitial, MySqlTimestampConfig, MySqlTimestampHKT, MySqlTimestampString, MySqlTimestampStringBuilder, MySqlTimestampStringBuilderHKT, MySqlTimestampStringBuilderInitial, MySqlTimestampStringHKT, MySqlTinyInt, MySqlTinyIntBuilder, MySqlTinyIntBuilderHKT, MySqlTinyIntBuilderInitial, MySqlTinyIntHKT, MySqlVarBinary, MySqlVarBinaryBuilder, MySqlVarBinaryBuilderHKT, MySqlVarBinaryBuilderInitial, MySqlVarBinaryHKT, MySqlVarChar, MySqlVarCharBuilder, MySqlVarCharBuilderHKT, MySqlVarCharBuilderInitial, MySqlVarCharConfig, MySqlVarCharHKT, MySqlVarbinaryOptions, MySqlView, MySqlYear, MySqlYearBuilder, MySqlYearBuilderHKT, MySqlYearBuilderInitial, MySqlYearHKT, PrimaryKey, TimeConfig, TimestampFsp, alias, bigint, binary, boolean, char, customType, date, datetime, decimal, double, float, getTableConfig, getViewConfig, int, isMySqlSchema, json, longtext, mediumint, mediumtext, mysqlDatabase, mysqlEnum, mysqlSchema, mysqlView, real, serial, smallint, text, time, timestamp, tinyint, tinytext, varbinary, varchar, year };
895
+ export { AnyMySqlColumn, AnyMySqlTable, BuildAliasTable, Check, ConvertCustomConfig, CustomTypeParams, CustomTypeValues, DatetimeFsp, ForeignKey, Index, MySqlBigInt53, MySqlBigInt53Builder, MySqlBigInt53BuilderHKT, MySqlBigInt53BuilderInitial, MySqlBigInt53HKT, MySqlBigInt64, MySqlBigInt64Builder, MySqlBigInt64BuilderHKT, MySqlBigInt64BuilderInitial, MySqlBigInt64HKT, MySqlBinary, MySqlBinaryBuilder, MySqlBinaryBuilderHKT, MySqlBinaryBuilderInitial, MySqlBinaryConfig, MySqlBinaryHKT, MySqlBoolean, MySqlBooleanBuilder, MySqlBooleanBuilderHKT, MySqlBooleanBuilderInitial, MySqlBooleanHKT, MySqlChar, MySqlCharBuilder, MySqlCharBuilderHKT, MySqlCharBuilderInitial, MySqlCharConfig, MySqlCharHKT, MySqlColumn, MySqlColumnBuilder, MySqlColumnBuilderWithAutoIncrement, MySqlColumnWithAutoIncrement, MySqlCustomColumn, MySqlCustomColumnBuilder, MySqlCustomColumnBuilderHKT, MySqlCustomColumnHKT, MySqlCustomColumnInnerConfig, MySqlDate, MySqlDateBuilder, MySqlDateBuilderHKT, MySqlDateBuilderInitial, MySqlDateConfig, MySqlDateHKT, MySqlDateString, MySqlDateStringBuilder, MySqlDateStringBuilderHKT, MySqlDateStringBuilderInitial, MySqlDateStringHKT, MySqlDateTime, MySqlDateTimeBuilder, MySqlDateTimeBuilderHKT, MySqlDateTimeBuilderInitial, MySqlDateTimeHKT, MySqlDateTimeString, MySqlDateTimeStringBuilder, MySqlDateTimeStringBuilderHKT, MySqlDateTimeStringBuilderInitial, MySqlDateTimeStringHKT, MySqlDatetimeConfig, MySqlDecimal, MySqlDecimalBuilder, MySqlDecimalBuilderHKT, MySqlDecimalBuilderInitial, MySqlDecimalConfig, MySqlDecimalHKT, MySqlDouble, MySqlDoubleBuilder, MySqlDoubleBuilderHKT, MySqlDoubleBuilderInitial, MySqlDoubleConfig, MySqlDoubleHKT, MySqlEnumColumn, MySqlEnumColumnBuilder, MySqlEnumColumnBuilderHKT, MySqlEnumColumnBuilderInitial, MySqlEnumColumnHKT, MySqlFloat, MySqlFloatBuilder, MySqlFloatBuilderHKT, MySqlFloatBuilderInitial, MySqlFloatHKT, MySqlInt, MySqlIntBuilder, MySqlIntBuilderHKT, MySqlIntBuilderInitial, MySqlIntHKT, MySqlJson, MySqlJsonBuilder, MySqlJsonBuilderHKT, MySqlJsonBuilderInitial, MySqlJsonHKT, MySqlMediumInt, MySqlMediumIntBuilder, MySqlMediumIntBuilderHKT, MySqlMediumIntBuilderInitial, MySqlMediumIntHKT, MySqlReal, MySqlRealBuilder, MySqlRealBuilderHKT, MySqlRealBuilderInitial, MySqlRealConfig, MySqlRealHKT, MySqlSchema, MySqlSerial, MySqlSerialBuilder, MySqlSerialBuilderHKT, MySqlSerialBuilderInitial, MySqlSerialHKT, MySqlSmallInt, MySqlSmallIntBuilder, MySqlSmallIntBuilderHKT, MySqlSmallIntBuilderInitial, MySqlSmallIntHKT, MySqlTableFn, MySqlText, MySqlTextBuilder, MySqlTextBuilderHKT, MySqlTextBuilderInitial, MySqlTextColumnType, MySqlTextConfig, MySqlTextHKT, MySqlTime, MySqlTimeBuilder, MySqlTimeBuilderHKT, MySqlTimeBuilderInitial, MySqlTimeHKT, MySqlTimestamp, MySqlTimestampBuilder, MySqlTimestampBuilderHKT, MySqlTimestampBuilderInitial, MySqlTimestampConfig, MySqlTimestampHKT, MySqlTimestampString, MySqlTimestampStringBuilder, MySqlTimestampStringBuilderHKT, MySqlTimestampStringBuilderInitial, MySqlTimestampStringHKT, MySqlTinyInt, MySqlTinyIntBuilder, MySqlTinyIntBuilderHKT, MySqlTinyIntBuilderInitial, MySqlTinyIntHKT, MySqlVarBinary, MySqlVarBinaryBuilder, MySqlVarBinaryBuilderHKT, MySqlVarBinaryBuilderInitial, MySqlVarBinaryHKT, MySqlVarChar, MySqlVarCharBuilder, MySqlVarCharBuilderHKT, MySqlVarCharBuilderInitial, MySqlVarCharConfig, MySqlVarCharHKT, MySqlVarbinaryOptions, MySqlView, MySqlYear, MySqlYearBuilder, MySqlYearBuilderHKT, MySqlYearBuilderInitial, MySqlYearHKT, PrimaryKey, TimeConfig, TimestampFsp, alias, bigint, binary, boolean, char, customType, date, datetime, decimal, double, float, getTableConfig, getViewConfig, int, isMySqlSchema, json, longtext, mediumint, mediumtext, mysqlDatabase, mysqlEnum, mysqlSchema, mysqlView, real, serial, smallint, text, time, timestamp, tinyint, tinytext, varbinary, varchar, year };