@take-out/postgres 0.0.28

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 (186) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +242 -0
  3. package/cli.cjs +3 -0
  4. package/dist/cjs/build.cjs +26 -0
  5. package/dist/cjs/build.js +21 -0
  6. package/dist/cjs/build.js.map +6 -0
  7. package/dist/cjs/build.native.js +29 -0
  8. package/dist/cjs/build.native.js.map +1 -0
  9. package/dist/cjs/cli.cjs +156 -0
  10. package/dist/cjs/cli.js +128 -0
  11. package/dist/cjs/cli.js.map +6 -0
  12. package/dist/cjs/cli.native.js +164 -0
  13. package/dist/cjs/cli.native.js.map +1 -0
  14. package/dist/cjs/createServerHelpers.cjs +37 -0
  15. package/dist/cjs/createServerHelpers.js +28 -0
  16. package/dist/cjs/createServerHelpers.js.map +6 -0
  17. package/dist/cjs/createServerHelpers.native.js +43 -0
  18. package/dist/cjs/createServerHelpers.native.js.map +1 -0
  19. package/dist/cjs/helpers/chunkedQuery.cjs +60 -0
  20. package/dist/cjs/helpers/chunkedQuery.js +51 -0
  21. package/dist/cjs/helpers/chunkedQuery.js.map +6 -0
  22. package/dist/cjs/helpers/chunkedQuery.native.js +73 -0
  23. package/dist/cjs/helpers/chunkedQuery.native.js.map +1 -0
  24. package/dist/cjs/helpers/getDBClient.cjs +172 -0
  25. package/dist/cjs/helpers/getDBClient.js +179 -0
  26. package/dist/cjs/helpers/getDBClient.js.map +6 -0
  27. package/dist/cjs/helpers/getDBClient.native.js +189 -0
  28. package/dist/cjs/helpers/getDBClient.native.js.map +1 -0
  29. package/dist/cjs/index.cjs +59 -0
  30. package/dist/cjs/index.js +45 -0
  31. package/dist/cjs/index.js.map +6 -0
  32. package/dist/cjs/index.native.js +64 -0
  33. package/dist/cjs/index.native.js.map +1 -0
  34. package/dist/cjs/migrate.cjs +117 -0
  35. package/dist/cjs/migrate.js +106 -0
  36. package/dist/cjs/migrate.js.map +6 -0
  37. package/dist/cjs/migrate.native.js +185 -0
  38. package/dist/cjs/migrate.native.js.map +1 -0
  39. package/dist/cjs/scripts/build-migrations.cjs +81 -0
  40. package/dist/cjs/scripts/build-migrations.js +69 -0
  41. package/dist/cjs/scripts/build-migrations.js.map +6 -0
  42. package/dist/cjs/scripts/build-migrations.native.js +86 -0
  43. package/dist/cjs/scripts/build-migrations.native.js.map +1 -0
  44. package/dist/cjs/scripts/drizzle-migrations-sync.cjs +111 -0
  45. package/dist/cjs/scripts/drizzle-migrations-sync.js +101 -0
  46. package/dist/cjs/scripts/drizzle-migrations-sync.js.map +6 -0
  47. package/dist/cjs/scripts/drizzle-migrations-sync.native.js +209 -0
  48. package/dist/cjs/scripts/drizzle-migrations-sync.native.js.map +1 -0
  49. package/dist/cjs/scripts/migration-add.cjs +53 -0
  50. package/dist/cjs/scripts/migration-add.js +40 -0
  51. package/dist/cjs/scripts/migration-add.js.map +6 -0
  52. package/dist/cjs/scripts/migration-add.native.js +72 -0
  53. package/dist/cjs/scripts/migration-add.native.js.map +1 -0
  54. package/dist/cjs/scripts/pg_dump.cjs +49 -0
  55. package/dist/cjs/scripts/pg_dump.js +36 -0
  56. package/dist/cjs/scripts/pg_dump.js.map +6 -0
  57. package/dist/cjs/scripts/pg_dump.native.js +55 -0
  58. package/dist/cjs/scripts/pg_dump.native.js.map +1 -0
  59. package/dist/cjs/scripts/psql.cjs +50 -0
  60. package/dist/cjs/scripts/psql.js +37 -0
  61. package/dist/cjs/scripts/psql.js.map +6 -0
  62. package/dist/cjs/scripts/psql.native.js +56 -0
  63. package/dist/cjs/scripts/psql.native.js.map +1 -0
  64. package/dist/cjs/sql.cjs +40 -0
  65. package/dist/cjs/sql.js +35 -0
  66. package/dist/cjs/sql.js.map +6 -0
  67. package/dist/cjs/sql.native.js +49 -0
  68. package/dist/cjs/sql.native.js.map +1 -0
  69. package/dist/esm/build.js +5 -0
  70. package/dist/esm/build.js.map +6 -0
  71. package/dist/esm/build.mjs +3 -0
  72. package/dist/esm/build.mjs.map +1 -0
  73. package/dist/esm/build.native.js +3 -0
  74. package/dist/esm/build.native.js.map +1 -0
  75. package/dist/esm/cli.js +134 -0
  76. package/dist/esm/cli.js.map +6 -0
  77. package/dist/esm/cli.mjs +157 -0
  78. package/dist/esm/cli.mjs.map +1 -0
  79. package/dist/esm/cli.native.js +162 -0
  80. package/dist/esm/cli.native.js.map +1 -0
  81. package/dist/esm/createServerHelpers.js +13 -0
  82. package/dist/esm/createServerHelpers.js.map +6 -0
  83. package/dist/esm/createServerHelpers.mjs +14 -0
  84. package/dist/esm/createServerHelpers.mjs.map +1 -0
  85. package/dist/esm/createServerHelpers.native.js +17 -0
  86. package/dist/esm/createServerHelpers.native.js.map +1 -0
  87. package/dist/esm/helpers/chunkedQuery.js +35 -0
  88. package/dist/esm/helpers/chunkedQuery.js.map +6 -0
  89. package/dist/esm/helpers/chunkedQuery.mjs +36 -0
  90. package/dist/esm/helpers/chunkedQuery.mjs.map +1 -0
  91. package/dist/esm/helpers/chunkedQuery.native.js +46 -0
  92. package/dist/esm/helpers/chunkedQuery.native.js.map +1 -0
  93. package/dist/esm/helpers/getDBClient.js +155 -0
  94. package/dist/esm/helpers/getDBClient.js.map +6 -0
  95. package/dist/esm/helpers/getDBClient.mjs +136 -0
  96. package/dist/esm/helpers/getDBClient.mjs.map +1 -0
  97. package/dist/esm/helpers/getDBClient.native.js +150 -0
  98. package/dist/esm/helpers/getDBClient.native.js.map +1 -0
  99. package/dist/esm/index.js +29 -0
  100. package/dist/esm/index.js.map +6 -0
  101. package/dist/esm/index.mjs +18 -0
  102. package/dist/esm/index.mjs.map +1 -0
  103. package/dist/esm/index.native.js +20 -0
  104. package/dist/esm/index.native.js.map +1 -0
  105. package/dist/esm/migrate.js +91 -0
  106. package/dist/esm/migrate.js.map +6 -0
  107. package/dist/esm/migrate.mjs +94 -0
  108. package/dist/esm/migrate.mjs.map +1 -0
  109. package/dist/esm/migrate.native.js +159 -0
  110. package/dist/esm/migrate.native.js.map +1 -0
  111. package/dist/esm/scripts/build-migrations.js +46 -0
  112. package/dist/esm/scripts/build-migrations.js.map +6 -0
  113. package/dist/esm/scripts/build-migrations.mjs +47 -0
  114. package/dist/esm/scripts/build-migrations.mjs.map +1 -0
  115. package/dist/esm/scripts/build-migrations.native.js +49 -0
  116. package/dist/esm/scripts/build-migrations.native.js.map +1 -0
  117. package/dist/esm/scripts/drizzle-migrations-sync.js +87 -0
  118. package/dist/esm/scripts/drizzle-migrations-sync.js.map +6 -0
  119. package/dist/esm/scripts/drizzle-migrations-sync.mjs +88 -0
  120. package/dist/esm/scripts/drizzle-migrations-sync.mjs.map +1 -0
  121. package/dist/esm/scripts/drizzle-migrations-sync.native.js +183 -0
  122. package/dist/esm/scripts/drizzle-migrations-sync.native.js.map +1 -0
  123. package/dist/esm/scripts/migration-add.js +25 -0
  124. package/dist/esm/scripts/migration-add.js.map +6 -0
  125. package/dist/esm/scripts/migration-add.mjs +30 -0
  126. package/dist/esm/scripts/migration-add.mjs.map +1 -0
  127. package/dist/esm/scripts/migration-add.native.js +46 -0
  128. package/dist/esm/scripts/migration-add.native.js.map +1 -0
  129. package/dist/esm/scripts/pg_dump.js +20 -0
  130. package/dist/esm/scripts/pg_dump.js.map +6 -0
  131. package/dist/esm/scripts/pg_dump.mjs +26 -0
  132. package/dist/esm/scripts/pg_dump.mjs.map +1 -0
  133. package/dist/esm/scripts/pg_dump.native.js +29 -0
  134. package/dist/esm/scripts/pg_dump.native.js.map +1 -0
  135. package/dist/esm/scripts/psql.js +21 -0
  136. package/dist/esm/scripts/psql.js.map +6 -0
  137. package/dist/esm/scripts/psql.mjs +27 -0
  138. package/dist/esm/scripts/psql.mjs.map +1 -0
  139. package/dist/esm/scripts/psql.native.js +30 -0
  140. package/dist/esm/scripts/psql.native.js.map +1 -0
  141. package/dist/esm/sql.js +19 -0
  142. package/dist/esm/sql.js.map +6 -0
  143. package/dist/esm/sql.mjs +15 -0
  144. package/dist/esm/sql.mjs.map +1 -0
  145. package/dist/esm/sql.native.js +21 -0
  146. package/dist/esm/sql.native.js.map +1 -0
  147. package/package.json +67 -0
  148. package/src/build.ts +2 -0
  149. package/src/cli.ts +153 -0
  150. package/src/createServerHelpers.ts +20 -0
  151. package/src/helpers/chunkedQuery.ts +91 -0
  152. package/src/helpers/getDBClient.ts +264 -0
  153. package/src/index.ts +36 -0
  154. package/src/migrate.ts +192 -0
  155. package/src/scripts/build-migrations.ts +66 -0
  156. package/src/scripts/drizzle-migrations-sync.ts +179 -0
  157. package/src/scripts/migration-add.ts +54 -0
  158. package/src/scripts/pg_dump.ts +46 -0
  159. package/src/scripts/psql.ts +51 -0
  160. package/src/sql.ts +36 -0
  161. package/types/build.d.ts +2 -0
  162. package/types/build.d.ts.map +1 -0
  163. package/types/cli.d.ts +3 -0
  164. package/types/cli.d.ts.map +1 -0
  165. package/types/createServerHelpers.d.ts +9 -0
  166. package/types/createServerHelpers.d.ts.map +1 -0
  167. package/types/helpers/chunkedQuery.d.ts +17 -0
  168. package/types/helpers/chunkedQuery.d.ts.map +1 -0
  169. package/types/helpers/getDBClient.d.ts +11 -0
  170. package/types/helpers/getDBClient.d.ts.map +1 -0
  171. package/types/index.d.ts +10 -0
  172. package/types/index.d.ts.map +1 -0
  173. package/types/migrate.d.ts +25 -0
  174. package/types/migrate.d.ts.map +1 -0
  175. package/types/scripts/build-migrations.d.ts +8 -0
  176. package/types/scripts/build-migrations.d.ts.map +1 -0
  177. package/types/scripts/drizzle-migrations-sync.d.ts +11 -0
  178. package/types/scripts/drizzle-migrations-sync.d.ts.map +1 -0
  179. package/types/scripts/migration-add.d.ts +6 -0
  180. package/types/scripts/migration-add.d.ts.map +1 -0
  181. package/types/scripts/pg_dump.d.ts +11 -0
  182. package/types/scripts/pg_dump.d.ts.map +1 -0
  183. package/types/scripts/psql.d.ts +11 -0
  184. package/types/scripts/psql.d.ts.map +1 -0
  185. package/types/sql.d.ts +9 -0
  186. package/types/sql.d.ts.map +1 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/migrate.ts"],
