@take-out/postgres 0.2.9 → 0.3.0

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 (82) hide show
  1. package/dist/cjs/cli.cjs +0 -0
  2. package/dist/cjs/scripts/drizzle-migrations-sync.cjs +0 -0
  3. package/dist/esm/cli.mjs +0 -0
  4. package/dist/esm/getDBClient.mjs.map +1 -1
  5. package/dist/esm/index.js +6 -14
  6. package/dist/esm/index.js.map +1 -6
  7. package/dist/esm/scripts/drizzle-migrations-sync.mjs +0 -0
  8. package/dist/esm/sql.mjs.map +1 -1
  9. package/package.json +3 -3
  10. package/src/chunkedQuery.ts +3 -3
  11. package/src/cli.ts +2 -2
  12. package/src/createDb.ts +1 -1
  13. package/src/createServerHelpers.ts +1 -1
  14. package/src/getDBClient.ts +13 -13
  15. package/src/migrate.ts +2 -2
  16. package/src/scripts/build-migrations.ts +1 -1
  17. package/src/scripts/drizzle-migrations-sync.ts +1 -1
  18. package/src/sql.ts +2 -2
  19. package/types/getDBClient.d.ts +1 -1
  20. package/types/getDBClient.d.ts.map +1 -1
  21. package/types/scripts/build-migrations.d.ts +1 -1
  22. package/types/scripts/build-migrations.d.ts.map +1 -1
  23. package/types/sql.d.ts +2 -2
  24. package/types/sql.d.ts.map +1 -1
  25. package/dist/cjs/build.js +0 -21
  26. package/dist/cjs/build.js.map +0 -6
  27. package/dist/cjs/chunkedQuery.js +0 -51
  28. package/dist/cjs/chunkedQuery.js.map +0 -6
  29. package/dist/cjs/cli.js +0 -128
  30. package/dist/cjs/cli.js.map +0 -6
  31. package/dist/cjs/createDb.js +0 -28
  32. package/dist/cjs/createDb.js.map +0 -6
  33. package/dist/cjs/createPool.js +0 -32
  34. package/dist/cjs/createPool.js.map +0 -6
  35. package/dist/cjs/createServerHelpers.js +0 -28
  36. package/dist/cjs/createServerHelpers.js.map +0 -6
  37. package/dist/cjs/getDBClient.js +0 -168
  38. package/dist/cjs/getDBClient.js.map +0 -6
  39. package/dist/cjs/index.js +0 -27
  40. package/dist/cjs/index.js.map +0 -6
  41. package/dist/cjs/migrate.js +0 -144
  42. package/dist/cjs/migrate.js.map +0 -6
  43. package/dist/cjs/scripts/build-migrations.js +0 -69
  44. package/dist/cjs/scripts/build-migrations.js.map +0 -6
  45. package/dist/cjs/scripts/drizzle-migrations-sync.js +0 -118
  46. package/dist/cjs/scripts/drizzle-migrations-sync.js.map +0 -6
  47. package/dist/cjs/scripts/migration-add.js +0 -40
  48. package/dist/cjs/scripts/migration-add.js.map +0 -6
  49. package/dist/cjs/scripts/pg_dump.js +0 -35
  50. package/dist/cjs/scripts/pg_dump.js.map +0 -6
  51. package/dist/cjs/scripts/psql.js +0 -36
  52. package/dist/cjs/scripts/psql.js.map +0 -6
  53. package/dist/cjs/sql.js +0 -35
  54. package/dist/cjs/sql.js.map +0 -6
  55. package/dist/esm/build.js +0 -5
  56. package/dist/esm/build.js.map +0 -6
  57. package/dist/esm/chunkedQuery.js +0 -35
  58. package/dist/esm/chunkedQuery.js.map +0 -6
  59. package/dist/esm/cli.js +0 -134
  60. package/dist/esm/cli.js.map +0 -6
  61. package/dist/esm/createDb.js +0 -13
  62. package/dist/esm/createDb.js.map +0 -6
  63. package/dist/esm/createPool.js +0 -8
  64. package/dist/esm/createPool.js.map +0 -6
  65. package/dist/esm/createServerHelpers.js +0 -13
  66. package/dist/esm/createServerHelpers.js.map +0 -6
  67. package/dist/esm/getDBClient.js +0 -144
  68. package/dist/esm/getDBClient.js.map +0 -6
  69. package/dist/esm/migrate.js +0 -129
  70. package/dist/esm/migrate.js.map +0 -6
  71. package/dist/esm/scripts/build-migrations.js +0 -46
  72. package/dist/esm/scripts/build-migrations.js.map +0 -6
  73. package/dist/esm/scripts/drizzle-migrations-sync.js +0 -104
  74. package/dist/esm/scripts/drizzle-migrations-sync.js.map +0 -6
  75. package/dist/esm/scripts/migration-add.js +0 -25
  76. package/dist/esm/scripts/migration-add.js.map +0 -6
  77. package/dist/esm/scripts/pg_dump.js +0 -19
  78. package/dist/esm/scripts/pg_dump.js.map +0 -6
  79. package/dist/esm/scripts/psql.js +0 -20
  80. package/dist/esm/scripts/psql.js.map +0 -6
  81. package/dist/esm/sql.js +0 -19
  82. package/dist/esm/sql.js.map +0 -6
