rake-db 2.10.35 → 2.10.36

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
@@ -1,6 +1,5 @@
1
1
  import * as orchid_core from 'orchid-core';
2
2
  import { ColumnTypesBase, EmptyObject, RawSQLBase, MaybeArray } from 'orchid-core';
3
- import * as pqb from 'pqb';
4
3
  import { ColumnsShape, Db as Db$1, ColumnType, EnumColumn, raw, Adapter, DefaultColumnTypes, DbResult, TransactionAdapter, QueryLogObject, IndexColumnOptions, IndexOptions, ForeignKeyOptions, TextColumn, NoPrimaryKeyOption, TableData, SingleColumnIndexOptions, AdapterOptions, QueryLogOptions } from 'pqb';
5
4
 
6
5
  type CreateTableResult<Table extends string, Shape extends ColumnsShape> = {
@@ -973,11 +972,12 @@ type RakeDbConfig<CT extends ColumnTypesBase = DefaultColumnTypes> = {
973
972
  migrationsTable: string;
974
973
  snakeCase: boolean;
975
974
  language?: string;
976
- commands: Record<string, (options: AdapterOptions[], config: RakeDbConfig<CT>, args: string[]) => Promise<void>>;
975
+ commands: Record<string, (options: AdapterOptions[], config: RakeDbConfig<CT>, args: string[]) => void | Promise<void>>;
977
976
  noPrimaryKey?: NoPrimaryKeyOption;
978
977
  baseTable?: BaseTable<CT>;
979
978
  appCodeUpdater?: AppCodeUpdater;
980
979
  useCodeUpdater?: boolean;
980
+ forceDefaultExports?: boolean;
981
981
  import(path: string): Promise<unknown>;
982
982
  beforeMigrate?(db: Db): Promise<void>;
983
983
  afterMigrate?(db: Db): Promise<void>;
@@ -1038,142 +1038,43 @@ declare const rollback: <CT extends Record<string, orchid_core.AnyColumnTypeCrea
1038
1038
  */
1039
1039
  declare const redo: <CT extends Record<string, orchid_core.AnyColumnTypeCreator>>(options: MaybeArray<AdapterOptions>, config: RakeDbConfig<CT>, args?: string[]) => Promise<void>;
1040
1040
 
1041
- declare const rakeDb: <CT extends Record<string, orchid_core.AnyColumnTypeCreator> = {
1042
- timestamps<T extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>>(this: {
1043
- name(name: string): {
1044
- timestamp(): T;
1045
- };
1046
- timestamp(): T;
1047
- timestampsSnakeCase(): {
1048
- createdAt: orchid_core.ColumnWithDefault<T, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1049
- updatedAt: orchid_core.ColumnWithDefault<T, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1050
- };
1051
- }): {
1052
- createdAt: orchid_core.ColumnWithDefault<T, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1053
- updatedAt: orchid_core.ColumnWithDefault<T, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1054
- };
1055
- timestampsSnakeCase<T_1 extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>>(this: {
1056
- name(name: string): {
1057
- timestamp(): T_1;
1058
- };
1059
- timestamp(): T_1;
1060
- }): {
1061
- createdAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1062
- updatedAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1063
- };
1064
- timestampsNoTZ<T_2 extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>>(this: {
1065
- name(name: string): {
1066
- timestampNoTZ(): T_2;
1067
- };
1068
- timestampNoTZ(): T_2;
1069
- timestampsNoTZSnakeCase(): {
1070
- createdAt: orchid_core.ColumnWithDefault<T_2, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1071
- updatedAt: orchid_core.ColumnWithDefault<T_2, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1072
- };
1073
- }): {
1074
- createdAt: orchid_core.ColumnWithDefault<T_2, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1075
- updatedAt: orchid_core.ColumnWithDefault<T_2, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1076
- };
1077
- timestampsNoTZSnakeCase<T_3 extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>>(this: {
1078
- name(name: string): {
1079
- timestampNoTZ(): T_3;
1080
- };
1081
- timestampNoTZ(): T_3;
1082
- }): {
1083
- createdAt: orchid_core.ColumnWithDefault<T_3, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1084
- updatedAt: orchid_core.ColumnWithDefault<T_3, orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>>;
1085
- };
1086
- name: typeof orchid_core.name;
1087
- sql: {
1088
- (sql: TemplateStringsArray, ...values: unknown[]): orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>;
1089
- (sql: string): orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>;
1090
- (values: Record<string, unknown>, sql: string): orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>;
1091
- (values: Record<string, unknown>): (strings: TemplateStringsArray, ...values: unknown[]) => orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>;
1092
- };
1093
- smallint(): pqb.SmallIntColumn;
1094
- integer(): pqb.IntegerColumn;
1095
- bigint(): pqb.BigIntColumn;
1096
- numeric<Precision extends number | undefined = undefined, Scale extends number | undefined = undefined>(precision?: Precision | undefined, scale?: Scale | undefined): pqb.DecimalColumn<Precision, Scale>;
1097
- decimal<Precision_1 extends number | undefined = undefined, Scale_1 extends number | undefined = undefined>(precision?: Precision_1 | undefined, scale?: Scale_1 | undefined): pqb.DecimalColumn<Precision_1, Scale_1>;
1098
- real(): pqb.RealColumn;
1099
- doublePrecision(): pqb.DoublePrecisionColumn;
1100
- identity(options?: pqb.TableData.Identity | undefined): orchid_core.ColumnWithDefault<pqb.IntegerColumn, orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>>>;
1101
- smallSerial(): pqb.SmallSerialColumn;
1102
- serial(): pqb.SerialColumn;
1103
- bigSerial(): pqb.BigSerialColumn;
1104
- money(): pqb.MoneyColumn;
1105
- varchar<Limit extends number | undefined = undefined>(limit?: Limit | undefined): pqb.VarCharColumn<Limit>;
1106
- char<Limit_1 extends number | undefined = undefined>(limit?: Limit_1 | undefined): pqb.CharColumn<Limit_1>;
1107
- text: (min: number, max: number) => pqb.TextColumn;
1108
- string: (min: number, max: number) => pqb.TextColumn;
1109
- citext(min: number, max: number): pqb.CitextColumn;
1110
- bytea(): pqb.ByteaColumn;
1111
- date(): pqb.DateColumn;
1112
- timestampNoTZ<Precision_2 extends number>(precision?: Precision_2 | undefined): pqb.TimestampColumn<Precision_2>;
1113
- timestamp<Precision_3 extends number | undefined = undefined>(precision?: Precision_3 | undefined): pqb.TimestampTZColumn<number>;
1114
- time<Precision_4 extends number | undefined = undefined>(precision?: Precision_4 | undefined): pqb.TimeColumn<Precision_4>;
1115
- interval<Fields extends string | undefined = undefined, Precision_5 extends number | undefined = undefined>(fields?: Fields | undefined, precision?: Precision_5 | undefined): pqb.IntervalColumn<Fields, Precision_5>;
1116
- boolean(): pqb.BooleanColumn;
1117
- enum<U extends string, T_4 extends [U, ...U[]]>(dataType: string, type: T_4): pqb.EnumColumn<U, T_4>;
1118
- point(): pqb.PointColumn;
1119
- line(): pqb.LineColumn;
1120
- lseg(): pqb.LsegColumn;
1121
- box(): pqb.BoxColumn;
1122
- path(): pqb.PathColumn;
1123
- polygon(): pqb.PolygonColumn;
1124
- circle(): pqb.CircleColumn;
1125
- cidr(): pqb.CidrColumn;
1126
- inet(): pqb.InetColumn;
1127
- macaddr(): pqb.MacAddrColumn;
1128
- macaddr8(): pqb.MacAddr8Column;
1129
- bit<Length extends number>(length: Length): pqb.BitColumn<Length>;
1130
- bitVarying<Length_1 extends number | undefined = undefined>(length?: Length_1 | undefined): pqb.BitVaryingColumn<Length_1>;
1131
- tsvector(): pqb.TsVectorColumn;
1132
- tsquery(): pqb.TsQueryColumn;
1133
- uuid(): pqb.UUIDColumn;
1134
- xml(): pqb.XMLColumn;
1135
- json<Type extends orchid_core.JSONType<unknown, {}> = orchid_core.JSONUnknown>(schemaOrFn?: Type | ((j: {
1136
- unknown: () => orchid_core.JSONUnknown;
1137
- boolean: () => orchid_core.JSONBoolean;
1138
- null: () => orchid_core.JSONNull;
1139
- number: <T_5 extends number = number>() => orchid_core.JSONNumber<T_5>;
1140
- string: <T_6 extends string = string>() => orchid_core.JSONString<T_6>;
1141
- array: <T_7 extends orchid_core.JSONType<unknown, {}>>(item: T_7) => orchid_core.JSONArray<T_7, "many">;
1142
- object: <Shape extends orchid_core.JSONObjectShape>(shape: Shape) => orchid_core.JSONObject<Shape, "strip", orchid_core.JSONType<unknown, {}>>;
1143
- literal: <T_8 extends orchid_core.JSONPrimitive>(value: T_8) => orchid_core.JSONLiteral<T_8>;
1144
- discriminatedUnion: <Discriminator extends string, Types extends orchid_core.JSONDiscriminatedUnionArg<Discriminator>>(discriminator: Discriminator, types: Types) => orchid_core.JSONDiscriminatedUnion<Discriminator, Types>;
1145
- enum: <U_1 extends string, T_9 extends [U_1, ...U_1[]]>(options: T_9) => orchid_core.JSONEnum<string, T_9>;
1146
- intersection: <Left extends orchid_core.JSONType<unknown, {}>, Right extends orchid_core.JSONType<unknown, {}>>(left: Left, right: Right) => orchid_core.JSONIntersection<Left, Right>;
1147
- lazy: <T_10 extends orchid_core.JSONType<unknown, {}>>(fn: () => T_10) => orchid_core.JSONLazy<T_10>;
1148
- nativeEnum: <T_11 extends orchid_core.EnumLike>(type: T_11) => orchid_core.JSONNativeEnum<T_11>;
1149
- record: <Key extends orchid_core.JSONString<string> | orchid_core.JSONNumber<number>, Value extends orchid_core.JSONType<unknown, {}>>(...args: [value: Value] | [key: Key, value: Value]) => orchid_core.JSONRecord<Key, Value>;
1150
- tuple: <T_12 extends orchid_core.JSONTupleItems, Rest extends orchid_core.JSONType<unknown, {}> | undefined = undefined>(items: T_12, rest?: Rest | undefined) => orchid_core.JSONTuple<T_12, Rest>;
1151
- union: <T_13 extends orchid_core.JSONUnionArgs>(...types: T_13) => orchid_core.JSONUnion<T_13>;
1152
- }) => Type) | undefined): pqb.JSONColumn<Type>;
1153
- jsonText(): pqb.JSONTextColumn;
1154
- array<Item extends pqb.ColumnType<unknown, pqb.BaseOperators, unknown, unknown, unknown>>(item: Item): pqb.ArrayColumn<Item>;
1155
- type(dataType: string): pqb.CustomTypeColumn;
1156
- domain(dataType: string): pqb.DomainColumn;
1157
- primaryKey(columns: string[], options?: {
1158
- name?: string | undefined;
1159
- } | undefined): {};
1160
- index(columns: MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions): {};
1161
- unique(columns: MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions | undefined): {};
1162
- searchIndex(columns: MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions | undefined): {};
1163
- constraint<Table extends string | (() => orchid_core.ForeignKeyTable), Columns extends Table extends () => orchid_core.ForeignKeyTable ? [orchid_core.ColumnNameOfTable<ReturnType<Table>>, ...orchid_core.ColumnNameOfTable<ReturnType<Table>>[]] : [string, ...string[]]>({ name, references, check, dropMode, }: {
1164
- name?: string | undefined;
1165
- references?: [columns: string[], fnOrTable: Table, foreignColumns: Columns, options?: pqb.ForeignKeyOptions | undefined] | undefined;
1166
- check?: orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}> | undefined;
1167
- dropMode?: pqb.DropMode | undefined;
1168
- }): {};
1169
- foreignKey<Table_1 extends string | (() => orchid_core.ForeignKeyTable), Columns_1 extends Table_1 extends () => orchid_core.ForeignKeyTable ? [orchid_core.ColumnNameOfTable<ReturnType<Table_1>>, ...orchid_core.ColumnNameOfTable<ReturnType<Table_1>>[]] : [string, ...string[]]>(columns: string[], fnOrTable: Table_1, foreignColumns: Columns_1, options?: (pqb.ForeignKeyOptions & {
1170
- name?: string | undefined;
1171
- dropMode?: pqb.DropMode | undefined;
1172
- }) | undefined): {};
1173
- check(check: orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>): {};
1174
- }>(options: MaybeArray<AdapterOptions>, partialConfig?: InputRakeDbConfig<CT>, args?: string[]) => ((fn: ChangeCallback<CT>) => void) & {
1041
+ /**
1042
+ * Type of {@link rakeDb} function
1043
+ */
1044
+ type RakeDbFn = (<C extends ColumnTypesBase = DefaultColumnTypes>(options: MaybeArray<AdapterOptions>, partialConfig?: InputRakeDbConfig<C>, args?: string[]) => RakeDbChangeFn<C> & {
1175
1045
  promise: Promise<void>;
1046
+ }) & {
1047
+ /**
1048
+ * Unlike the original `rakeDb` that executes immediately,
1049
+ * `rakeDb.lazy` returns the `run` function to be later called programmatically.
1050
+ *
1051
+ * @param options - {@link AdapterOptions} or an array of such options to migrate multiple dbs
1052
+ * @param config - {@link RakeDbConfig}
1053
+ * @returns `change` is to be used in migrations, `run` takes an array cli args to execute a command
1054
+ */
1055
+ lazy: RakeDbLazyFn;
1056
+ };
1057
+ /**
1058
+ * Type of {@link rakeDb.lazy} function
1059
+ */
1060
+ type RakeDbLazyFn = <C extends ColumnTypesBase = DefaultColumnTypes>(options: MaybeArray<AdapterOptions>, partialConfig?: InputRakeDbConfig<C>) => {
1061
+ change: RakeDbChangeFn<C>;
1062
+ run(args: string[]): Promise<void>;
1176
1063
  };
1064
+ /**
1065
+ * Function to use in migrations to wrap database changes
1066
+ * Saves the given callback to an internal queue,
1067
+ * and also returns the callback in case you want to export it from migration.
1068
+ */
1069
+ type RakeDbChangeFn<C extends ColumnTypesBase> = (fn: ChangeCallback<C>) => ChangeCallback<C>;
1070
+ /**
1071
+ * Function to configure and run `rakeDb`.
1072
+ *
1073
+ * @param options - {@link AdapterOptions} or an array of such options to migrate multiple dbs
1074
+ * @param config - {@link RakeDbConfig}
1075
+ * @param args - optionally provide an array of cli args. Default is `process.argv.slice(2)`.
1076
+ */
1077
+ declare const rakeDb: RakeDbFn;
1177
1078
 
1178
1079
  declare const saveMigratedVersion: <CT extends Record<string, orchid_core.AnyColumnTypeCreator>>(db: SilentQueries, version: string, config: RakeDbConfig<CT>) => Promise<void>;
1179
1080
  declare const removeMigratedVersion: <CT extends Record<string, orchid_core.AnyColumnTypeCreator>>(db: SilentQueries, version: string, config: RakeDbConfig<CT>) => Promise<void>;
package/dist/index.js CHANGED
@@ -238,7 +238,7 @@ function getMigrationsFromConfig(config, up) {
238
238
  result.push({
239
239
  path: path.resolve(basePath, key),
240
240
  version: getVersion(path.basename(key)),
241
- change: migrations[key]
241
+ load: migrations[key]
242
242
  });
243
243
  }
244
244
  if (!up)
@@ -261,7 +261,7 @@ async function getMigrationsFromFiles(config, up) {
261
261
  return {
262
262
  path: filePath,
263
263
  version: getVersion(file),
264
- async change() {
264
+ async load() {
265
265
  try {
266
266
  await imp(filePath);
267
267
  } catch (err) {
@@ -2302,8 +2302,14 @@ const processMigration = async (db, up, file, config, options, appCodeUpdaterCac
2302
2302
  clearChanges();
2303
2303
  let changes = changeCache[file.path];
2304
2304
  if (!changes) {
2305
- await file.change();
2306
- changes = getCurrentChanges();
2305
+ const module = await file.load();
2306
+ const exported = (module == null ? void 0 : module.default) && orchidCore.toArray(module.default);
2307
+ if (config.forceDefaultExports && !exported) {
2308
+ throw new RakeDbError(
2309
+ `Missing a default export in ${file.path} migration`
2310
+ );
2311
+ }
2312
+ changes = exported || getCurrentChanges();
2307
2313
  changeCache[file.path] = changes;
2308
2314
  }
2309
2315
  const db2 = createMigrationInterface(tx, up, config);
@@ -3746,50 +3752,57 @@ const readdirRecursive = async (dirPath, cb) => {
3746
3752
 
3747
3753
  const rakeDb = (options, partialConfig = {}, args = process.argv.slice(2)) => {
3748
3754
  const config = processRakeDbConfig(partialConfig);
3749
- const promise = runCommand(options, config, args);
3750
- return Object.assign(
3751
- (fn) => {
3752
- pushChange(fn);
3753
- },
3754
- {
3755
- promise
3756
- }
3757
- );
3758
- };
3759
- const runCommand = async (options, config, args = process.argv.slice(2)) => {
3760
- var _a, _b, _c;
3761
- const arg = (_a = args[0]) == null ? void 0 : _a.split(":")[0];
3762
- try {
3763
- if (arg === "create") {
3764
- await createDb(options, config);
3765
- } else if (arg === "drop") {
3766
- await dropDb(options, config);
3767
- } else if (arg === "reset") {
3768
- await resetDb(options, config);
3769
- } else if (arg === "up" || arg === "migrate") {
3770
- await migrate(options, config, args.slice(1));
3771
- } else if (arg === "down" || arg === "rollback") {
3772
- await rollback(options, config, args.slice(1));
3773
- } else if (arg === "redo") {
3774
- await redo(options, config, args.slice(1));
3775
- } else if (arg === "new") {
3776
- await generate(config, args.slice(1));
3777
- } else if (arg === "pull") {
3778
- await pullDbStructure(orchidCore.toArray(options)[0], config);
3779
- } else if (config.commands[arg]) {
3780
- await config.commands[arg](orchidCore.toArray(options), config, args.slice(1));
3781
- } else if (arg !== "rec" && arg !== "recurrent") {
3782
- (_b = config.logger) == null ? void 0 : _b.log(help);
3783
- }
3784
- if (arg === "migrate" || arg === "rec" || arg === "recurrent" || arg === "redo") {
3785
- await runRecurrentMigrations(options, config);
3786
- }
3787
- } catch (err) {
3755
+ const promise = runCommand(options, config, args).catch((err) => {
3756
+ var _a;
3788
3757
  if (err instanceof RakeDbError) {
3789
- (_c = config.logger) == null ? void 0 : _c.error(err.message);
3758
+ (_a = config.logger) == null ? void 0 : _a.error(err.message);
3790
3759
  process.exit(1);
3791
3760
  }
3792
3761
  throw err;
3762
+ });
3763
+ return Object.assign(change, {
3764
+ promise
3765
+ });
3766
+ };
3767
+ rakeDb.lazy = (options, partialConfig = {}) => {
3768
+ const config = processRakeDbConfig(partialConfig);
3769
+ return {
3770
+ change,
3771
+ run(args) {
3772
+ return runCommand(options, config, args);
3773
+ }
3774
+ };
3775
+ };
3776
+ function change(fn) {
3777
+ pushChange(fn);
3778
+ return fn;
3779
+ }
3780
+ const runCommand = async (options, config, args = process.argv.slice(2)) => {
3781
+ var _a, _b;
3782
+ const arg = (_a = args[0]) == null ? void 0 : _a.split(":")[0];
3783
+ if (arg === "create") {
3784
+ await createDb(options, config);
3785
+ } else if (arg === "drop") {
3786
+ await dropDb(options, config);
3787
+ } else if (arg === "reset") {
3788
+ await resetDb(options, config);
3789
+ } else if (arg === "up" || arg === "migrate") {
3790
+ await migrate(options, config, args.slice(1));
3791
+ } else if (arg === "down" || arg === "rollback") {
3792
+ await rollback(options, config, args.slice(1));
3793
+ } else if (arg === "redo") {
3794
+ await redo(options, config, args.slice(1));
3795
+ } else if (arg === "new") {
3796
+ await generate(config, args.slice(1));
3797
+ } else if (arg === "pull") {
3798
+ await pullDbStructure(orchidCore.toArray(options)[0], config);
3799
+ } else if (config.commands[arg]) {
3800
+ await config.commands[arg](orchidCore.toArray(options), config, args.slice(1));
3801
+ } else if (arg !== "rec" && arg !== "recurrent") {
3802
+ (_b = config.logger) == null ? void 0 : _b.log(help);
3803
+ }
3804
+ if (arg === "migrate" || arg === "rec" || arg === "recurrent" || arg === "redo") {
3805
+ await runRecurrentMigrations(options, config);
3793
3806
  }
3794
3807
  };
3795
3808
  const help = `Usage: rake-db [command] [arguments]