rake-db 2.8.9 → 2.8.11
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 +45 -19
- package/dist/index.js +24 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +25 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
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
|
|
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
|
|
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
|
-
|
|
371
|
-
timestamp<Precision_3 extends number | undefined = undefined>(precision?: Precision_3 | undefined): pqb.
|
|
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,
|
|
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: <
|
|
396
|
-
union: <
|
|
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,
|
|
410
|
-
instanceOf: <
|
|
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: <
|
|
413
|
-
literal: <
|
|
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: <
|
|
416
|
-
nullable: <
|
|
417
|
-
nullish: <
|
|
418
|
-
object: <
|
|
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
|
|
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: <
|
|
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
|
-
|
|
2899
|
-
const
|
|
2900
|
-
const
|
|
2901
|
-
|
|
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 (
|
|
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 (
|
|
2911
|
+
if (hasAnyTimestamps) {
|
|
2912
|
+
const key = timestamps.hasTimestamps ? "timestamps" : "timestampsNoTZ";
|
|
2915
2913
|
code.push([
|
|
2916
|
-
`...t.${
|
|
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
|
|
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);
|