@@ -1,129 +0,0 @@
1
- import { basename } from "node:path";
2
- import { getDBClient } from "./getDBClient";
3
- const DEFAULT_MIGRATION_TIMEOUT = 5e3, 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 withTimeout(promise, ms, name) {
5
- let timeoutId;
6
- const timeoutPromise = new Promise((_, reject) => {
7
- timeoutId = setTimeout(() => {
8
- reject(new Error(`migration "${name}" timed out after ${ms}ms`));
9
- }, ms);
10
- });
11
- try {
12
- return await Promise.race([promise, timeoutPromise]);
13
- } finally {
14
- clearTimeout(timeoutId);
15
- }
16
- }
17
- async function migrate(options) {
18
- const {
19
- connectionString,
20
- migrationsGlob,
21
- createDatabases = [],
22
- onMigrationComplete,
23
- gitSha,
24
- cvrDb,
25
- changeDb,
26
- defaultTimeout = DEFAULT_MIGRATION_TIMEOUT
27
- } = options, client = await getDBClient({ connectionString }), hasDB = async (name) => !!(await client.query(`
28
- SELECT 1 FROM pg_database WHERE datname = '${name}'
29
- `)).rows.length;
30
- if (cvrDb || changeDb) {
31
- if (!cvrDb)
32
- throw new Error("Missing cvrDb");
33
- const zeroDBNames = [basename(cvrDb || ""), basename(changeDb || "")].filter(Boolean);
34
- for (const name of zeroDBNames)
35
- await hasDB(name) || await client.query(`CREATE DATABASE ${name};`);
36
- }
37
- for (const dbUrl of createDatabases) {
38
- const name = basename(dbUrl);
39
- await hasDB(name) || await client.query(`CREATE DATABASE ${name};`);
40
- }
41
- try {
42
- await client.query("BEGIN"), await client.query("SET search_path = public"), await client.query(`
43
- CREATE TABLE IF NOT EXISTS public.migrations (
44
- id SERIAL PRIMARY KEY,
45
- name VARCHAR(255) NOT NULL,
46
- run_on TIMESTAMP NOT NULL DEFAULT NOW()
47
- )
48
- `);
49
- const appliedMigrations = await client.query("SELECT name FROM public.migrations"), appliedMigrationNames = new Set(appliedMigrations.rows.map((row) => row.name)), tsMigrationsSorted = Object.entries(migrationsGlob).sort(([a], [b]) => a.localeCompare(b)).map(([file, run]) => ({
50
- name: basename(file).replace(".ts", ""),
51
- run
52
- })).filter(({ name }) => /^[\d]+/.test(name)), migrations = [...await Promise.all(
53
- tsMigrationsSorted.map(async ({ name, run }) => {
54
- if (appliedMigrationNames.has(name))
55
- return null;
56
- try {
57
- return { ...await run(), name };
58
- } catch (error) {
59
- throw console.error(`Failed to load TypeScript migration ${name}:`, error), error;
60
- }
61
- })
62
- ).then((migrations2) => migrations2.filter(Boolean))].sort((a, b) => a.name.localeCompare(b.name));
63
- if (!migrations.length)
64
- await client.query("COMMIT");
65
- else {
66
- for (const migration of migrations) {
67
- if (migration.up) {
68
- const sp = `sp_${migration.name.replace(/\W/g, "_")}`;
69
- await client.query(`SAVEPOINT ${sp}`);
70
- try {
71
- const timeout = migration.timeout ?? defaultTimeout;
72
- await withTimeout(migration.up(client), timeout, migration.name), await client.query(`RELEASE SAVEPOINT ${sp}`);
73
- } catch (e) {
74
- if (await client.query(`ROLLBACK TO SAVEPOINT ${sp}`), [
75
- "42710",
76
- // duplicate_object
77
- "42P07",
78
- // duplicate_table
79
- "42701",
80
- // duplicate_column
81
- "42P16"
82
- // invalid_table_definition (e.g. constraint already exists)
83
- ].includes(e?.code))
84
- console.info(
85
- `[migrate] ${migration.name}: ${e.message} (${e.code}), recording as applied`
86
- );
87
- else
88
- throw e;
89
- }
90
- }
91
- await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [
92
- migration.name
93
- ]);
94
- }
95
- await client.query("COMMIT");
96
- }
97
- } catch (e) {
98
- console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK");
99
- try {
100
- client.release(!1);
101
- } catch (releaseErr) {
102
- console.error("Error releasing connection after rollback:", releaseErr);
103
- }
104
- throw e;
105
- }
106
- onMigrationComplete && await onMigrationComplete();
107
- try {
108
- client.release(!1);
109
- } catch (err) {
110
- console.error("Error releasing connection gracefully, trying to destroy:", err);
111
- try {
112
- client.release(!0);
113
- } catch (destroyErr) {
114
- console.error("Error destroying connection:", destroyErr);
115
- }
116
- }
117
- await exitProcess();
118
- }
119
- async function exitProcess() {
120
- typeof process > "u" || isServerless || (await new Promise((resolve) => {
121
- process.stderr.write("", () => {
122
- process.stdout.write("", () => resolve());
123
- });
124
- }), process.exit(0));
125
- }
126
- export {
127
- migrate
128
- };
129
- //# sourceMappingURL=migrate.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/migrate.ts"],
4
- "mappings": "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",
5
- "names": ["migrations"]
6
- }
@@ -1,46 +0,0 @@
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
@@ -1,6 +0,0 @@
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
- }
@@ -1,104 +0,0 @@
1
- #!/usr/bin/env bun
2
- import { existsSync } from "node:fs";
3
- import { readdir, readFile, writeFile, stat, rename } from "node:fs/promises";
4
- import { join, basename, extname } from "node:path";
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
- const journalPath = join(metaDir, "_journal.json");
48
- if (existsSync(journalPath)) {
49
- const journal = JSON.parse(await readFile(journalPath, "utf-8"));
50
- let journalUpdated = !1;
51
- for (const entry of journal.entries) {
52
- const tagMatch = entry.tag.match(/^\d+_(.+)$/);
53
- if (tagMatch)
54
- for (const file of groupFiles) {
55
- const fileSuffix = file.replace(".sql", "").replace(/^\d+_/, "");
56
- if (tagMatch[1] === fileSuffix) {
57
- const newTag = `${newNumStr}_${fileSuffix}`;
58
- console.info(` Updated journal tag: ${entry.tag} -> ${newTag}`), entry.tag = newTag, journalUpdated = !0;
59
- }
60
- }
61
- }
62
- journalUpdated && await writeFile(journalPath, JSON.stringify(journal, null, 4));
63
- }
64
- }
65
- nextNumber++;
66
- } else
67
- renamedFiles.push(...groupFiles);
68
- return sqlFiles.map((file) => {
69
- if (newDrizzleSqlFiles.indexOf(file) !== -1) {
70
- for (const renamed of renamedFiles)
71
- if (renamed.includes(file.substring(5)))
72
- return renamed;
73
- }
74
- return file;
75
- });
76
- }
77
- async function syncDrizzleMigrations(options) {
78
- const { migrationsDir } = options;
79
- let sqlFiles = (await readdir(migrationsDir)).filter((file) => extname(file) === ".sql");
80
- console.info(`Found ${sqlFiles.length} SQL files to convert to migrations.`), sqlFiles = await renameNewDrizzleMigrations(migrationsDir, sqlFiles);
81
- for (const sqlFile of sqlFiles) {
82
- const tsFileName = `${basename(sqlFile, ".sql")}.ts`, tsFilePath = join(migrationsDir, tsFileName);
83
- if (existsSync(tsFilePath)) {
84
- const sqlStat = await stat(join(migrationsDir, sqlFile));
85
- if ((await stat(tsFilePath)).mtimeMs > sqlStat.mtimeMs)
86
- continue;
87
- console.info(`Updating ${tsFileName} as SQL file has been modified.`);
88
- } else
89
- console.info(`Creating ${tsFileName}`);
90
- const migrationContent = `import type { PoolClient } from 'pg'
91
- import sql from './${sqlFile}?raw'
92
-
93
- export async function up(client: PoolClient) {
94
- await client.query(sql)
95
- }
96
- `;
97
- await writeFile(tsFilePath, migrationContent), console.info(`Successfully created ${tsFileName}`);
98
- }
99
- console.info("Migration sync completed.");
100
- }
101
- export {
102
- syncDrizzleMigrations
103
- };
104
- //# sourceMappingURL=drizzle-migrations-sync.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/scripts/drizzle-migrations-sync.ts"],
4
- "mappings": ";AAQA,SAAS,kBAAkB;AAC3B,SAAS,SAAS,UAAU,WAAW,MAAM,cAAc;AAC3D,SAAS,MAAM,UAAU,eAAe;AASxC,SAAS,mBAAmB,UAAiC;AAC3D,QAAM,QAAQ,SAAS,MAAM,QAAQ;AACrC,SAAO,SAAS,MAAM,CAAC,IAAI,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE,IAAI;AAC7D;AAKA,eAAe,0BAA0B,KAA8B;AACrE,QAAM,QAAQ,MAAM,QAAQ,GAAG;AAC/B,MAAI,UAAU;AAEd,aAAW,QAAQ,OAAO;AACxB,UAAM,MAAM,mBAAmB,IAAI;AACnC,IAAI,QAAQ,QAAQ,MAAM,YACxB,UAAU;AAAA,EAEd;AAEA,SAAO;AACT;AAKA,eAAe,2BACb,gBACA,UACmB;AACnB,QAAM,iBAAiB,iCACjB,QAAQ,MAAM,QAAQ,cAAc,GAGpC,gBAAgB,MAAM,0BAA0B,cAAc,GAG9D,qBAAqB,SAAS,OAAO,CAAC,SAAS;AACnD,QAAI,CAAC,eAAe,KAAK,IAAI,EAAG,QAAO;AACvC,UAAM,SAAS,KAAK,QAAQ,QAAQ,KAAK;AACzC,WAAO,CAAC,MAAM,SAAS,MAAM;AAAA,EAC/B,CAAC;AAED,MAAI,mBAAmB,WAAW,EAAG,QAAO;AAG5C,QAAM,kBAAkB,oBAAI,IAAsB;AAClD,aAAW,QAAQ,oBAAoB;AACrC,UAAM,MAAM,KAAK,UAAU,GAAG,CAAC;AAC/B,IAAK,gBAAgB,IAAI,GAAG,KAC1B,gBAAgB,IAAI,KAAK,CAAC,CAAC,GAE7B,gBAAgB,IAAI,GAAG,EAAG,KAAK,IAAI;AAAA,EACrC;AAEA,MAAI,aAAa,gBAAgB;AACjC,QAAM,eAAyB,CAAC;AAGhC,aAAW,CAAC,aAAa,UAAU,KAAK;AAItC,QAHmB,OAAO,SAAS,aAAa,EAAE,KAGhC,eAAe;AAC/B,YAAM,YAAY,WAAW,SAAS,EAAE,SAAS,GAAG,GAAG;AAEvD,cAAQ,KAAK,qCAAqC,WAAW,OAAO,SAAS,EAAE;AAE/E,iBAAW,QAAQ,YAAY;AAC7B,cAAM,UAAU,KAAK,QAAQ,UAAU,SAAS,GAC1C,UAAU,KAAK,gBAAgB,IAAI,GACnC,UAAU,KAAK,gBAAgB,OAAO;AAE5C,cAAM,OAAO,SAAS,OAAO,GAC7B,QAAQ,KAAK,aAAa,IAAI,OAAO,OAAO,EAAE,GAC9C,aAAa,KAAK,OAAO;AAAA,MAC3B;AAGA,YAAM,UAAU,KAAK,gBAAgB,MAAM;AAC3C,UAAI,WAAW,OAAO,GAAG;AACvB,cAAM,YAAY,MAAM,QAAQ,OAAO,GACjC,eAAe,GAAG,WAAW;AACnC,YAAI,UAAU,SAAS,YAAY,GAAG;AACpC,gBAAM,kBAAkB,GAAG,SAAS;AACpC,gBAAM,OAAO,KAAK,SAAS,YAAY,GAAG,KAAK,SAAS,eAAe,CAAC,GACxE,QAAQ,KAAK,kBAAkB,YAAY,YAAY,eAAe,EAAE;AAAA,QAC1E;AAGA,cAAM,cAAc,KAAK,SAAS,eAAe;AACjD,YAAI,WAAW,WAAW,GAAG;AAC3B,gBAAM,UAAU,KAAK,MAAM,MAAM,SAAS,aAAa,OAAO,CAAC;AAC/D,cAAI,iBAAiB;AAErB,qBAAW,SAAS,QAAQ,SAAS;AAEnC,kBAAM,WAAW,MAAM,IAAI,MAAM,YAAY;AAC7C,gBAAK;AAEL,yBAAW,QAAQ,YAAY;AAE7B,sBAAM,aADU,KAAK,QAAQ,QAAQ,EAAE,EACZ,QAAQ,SAAS,EAAE;AAC9C,oBAAI,SAAS,CAAC,MAAM,YAAY;AAC9B,wBAAM,SAAS,GAAG,SAAS,IAAI,UAAU;AACzC,0BAAQ,KAAK,0BAA0B,MAAM,GAAG,OAAO,MAAM,EAAE,GAC/D,MAAM,MAAM,QACZ,iBAAiB;AAAA,gBACnB;AAAA,cACF;AAAA,UACF;AAEA,UAAI,kBACF,MAAM,UAAU,aAAa,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA,QAEjE;AAAA,MACF;AAEA;AAAA,IACF;AAEE,mBAAa,KAAK,GAAG,UAAU;AAKnC,SAAO,SAAS,IAAI,CAAC,SAAS;AAE5B,QADY,mBAAmB,QAAQ,IAAI,MAC/B;AAEV,iBAAW,WAAW;AACpB,YAAI,QAAQ,SAAS,KAAK,UAAU,CAAC,CAAC;AAEpC,iBAAO;AAAA;AAIb,WAAO;AAAA,EACT,CAAC;AACH;AAEA,eAAsB,sBAAsB,SAA6B;AACvE,QAAM,EAAE,cAAc,IAAI;AAI1B,MAAI,YADU,MAAM,QAAQ,aAAa,GACpB,OAAO,CAAC,SAAS,QAAQ,IAAI,MAAM,MAAM;AAE9D,UAAQ,KAAK,SAAS,SAAS,MAAM,sCAAsC,GAG3E,WAAW,MAAM,2BAA2B,eAAe,QAAQ;AAGnE,aAAW,WAAW,UAAU;AAE9B,UAAM,aAAa,GADF,SAAS,SAAS,MAAM,CACX,OACxB,aAAa,KAAK,eAAe,UAAU;AAGjD,QAAI,WAAW,UAAU,GAAG;AAC1B,YAAM,UAAU,MAAM,KAAK,KAAK,eAAe,OAAO,CAAC;AAGvD,WAFe,MAAM,KAAK,UAAU,GAEzB,UAAU,QAAQ;AAC3B;AAGF,cAAQ,KAAK,YAAY,UAAU,iCAAiC;AAAA,IACtE;AACE,cAAQ,KAAK,YAAY,UAAU,EAAE;AAIvC,UAAM,mBAAmB;AAAA,qBACR,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAQxB,UAAM,UAAU,YAAY,gBAAgB,GAC5C,QAAQ,KAAK,wBAAwB,UAAU,EAAE;AAAA,EACnD;AAEA,UAAQ,KAAK,2BAA2B;AAC1C;",
5
- "names": []
6
- }
@@ -1,25 +0,0 @@
1
- import { readdirSync, writeFileSync } from "node:fs";
2
- import { join } from "node:path";
3
- const commonWords = ["sapphire", "emerald", "ruby", "amber", "topaz", "onyx", "pearl"];
4
- function addMigration(options) {
5
- const { migrationsDir, name } = options, migrationName = name || commonWords[Math.floor(Math.random() * commonWords.length)], files = readdirSync(migrationsDir), migrationRegex = /^(\d+)[-_].*\.(ts|sql)$/;
6
- let maxNumber = 0;
7
- for (const file of files) {
8
- const match = file.match(migrationRegex);
9
- if (match?.[1]) {
10
- const num = Number.parseInt(match[1], 10);
11
- !Number.isNaN(num) && num > maxNumber && (maxNumber = num);
12
- }
13
- }
14
- const newFilename = `${(maxNumber + 1).toString().padStart(4, "0")}-${migrationName}.ts`, newFilePath = join(migrationsDir, newFilename);
15
- return writeFileSync(newFilePath, `import type { PoolClient } from 'pg'
16
-
17
- export async function up(client: PoolClient) {
18
- // implementation for applying this migration
19
- }
20
- `), console.info(`Created custom migration: ${newFilePath}`), console.info("For Drizzle schema migrations, run 'drizzle-kit generate' instead"), newFilePath;
21
- }
22
- export {
23
- addMigration
24
- };
25
- //# sourceMappingURL=migration-add.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/scripts/migration-add.ts"],
4
- "mappings": "AAAA,SAAS,aAAa,qBAAqB;AAC3C,SAAS,YAAY;AAOrB,MAAM,cAAc,CAAC,YAAY,WAAW,QAAQ,SAAS,SAAS,QAAQ,OAAO;AAE9E,SAAS,aAAa,SAAsC;AACjE,QAAM,EAAE,eAAe,KAAK,IAAI,SAG1B,gBACJ,QAAQ,YAAY,KAAK,MAAM,KAAK,OAAO,IAAI,YAAY,MAAM,CAAC,GAG9D,QAAQ,YAAY,aAAa,GAGjC,iBAAiB;AACvB,MAAI,YAAY;AAChB,aAAW,QAAQ,OAAO;AACxB,UAAM,QAAQ,KAAK,MAAM,cAAc;AACvC,QAAI,QAAQ,CAAC,GAAG;AACd,YAAM,MAAM,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE;AACxC,MAAI,CAAC,OAAO,MAAM,GAAG,KAAK,MAAM,cAC9B,YAAY;AAAA,IAEhB;AAAA,EACF;AAIA,QAAM,cAAc,IADA,YAAY,GAAG,SAAS,EAAE,SAAS,GAAG,GAAG,CAC5B,IAAI,aAAa,OAC5C,cAAc,KAAK,eAAe,WAAW;AAWnD,uBAAc,aARU;AAAA;AAAA;AAAA;AAAA;AAAA,CAQkB,GAE1C,QAAQ,KAAK,6BAA6B,WAAW,EAAE,GACvD,QAAQ,KAAK,mEAAmE,GAEzE;AACT;",
5
- "names": []
6
- }
@@ -1,19 +0,0 @@
1
- import { spawnSync } from "node:child_process";
2
- function runPgDump(options = {}) {
3
- const { connectionString, host, port, database, user, password, args = [] } = options, env = {
4
- ...process.env
5
- };
6
- if (connectionString) {
7
- const url = new URL(connectionString);
8
- env.PGHOST = url.hostname, env.PGPORT = url.port || "5432", env.PGDATABASE = url.pathname.slice(1), env.PGUSER = url.username, url.password && (env.PGPASSWORD = url.password);
9
- } else
10
- host && (env.PGHOST = host), port && (env.PGPORT = port.toString()), database && (env.PGDATABASE = database), user && (env.PGUSER = user), password && (env.PGPASSWORD = password);
11
- return console.info(`Running pg_dump on postgres ${env.PGHOST}/${env.PGDATABASE}`), spawnSync("pg_dump", args, {
12
- stdio: ["ignore", "inherit", "inherit"],
13
- env
14
- }).status;
15
- }
16
- export {
17
- runPgDump
18
- };
19
- //# sourceMappingURL=pg_dump.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/scripts/pg_dump.ts"],
4
- "mappings": "AAAA,SAAS,iBAAiB;AAYnB,SAAS,UAAU,UAAyB,CAAC,GAAG;AACrD,QAAM,EAAE,kBAAkB,MAAM,MAAM,UAAU,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,SAExE,MAA8B;AAAA,IAClC,GAAG,QAAQ;AAAA,EACb;AAEA,MAAI,kBAAkB;AAEpB,UAAM,MAAM,IAAI,IAAI,gBAAgB;AACpC,QAAI,SAAS,IAAI,UACjB,IAAI,SAAS,IAAI,QAAQ,QACzB,IAAI,aAAa,IAAI,SAAS,MAAM,CAAC,GACrC,IAAI,SAAS,IAAI,UACb,IAAI,aACN,IAAI,aAAa,IAAI;AAAA,EAEzB;AACE,IAAI,SAAM,IAAI,SAAS,OACnB,SAAM,IAAI,SAAS,KAAK,SAAS,IACjC,aAAU,IAAI,aAAa,WAC3B,SAAM,IAAI,SAAS,OACnB,aAAU,IAAI,aAAa;AAGjC,iBAAQ,KAAK,+BAA+B,IAAI,MAAM,IAAI,IAAI,UAAU,EAAE,GAE3D,UAAU,WAAW,MAAM;AAAA,IACxC,OAAO,CAAC,UAAU,WAAW,SAAS;AAAA,IACtC;AAAA,EACF,CAAC,EAEa;AAChB;",
5
- "names": []
6
- }
@@ -1,20 +0,0 @@
1
- import { spawnSync } from "node:child_process";
2
- function runPsql(options = {}) {
3
- const { connectionString, host, port, database, user, password, query } = options, env = {
4
- ...process.env
5
- };
6
- if (connectionString) {
7
- const url = new URL(connectionString);
8
- env.PGHOST = url.hostname, env.PGPORT = url.port || "5432", env.PGDATABASE = url.pathname.slice(1), env.PGUSER = url.username, url.password && (env.PGPASSWORD = url.password);
9
- } else
10
- host && (env.PGHOST = host), port && (env.PGPORT = port.toString()), database && (env.PGDATABASE = database), user && (env.PGUSER = user), password && (env.PGPASSWORD = password);
11
- const args = [];
12
- return query && args.push("-c", query), console.info(`Connecting to postgres ${env.PGHOST}/${env.PGDATABASE}`), spawnSync("psql", args, {
13
- stdio: ["ignore", "inherit", "inherit"],
14
- env
15
- }).status;
16
- }
17
- export {
18
- runPsql
19
- };
20
- //# sourceMappingURL=psql.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/scripts/psql.ts"],
4
- "mappings": "AAAA,SAAS,iBAAiB;AAYnB,SAAS,QAAQ,UAAuB,CAAC,GAAG;AACjD,QAAM,EAAE,kBAAkB,MAAM,MAAM,UAAU,MAAM,UAAU,MAAM,IAAI,SAEpE,MAA8B;AAAA,IAClC,GAAG,QAAQ;AAAA,EACb;AAEA,MAAI,kBAAkB;AAEpB,UAAM,MAAM,IAAI,IAAI,gBAAgB;AACpC,QAAI,SAAS,IAAI,UACjB,IAAI,SAAS,IAAI,QAAQ,QACzB,IAAI,aAAa,IAAI,SAAS,MAAM,CAAC,GACrC,IAAI,SAAS,IAAI,UACb,IAAI,aACN,IAAI,aAAa,IAAI;AAAA,EAEzB;AACE,IAAI,SAAM,IAAI,SAAS,OACnB,SAAM,IAAI,SAAS,KAAK,SAAS,IACjC,aAAU,IAAI,aAAa,WAC3B,SAAM,IAAI,SAAS,OACnB,aAAU,IAAI,aAAa;AAGjC,QAAM,OAAiB,CAAC;AACxB,SAAI,SACF,KAAK,KAAK,MAAM,KAAK,GAGvB,QAAQ,KAAK,0BAA0B,IAAI,MAAM,IAAI,IAAI,UAAU,EAAE,GAEtD,UAAU,QAAQ,MAAM;AAAA,IACrC,OAAO,CAAC,UAAU,WAAW,SAAS;AAAA,IACtC;AAAA,EACF,CAAC,EAEa;AAChB;",
5
- "names": []
6
- }
package/dist/esm/sql.js DELETED
@@ -1,19 +0,0 @@
1
- import { ellipsis } from "@take-out/helpers";
2
- const createSql = (pool) => (strings, ...values) => {
3
- const text = strings.reduce((result, str, i) => result + str + (i < values.length ? `$${i + 1}` : ""), "");
4
- return process.env.DEBUG && console.info(`sql: ${ellipsis(text, 80)}`), pool.query(text.trim(), values);
5
- };
6
- let defaultPool = null;
7
- const setDefaultPool = (pool) => {
8
- defaultPool = pool;
9
- }, sql = (strings, ...values) => {
10
- if (!defaultPool)
11
- throw new Error("No default pool set. Call setDefaultPool() first or use createSql()");
12
- return createSql(defaultPool)(strings, ...values);
13
- };
14
- export {
15
- createSql,
16
- setDefaultPool,
17
- sql
18
- };
19
- //# sourceMappingURL=sql.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/sql.ts"],
4
- "mappings": "AAAA,SAAS,gBAAgB;AASlB,MAAM,YAAY,CAAC,SACjB,CAAC,YAAkC,WAA6C;AACrF,QAAM,OAAO,QAAQ,OAAO,CAAC,QAAQ,KAAK,MACjC,SAAS,OAAO,IAAI,OAAO,SAAS,IAAI,IAAI,CAAC,KAAK,KACxD,EAAE;AAEL,SAAI,QAAQ,IAAI,SACd,QAAQ,KAAK,QAAQ,SAAS,MAAM,EAAE,CAAC,EAAE,GAGpC,KAAK,MAAM,KAAK,KAAK,GAAG,MAAM;AACvC;AAIF,IAAI,cAA2B;AAExB,MAAM,iBAAiB,CAAC,SAAe;AAC5C,gBAAc;AAChB,GAEa,MAAM,CACjB,YACG,WAC2B;AAC9B,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,qEAAqE;AAEvF,SAAO,UAAU,WAAW,EAAE,SAAS,GAAG,MAAM;AAClD;",
5
- "names": []
6
- }