rake-db 2.8.8 → 2.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -328,24 +328,50 @@ declare const rollback: <CT extends Record<string, orchid_core.AnyColumnTypeCrea
328
328
  declare const redo: <CT extends Record<string, orchid_core.AnyColumnTypeCreator>>(options: MaybeArray<AdapterOptions>, config: RakeDbConfig<CT>, args?: string[]) => Promise<void>;
329
329
 
330
330
  declare const rakeDb: <CT extends Record<string, orchid_core.AnyColumnTypeCreator> = {
331
- timestamps: <T extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>(this: {
331
+ timestamps<T extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>(this: {
332
332
  name(name: string): {
333
333
  timestamp(): T;
334
334
  };
335
335
  timestamp(): T;
336
- }) => {
336
+ timestampsSnakeCase(): {
337
+ createdAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression>;
338
+ updatedAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression>;
339
+ };
340
+ }): {
337
341
  createdAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression>;
338
342
  updatedAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression>;
339
343
  };
340
- timestampsSnakeCase: <T_1 extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>(this: {
344
+ timestampsSnakeCase<T_1 extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>(this: {
341
345
  name(name: string): {
342
346
  timestamp(): T_1;
343
347
  };
344
348
  timestamp(): T_1;
345
- }) => {
349
+ }): {
346
350
  createdAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression>;
347
351
  updatedAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression>;
348
352
  };
353
+ timestampsNoTZ<T_2 extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>(this: {
354
+ name(name: string): {
355
+ timestampNoTZ(): T_2;
356
+ };
357
+ timestampNoTZ(): T_2;
358
+ timestampsNoTZSnakeCase(): {
359
+ createdAt: orchid_core.ColumnWithDefault<T_2, orchid_core.RawExpression>;
360
+ updatedAt: orchid_core.ColumnWithDefault<T_2, orchid_core.RawExpression>;
361
+ };
362
+ }): {
363
+ createdAt: orchid_core.ColumnWithDefault<T_2, orchid_core.RawExpression>;
364
+ updatedAt: orchid_core.ColumnWithDefault<T_2, orchid_core.RawExpression>;
365
+ };
366
+ timestampsNoTZSnakeCase<T_3 extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>(this: {
367
+ name(name: string): {
368
+ timestampNoTZ(): T_3;
369
+ };
370
+ timestampNoTZ(): T_3;
371
+ }): {
372
+ createdAt: orchid_core.ColumnWithDefault<T_3, orchid_core.RawExpression>;
373
+ updatedAt: orchid_core.ColumnWithDefault<T_3, orchid_core.RawExpression>;
374
+ };
349
375
  name: typeof orchid_core.name;
350
376
  raw: (sql: string, values?: false | Record<string, unknown> | undefined) => orchid_core.RawExpression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>;
351
377
  smallint(): pqb.SmallIntColumn;
@@ -367,12 +393,12 @@ declare const rakeDb: <CT extends Record<string, orchid_core.AnyColumnTypeCreato
367
393
  citext(min: number, max: number): pqb.CitextColumn;
368
394
  bytea(): pqb.ByteaColumn;
369
395
  date(): pqb.DateColumn;
370
- timestampWithoutTimeZone<Precision_2 extends number>(precision?: Precision_2 | undefined): pqb.TimestampColumn<Precision_2>;
371
- timestamp<Precision_3 extends number | undefined = undefined>(precision?: Precision_3 | undefined): pqb.TimestampTzColumn<number>;
396
+ timestampNoTZ<Precision_2 extends number>(precision?: Precision_2 | undefined): pqb.TimestampColumn<Precision_2>;
397
+ timestamp<Precision_3 extends number | undefined = undefined>(precision?: Precision_3 | undefined): pqb.TimestampTZColumn<number>;
372
398
  time<Precision_4 extends number | undefined = undefined>(precision?: Precision_4 | undefined): pqb.TimeColumn<Precision_4>;
373
399
  interval<Fields extends string | undefined = undefined, Precision_5 extends number | undefined = undefined>(fields?: Fields | undefined, precision?: Precision_5 | undefined): pqb.IntervalColumn<Fields, Precision_5>;
374
400
  boolean(): pqb.BooleanColumn;
375
- enum<U extends string, T_2 extends [U, ...U[]]>(dataType: string, type: T_2): pqb.EnumColumn<U, T_2>;
401
+ enum<U extends string, T_4 extends [U, ...U[]]>(dataType: string, type: T_4): pqb.EnumColumn<U, T_4>;
376
402
  point(): pqb.PointColumn;
377
403
  line(): pqb.LineColumn;
378
404
  lseg(): pqb.LsegColumn;
@@ -392,8 +418,8 @@ declare const rakeDb: <CT extends Record<string, orchid_core.AnyColumnTypeCreato
392
418
  xml(): pqb.XMLColumn;
393
419
  json<Type extends orchid_core.JSONTypeAny>(schemaOrFn: Type | ((j: {
394
420
  set: <Value extends orchid_core.JSONTypeAny>(valueType: Value) => orchid_core.JSONSet<Value>;
395
- tuple: <T_3 extends [] | orchid_core.JSONTupleItems, Rest extends orchid_core.JSONTypeAny | null = null>(items: T_3, rest?: Rest) => orchid_core.JSONTuple<T_3, Rest>;
396
- union: <T_4 extends [orchid_core.JSONTypeAny, orchid_core.JSONTypeAny, ...orchid_core.JSONTypeAny[]]>(types: T_4) => orchid_core.JSONUnion<T_4>;
421
+ tuple: <T_5 extends [] | orchid_core.JSONTupleItems, Rest extends orchid_core.JSONTypeAny | null = null>(items: T_5, rest?: Rest) => orchid_core.JSONTuple<T_5, Rest>;
422
+ union: <T_6 extends [orchid_core.JSONTypeAny, orchid_core.JSONTypeAny, ...orchid_core.JSONTypeAny[]]>(types: T_6) => orchid_core.JSONUnion<T_6>;
397
423
  any: () => orchid_core.JSONAny;
398
424
  bigint: () => orchid_core.JSONBigInt;
399
425
  boolean: () => orchid_core.JSONBoolean;
@@ -406,21 +432,21 @@ declare const rakeDb: <CT extends Record<string, orchid_core.AnyColumnTypeCreato
406
432
  unknown: () => orchid_core.JSONUnknown;
407
433
  array: <Type_1 extends orchid_core.JSONTypeAny>(element: Type_1) => orchid_core.JSONArray<Type_1, "many">;
408
434
  discriminatedUnion: <Discriminator extends string, DiscriminatorValue extends orchid_core.Primitive, Types extends [orchid_core.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, orchid_core.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, ...orchid_core.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>[]]>(discriminator: Discriminator, options: Types) => orchid_core.JSONDiscriminatedUnion<Discriminator, DiscriminatorValue, Types>;
409
- enum: <U_1 extends string, T_5 extends [U_1, ...U_1[]]>(options: T_5) => orchid_core.JSONEnum<U_1, T_5>;
410
- instanceOf: <T_6 extends new (...args: any[]) => any>(cls: T_6) => orchid_core.JSONInstanceOf<T_6>;
435
+ enum: <U_1 extends string, T_7 extends [U_1, ...U_1[]]>(options: T_7) => orchid_core.JSONEnum<U_1, T_7>;
436
+ instanceOf: <T_8 extends new (...args: any[]) => any>(cls: T_8) => orchid_core.JSONInstanceOf<T_8>;
411
437
  intersection: <Left extends orchid_core.JSONTypeAny, Right extends orchid_core.JSONTypeAny>(left: Left, right: Right) => orchid_core.JSONIntersection<Left, Right>;
412
- lazy: <T_7 extends orchid_core.JSONTypeAny>(fn: () => T_7) => orchid_core.JSONLazy<T_7>;
413
- literal: <T_8 extends orchid_core.Primitive>(value: T_8) => orchid_core.JSONLiteral<T_8>;
438
+ lazy: <T_9 extends orchid_core.JSONTypeAny>(fn: () => T_9) => orchid_core.JSONLazy<T_9>;
439
+ literal: <T_10 extends orchid_core.Primitive>(value: T_10) => orchid_core.JSONLiteral<T_10>;
414
440
  map: <Key extends orchid_core.JSONTypeAny, Value_1 extends orchid_core.JSONTypeAny>(keyType: Key, valueType: Value_1) => orchid_core.JSONMap<Key, Value_1>;
415
- nativeEnum: <T_9 extends orchid_core.EnumLike>(givenEnum: T_9) => orchid_core.JSONNativeEnum<T_9>;
416
- nullable: <T_10 extends orchid_core.JSONTypeAny>(type: T_10) => orchid_core.JSONNullable<T_10>;
417
- nullish: <T_11 extends orchid_core.JSONTypeAny>(type: T_11) => orchid_core.JSONNullish<T_11>;
418
- object: <T_12 extends orchid_core.JSONObjectShape, UnknownKeys extends orchid_core.UnknownKeysParam = "strip", Catchall extends orchid_core.JSONTypeAny = orchid_core.JSONTypeAny>(shape: T_12) => orchid_core.JSONObject<T_12, UnknownKeys, Catchall, orchid_core.JSONTypeAny extends Catchall ? orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer T_13 extends object ? { [k in keyof T_13]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never : (orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer T_16 extends object ? { [k in keyof T_16]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never) & {
441
+ nativeEnum: <T_11 extends orchid_core.EnumLike>(givenEnum: T_11) => orchid_core.JSONNativeEnum<T_11>;
442
+ nullable: <T_12 extends orchid_core.JSONTypeAny>(type: T_12) => orchid_core.JSONNullable<T_12>;
443
+ nullish: <T_13 extends orchid_core.JSONTypeAny>(type: T_13) => orchid_core.JSONNullish<T_13>;
444
+ object: <T_14 extends orchid_core.JSONObjectShape, UnknownKeys extends orchid_core.UnknownKeysParam = "strip", Catchall extends orchid_core.JSONTypeAny = orchid_core.JSONTypeAny>(shape: T_14) => orchid_core.JSONObject<T_14, UnknownKeys, Catchall, orchid_core.JSONTypeAny extends Catchall ? orchid_core.addQuestionMarks<{ [k_1 in keyof T_14]: T_14[k_1]["type"]; }> extends infer T_15 extends object ? { [k in keyof T_15]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_14]: T_14[k_1]["type"]; }>[k]; } : never : (orchid_core.addQuestionMarks<{ [k_1 in keyof T_14]: T_14[k_1]["type"]; }> extends infer T_18 extends object ? { [k in keyof T_18]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_14]: T_14[k_1]["type"]; }>[k]; } : never) & {
419
445
  [k: string]: Catchall["type"];
420
- } extends infer T_14 extends object ? { [k_2 in keyof T_14]: ((orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer T_15 extends object ? { [k in keyof T_15]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never) & {
446
+ } extends infer T_16 extends object ? { [k_2 in keyof T_16]: ((orchid_core.addQuestionMarks<{ [k_1 in keyof T_14]: T_14[k_1]["type"]; }> extends infer T_17 extends object ? { [k in keyof T_17]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_14]: T_14[k_1]["type"]; }>[k]; } : never) & {
421
447
  [k: string]: Catchall["type"];
422
448
  })[k_2]; } : never>;
423
- optional: <T_17 extends orchid_core.JSONTypeAny>(type: T_17) => orchid_core.JSONOptional<T_17>;
449
+ optional: <T_19 extends orchid_core.JSONTypeAny>(type: T_19) => orchid_core.JSONOptional<T_19>;
424
450
  record: typeof orchid_core.record;
425
451
  }) => Type)): pqb.JSONColumn<Type>;
426
452
  jsonText(): pqb.JSONTextColumn;
package/dist/index.js CHANGED
@@ -2892,17 +2892,14 @@ const createDomain = (ast) => {
2892
2892
  return code;
2893
2893
  };
2894
2894
  const createTable = (config, ast) => {
2895
- var _a, _b, _c, _d, _e, _f;
2896
2895
  const code = [];
2897
2896
  orchidCore.addCode(code, `await db.createTable(${quoteSchemaTable(ast)}, (t) => ({`);
2898
- let hasTimestamps = isTimestamp(ast.shape.createdAt) && isTimestamp(ast.shape.updatedAt);
2899
- const camelCaseTimestamps = !config.snakeCase && hasTimestamps && !((_a = ast.shape.createdAt) == null ? void 0 : _a.data.name) && !((_b = ast.shape.updatedAt) == null ? void 0 : _b.data.name);
2900
- const snakeCaseTimestamps = hasTimestamps && !camelCaseTimestamps && (!config.snakeCase && ((_c = ast.shape.createdAt) == null ? void 0 : _c.data.name) === "created_at" && ((_d = ast.shape.updatedAt) == null ? void 0 : _d.data.name) === "updated_at" || config.snakeCase && !((_e = ast.shape.createdAt) == null ? void 0 : _e.data.name) && !((_f = ast.shape.updatedAt) == null ? void 0 : _f.data.name));
2901
- if (!camelCaseTimestamps && !snakeCaseTimestamps) {
2902
- hasTimestamps = false;
2903
- }
2897
+ const timestamps = getTimestampsInfo(config, ast, pqb.TimestampTZColumn);
2898
+ const timestampsNoTZ = getTimestampsInfo(config, ast, pqb.TimestampTZColumn);
2899
+ const hasAnyTimestamps = timestamps.hasTimestamps || timestampsNoTZ.hasTimestamps;
2900
+ const hasAnyCamelCaseTimestamps = timestamps.camelCaseTimestamps || timestampsNoTZ.camelCaseTimestamps;
2904
2901
  for (const key in ast.shape) {
2905
- if (hasTimestamps && (key === "createdAt" || key === "updatedAt"))
2902
+ if (hasAnyTimestamps && (key === "createdAt" || key === "updatedAt"))
2906
2903
  continue;
2907
2904
  const line = [`${orchidCore.quoteObjectKey(key)}: `];
2908
2905
  for (const part of ast.shape[key].toCode("t", true)) {
@@ -2911,9 +2908,10 @@ const createTable = (config, ast) => {
2911
2908
  orchidCore.addCode(line, ",");
2912
2909
  code.push(line);
2913
2910
  }
2914
- if (hasTimestamps) {
2911
+ if (hasAnyTimestamps) {
2912
+ const key = timestamps.hasTimestamps ? "timestamps" : "timestampsNoTZ";
2915
2913
  code.push([
2916
- `...t.${camelCaseTimestamps || config.snakeCase ? "timestamps" : "timestampsSnakeCase"}(),`
2914
+ `...t.${hasAnyCamelCaseTimestamps || config.snakeCase ? key : `${key}SnakeCase`}(),`
2917
2915
  ]);
2918
2916
  }
2919
2917
  if (ast.primaryKey) {
@@ -2932,11 +2930,25 @@ const createTable = (config, ast) => {
2932
2930
  orchidCore.addCode(code, "}));");
2933
2931
  return code;
2934
2932
  };
2935
- const isTimestamp = (column) => {
2933
+ const isTimestamp = (column, type) => {
2936
2934
  if (!column)
2937
2935
  return false;
2938
2936
  const { default: def } = column.data;
2939
- return column instanceof pqb.TimestampTzColumn && !column.data.isNullable && def && typeof def === "object" && orchidCore.isRaw(def) && def.__raw === "now()";
2937
+ return column instanceof type && !column.data.isNullable && def && typeof def === "object" && orchidCore.isRaw(def) && def.__raw === "now()";
2938
+ };
2939
+ const getTimestampsInfo = (config, ast, type) => {
2940
+ var _a, _b, _c, _d, _e, _f;
2941
+ let hasTimestamps = isTimestamp(ast.shape.createdAt, type) && isTimestamp(ast.shape.updatedAt, type);
2942
+ const camelCaseTimestamps = !config.snakeCase && hasTimestamps && !((_a = ast.shape.createdAt) == null ? void 0 : _a.data.name) && !((_b = ast.shape.updatedAt) == null ? void 0 : _b.data.name);
2943
+ const snakeCaseTimestamps = hasTimestamps && !camelCaseTimestamps && (!config.snakeCase && ((_c = ast.shape.createdAt) == null ? void 0 : _c.data.name) === "created_at" && ((_d = ast.shape.updatedAt) == null ? void 0 : _d.data.name) === "updated_at" || config.snakeCase && !((_e = ast.shape.createdAt) == null ? void 0 : _e.data.name) && !((_f = ast.shape.updatedAt) == null ? void 0 : _f.data.name));
2944
+ if (!camelCaseTimestamps && !snakeCaseTimestamps) {
2945
+ hasTimestamps = false;
2946
+ }
2947
+ return {
2948
+ hasTimestamps,
2949
+ camelCaseTimestamps,
2950
+ snakeCaseTimestamps
2951
+ };
2940
2952
  };
2941
2953
  const createConstraint = (item) => {
2942
2954
  const kind = pqb.getConstraintKind(item);