@devbro/pashmak 0.1.26 → 0.1.27
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/app/console/migrate/MigrateCommand.mjs +5 -0
- package/dist/app/console/migrate/MigrateCommand.mjs.map +1 -1
- package/dist/app/console/migrate/MigrateRollbackCommand.mjs +2 -0
- package/dist/app/console/migrate/MigrateRollbackCommand.mjs.map +1 -1
- package/dist/bin/app/console/DefaultCommand.cjs +3 -0
- package/dist/bin/app/console/KeyGenerateCommand.cjs +3 -0
- package/dist/bin/app/console/StartCommand.cjs +3 -0
- package/dist/bin/app/console/generate/GenerateControllerCommand.cjs +3 -0
- package/dist/bin/app/console/generate/index.cjs +3 -0
- package/dist/bin/app/console/index.cjs +10 -0
- package/dist/bin/app/console/migrate/GenerateMigrateCommand.cjs +3 -0
- package/dist/bin/app/console/migrate/MigrateCommand.cjs +8 -0
- package/dist/bin/app/console/migrate/MigrateRollbackCommand.cjs +5 -0
- package/dist/bin/app/console/migrate/index.cjs +10 -0
- package/dist/bin/app/console/queue/GenerateQueueMigrateCommand.cjs +3 -0
- package/dist/bin/cache.cjs +3 -0
- package/dist/bin/facades.cjs +3 -0
- package/dist/bin/factories.cjs +3 -0
- package/dist/bin/index.cjs +10 -0
- package/dist/bin/middlewares.cjs +3 -0
- package/dist/bin/queue.cjs +3 -0
- package/dist/bin/router.cjs +3 -0
- package/package.json +1 -1
|
@@ -28,6 +28,7 @@ class MigrateCommand extends Command {
|
|
|
28
28
|
logger().info("reverting all migrations!!");
|
|
29
29
|
const existing_migrations = await db.runQuery({
|
|
30
30
|
sql: "select * from migrations order by created_at DESC",
|
|
31
|
+
parts: [],
|
|
31
32
|
bindings: []
|
|
32
33
|
});
|
|
33
34
|
const migrationsDir2 = config.get("migration.path");
|
|
@@ -39,6 +40,7 @@ class MigrateCommand extends Command {
|
|
|
39
40
|
await migrationInstance.down(db.getSchema());
|
|
40
41
|
await db.runQuery({
|
|
41
42
|
sql: "delete from migrations where filename = $1",
|
|
43
|
+
parts: [],
|
|
42
44
|
bindings: [migration_record.filename]
|
|
43
45
|
});
|
|
44
46
|
} catch (error) {
|
|
@@ -66,12 +68,14 @@ class MigrateCommand extends Command {
|
|
|
66
68
|
files = dirEntries.filter((entry) => entry.endsWith(".ts") || entry.endsWith(".js")).sort();
|
|
67
69
|
let batch_number = await db.runQuery({
|
|
68
70
|
sql: "select max(batch) as next_batch from migrations",
|
|
71
|
+
parts: [],
|
|
69
72
|
bindings: []
|
|
70
73
|
});
|
|
71
74
|
batch_number = batch_number[0].next_batch || 0;
|
|
72
75
|
batch_number++;
|
|
73
76
|
const migrations = await db.runQuery({
|
|
74
77
|
sql: "select * from migrations order by created_at ASC",
|
|
78
|
+
parts: [],
|
|
75
79
|
bindings: []
|
|
76
80
|
});
|
|
77
81
|
const completed_migrations = migrations.map((r) => r.filename);
|
|
@@ -86,6 +90,7 @@ class MigrateCommand extends Command {
|
|
|
86
90
|
await c.up(db.getSchema());
|
|
87
91
|
await db.runQuery({
|
|
88
92
|
sql: "insert into migrations (filename, batch) values ($1,$2)",
|
|
93
|
+
parts: [],
|
|
89
94
|
bindings: [class_to_migrate, batch_number]
|
|
90
95
|
});
|
|
91
96
|
migrated_count++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/app/console/migrate/MigrateCommand.mts"],"sourcesContent":["import { cli, db as database, logger } from \"../../../facades.mjs\";\nimport { Command, Option } from \"clipanion\";\nimport { Blueprint } from \"@devbro/neko-sql\";\nimport { context_provider } from \"@devbro/neko-context\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport { config } from \"@devbro/neko-config\";\nimport { Migration } from \"@devbro/neko-sql\";\n\nexport class MigrateCommand extends Command {\n static paths = [[`migrate`]];\n\n fresh = Option.Boolean(`--fresh`, false, {\n description: `whether to delete and recreate database`,\n });\n\n refresh = Option.Boolean(`--refresh`, false, {\n description: `whether to drop all tables before running migrations by using rollback function`,\n });\n\n async execute() {\n await context_provider.run(async () => {\n // this.context.stdout.write(`Hello Migrate Command!\\n`);\n const db = database();\n const schema = db.getSchema();\n\n if (this.fresh) {\n throw new Error(\"not implemented\");\n }\n\n if (this.refresh) {\n logger().info(\"reverting all migrations!!\");\n // read all migrations and undo them all\n const existing_migrations = await db.runQuery({\n sql: \"select * from migrations order by created_at DESC\",\n bindings: [],\n });\n\n const migrationsDir = config.get(\"migration.path\");\n\n for (const migration_record of existing_migrations) {\n logger().info(`rolling back ${migration_record.filename}`);\n try {\n const MigrationClass = (\n await import(path.join(migrationsDir, migration_record.filename))\n ).default;\n const migrationInstance: Migration = new MigrationClass();\n\n // Call the down method to rollback the migration\n await migrationInstance.down(db.getSchema());\n\n // Remove the migration record from the migrations table\n await db.runQuery({\n sql: \"delete from migrations where filename = $1\",\n bindings: [migration_record.filename],\n });\n } catch (error) {\n logger().error(\n `Failed to rollback migration ${migration_record.filename}: ${error}`,\n );\n throw error;\n }\n }\n\n logger().info(\n `rolled back ${existing_migrations.length} migrations successfully!`,\n );\n }\n\n //create migration table if not exists\n if (!(await schema.tableExists(\"migrations\"))) {\n await schema.createTable(\"migrations\", (blueprint: Blueprint) => {\n blueprint.id();\n blueprint.timestamps();\n blueprint.string(\"filename\");\n blueprint.integer(\"batch\");\n });\n }\n\n const migrationsDir = config.get(\"migration.path\");\n let files: string[] = [];\n\n const dirEntries = await fs.readdir(migrationsDir);\n files = dirEntries\n .filter((entry) => entry.endsWith(\".ts\") || entry.endsWith(\".js\"))\n .sort();\n let batch_number = await db.runQuery({\n sql: \"select max(batch) as next_batch from migrations\",\n bindings: [],\n });\n batch_number = batch_number[0].next_batch || 0;\n batch_number++;\n\n const migrations = await db.runQuery({\n sql: \"select * from migrations order by created_at ASC\",\n bindings: [],\n });\n\n const completed_migrations = migrations.map((r: any) => r.filename);\n const pending_migrations = files.filter(\n (file) => !completed_migrations.includes(file),\n );\n\n let migrated_count = 0;\n for (const class_to_migrate of pending_migrations) {\n logger().info(`migrating up ${class_to_migrate}`);\n const ClassToMigrate = (\n await import(path.join(migrationsDir, class_to_migrate))\n ).default;\n const c: Migration = new ClassToMigrate();\n await c.up(db.getSchema());\n await db.runQuery({\n sql: \"insert into migrations (filename, batch) values ($1,$2)\",\n bindings: [class_to_migrate, batch_number],\n });\n migrated_count++;\n }\n\n if (migrated_count === 0) {\n logger().warn(\"no migrations to run!\");\n return;\n }\n\n logger().info(`migrated ${migrated_count} migrations successfully!`);\n return;\n });\n }\n}\n\ncli().register(MigrateCommand);\n"],"mappings":"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","names":["migrationsDir"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/app/console/migrate/MigrateCommand.mts"],"sourcesContent":["import { cli, db as database, logger } from \"../../../facades.mjs\";\nimport { Command, Option } from \"clipanion\";\nimport { Blueprint } from \"@devbro/neko-sql\";\nimport { context_provider } from \"@devbro/neko-context\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport { config } from \"@devbro/neko-config\";\nimport { Migration } from \"@devbro/neko-sql\";\n\nexport class MigrateCommand extends Command {\n static paths = [[`migrate`]];\n\n fresh = Option.Boolean(`--fresh`, false, {\n description: `whether to delete and recreate database`,\n });\n\n refresh = Option.Boolean(`--refresh`, false, {\n description: `whether to drop all tables before running migrations by using rollback function`,\n });\n\n async execute() {\n await context_provider.run(async () => {\n // this.context.stdout.write(`Hello Migrate Command!\\n`);\n const db = database();\n const schema = db.getSchema();\n\n if (this.fresh) {\n throw new Error(\"not implemented\");\n }\n\n if (this.refresh) {\n logger().info(\"reverting all migrations!!\");\n // read all migrations and undo them all\n const existing_migrations = await db.runQuery({\n sql: \"select * from migrations order by created_at DESC\",\n parts: [],\n bindings: [],\n });\n\n const migrationsDir = config.get(\"migration.path\");\n\n for (const migration_record of existing_migrations) {\n logger().info(`rolling back ${migration_record.filename}`);\n try {\n const MigrationClass = (\n await import(path.join(migrationsDir, migration_record.filename))\n ).default;\n const migrationInstance: Migration = new MigrationClass();\n\n // Call the down method to rollback the migration\n await migrationInstance.down(db.getSchema());\n\n // Remove the migration record from the migrations table\n await db.runQuery({\n sql: \"delete from migrations where filename = $1\",\n parts: [],\n bindings: [migration_record.filename],\n });\n } catch (error) {\n logger().error(\n `Failed to rollback migration ${migration_record.filename}: ${error}`,\n );\n throw error;\n }\n }\n\n logger().info(\n `rolled back ${existing_migrations.length} migrations successfully!`,\n );\n }\n\n //create migration table if not exists\n if (!(await schema.tableExists(\"migrations\"))) {\n await schema.createTable(\"migrations\", (blueprint: Blueprint) => {\n blueprint.id();\n blueprint.timestamps();\n blueprint.string(\"filename\");\n blueprint.integer(\"batch\");\n });\n }\n\n const migrationsDir = config.get(\"migration.path\");\n let files: string[] = [];\n\n const dirEntries = await fs.readdir(migrationsDir);\n files = dirEntries\n .filter((entry) => entry.endsWith(\".ts\") || entry.endsWith(\".js\"))\n .sort();\n let batch_number = await db.runQuery({\n sql: \"select max(batch) as next_batch from migrations\",\n parts: [],\n bindings: [],\n });\n batch_number = batch_number[0].next_batch || 0;\n batch_number++;\n\n const migrations = await db.runQuery({\n sql: \"select * from migrations order by created_at ASC\",\n parts: [],\n bindings: [],\n });\n\n const completed_migrations = migrations.map((r: any) => r.filename);\n const pending_migrations = files.filter(\n (file) => !completed_migrations.includes(file),\n );\n\n let migrated_count = 0;\n for (const class_to_migrate of pending_migrations) {\n logger().info(`migrating up ${class_to_migrate}`);\n const ClassToMigrate = (\n await import(path.join(migrationsDir, class_to_migrate))\n ).default;\n const c: Migration = new ClassToMigrate();\n await c.up(db.getSchema());\n await db.runQuery({\n sql: \"insert into migrations (filename, batch) values ($1,$2)\",\n parts: [],\n bindings: [class_to_migrate, batch_number],\n });\n migrated_count++;\n }\n\n if (migrated_count === 0) {\n logger().warn(\"no migrations to run!\");\n return;\n }\n\n logger().info(`migrated ${migrated_count} migrations successfully!`);\n return;\n });\n }\n}\n\ncli().register(MigrateCommand);\n"],"mappings":"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","names":["migrationsDir"]}
|
|
@@ -26,6 +26,7 @@ class MigrateRollbackCommand extends Command {
|
|
|
26
26
|
files = dirEntries.filter((entry) => entry.endsWith(".ts")).sort();
|
|
27
27
|
const migrations = await db.runQuery({
|
|
28
28
|
sql: "select * from migrations order by created_at DESC limit $1",
|
|
29
|
+
parts: [],
|
|
29
30
|
bindings: [this.steps]
|
|
30
31
|
});
|
|
31
32
|
for (const migration of migrations) {
|
|
@@ -36,6 +37,7 @@ class MigrateRollbackCommand extends Command {
|
|
|
36
37
|
await c.down(db.getSchema());
|
|
37
38
|
await db.runQuery({
|
|
38
39
|
sql: "delete from migrations where id = $1",
|
|
40
|
+
parts: [],
|
|
39
41
|
bindings: [migration.id]
|
|
40
42
|
});
|
|
41
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/app/console/migrate/MigrateRollbackCommand.mts"],"sourcesContent":["import { cli, db as database, logger } from \"../../../facades.mjs\";\nimport { Command, Option } from \"clipanion\";\nimport { context_provider } from \"@devbro/neko-context\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport { config } from \"@devbro/neko-config\";\nimport { Migration } from \"@devbro/neko-sql\";\nimport * as t from \"typanion\";\n\nexport class MigrateRollbackCommand extends Command {\n static paths = [[`migrate`, \"rollback\"]];\n\n steps = Option.String(`--steps`, \"1\", {\n description: `how many migrations to rollback`,\n validator: t.isNumber(),\n });\n\n async execute() {\n await context_provider.run(async () => {\n // this.context.stdout.write(`Hello Migrate Command!\\n`);\n const db = database();\n const schema = db.getSchema();\n\n const migrationsDir = config.get(\"migration.path\");\n let files: string[] = [];\n\n const dirEntries = await fs.readdir(migrationsDir);\n files = dirEntries.filter((entry) => entry.endsWith(\".ts\")).sort();\n\n const migrations = await db.runQuery({\n sql: \"select * from migrations order by created_at DESC limit $1\",\n bindings: [this.steps],\n });\n\n for (const migration of migrations) {\n const class_to_migrate = migration.filename;\n logger().info(`rolling back ${class_to_migrate}`);\n\n const ClassToMigrate = (\n await import(path.join(migrationsDir, class_to_migrate))\n ).default;\n\n const c: Migration = new ClassToMigrate();\n await c.down(db.getSchema());\n await db.runQuery({\n sql: \"delete from migrations where id = $1\",\n bindings: [migration.id],\n });\n }\n });\n }\n}\n\ncli().register(MigrateRollbackCommand);\n"],"mappings":";;AAAA,SAAS,KAAK,MAAM,UAAU,cAAc;AAC5C,SAAS,SAAS,cAAc;AAChC,SAAS,wBAAwB;AACjC,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,SAAS,cAAc;AAEvB,YAAY,OAAO;AAEZ,MAAM,+BAA+B,QAAQ;AAAA,EATpD,OASoD;AAAA;AAAA;AAAA,EAClD,OAAO,QAAQ,CAAC,CAAC,WAAW,UAAU,CAAC;AAAA,EAEvC,QAAQ,OAAO,OAAO,WAAW,KAAK;AAAA,IACpC,aAAa;AAAA,IACb,WAAW,EAAE,SAAS;AAAA,EACxB,CAAC;AAAA,EAED,MAAM,UAAU;AACd,UAAM,iBAAiB,IAAI,YAAY;AAErC,YAAM,KAAK,SAAS;AACpB,YAAM,SAAS,GAAG,UAAU;AAE5B,YAAM,gBAAgB,OAAO,IAAI,gBAAgB;AACjD,UAAI,QAAkB,CAAC;AAEvB,YAAM,aAAa,MAAM,GAAG,QAAQ,aAAa;AACjD,cAAQ,WAAW,OAAO,CAAC,UAAU,MAAM,SAAS,KAAK,CAAC,EAAE,KAAK;AAEjE,YAAM,aAAa,MAAM,GAAG,SAAS;AAAA,QACnC,KAAK;AAAA,QACL,UAAU,CAAC,KAAK,KAAK;AAAA,MACvB,CAAC;AAED,iBAAW,aAAa,YAAY;AAClC,cAAM,mBAAmB,UAAU;AACnC,eAAO,EAAE,KAAK,gBAAgB,gBAAgB,EAAE;AAEhD,cAAM,kBACJ,MAAM,OAAO,KAAK,KAAK,eAAe,gBAAgB,IACtD;AAEF,cAAM,IAAe,IAAI,eAAe;AACxC,cAAM,EAAE,KAAK,GAAG,UAAU,CAAC;AAC3B,cAAM,GAAG,SAAS;AAAA,UAChB,KAAK;AAAA,UACL,UAAU,CAAC,UAAU,EAAE;AAAA,QACzB,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,IAAI,EAAE,SAAS,sBAAsB;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/app/console/migrate/MigrateRollbackCommand.mts"],"sourcesContent":["import { cli, db as database, logger } from \"../../../facades.mjs\";\nimport { Command, Option } from \"clipanion\";\nimport { context_provider } from \"@devbro/neko-context\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport { config } from \"@devbro/neko-config\";\nimport { Migration } from \"@devbro/neko-sql\";\nimport * as t from \"typanion\";\n\nexport class MigrateRollbackCommand extends Command {\n static paths = [[`migrate`, \"rollback\"]];\n\n steps = Option.String(`--steps`, \"1\", {\n description: `how many migrations to rollback`,\n validator: t.isNumber(),\n });\n\n async execute() {\n await context_provider.run(async () => {\n // this.context.stdout.write(`Hello Migrate Command!\\n`);\n const db = database();\n const schema = db.getSchema();\n\n const migrationsDir = config.get(\"migration.path\");\n let files: string[] = [];\n\n const dirEntries = await fs.readdir(migrationsDir);\n files = dirEntries.filter((entry) => entry.endsWith(\".ts\")).sort();\n\n const migrations = await db.runQuery({\n sql: \"select * from migrations order by created_at DESC limit $1\",\n parts: [],\n bindings: [this.steps],\n });\n\n for (const migration of migrations) {\n const class_to_migrate = migration.filename;\n logger().info(`rolling back ${class_to_migrate}`);\n\n const ClassToMigrate = (\n await import(path.join(migrationsDir, class_to_migrate))\n ).default;\n\n const c: Migration = new ClassToMigrate();\n await c.down(db.getSchema());\n await db.runQuery({\n sql: \"delete from migrations where id = $1\",\n parts: [],\n bindings: [migration.id],\n });\n }\n });\n }\n}\n\ncli().register(MigrateRollbackCommand);\n"],"mappings":";;AAAA,SAAS,KAAK,MAAM,UAAU,cAAc;AAC5C,SAAS,SAAS,cAAc;AAChC,SAAS,wBAAwB;AACjC,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,SAAS,cAAc;AAEvB,YAAY,OAAO;AAEZ,MAAM,+BAA+B,QAAQ;AAAA,EATpD,OASoD;AAAA;AAAA;AAAA,EAClD,OAAO,QAAQ,CAAC,CAAC,WAAW,UAAU,CAAC;AAAA,EAEvC,QAAQ,OAAO,OAAO,WAAW,KAAK;AAAA,IACpC,aAAa;AAAA,IACb,WAAW,EAAE,SAAS;AAAA,EACxB,CAAC;AAAA,EAED,MAAM,UAAU;AACd,UAAM,iBAAiB,IAAI,YAAY;AAErC,YAAM,KAAK,SAAS;AACpB,YAAM,SAAS,GAAG,UAAU;AAE5B,YAAM,gBAAgB,OAAO,IAAI,gBAAgB;AACjD,UAAI,QAAkB,CAAC;AAEvB,YAAM,aAAa,MAAM,GAAG,QAAQ,aAAa;AACjD,cAAQ,WAAW,OAAO,CAAC,UAAU,MAAM,SAAS,KAAK,CAAC,EAAE,KAAK;AAEjE,YAAM,aAAa,MAAM,GAAG,SAAS;AAAA,QACnC,KAAK;AAAA,QACL,OAAO,CAAC;AAAA,QACR,UAAU,CAAC,KAAK,KAAK;AAAA,MACvB,CAAC;AAED,iBAAW,aAAa,YAAY;AAClC,cAAM,mBAAmB,UAAU;AACnC,eAAO,EAAE,KAAK,gBAAgB,gBAAgB,EAAE;AAEhD,cAAM,kBACJ,MAAM,OAAO,KAAK,KAAK,eAAe,gBAAgB,IACtD;AAEF,cAAM,IAAe,IAAI,eAAe;AACxC,cAAM,EAAE,KAAK,GAAG,UAAU,CAAC;AAC3B,cAAM,GAAG,SAAS;AAAA,UAChB,KAAK;AAAA,UACL,OAAO,CAAC;AAAA,UACR,UAAU,CAAC,UAAU,EAAE;AAAA,QACzB,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,IAAI,EAAE,SAAS,sBAAsB;","names":[]}
|
|
@@ -1277,6 +1277,9 @@ var CompiledRoute = class {
|
|
|
1277
1277
|
}
|
|
1278
1278
|
prepareOutputJsonFormat(obj) {
|
|
1279
1279
|
function traverse(value) {
|
|
1280
|
+
if (value === void 0 || value === null) {
|
|
1281
|
+
return null;
|
|
1282
|
+
}
|
|
1280
1283
|
if (!value || typeof value !== "object") {
|
|
1281
1284
|
return value;
|
|
1282
1285
|
}
|
|
@@ -1939,6 +1942,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
1939
1942
|
logger().info("reverting all migrations!!");
|
|
1940
1943
|
const existing_migrations = await db2.runQuery({
|
|
1941
1944
|
sql: "select * from migrations order by created_at DESC",
|
|
1945
|
+
parts: [],
|
|
1942
1946
|
bindings: []
|
|
1943
1947
|
});
|
|
1944
1948
|
const migrationsDir2 = import_neko_config2.config.get("migration.path");
|
|
@@ -1950,6 +1954,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
1950
1954
|
await migrationInstance.down(db2.getSchema());
|
|
1951
1955
|
await db2.runQuery({
|
|
1952
1956
|
sql: "delete from migrations where filename = $1",
|
|
1957
|
+
parts: [],
|
|
1953
1958
|
bindings: [migration_record.filename]
|
|
1954
1959
|
});
|
|
1955
1960
|
} catch (error) {
|
|
@@ -1977,12 +1982,14 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
1977
1982
|
files = dirEntries.filter((entry) => entry.endsWith(".ts") || entry.endsWith(".js")).sort();
|
|
1978
1983
|
let batch_number = await db2.runQuery({
|
|
1979
1984
|
sql: "select max(batch) as next_batch from migrations",
|
|
1985
|
+
parts: [],
|
|
1980
1986
|
bindings: []
|
|
1981
1987
|
});
|
|
1982
1988
|
batch_number = batch_number[0].next_batch || 0;
|
|
1983
1989
|
batch_number++;
|
|
1984
1990
|
const migrations = await db2.runQuery({
|
|
1985
1991
|
sql: "select * from migrations order by created_at ASC",
|
|
1992
|
+
parts: [],
|
|
1986
1993
|
bindings: []
|
|
1987
1994
|
});
|
|
1988
1995
|
const completed_migrations = migrations.map((r) => r.filename);
|
|
@@ -1997,6 +2004,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
1997
2004
|
await c.up(db2.getSchema());
|
|
1998
2005
|
await db2.runQuery({
|
|
1999
2006
|
sql: "insert into migrations (filename, batch) values ($1,$2)",
|
|
2007
|
+
parts: [],
|
|
2000
2008
|
bindings: [class_to_migrate, batch_number]
|
|
2001
2009
|
});
|
|
2002
2010
|
migrated_count++;
|
|
@@ -2088,6 +2096,7 @@ var MigrateRollbackCommand = class extends import_clipanion4.Command {
|
|
|
2088
2096
|
files = dirEntries.filter((entry) => entry.endsWith(".ts")).sort();
|
|
2089
2097
|
const migrations = await db2.runQuery({
|
|
2090
2098
|
sql: "select * from migrations order by created_at DESC limit $1",
|
|
2099
|
+
parts: [],
|
|
2091
2100
|
bindings: [this.steps]
|
|
2092
2101
|
});
|
|
2093
2102
|
for (const migration of migrations) {
|
|
@@ -2098,6 +2107,7 @@ var MigrateRollbackCommand = class extends import_clipanion4.Command {
|
|
|
2098
2107
|
await c.down(db2.getSchema());
|
|
2099
2108
|
await db2.runQuery({
|
|
2100
2109
|
sql: "delete from migrations where id = $1",
|
|
2110
|
+
parts: [],
|
|
2101
2111
|
bindings: [migration.id]
|
|
2102
2112
|
});
|
|
2103
2113
|
}
|
|
@@ -114,6 +114,9 @@ var CompiledRoute = class {
|
|
|
114
114
|
}
|
|
115
115
|
prepareOutputJsonFormat(obj) {
|
|
116
116
|
function traverse(value) {
|
|
117
|
+
if (value === void 0 || value === null) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
117
120
|
if (!value || typeof value !== "object") {
|
|
118
121
|
return value;
|
|
119
122
|
}
|
|
@@ -776,6 +779,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
776
779
|
logger().info("reverting all migrations!!");
|
|
777
780
|
const existing_migrations = await db2.runQuery({
|
|
778
781
|
sql: "select * from migrations order by created_at DESC",
|
|
782
|
+
parts: [],
|
|
779
783
|
bindings: []
|
|
780
784
|
});
|
|
781
785
|
const migrationsDir2 = import_neko_config2.config.get("migration.path");
|
|
@@ -787,6 +791,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
787
791
|
await migrationInstance.down(db2.getSchema());
|
|
788
792
|
await db2.runQuery({
|
|
789
793
|
sql: "delete from migrations where filename = $1",
|
|
794
|
+
parts: [],
|
|
790
795
|
bindings: [migration_record.filename]
|
|
791
796
|
});
|
|
792
797
|
} catch (error) {
|
|
@@ -814,12 +819,14 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
814
819
|
files = dirEntries.filter((entry) => entry.endsWith(".ts") || entry.endsWith(".js")).sort();
|
|
815
820
|
let batch_number = await db2.runQuery({
|
|
816
821
|
sql: "select max(batch) as next_batch from migrations",
|
|
822
|
+
parts: [],
|
|
817
823
|
bindings: []
|
|
818
824
|
});
|
|
819
825
|
batch_number = batch_number[0].next_batch || 0;
|
|
820
826
|
batch_number++;
|
|
821
827
|
const migrations = await db2.runQuery({
|
|
822
828
|
sql: "select * from migrations order by created_at ASC",
|
|
829
|
+
parts: [],
|
|
823
830
|
bindings: []
|
|
824
831
|
});
|
|
825
832
|
const completed_migrations = migrations.map((r) => r.filename);
|
|
@@ -834,6 +841,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
834
841
|
await c.up(db2.getSchema());
|
|
835
842
|
await db2.runQuery({
|
|
836
843
|
sql: "insert into migrations (filename, batch) values ($1,$2)",
|
|
844
|
+
parts: [],
|
|
837
845
|
bindings: [class_to_migrate, batch_number]
|
|
838
846
|
});
|
|
839
847
|
migrated_count++;
|
|
@@ -1269,6 +1269,9 @@ var CompiledRoute = class {
|
|
|
1269
1269
|
}
|
|
1270
1270
|
prepareOutputJsonFormat(obj) {
|
|
1271
1271
|
function traverse(value) {
|
|
1272
|
+
if (value === void 0 || value === null) {
|
|
1273
|
+
return null;
|
|
1274
|
+
}
|
|
1272
1275
|
if (!value || typeof value !== "object") {
|
|
1273
1276
|
return value;
|
|
1274
1277
|
}
|
|
@@ -1929,6 +1932,7 @@ var MigrateRollbackCommand = class extends import_clipanion2.Command {
|
|
|
1929
1932
|
files = dirEntries.filter((entry) => entry.endsWith(".ts")).sort();
|
|
1930
1933
|
const migrations = await db2.runQuery({
|
|
1931
1934
|
sql: "select * from migrations order by created_at DESC limit $1",
|
|
1935
|
+
parts: [],
|
|
1932
1936
|
bindings: [this.steps]
|
|
1933
1937
|
});
|
|
1934
1938
|
for (const migration of migrations) {
|
|
@@ -1939,6 +1943,7 @@ var MigrateRollbackCommand = class extends import_clipanion2.Command {
|
|
|
1939
1943
|
await c.down(db2.getSchema());
|
|
1940
1944
|
await db2.runQuery({
|
|
1941
1945
|
sql: "delete from migrations where id = $1",
|
|
1946
|
+
parts: [],
|
|
1942
1947
|
bindings: [migration.id]
|
|
1943
1948
|
});
|
|
1944
1949
|
}
|
|
@@ -1271,6 +1271,9 @@ var CompiledRoute = class {
|
|
|
1271
1271
|
}
|
|
1272
1272
|
prepareOutputJsonFormat(obj) {
|
|
1273
1273
|
function traverse(value) {
|
|
1274
|
+
if (value === void 0 || value === null) {
|
|
1275
|
+
return null;
|
|
1276
|
+
}
|
|
1274
1277
|
if (!value || typeof value !== "object") {
|
|
1275
1278
|
return value;
|
|
1276
1279
|
}
|
|
@@ -1933,6 +1936,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
1933
1936
|
logger().info("reverting all migrations!!");
|
|
1934
1937
|
const existing_migrations = await db2.runQuery({
|
|
1935
1938
|
sql: "select * from migrations order by created_at DESC",
|
|
1939
|
+
parts: [],
|
|
1936
1940
|
bindings: []
|
|
1937
1941
|
});
|
|
1938
1942
|
const migrationsDir2 = import_neko_config2.config.get("migration.path");
|
|
@@ -1944,6 +1948,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
1944
1948
|
await migrationInstance.down(db2.getSchema());
|
|
1945
1949
|
await db2.runQuery({
|
|
1946
1950
|
sql: "delete from migrations where filename = $1",
|
|
1951
|
+
parts: [],
|
|
1947
1952
|
bindings: [migration_record.filename]
|
|
1948
1953
|
});
|
|
1949
1954
|
} catch (error) {
|
|
@@ -1971,12 +1976,14 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
1971
1976
|
files = dirEntries.filter((entry) => entry.endsWith(".ts") || entry.endsWith(".js")).sort();
|
|
1972
1977
|
let batch_number = await db2.runQuery({
|
|
1973
1978
|
sql: "select max(batch) as next_batch from migrations",
|
|
1979
|
+
parts: [],
|
|
1974
1980
|
bindings: []
|
|
1975
1981
|
});
|
|
1976
1982
|
batch_number = batch_number[0].next_batch || 0;
|
|
1977
1983
|
batch_number++;
|
|
1978
1984
|
const migrations = await db2.runQuery({
|
|
1979
1985
|
sql: "select * from migrations order by created_at ASC",
|
|
1986
|
+
parts: [],
|
|
1980
1987
|
bindings: []
|
|
1981
1988
|
});
|
|
1982
1989
|
const completed_migrations = migrations.map((r) => r.filename);
|
|
@@ -1991,6 +1998,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
1991
1998
|
await c.up(db2.getSchema());
|
|
1992
1999
|
await db2.runQuery({
|
|
1993
2000
|
sql: "insert into migrations (filename, batch) values ($1,$2)",
|
|
2001
|
+
parts: [],
|
|
1994
2002
|
bindings: [class_to_migrate, batch_number]
|
|
1995
2003
|
});
|
|
1996
2004
|
migrated_count++;
|
|
@@ -2082,6 +2090,7 @@ var MigrateRollbackCommand = class extends import_clipanion4.Command {
|
|
|
2082
2090
|
files = dirEntries.filter((entry) => entry.endsWith(".ts")).sort();
|
|
2083
2091
|
const migrations = await db2.runQuery({
|
|
2084
2092
|
sql: "select * from migrations order by created_at DESC limit $1",
|
|
2093
|
+
parts: [],
|
|
2085
2094
|
bindings: [this.steps]
|
|
2086
2095
|
});
|
|
2087
2096
|
for (const migration of migrations) {
|
|
@@ -2092,6 +2101,7 @@ var MigrateRollbackCommand = class extends import_clipanion4.Command {
|
|
|
2092
2101
|
await c.down(db2.getSchema());
|
|
2093
2102
|
await db2.runQuery({
|
|
2094
2103
|
sql: "delete from migrations where id = $1",
|
|
2104
|
+
parts: [],
|
|
2095
2105
|
bindings: [migration.id]
|
|
2096
2106
|
});
|
|
2097
2107
|
}
|
package/dist/bin/cache.cjs
CHANGED
package/dist/bin/facades.cjs
CHANGED
package/dist/bin/factories.cjs
CHANGED
package/dist/bin/index.cjs
CHANGED
|
@@ -133,6 +133,9 @@ var init_CompiledRoute = __esm({
|
|
|
133
133
|
}
|
|
134
134
|
prepareOutputJsonFormat(obj) {
|
|
135
135
|
function traverse(value) {
|
|
136
|
+
if (value === void 0 || value === null) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
136
139
|
if (!value || typeof value !== "object") {
|
|
137
140
|
return value;
|
|
138
141
|
}
|
|
@@ -904,6 +907,7 @@ var init_MigrateCommand = __esm({
|
|
|
904
907
|
logger().info("reverting all migrations!!");
|
|
905
908
|
const existing_migrations = await db2.runQuery({
|
|
906
909
|
sql: "select * from migrations order by created_at DESC",
|
|
910
|
+
parts: [],
|
|
907
911
|
bindings: []
|
|
908
912
|
});
|
|
909
913
|
const migrationsDir2 = import_neko_config2.config.get("migration.path");
|
|
@@ -915,6 +919,7 @@ var init_MigrateCommand = __esm({
|
|
|
915
919
|
await migrationInstance.down(db2.getSchema());
|
|
916
920
|
await db2.runQuery({
|
|
917
921
|
sql: "delete from migrations where filename = $1",
|
|
922
|
+
parts: [],
|
|
918
923
|
bindings: [migration_record.filename]
|
|
919
924
|
});
|
|
920
925
|
} catch (error) {
|
|
@@ -942,12 +947,14 @@ var init_MigrateCommand = __esm({
|
|
|
942
947
|
files = dirEntries.filter((entry) => entry.endsWith(".ts") || entry.endsWith(".js")).sort();
|
|
943
948
|
let batch_number = await db2.runQuery({
|
|
944
949
|
sql: "select max(batch) as next_batch from migrations",
|
|
950
|
+
parts: [],
|
|
945
951
|
bindings: []
|
|
946
952
|
});
|
|
947
953
|
batch_number = batch_number[0].next_batch || 0;
|
|
948
954
|
batch_number++;
|
|
949
955
|
const migrations = await db2.runQuery({
|
|
950
956
|
sql: "select * from migrations order by created_at ASC",
|
|
957
|
+
parts: [],
|
|
951
958
|
bindings: []
|
|
952
959
|
});
|
|
953
960
|
const completed_migrations = migrations.map((r) => r.filename);
|
|
@@ -962,6 +969,7 @@ var init_MigrateCommand = __esm({
|
|
|
962
969
|
await c.up(db2.getSchema());
|
|
963
970
|
await db2.runQuery({
|
|
964
971
|
sql: "insert into migrations (filename, batch) values ($1,$2)",
|
|
972
|
+
parts: [],
|
|
965
973
|
bindings: [class_to_migrate, batch_number]
|
|
966
974
|
});
|
|
967
975
|
migrated_count++;
|
|
@@ -2219,6 +2227,7 @@ var init_MigrateRollbackCommand = __esm({
|
|
|
2219
2227
|
files = dirEntries.filter((entry) => entry.endsWith(".ts")).sort();
|
|
2220
2228
|
const migrations = await db2.runQuery({
|
|
2221
2229
|
sql: "select * from migrations order by created_at DESC limit $1",
|
|
2230
|
+
parts: [],
|
|
2222
2231
|
bindings: [this.steps]
|
|
2223
2232
|
});
|
|
2224
2233
|
for (const migration of migrations) {
|
|
@@ -2229,6 +2238,7 @@ var init_MigrateRollbackCommand = __esm({
|
|
|
2229
2238
|
await c.down(db2.getSchema());
|
|
2230
2239
|
await db2.runQuery({
|
|
2231
2240
|
sql: "delete from migrations where id = $1",
|
|
2241
|
+
parts: [],
|
|
2232
2242
|
bindings: [migration.id]
|
|
2233
2243
|
});
|
|
2234
2244
|
}
|
package/dist/bin/middlewares.cjs
CHANGED
package/dist/bin/queue.cjs
CHANGED
package/dist/bin/router.cjs
CHANGED