4
+ "mappings": "AAUA,SAAS,gBAAgB;AAEzB,SAAS,mBAAmB;AAkB5B,MAAM,eAAe,CAAC,EACpB,QAAQ,IAAI,4BACZ,QAAQ,IAAI,0BACZ,QAAQ,IAAI,sBACZ,QAAQ,IAAI;AAGd,eAAsB,QAAQ,SAAyB;AACrD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,kBAAkB,CAAC;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,UAAQ,KAAK,qBAAqB,SAAS,qBAAqB,MAAM,KAAK,EAAE,EAAE;AAE/E,QAAM,SAAS,MAAM,YAAY,EAAE,iBAAiB,CAAC,GAE/C,QAAQ,OAAO,SAAiB;AACpC,UAAM,SAAS,CAAC,EACd,MAAM,OAAO,MAAM;AAAA,qDAC4B,IAAI;AAAA,OAClD,GACD,KAAK;AAEP,mBAAQ,KAAK,SAAS,GAAG,IAAI,eAAe,YAAY,IAAI,KAAK,GAE1D;AAAA,EACT;AAGA,MAAI,SAAS,UAAU;AACrB,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,eAAe;AAGjC,UAAM,cAAc,CAAC,SAAS,SAAS,EAAE,GAAG,SAAS,YAAY,EAAE,CAAC,EAAE,OAAO,OAAO;AAEpF,eAAW,QAAQ;AACjB,MAAM,MAAM,MAAM,IAAI,KACpB,MAAM,OAAO,MAAM,mBAAmB,IAAI,GAAG;AAAA,EAGnD;AAGA,aAAW,SAAS,iBAAiB;AACnC,UAAM,OAAO,SAAS,KAAK;AAC3B,IAAM,MAAM,MAAM,IAAI,KACpB,MAAM,OAAO,MAAM,mBAAmB,IAAI,GAAG;AAAA,EAEjD;AAEA,MAAI;AACF,UAAM,OAAO,MAAM,OAAO,GAC1B,MAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMlB;AAED,UAAM,oBAAoB,MAAM,OAAO,MAAM,6BAA6B,GACpE,wBAAwB,IAAI,IAAI,kBAAkB,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAG7E,qBAAqB,OAAO,QAAQ,cAAc,EACrD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,EACrC,IAAI,CAAC,CAAC,MAAM,GAAG,OAAO;AAAA,MACrB,MAAM,SAAS,IAAI,EAAE,QAAQ,OAAO,EAAE;AAAA,MACtC;AAAA,IACF,EAAE,EACD,OAAO,CAAC,EAAE,KAAK,MAAM,SAAS,KAAK,IAAI,CAAC;AAE3C,YAAQ,KAAK,SAAS,mBAAmB,MAAM,wBAAwB;AAoBvE,UAAM,aAAa,CAAC,GAjBc,MAAM,QAAQ;AAAA,MAC9C,mBAAmB,IAAI,OAAO,EAAE,MAAM,IAAI,MAAM;AAC9C,YAAI,sBAAsB,IAAI,IAAI;AAChC,yBAAQ,KAAK,yCAAyC,IAAI,EAAE,GACrD;AAET,YAAI;AAEF,iBAAO,EAAE,GADU,MAAM,IAAI,GACN,KAAK;AAAA,QAC9B,SAAS,OAAO;AACd,wBAAQ,MAAM,uCAAuC,IAAI,KAAK,KAAK,GAC7D;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH,EAAE,KAAK,CAACA,gBAAeA,YAAW,OAAO,OAAO,CAAgB,CAG7B,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAEhF,QAAI,CAAC,WAAW;AACd,cAAQ,KAAK,yBAAyB,GACtC,MAAM,OAAO,MAAM,QAAQ;AAAA,SACtB;AACL,iBAAW,aAAa;AAEtB,gBAAQ,KAAK,cAAc,UAAU,IAAI,EAAE,GAEvC,UAAU,OAEZ,QAAQ,KAAK,uBAAuB,UAAU,IAAI,EAAE,GACpD,MAAM,UAAU,GAAG,MAAM,IAG3B,MAAM,OAAO,MAAM,6CAA6C,CAAC,UAAU,IAAI,CAAC,GAChF,QAAQ,KAAK,mCAAmC,UAAU,IAAI,EAAE;AAGlE,YAAM,OAAO,MAAM,QAAQ,GAC3B,QAAQ,KAAK,uCAAuC;AAAA,IACtD;AAAA,EACF,SAAS,GAAG;AACV,YAAQ,MAAM,mCAAmC,CAAC,GAClD,MAAM,OAAO,MAAM,UAAU,GAC7B,QAAQ,KAAK,gCAAgC;AAC7C,QAAI;AACF,aAAO,QAAQ,EAAK;AAAA,IACtB,SAAS,YAAY;AACnB,cAAQ,MAAM,8CAA8C,UAAU;AAAA,IACxE;AACA,UAAM;AAAA,EACR;AAEA,EAAI,uBACF,MAAM,oBAAoB,GAG5B,QAAQ,KAAK,gCAAgC;AAC7C,MAAI;AAEF,WAAO,QAAQ,EAAK;AAAA,EACtB,SAAS,KAAK;AACZ,YAAQ,MAAM,6DAA6D,GAAG;AAC9E,QAAI;AACF,aAAO,QAAQ,EAAI;AAAA,IACrB,SAAS,YAAY;AACnB,cAAQ,MAAM,gCAAgC,UAAU;AAAA,IAC1D;AAAA,EACF;AAEA,UAAQ,KAAK,0BAAmB,GAEhC,YAAY;AACd;AAEA,SAAS,cAAc;AACrB,EAAI,OAAO,UAAY,OAEnB,gBACJ,QAAQ,KAAK,CAAC;AAChB;",
5
+ "names": ["migrations"]
6
+ }
@@ -0,0 +1,94 @@
1
+ import { basename } from "node:path";
2
+ import { getDBClient } from "./helpers/getDBClient.mjs";
3
+ const isServerless = !!(process.env.AWS_LAMBDA_FUNCTION_NAME || process.env.AWS_LAMBDA_RUNTIME_API || process.env.LAMBDA_RUNTIME_DIR || process.env.IS_SERVERLESS);
4
+ async function migrate(options) {
5
+ const {
6
+ connectionString,
7
+ migrationsGlob,
8
+ createDatabases = [],
9
+ onMigrationComplete,
10
+ gitSha,
11
+ cvrDb,
12
+ changeDb
13
+ } = options;
14
+ console.info(`Running migrations${gitSha ? ` for git version: ${gitSha}` : ""}`);
15
+ const client = await getDBClient({
16
+ connectionString
17
+ }),
18
+ hasDB = async name => {
19
+ const result = !!(await client.query(`
20
+ SELECT 1 FROM pg_database WHERE datname = '${name}'
21
+ `)).rows.length;
22
+ return console.info(result ? `${name} db exists` : `creating ${name} db`), result;
23
+ };
24
+ if (cvrDb || changeDb) {
25
+ if (!cvrDb) throw new Error("Missing cvrDb");
26
+ const zeroDBNames = [basename(cvrDb || ""), basename(changeDb || "")].filter(Boolean);
27
+ for (const name of zeroDBNames) (await hasDB(name)) || (await client.query(`CREATE DATABASE ${name};`));
28
+ }
29
+ for (const dbUrl of createDatabases) {
30
+ const name = basename(dbUrl);
31
+ (await hasDB(name)) || (await client.query(`CREATE DATABASE ${name};`));
32
+ }
33
+ try {
34
+ await client.query("BEGIN"), await client.query(`
35
+ CREATE TABLE IF NOT EXISTS migrations (
36
+ id SERIAL PRIMARY KEY,
37
+ name VARCHAR(255) NOT NULL,
38
+ run_on TIMESTAMP NOT NULL DEFAULT NOW()
39
+ )
40
+ `);
41
+ const appliedMigrations = await client.query("SELECT name FROM migrations"),
42
+ appliedMigrationNames = new Set(appliedMigrations.rows.map(row => row.name)),
43
+ tsMigrationsSorted = Object.entries(migrationsGlob).sort(([a], [b]) => a.localeCompare(b)).map(([file, run]) => ({
44
+ name: basename(file).replace(".ts", ""),
45
+ run
46
+ })).filter(({
47
+ name
48
+ }) => /^[\d]+/.test(name));
49
+ console.info(`Found ${tsMigrationsSorted.length} TypeScript migrations`);
50
+ const migrations = [...(await Promise.all(tsMigrationsSorted.map(async ({
51
+ name,
52
+ run
53
+ }) => {
54
+ if (appliedMigrationNames.has(name)) return console.info(`TypeScript migration applied already: ${name}`), null;
55
+ try {
56
+ return {
57
+ ...(await run()),
58
+ name
59
+ };
60
+ } catch (error) {
61
+ throw console.error(`Failed to load TypeScript migration ${name}:`, error), error;
62
+ }
63
+ })).then(migrations2 => migrations2.filter(Boolean)))].sort((a, b) => a.name.localeCompare(b.name));
64
+ if (!migrations.length) console.info("No migrations to apply!"), await client.query("COMMIT");else {
65
+ for (const migration of migrations) console.info(`Migrating: ${migration.name}`), migration.up && (console.info(`Applying migration: ${migration.name}`), await migration.up(client)), await client.query("INSERT INTO migrations (name) VALUES ($1)", [migration.name]), console.info(`Successfully applied migration: ${migration.name}`);
66
+ await client.query("COMMIT"), console.info("Successfully committed all migrations");
67
+ }
68
+ } catch (e) {
69
+ console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK"), console.info("Releasing client connection...");
70
+ try {
71
+ client.release(!1);
72
+ } catch (releaseErr) {
73
+ console.error("Error releasing connection after rollback:", releaseErr);
74
+ }
75
+ throw e;
76
+ }
77
+ onMigrationComplete && (await onMigrationComplete()), console.info("Releasing client connection...");
78
+ try {
79
+ client.release(!1);
80
+ } catch (err) {
81
+ console.error("Error releasing connection gracefully, trying to destroy:", err);
82
+ try {
83
+ client.release(!0);
84
+ } catch (destroyErr) {
85
+ console.error("Error destroying connection:", destroyErr);
86
+ }
87
+ }
88
+ console.info("\u{1F64C} Done migrating"), exitProcess();
89
+ }
90
+ function exitProcess() {
91
+ typeof process > "u" || isServerless || process.exit(0);
92
+ }
93
+ export { migrate };
94
+ //# sourceMappingURL=migrate.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["basename","getDBClient","isServerless","process","env","AWS_LAMBDA_FUNCTION_NAME","AWS_LAMBDA_RUNTIME_API","LAMBDA_RUNTIME_DIR","IS_SERVERLESS","migrate","options","connectionString","migrationsGlob","createDatabases","onMigrationComplete","gitSha","cvrDb","changeDb","console","info","client","hasDB","name","result","query","rows","length","Error","zeroDBNames","filter","Boolean","dbUrl","appliedMigrations","appliedMigrationNames","Set","map","row","tsMigrationsSorted","Object","entries","sort","a","b","localeCompare","file","run","replace","test","migrations","Promise","all","has","error","then","migrations2","migration","up","e","release","releaseErr","err","destroyErr","exitProcess","exit"],"sources":["../../src/migrate.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,159 @@
1
+ import { basename } from "path";
2
+ import { getDBClient } from "./helpers/getDBClient.native.js";
3
+ var isServerless = !!(process.env.AWS_LAMBDA_FUNCTION_NAME || process.env.AWS_LAMBDA_RUNTIME_API || process.env.LAMBDA_RUNTIME_DIR || process.env.IS_SERVERLESS);
4
+ async function migrate(options) {
5
+ var {
6
+ connectionString,
7
+ migrationsGlob,
8
+ createDatabases = [],
9
+ onMigrationComplete,
10
+ gitSha,
11
+ cvrDb,
12
+ changeDb
13
+ } = options;
14
+ console.info(`Running migrations${gitSha ? ` for git version: ${gitSha}` : ""}`);
15
+ var client = await getDBClient({
16
+ connectionString
17
+ }),
18
+ hasDB = async function (name2) {
19
+ var result = !!(await client.query(`
20
+ SELECT 1 FROM pg_database WHERE datname = '${name2}'
21
+ `)).rows.length;
22
+ return console.info(result ? `${name2} db exists` : `creating ${name2} db`), result;
23
+ };
24
+ if (cvrDb || changeDb) {
25
+ if (!cvrDb) throw new Error("Missing cvrDb");
26
+ var zeroDBNames = [basename(cvrDb || ""), basename(changeDb || "")].filter(Boolean),
27
+ _iteratorNormalCompletion = !0,
28
+ _didIteratorError = !1,
29
+ _iteratorError = void 0;
30
+ try {
31
+ for (var _iterator = zeroDBNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
32
+ var name = _step.value;
33
+ (await hasDB(name)) || (await client.query(`CREATE DATABASE ${name};`));
34
+ }
35
+ } catch (err) {
36
+ _didIteratorError = !0, _iteratorError = err;
37
+ } finally {
38
+ try {
39
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
40
+ } finally {
41
+ if (_didIteratorError) throw _iteratorError;
42
+ }
43
+ }
44
+ }
45
+ var _iteratorNormalCompletion1 = !0,
46
+ _didIteratorError1 = !1,
47
+ _iteratorError1 = void 0;
48
+ try {
49
+ for (var _iterator1 = createDatabases[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) {
50
+ var dbUrl = _step1.value,
51
+ name1 = basename(dbUrl);
52
+ (await hasDB(name1)) || (await client.query(`CREATE DATABASE ${name1};`));
53
+ }
54
+ } catch (err) {
55
+ _didIteratorError1 = !0, _iteratorError1 = err;
56
+ } finally {
57
+ try {
58
+ !_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
59
+ } finally {
60
+ if (_didIteratorError1) throw _iteratorError1;
61
+ }
62
+ }
63
+ try {
64
+ await client.query("BEGIN"), await client.query(`
65
+ CREATE TABLE IF NOT EXISTS migrations (
66
+ id SERIAL PRIMARY KEY,
67
+ name VARCHAR(255) NOT NULL,
68
+ run_on TIMESTAMP NOT NULL DEFAULT NOW()
69
+ )
70
+ `);
71
+ var appliedMigrations = await client.query("SELECT name FROM migrations"),
72
+ appliedMigrationNames = new Set(appliedMigrations.rows.map(function (row) {
73
+ return row.name;
74
+ })),
75
+ tsMigrationsSorted = Object.entries(migrationsGlob).sort(function (param, param1) {
76
+ var [a] = param,
77
+ [b] = param1;
78
+ return a.localeCompare(b);
79
+ }).map(function (param) {
80
+ var [file, run] = param;
81
+ return {
82
+ name: basename(file).replace(".ts", ""),
83
+ run
84
+ };
85
+ }).filter(function (param) {
86
+ var {
87
+ name: name2
88
+ } = param;
89
+ return /^[\d]+/.test(name2);
90
+ });
91
+ console.info(`Found ${tsMigrationsSorted.length} TypeScript migrations`);
92
+ var tsMigrations = await Promise.all(tsMigrationsSorted.map(async function (param) {
93
+ var {
94
+ name: name2,
95
+ run
96
+ } = param;
97
+ if (appliedMigrationNames.has(name2)) return console.info(`TypeScript migration applied already: ${name2}`), null;
98
+ try {
99
+ var migration2 = await run();
100
+ return {
101
+ ...migration2,
102
+ name: name2
103
+ };
104
+ } catch (error) {
105
+ throw console.error(`Failed to load TypeScript migration ${name2}:`, error), error;
106
+ }
107
+ })).then(function (migrations2) {
108
+ return migrations2.filter(Boolean);
109
+ }),
110
+ migrations = [...tsMigrations].sort(function (a, b) {
111
+ return a.name.localeCompare(b.name);
112
+ });
113
+ if (!migrations.length) console.info("No migrations to apply!"), await client.query("COMMIT");else {
114
+ var _iteratorNormalCompletion2 = !0,
115
+ _didIteratorError2 = !1,
116
+ _iteratorError2 = void 0;
117
+ try {
118
+ for (var _iterator2 = migrations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = !0) {
119
+ var migration = _step2.value;
120
+ console.info(`Migrating: ${migration.name}`), migration.up && (console.info(`Applying migration: ${migration.name}`), await migration.up(client)), await client.query("INSERT INTO migrations (name) VALUES ($1)", [migration.name]), console.info(`Successfully applied migration: ${migration.name}`);
121
+ }
122
+ } catch (err) {
123
+ _didIteratorError2 = !0, _iteratorError2 = err;
124
+ } finally {
125
+ try {
126
+ !_iteratorNormalCompletion2 && _iterator2.return != null && _iterator2.return();
127
+ } finally {
128
+ if (_didIteratorError2) throw _iteratorError2;
129
+ }
130
+ }
131
+ await client.query("COMMIT"), console.info("Successfully committed all migrations");
132
+ }
133
+ } catch (e) {
134
+ console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK"), console.info("Releasing client connection...");
135
+ try {
136
+ client.release(!1);
137
+ } catch (releaseErr) {
138
+ console.error("Error releasing connection after rollback:", releaseErr);
139
+ }
140
+ throw e;
141
+ }
142
+ onMigrationComplete && (await onMigrationComplete()), console.info("Releasing client connection...");
143
+ try {
144
+ client.release(!1);
145
+ } catch (err) {
146
+ console.error("Error releasing connection gracefully, trying to destroy:", err);
147
+ try {
148
+ client.release(!0);
149
+ } catch (destroyErr) {
150
+ console.error("Error destroying connection:", destroyErr);
151
+ }
152
+ }
153
+ console.info("\u{1F64C} Done migrating"), exitProcess();
154
+ }
155
+ function exitProcess() {
156
+ typeof process > "u" || isServerless || process.exit(0);
157
+ }
158
+ export { migrate };
159
+ //# sourceMappingURL=migrate.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["basename","getDBClient","isServerless","process","env","AWS_LAMBDA_FUNCTION_NAME","AWS_LAMBDA_RUNTIME_API","LAMBDA_RUNTIME_DIR","IS_SERVERLESS","migrate","options","connectionString","migrationsGlob","createDatabases","onMigrationComplete","gitSha","cvrDb","changeDb","console","info","client","hasDB","name2","result","query","rows","length","Error","zeroDBNames","filter","Boolean","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","name","value","err","return","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","_step1","dbUrl","name1","appliedMigrations","appliedMigrationNames","Set","map","row","tsMigrationsSorted","Object","entries","sort","param","param1","a","b","localeCompare","file","run","replace","test","tsMigrations","Promise","all","has","migration2"],"sources":["../../src/migrate.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ import { execSync } from "node:child_process";
2
+ import path from "node:path";
3
+ async function buildMigrations(options) {
4
+ const {
5
+ migrationsDir,
6
+ outFile = "migrate-dist.js",
7
+ target = "node22",
8
+ aliases = {}
9
+ } = options, { build } = await import("vite"), migrateFile = path.join(migrationsDir, "..", "migrate.ts"), result = await build({
10
+ configFile: !1,
11
+ resolve: {
12
+ alias: aliases
13
+ },
14
+ define: {
15
+ "process.env.GIT_SHA": JSON.stringify(
16
+ execSync("git rev-parse HEAD").toString().trim()
17
+ )
18
+ },
19
+ build: {
20
+ outDir: path.dirname(migrateFile),
21
+ target,
22
+ minify: !1,
23
+ emptyOutDir: !1,
24
+ copyPublicDir: !1,
25
+ lib: {
26
+ name: "migrate",
27
+ formats: ["es"],
28
+ entry: migrateFile
29
+ },
30
+ rollupOptions: {
31
+ external: (id) => id.startsWith("node:") || id === "pg" ? !0 : id.startsWith("/") ? !1 : !id.startsWith(".") && !id.startsWith("/"),
32
+ output: {
33
+ format: "es",
34
+ inlineDynamicImports: !0,
35
+ exports: "named",
36
+ entryFileNames: outFile
37
+ }
38
+ }
39
+ }
40
+ });
41
+ return console.info(`\u2713 Built migration bundle: ${outFile}`), result;
42
+ }
43
+ export {
44
+ buildMigrations
45
+ };
46
+ //# sourceMappingURL=build-migrations.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/scripts/build-migrations.ts"],
4
+ "mappings": "AAAA,SAAS,gBAAgB;AACzB,OAAO,UAAU;AASjB,eAAsB,gBAAgB,SAAiC;AACrE,QAAM;AAAA,IACJ;AAAA,IACA,UAAU;AAAA,IACV,SAAS;AAAA,IACT,UAAU,CAAC;AAAA,EACb,IAAI,SAEE,EAAE,MAAM,IAAI,MAAM,OAAO,MAAM,GAE/B,cAAc,KAAK,KAAK,eAAe,MAAM,YAAY,GAEzD,SAAS,MAAM,MAAM;AAAA,IACzB,YAAY;AAAA,IACZ,SAAS;AAAA,MACP,OAAO;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACN,uBAAuB,KAAK;AAAA,QAC1B,SAAS,oBAAoB,EAAE,SAAS,EAAE,KAAK;AAAA,MACjD;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,QAAQ,KAAK,QAAQ,WAAW;AAAA,MAChC;AAAA,MACA,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,eAAe;AAAA,MACf,KAAK;AAAA,QACH,MAAM;AAAA,QACN,SAAS,CAAC,IAAI;AAAA,QACd,OAAO;AAAA,MACT;AAAA,MACA,eAAe;AAAA,QACb,UAAU,CAAC,OAEL,GAAG,WAAW,OAAO,KAAK,OAAO,OAAa,KAE9C,GAAG,WAAW,GAAG,IAAU,KAE3B,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,GAAG,WAAW,GAAG;AAAA,QAG/C,QAAQ;AAAA,UACN,QAAQ;AAAA,UACR,sBAAsB;AAAA,UACtB,SAAS;AAAA,UACT,gBAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,iBAAQ,KAAK,kCAA6B,OAAO,EAAE,GAC5C;AACT;",
5
+ "names": []
6
+ }
@@ -0,0 +1,47 @@
1
+ import { execSync } from "node:child_process";
2
+ import path from "node:path";
3
+ async function buildMigrations(options) {
4
+ const {
5
+ migrationsDir,
6
+ outFile = "migrate-dist.js",
7
+ target = "node22",
8
+ aliases = {}
9
+ } = options,
10
+ {
11
+ build
12
+ } = await import("vite"),
13
+ migrateFile = path.join(migrationsDir, "..", "migrate.ts"),
14
+ result = await build({
15
+ configFile: !1,
16
+ resolve: {
17
+ alias: aliases
18
+ },
19
+ define: {
20
+ "process.env.GIT_SHA": JSON.stringify(execSync("git rev-parse HEAD").toString().trim())
21
+ },
22
+ build: {
23
+ outDir: path.dirname(migrateFile),
24
+ target,
25
+ minify: !1,
26
+ emptyOutDir: !1,
27
+ copyPublicDir: !1,
28
+ lib: {
29
+ name: "migrate",
30
+ formats: ["es"],
31
+ entry: migrateFile
32
+ },
33
+ rollupOptions: {
34
+ external: id => id.startsWith("node:") || id === "pg" ? !0 : id.startsWith("/") ? !1 : !id.startsWith(".") && !id.startsWith("/"),
35
+ output: {
36
+ format: "es",
37
+ inlineDynamicImports: !0,
38
+ exports: "named",
39
+ entryFileNames: outFile
40
+ }
41
+ }
42
+ }
43
+ });
44
+ return console.info(`\u2713 Built migration bundle: ${outFile}`), result;
45
+ }
46
+ export { buildMigrations };
47
+ //# sourceMappingURL=build-migrations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["execSync","path","buildMigrations","options","migrationsDir","outFile","target","aliases","build","migrateFile","join","result","configFile","resolve","alias","define","JSON","stringify","toString","trim","outDir","dirname","minify","emptyOutDir","copyPublicDir","lib","name","formats","entry","rollupOptions","external","id","startsWith","output","format","inlineDynamicImports","exports","entryFileNames","console","info"],"sources":["../../../src/scripts/build-migrations.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,QAAgB;AACzB,OAAOC,IAAA,MAAU;AASjB,eAAsBC,gBAAgBC,OAAA,EAAiC;EACrE,MAAM;MACJC,aAAA;MACAC,OAAA,GAAU;MACVC,MAAA,GAAS;MACTC,OAAA,GAAU,CAAC;IACb,IAAIJ,OAAA;IAEE;MAAEK;IAAM,IAAI,MAAM,OAAO,MAAM;IAE/BC,WAAA,GAAcR,IAAA,CAAKS,IAAA,CAAKN,aAAA,EAAe,MAAM,YAAY;IAEzDO,MAAA,GAAS,MAAMH,KAAA,CAAM;MACzBI,UAAA,EAAY;MACZC,OAAA,EAAS;QACPC,KAAA,EAAOP;MACT;MACAQ,MAAA,EAAQ;QACN,uBAAuBC,IAAA,CAAKC,SAAA,CAC1BjB,QAAA,CAAS,oBAAoB,EAAEkB,QAAA,CAAS,EAAEC,IAAA,CAAK,CACjD;MACF;MACAX,KAAA,EAAO;QACLY,MAAA,EAAQnB,IAAA,CAAKoB,OAAA,CAAQZ,WAAW;QAChCH,MAAA;QACAgB,MAAA,EAAQ;QACRC,WAAA,EAAa;QACbC,aAAA,EAAe;QACfC,GAAA,EAAK;UACHC,IAAA,EAAM;UACNC,OAAA,EAAS,CAAC,IAAI;UACdC,KAAA,EAAOnB;QACT;QACAoB,aAAA,EAAe;UACbC,QAAA,EAAWC,EAAA,IAELA,EAAA,CAAGC,UAAA,CAAW,OAAO,KAAKD,EAAA,KAAO,OAAa,KAE9CA,EAAA,CAAGC,UAAA,CAAW,GAAG,IAAU,KAE3B,CAACD,EAAA,CAAGC,UAAA,CAAW,GAAG,KAAK,CAACD,EAAA,CAAGC,UAAA,CAAW,GAAG;UAG/CC,MAAA,EAAQ;YACNC,MAAA,EAAQ;YACRC,oBAAA,EAAsB;YACtBC,OAAA,EAAS;YACTC,cAAA,EAAgBhC;UAClB;QACF;MACF;IACF,CAAC;EAED,OAAAiC,OAAA,CAAQC,IAAA,CAAK,kCAA6BlC,OAAO,EAAE,GAC5CM,MAAA;AACT","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ import { execSync } from "child_process";
2
+ import path from "path";
3
+ async function buildMigrations(options) {
4
+ var {
5
+ migrationsDir,
6
+ outFile = "migrate-dist.js",
7
+ target = "node22",
8
+ aliases = {}
9
+ } = options,
10
+ {
11
+ build
12
+ } = await import("vite"),
13
+ migrateFile = path.join(migrationsDir, "..", "migrate.ts"),
14
+ result = await build({
15
+ configFile: !1,
16
+ resolve: {
17
+ alias: aliases
18
+ },
19
+ define: {
20
+ "process.env.GIT_SHA": JSON.stringify(execSync("git rev-parse HEAD").toString().trim())
21
+ },
22
+ build: {
23
+ outDir: path.dirname(migrateFile),
24
+ target,
25
+ minify: !1,
26
+ emptyOutDir: !1,
27
+ copyPublicDir: !1,
28
+ lib: {
29
+ name: "migrate",
30
+ formats: ["es"],
31
+ entry: migrateFile
32
+ },
33
+ rollupOptions: {
34
+ external: function (id) {
35
+ return id.startsWith("node:") || id === "pg" ? !0 : id.startsWith("/") ? !1 : !id.startsWith(".") && !id.startsWith("/");
36
+ },
37
+ output: {
38
+ format: "es",
39
+ inlineDynamicImports: !0,
40
+ exports: "named",
41
+ entryFileNames: outFile
42
+ }
43
+ }
44
+ }
45
+ });
46
+ return console.info(`\u2713 Built migration bundle: ${outFile}`), result;
47
+ }
48
+ export { buildMigrations };
49
+ //# sourceMappingURL=build-migrations.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["execSync","path","buildMigrations","options","migrationsDir","outFile","target","aliases","build","migrateFile","join","result","configFile","resolve","alias","define","JSON","stringify","toString","trim","outDir","dirname","minify","emptyOutDir","copyPublicDir","lib","name","formats","entry","rollupOptions","external","id","startsWith","output","format","inlineDynamicImports","exports","entryFileNames","console","info"],"sources":["../../../src/scripts/build-migrations.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,QAAgB;AACzB,OAAOC,IAAA,MAAU;AASjB,eAAsBC,gBAAgBC,OAAA,EAAiC;EACrE;MAAMC,aAAA;MAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;IAAA,IAAAJ,OAAA;IAAA;MAAAK;IAAA;IAAAC,WAAA,GAAAR,IAAA,CAAAS,IAAA,CAAAN,aAAA;IAAAO,MAAA,SAAAH,KAAA;MACJI,UAAA;MACAC,OAAA;QACAC,KAAA,EAASP;MACT;MACFQ,MAAI;QAOF,qBAAY,EAAAC,IAAA,CAAAC,SAAA,CAAAjB,QAAA,uBAAAkB,QAAA,GAAAC,IAAA;MACZ;MAASX,KACP;QACFY,MAAA,EAAAnB,IAAA,CAAAoB,OAAA,CAAAZ,WAAA;QACAH,MAAQ;QACNgB,MAAA;QAA4BC,WACjB;QACXC,aAAA;QACFC,GAAA;UACAC,IAAO;UACLC,OAAQ,GACR,KACA;UACAC,KAAA,EAAAnB;QACA;QACAoB,aAAK;UACHC,QAAM,WAAAA,CAAAC,EAAA;YACN,OAASA,EAAC,CAAAC,UAAI,aAAAD,EAAA,iBAAAA,EAAA,CAAAC,UAAA,cAAAD,EAAA,CAAAC,UAAA,UAAAD,EAAA,CAAAC,UAAA;UACd;UACFC,MAAA;YACAC,MAAA,MAAe;YACbC,oBAES;YAOTC,OAAQ;YACNC,cAAQ,EAAAhC;UAAA;QACc;MACb;IACO;EAClB,OACFiC,OAAA,CAAAC,IAAA,mCAAAlC,OAAA,KAAAM,MAAA;AAAA;AACF,SAGFT,eAAQ","ignoreList":[]}
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env bun
2
+ import { readdir, writeFile, stat, rename } from "node:fs/promises";
3
+ import { join, basename, extname } from "node:path";
4
+ import { existsSync } from "node:fs";
5
+ function getMigrationNumber(filename) {
6
+ const match = filename.match(/^(\d+)/);
7
+ return match && match[1] ? Number.parseInt(match[1], 10) : null;
8
+ }
9
+ async function getHighestMigrationNumber(dir) {
10
+ const files = await readdir(dir);
11
+ let highest = -1;
12
+ for (const file of files) {
13
+ const num = getMigrationNumber(file);
14
+ num !== null && num > highest && (highest = num);
15
+ }
16
+ return highest;
17
+ }
18
+ async function renameNewDrizzleMigrations(migrationsPath, sqlFiles) {
19
+ const drizzlePattern = /^(\d{4})_[a-z]+_[a-z_]+\.sql$/, files = await readdir(migrationsPath), highestNumber = await getHighestMigrationNumber(migrationsPath), newDrizzleSqlFiles = sqlFiles.filter((file) => {
20
+ if (!drizzlePattern.test(file)) return !1;
21
+ const tsFile = file.replace(".sql", ".ts");
22
+ return !files.includes(tsFile);
23
+ });
24
+ if (newDrizzleSqlFiles.length === 0) return sqlFiles;
25
+ const migrationGroups = /* @__PURE__ */ new Map();
26
+ for (const file of newDrizzleSqlFiles) {
27
+ const num = file.substring(0, 4);
28
+ migrationGroups.has(num) || migrationGroups.set(num, []), migrationGroups.get(num).push(file);
29
+ }
30
+ let nextNumber = highestNumber + 1;
31
+ const renamedFiles = [];
32
+ for (const [originalNum, groupFiles] of migrationGroups)
33
+ if (Number.parseInt(originalNum, 10) <= highestNumber) {
34
+ const newNumStr = nextNumber.toString().padStart(4, "0");
35
+ console.info(`Renumbering new drizzle migration ${originalNum} to ${newNumStr}`);
36
+ for (const file of groupFiles) {
37
+ const newName = file.replace(/^\d{4}/, newNumStr), oldPath = join(migrationsPath, file), newPath = join(migrationsPath, newName);
38
+ await rename(oldPath, newPath), console.info(` Renamed ${file} -> ${newName}`), renamedFiles.push(newName);
39
+ }
40
+ const metaDir = join(migrationsPath, "meta");
41
+ if (existsSync(metaDir)) {
42
+ const metaFiles = await readdir(metaDir), snapshotFile = `${originalNum}_snapshot.json`;
43
+ if (metaFiles.includes(snapshotFile)) {
44
+ const newSnapshotName = `${newNumStr}_snapshot.json`;
45
+ await rename(join(metaDir, snapshotFile), join(metaDir, newSnapshotName)), console.info(` Renamed meta/${snapshotFile} -> meta/${newSnapshotName}`);
46
+ }
47
+ }
48
+ nextNumber++;
49
+ } else
50
+ renamedFiles.push(...groupFiles);
51
+ return sqlFiles.map((file) => {
52
+ if (newDrizzleSqlFiles.indexOf(file) !== -1) {
53
+ for (const renamed of renamedFiles)
54
+ if (renamed.includes(file.substring(5)))
55
+ return renamed;
56
+ }
57
+ return file;
58
+ });
59
+ }
60
+ async function syncDrizzleMigrations(options) {
61
+ const { migrationsDir } = options;
62
+ let sqlFiles = (await readdir(migrationsDir)).filter((file) => extname(file) === ".sql");
63
+ console.info(`Found ${sqlFiles.length} SQL files to convert to migrations.`), sqlFiles = await renameNewDrizzleMigrations(migrationsDir, sqlFiles);
64
+ for (const sqlFile of sqlFiles) {
65
+ const tsFileName = `${basename(sqlFile, ".sql")}.ts`, tsFilePath = join(migrationsDir, tsFileName);
66
+ if (existsSync(tsFilePath)) {
67
+ const sqlStat = await stat(join(migrationsDir, sqlFile));
68
+ if ((await stat(tsFilePath)).mtimeMs > sqlStat.mtimeMs)
69
+ continue;
70
+ console.info(`Updating ${tsFileName} as SQL file has been modified.`);
71
+ } else
72
+ console.info(`Creating ${tsFileName}`);
73
+ const migrationContent = `import type { PoolClient } from 'pg'
74
+ import sql from './${sqlFile}?raw'
75
+
76
+ export async function up(client: PoolClient) {
77
+ await client.query(sql)
78
+ }
79
+ `;
80
+ await writeFile(tsFilePath, migrationContent), console.info(`Successfully created ${tsFileName}`);
81
+ }
82
+ console.info("Migration sync completed.");
83
+ }
84
+ export {
85
+ syncDrizzleMigrations
86
+ };
87
+ //# sourceMappingURL=drizzle-migrations-sync.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/scripts/drizzle-migrations-sync.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env bun
2
+ import { readdir, writeFile, stat, rename } from "node:fs/promises";
3
+ import { join, basename, extname } from "node:path";
4
+ import { existsSync } from "node:fs";
5
+ function getMigrationNumber(filename) {
6
+ const match = filename.match(/^(\d+)/);
7
+ return match && match[1] ? Number.parseInt(match[1], 10) : null;
8
+ }
9
+ async function getHighestMigrationNumber(dir) {
10
+ const files = await readdir(dir);
11
+ let highest = -1;
12
+ for (const file of files) {
13
+ const num = getMigrationNumber(file);
14
+ num !== null && num > highest && (highest = num);
15
+ }
16
+ return highest;
17
+ }
18
+ async function renameNewDrizzleMigrations(migrationsPath, sqlFiles) {
19
+ const drizzlePattern = /^(\d{4})_[a-z]+_[a-z_]+\.sql$/,
20
+ files = await readdir(migrationsPath),
21
+ highestNumber = await getHighestMigrationNumber(migrationsPath),
22
+ newDrizzleSqlFiles = sqlFiles.filter(file => {
23
+ if (!drizzlePattern.test(file)) return !1;
24
+ const tsFile = file.replace(".sql", ".ts");
25
+ return !files.includes(tsFile);
26
+ });
27
+ if (newDrizzleSqlFiles.length === 0) return sqlFiles;
28
+ const migrationGroups = /* @__PURE__ */new Map();
29
+ for (const file of newDrizzleSqlFiles) {
30
+ const num = file.substring(0, 4);
31
+ migrationGroups.has(num) || migrationGroups.set(num, []), migrationGroups.get(num).push(file);
32
+ }
33
+ let nextNumber = highestNumber + 1;
34
+ const renamedFiles = [];
35
+ for (const [originalNum, groupFiles] of migrationGroups) if (Number.parseInt(originalNum, 10) <= highestNumber) {
36
+ const newNumStr = nextNumber.toString().padStart(4, "0");
37
+ console.info(`Renumbering new drizzle migration ${originalNum} to ${newNumStr}`);
38
+ for (const file of groupFiles) {
39
+ const newName = file.replace(/^\d{4}/, newNumStr),
40
+ oldPath = join(migrationsPath, file),
41
+ newPath = join(migrationsPath, newName);
42
+ await rename(oldPath, newPath), console.info(` Renamed ${file} -> ${newName}`), renamedFiles.push(newName);
43
+ }
44
+ const metaDir = join(migrationsPath, "meta");
45
+ if (existsSync(metaDir)) {
46
+ const metaFiles = await readdir(metaDir),
47
+ snapshotFile = `${originalNum}_snapshot.json`;
48
+ if (metaFiles.includes(snapshotFile)) {
49
+ const newSnapshotName = `${newNumStr}_snapshot.json`;
50
+ await rename(join(metaDir, snapshotFile), join(metaDir, newSnapshotName)), console.info(` Renamed meta/${snapshotFile} -> meta/${newSnapshotName}`);
51
+ }
52
+ }
53
+ nextNumber++;
54
+ } else renamedFiles.push(...groupFiles);
55
+ return sqlFiles.map(file => {
56
+ if (newDrizzleSqlFiles.indexOf(file) !== -1) {
57
+ for (const renamed of renamedFiles) if (renamed.includes(file.substring(5))) return renamed;
58
+ }
59
+ return file;
60
+ });
61
+ }
62
+ async function syncDrizzleMigrations(options) {
63
+ const {
64
+ migrationsDir
65
+ } = options;
66
+ let sqlFiles = (await readdir(migrationsDir)).filter(file => extname(file) === ".sql");
67
+ console.info(`Found ${sqlFiles.length} SQL files to convert to migrations.`), sqlFiles = await renameNewDrizzleMigrations(migrationsDir, sqlFiles);
68
+ for (const sqlFile of sqlFiles) {
69
+ const tsFileName = `${basename(sqlFile, ".sql")}.ts`,
70
+ tsFilePath = join(migrationsDir, tsFileName);
71
+ if (existsSync(tsFilePath)) {
72
+ const sqlStat = await stat(join(migrationsDir, sqlFile));
73
+ if ((await stat(tsFilePath)).mtimeMs > sqlStat.mtimeMs) continue;
74
+ console.info(`Updating ${tsFileName} as SQL file has been modified.`);
75
+ } else console.info(`Creating ${tsFileName}`);
76
+ const migrationContent = `import type { PoolClient } from 'pg'
77
+ import sql from './${sqlFile}?raw'
78
+
79
+ export async function up(client: PoolClient) {
80
+ await client.query(sql)
81
+ }
82
+ `;
83
+ await writeFile(tsFilePath, migrationContent), console.info(`Successfully created ${tsFileName}`);
84
+ }
85
+ console.info("Migration sync completed.");
86
+ }
87
+ export { syncDrizzleMigrations };
88
+ //# sourceMappingURL=drizzle-migrations-sync.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["readdir","writeFile","stat","rename","join","basename","extname","existsSync","getMigrationNumber","filename","match","Number","parseInt","getHighestMigrationNumber","dir","files","highest","file","num","renameNewDrizzleMigrations","migrationsPath","sqlFiles","drizzlePattern","highestNumber","newDrizzleSqlFiles","filter","test","tsFile","replace","includes","length","migrationGroups","Map","substring","has","set","get","push","nextNumber","renamedFiles","originalNum","groupFiles","newNumStr","toString","padStart","console","info","newName","oldPath","newPath","metaDir","metaFiles","snapshotFile","newSnapshotName","map","indexOf","renamed","syncDrizzleMigrations","options","migrationsDir","sqlFile","tsFileName","tsFilePath","sqlStat","mtimeMs","migrationContent"],"sources":["../../../src/scripts/drizzle-migrations-sync.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}