@paperclipai/db 0.2.2

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 (153) hide show
  1. package/dist/backup.d.ts +2 -0
  2. package/dist/backup.d.ts.map +1 -0
  3. package/dist/backup.js +298 -0
  4. package/dist/backup.js.map +1 -0
  5. package/dist/client.d.ts +42 -0
  6. package/dist/client.d.ts.map +1 -0
  7. package/dist/client.js +546 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +3 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/migrate.d.ts +2 -0
  14. package/dist/migrate.d.ts.map +1 -0
  15. package/dist/migrate.js +19 -0
  16. package/dist/migrate.js.map +1 -0
  17. package/dist/schema/activity_log.d.ts +197 -0
  18. package/dist/schema/activity_log.d.ts.map +1 -0
  19. package/dist/schema/activity_log.js +22 -0
  20. package/dist/schema/activity_log.js.map +1 -0
  21. package/dist/schema/agent_api_keys.d.ts +144 -0
  22. package/dist/schema/agent_api_keys.d.ts.map +1 -0
  23. package/dist/schema/agent_api_keys.js +17 -0
  24. package/dist/schema/agent_api_keys.js.map +1 -0
  25. package/dist/schema/agent_config_revisions.d.ts +201 -0
  26. package/dist/schema/agent_config_revisions.d.ts.map +1 -0
  27. package/dist/schema/agent_config_revisions.js +20 -0
  28. package/dist/schema/agent_config_revisions.js.map +1 -0
  29. package/dist/schema/agent_runtime_state.d.ts +248 -0
  30. package/dist/schema/agent_runtime_state.d.ts.map +1 -0
  31. package/dist/schema/agent_runtime_state.js +23 -0
  32. package/dist/schema/agent_runtime_state.js.map +1 -0
  33. package/dist/schema/agent_task_sessions.d.ts +197 -0
  34. package/dist/schema/agent_task_sessions.d.ts.map +1 -0
  35. package/dist/schema/agent_task_sessions.js +22 -0
  36. package/dist/schema/agent_task_sessions.js.map +1 -0
  37. package/dist/schema/agent_wakeup_requests.d.ts +333 -0
  38. package/dist/schema/agent_wakeup_requests.d.ts.map +1 -0
  39. package/dist/schema/agent_wakeup_requests.js +29 -0
  40. package/dist/schema/agent_wakeup_requests.js.map +1 -0
  41. package/dist/schema/agents.d.ts +339 -0
  42. package/dist/schema/agents.d.ts.map +1 -0
  43. package/dist/schema/agents.js +27 -0
  44. package/dist/schema/agents.js.map +1 -0
  45. package/dist/schema/approval_comments.d.ts +144 -0
  46. package/dist/schema/approval_comments.d.ts.map +1 -0
  47. package/dist/schema/approval_comments.js +19 -0
  48. package/dist/schema/approval_comments.js.map +1 -0
  49. package/dist/schema/approvals.d.ts +214 -0
  50. package/dist/schema/approvals.d.ts.map +1 -0
  51. package/dist/schema/approvals.js +20 -0
  52. package/dist/schema/approvals.js.map +1 -0
  53. package/dist/schema/assets.d.ts +212 -0
  54. package/dist/schema/assets.d.ts.map +1 -0
  55. package/dist/schema/assets.js +22 -0
  56. package/dist/schema/assets.js.map +1 -0
  57. package/dist/schema/auth.d.ts +607 -0
  58. package/dist/schema/auth.d.ts.map +1 -0
  59. package/dist/schema/auth.js +44 -0
  60. package/dist/schema/auth.js.map +1 -0
  61. package/dist/schema/companies.d.ts +212 -0
  62. package/dist/schema/companies.d.ts.map +1 -0
  63. package/dist/schema/companies.js +20 -0
  64. package/dist/schema/companies.js.map +1 -0
  65. package/dist/schema/company_memberships.d.ts +144 -0
  66. package/dist/schema/company_memberships.d.ts.map +1 -0
  67. package/dist/schema/company_memberships.js +17 -0
  68. package/dist/schema/company_memberships.js.map +1 -0
  69. package/dist/schema/company_secret_versions.d.ts +163 -0
  70. package/dist/schema/company_secret_versions.d.ts.map +1 -0
  71. package/dist/schema/company_secret_versions.js +19 -0
  72. package/dist/schema/company_secret_versions.js.map +1 -0
  73. package/dist/schema/company_secrets.d.ts +195 -0
  74. package/dist/schema/company_secrets.d.ts.map +1 -0
  75. package/dist/schema/company_secrets.js +21 -0
  76. package/dist/schema/company_secrets.js.map +1 -0
  77. package/dist/schema/cost_events.d.ts +246 -0
  78. package/dist/schema/cost_events.d.ts.map +1 -0
  79. package/dist/schema/cost_events.js +26 -0
  80. package/dist/schema/cost_events.js.map +1 -0
  81. package/dist/schema/goals.d.ts +178 -0
  82. package/dist/schema/goals.d.ts.map +1 -0
  83. package/dist/schema/goals.js +18 -0
  84. package/dist/schema/goals.js.map +1 -0
  85. package/dist/schema/heartbeat_run_events.d.ts +214 -0
  86. package/dist/schema/heartbeat_run_events.d.ts.map +1 -0
  87. package/dist/schema/heartbeat_run_events.js +23 -0
  88. package/dist/schema/heartbeat_run_events.js.map +1 -0
  89. package/dist/schema/heartbeat_runs.d.ts +490 -0
  90. package/dist/schema/heartbeat_runs.d.ts.map +1 -0
  91. package/dist/schema/heartbeat_runs.js +37 -0
  92. package/dist/schema/heartbeat_runs.js.map +1 -0
  93. package/dist/schema/index.d.ts +33 -0
  94. package/dist/schema/index.d.ts.map +1 -0
  95. package/dist/schema/index.js +33 -0
  96. package/dist/schema/index.js.map +1 -0
  97. package/dist/schema/instance_user_roles.d.ts +93 -0
  98. package/dist/schema/instance_user_roles.d.ts.map +1 -0
  99. package/dist/schema/instance_user_roles.js +12 -0
  100. package/dist/schema/instance_user_roles.js.map +1 -0
  101. package/dist/schema/invites.d.ts +214 -0
  102. package/dist/schema/invites.d.ts.map +1 -0
  103. package/dist/schema/invites.js +20 -0
  104. package/dist/schema/invites.js.map +1 -0
  105. package/dist/schema/issue_approvals.d.ts +110 -0
  106. package/dist/schema/issue_approvals.d.ts.map +1 -0
  107. package/dist/schema/issue_approvals.js +19 -0
  108. package/dist/schema/issue_approvals.js.map +1 -0
  109. package/dist/schema/issue_attachments.d.ts +127 -0
  110. package/dist/schema/issue_attachments.d.ts.map +1 -0
  111. package/dist/schema/issue_attachments.js +19 -0
  112. package/dist/schema/issue_attachments.js.map +1 -0
  113. package/dist/schema/issue_comments.d.ts +144 -0
  114. package/dist/schema/issue_comments.d.ts.map +1 -0
  115. package/dist/schema/issue_comments.js +18 -0
  116. package/dist/schema/issue_comments.js.map +1 -0
  117. package/dist/schema/issue_labels.d.ts +76 -0
  118. package/dist/schema/issue_labels.d.ts.map +1 -0
  119. package/dist/schema/issue_labels.js +16 -0
  120. package/dist/schema/issue_labels.js.map +1 -0
  121. package/dist/schema/issues.d.ts +486 -0
  122. package/dist/schema/issues.d.ts.map +1 -0
  123. package/dist/schema/issues.js +44 -0
  124. package/dist/schema/issues.js.map +1 -0
  125. package/dist/schema/join_requests.d.ts +384 -0
  126. package/dist/schema/join_requests.d.ts.map +1 -0
  127. package/dist/schema/join_requests.js +32 -0
  128. package/dist/schema/join_requests.js.map +1 -0
  129. package/dist/schema/labels.d.ts +110 -0
  130. package/dist/schema/labels.d.ts.map +1 -0
  131. package/dist/schema/labels.js +14 -0
  132. package/dist/schema/labels.js.map +1 -0
  133. package/dist/schema/principal_permission_grants.d.ts +163 -0
  134. package/dist/schema/principal_permission_grants.d.ts.map +1 -0
  135. package/dist/schema/principal_permission_grants.js +17 -0
  136. package/dist/schema/principal_permission_grants.js.map +1 -0
  137. package/dist/schema/project_goals.d.ts +93 -0
  138. package/dist/schema/project_goals.d.ts.map +1 -0
  139. package/dist/schema/project_goals.js +17 -0
  140. package/dist/schema/project_goals.js.map +1 -0
  141. package/dist/schema/project_workspaces.d.ts +197 -0
  142. package/dist/schema/project_workspaces.d.ts.map +1 -0
  143. package/dist/schema/project_workspaces.js +20 -0
  144. package/dist/schema/project_workspaces.js.map +1 -0
  145. package/dist/schema/projects.d.ts +212 -0
  146. package/dist/schema/projects.d.ts.map +1 -0
  147. package/dist/schema/projects.js +21 -0
  148. package/dist/schema/projects.js.map +1 -0
  149. package/dist/seed.d.ts +2 -0
  150. package/dist/seed.d.ts.map +1 -0
  151. package/dist/seed.js +91 -0
  152. package/dist/seed.js.map +1 -0
  153. package/package.json +42 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":""}
package/dist/backup.js ADDED
@@ -0,0 +1,298 @@
1
+ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, unlinkSync } from "node:fs";
2
+ import { writeFile } from "node:fs/promises";
3
+ import { resolve } from "node:path";
4
+ import postgres from "postgres";
5
+ const PROJECT_ROOT = resolve(import.meta.dirname, "../../..");
6
+ const BACKUP_DIR = resolve(PROJECT_ROOT, "data/backups");
7
+ const CONFIG_FILE = resolve(PROJECT_ROOT, ".paperclip/config.json");
8
+ const MAX_AGE_DAYS = 30;
9
+ function loadPort() {
10
+ try {
11
+ const raw = readFileSync(CONFIG_FILE, "utf8");
12
+ const config = JSON.parse(raw);
13
+ const port = config?.database?.embeddedPostgresPort;
14
+ if (typeof port === "number" && Number.isFinite(port))
15
+ return port;
16
+ }
17
+ catch { }
18
+ return 54329;
19
+ }
20
+ function timestamp() {
21
+ const d = new Date();
22
+ const pad = (n) => String(n).padStart(2, "0");
23
+ return `${d.getFullYear()}${pad(d.getMonth() + 1)}${pad(d.getDate())}-${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`;
24
+ }
25
+ function pruneOldBackups() {
26
+ if (!existsSync(BACKUP_DIR))
27
+ return;
28
+ const cutoff = Date.now() - MAX_AGE_DAYS * 24 * 60 * 60 * 1000;
29
+ let pruned = 0;
30
+ for (const name of readdirSync(BACKUP_DIR)) {
31
+ if (!name.startsWith("paperclip-") || !name.endsWith(".sql"))
32
+ continue;
33
+ const fullPath = resolve(BACKUP_DIR, name);
34
+ const stat = statSync(fullPath);
35
+ if (stat.mtimeMs < cutoff) {
36
+ unlinkSync(fullPath);
37
+ pruned++;
38
+ }
39
+ }
40
+ if (pruned > 0)
41
+ console.log(`Pruned ${pruned} backup(s) older than ${MAX_AGE_DAYS} days.`);
42
+ }
43
+ async function main() {
44
+ const port = loadPort();
45
+ const connString = `postgres://paperclip:paperclip@127.0.0.1:${port}/paperclip`;
46
+ console.log(`Connecting to embedded PostgreSQL on port ${port}...`);
47
+ const sql = postgres(connString, { max: 1, connect_timeout: 5 });
48
+ try {
49
+ // Verify connection
50
+ await sql `SELECT 1`;
51
+ }
52
+ catch (err) {
53
+ console.error(`Error: Cannot connect to embedded PostgreSQL on port ${port}.`);
54
+ console.error(" Make sure the server is running (pnpm dev).");
55
+ process.exit(1);
56
+ }
57
+ try {
58
+ const lines = [];
59
+ const emit = (line) => lines.push(line);
60
+ emit("-- Paperclip database backup");
61
+ emit(`-- Created: ${new Date().toISOString()}`);
62
+ emit(`-- Server port: ${port}`);
63
+ emit("");
64
+ emit("BEGIN;");
65
+ emit("");
66
+ // Get all enums
67
+ const enums = await sql `
68
+ SELECT t.typname, array_agg(e.enumlabel ORDER BY e.enumsortorder) AS labels
69
+ FROM pg_type t
70
+ JOIN pg_enum e ON t.oid = e.enumtypid
71
+ JOIN pg_namespace n ON t.typnamespace = n.oid
72
+ WHERE n.nspname = 'public'
73
+ GROUP BY t.typname
74
+ ORDER BY t.typname
75
+ `;
76
+ for (const e of enums) {
77
+ const labels = e.labels.map((l) => `'${l.replace(/'/g, "''")}'`).join(", ");
78
+ emit(`CREATE TYPE "public"."${e.typname}" AS ENUM (${labels});`);
79
+ }
80
+ if (enums.length > 0)
81
+ emit("");
82
+ // Get tables in dependency order (referenced tables first)
83
+ const tables = await sql `
84
+ SELECT c.relname AS tablename
85
+ FROM pg_class c
86
+ JOIN pg_namespace n ON n.oid = c.relnamespace
87
+ WHERE n.nspname = 'public'
88
+ AND c.relkind = 'r'
89
+ AND c.relname != '__drizzle_migrations'
90
+ ORDER BY c.relname
91
+ `;
92
+ // Get full CREATE TABLE DDL via column info
93
+ for (const { tablename } of tables) {
94
+ const columns = await sql `
95
+ SELECT column_name, data_type, udt_name, is_nullable, column_default,
96
+ character_maximum_length, numeric_precision, numeric_scale
97
+ FROM information_schema.columns
98
+ WHERE table_schema = 'public' AND table_name = ${tablename}
99
+ ORDER BY ordinal_position
100
+ `;
101
+ emit(`-- Table: ${tablename}`);
102
+ emit(`DROP TABLE IF EXISTS "${tablename}" CASCADE;`);
103
+ const colDefs = [];
104
+ for (const col of columns) {
105
+ let typeStr;
106
+ if (col.data_type === "USER-DEFINED") {
107
+ typeStr = `"${col.udt_name}"`;
108
+ }
109
+ else if (col.data_type === "ARRAY") {
110
+ typeStr = `${col.udt_name.replace(/^_/, "")}[]`;
111
+ }
112
+ else if (col.data_type === "character varying") {
113
+ typeStr = col.character_maximum_length
114
+ ? `varchar(${col.character_maximum_length})`
115
+ : "varchar";
116
+ }
117
+ else if (col.data_type === "numeric" && col.numeric_precision != null) {
118
+ typeStr =
119
+ col.numeric_scale != null
120
+ ? `numeric(${col.numeric_precision}, ${col.numeric_scale})`
121
+ : `numeric(${col.numeric_precision})`;
122
+ }
123
+ else {
124
+ typeStr = col.data_type;
125
+ }
126
+ let def = ` "${col.column_name}" ${typeStr}`;
127
+ if (col.column_default != null)
128
+ def += ` DEFAULT ${col.column_default}`;
129
+ if (col.is_nullable === "NO")
130
+ def += " NOT NULL";
131
+ colDefs.push(def);
132
+ }
133
+ // Primary key
134
+ const pk = await sql `
135
+ SELECT c.conname AS constraint_name,
136
+ array_agg(a.attname ORDER BY array_position(c.conkey, a.attnum)) AS column_names
137
+ FROM pg_constraint c
138
+ JOIN pg_class t ON t.oid = c.conrelid
139
+ JOIN pg_namespace n ON n.oid = t.relnamespace
140
+ JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey)
141
+ WHERE n.nspname = 'public' AND t.relname = ${tablename} AND c.contype = 'p'
142
+ GROUP BY c.conname
143
+ `;
144
+ for (const p of pk) {
145
+ const cols = p.column_names.map((c) => `"${c}"`).join(", ");
146
+ colDefs.push(` CONSTRAINT "${p.constraint_name}" PRIMARY KEY (${cols})`);
147
+ }
148
+ emit(`CREATE TABLE "${tablename}" (`);
149
+ emit(colDefs.join(",\n"));
150
+ emit(");");
151
+ emit("");
152
+ }
153
+ // Foreign keys (after all tables created)
154
+ const fks = await sql `
155
+ SELECT
156
+ c.conname AS constraint_name,
157
+ src.relname AS source_table,
158
+ array_agg(sa.attname ORDER BY array_position(c.conkey, sa.attnum)) AS source_columns,
159
+ tgt.relname AS target_table,
160
+ array_agg(ta.attname ORDER BY array_position(c.confkey, ta.attnum)) AS target_columns,
161
+ CASE c.confupdtype WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END AS update_rule,
162
+ CASE c.confdeltype WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END AS delete_rule
163
+ FROM pg_constraint c
164
+ JOIN pg_class src ON src.oid = c.conrelid
165
+ JOIN pg_class tgt ON tgt.oid = c.confrelid
166
+ JOIN pg_namespace n ON n.oid = src.relnamespace
167
+ JOIN pg_attribute sa ON sa.attrelid = src.oid AND sa.attnum = ANY(c.conkey)
168
+ JOIN pg_attribute ta ON ta.attrelid = tgt.oid AND ta.attnum = ANY(c.confkey)
169
+ WHERE c.contype = 'f' AND n.nspname = 'public'
170
+ GROUP BY c.conname, src.relname, tgt.relname, c.confupdtype, c.confdeltype
171
+ ORDER BY src.relname, c.conname
172
+ `;
173
+ if (fks.length > 0) {
174
+ emit("-- Foreign keys");
175
+ for (const fk of fks) {
176
+ const srcCols = fk.source_columns.map((c) => `"${c}"`).join(", ");
177
+ const tgtCols = fk.target_columns.map((c) => `"${c}"`).join(", ");
178
+ emit(`ALTER TABLE "${fk.source_table}" ADD CONSTRAINT "${fk.constraint_name}" FOREIGN KEY (${srcCols}) REFERENCES "${fk.target_table}" (${tgtCols}) ON UPDATE ${fk.update_rule} ON DELETE ${fk.delete_rule};`);
179
+ }
180
+ emit("");
181
+ }
182
+ // Unique constraints
183
+ const uniques = await sql `
184
+ SELECT c.conname AS constraint_name,
185
+ t.relname AS tablename,
186
+ array_agg(a.attname ORDER BY array_position(c.conkey, a.attnum)) AS column_names
187
+ FROM pg_constraint c
188
+ JOIN pg_class t ON t.oid = c.conrelid
189
+ JOIN pg_namespace n ON n.oid = t.relnamespace
190
+ JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey)
191
+ WHERE n.nspname = 'public' AND c.contype = 'u'
192
+ GROUP BY c.conname, t.relname
193
+ ORDER BY t.relname, c.conname
194
+ `;
195
+ if (uniques.length > 0) {
196
+ emit("-- Unique constraints");
197
+ for (const u of uniques) {
198
+ const cols = u.column_names.map((c) => `"${c}"`).join(", ");
199
+ emit(`ALTER TABLE "${u.tablename}" ADD CONSTRAINT "${u.constraint_name}" UNIQUE (${cols});`);
200
+ }
201
+ emit("");
202
+ }
203
+ // Indexes (non-primary, non-unique-constraint)
204
+ const indexes = await sql `
205
+ SELECT indexdef
206
+ FROM pg_indexes
207
+ WHERE schemaname = 'public'
208
+ AND indexname NOT IN (
209
+ SELECT conname FROM pg_constraint
210
+ WHERE connamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public')
211
+ )
212
+ ORDER BY tablename, indexname
213
+ `;
214
+ if (indexes.length > 0) {
215
+ emit("-- Indexes");
216
+ for (const idx of indexes) {
217
+ emit(`${idx.indexdef};`);
218
+ }
219
+ emit("");
220
+ }
221
+ // Dump data for each table
222
+ for (const { tablename } of tables) {
223
+ const count = await sql `
224
+ SELECT count(*)::int AS n FROM ${sql(tablename)}
225
+ `;
226
+ if ((count[0]?.n ?? 0) === 0)
227
+ continue;
228
+ // Get column info for this table
229
+ const cols = await sql `
230
+ SELECT column_name, data_type
231
+ FROM information_schema.columns
232
+ WHERE table_schema = 'public' AND table_name = ${tablename}
233
+ ORDER BY ordinal_position
234
+ `;
235
+ const colNames = cols.map((c) => `"${c.column_name}"`).join(", ");
236
+ emit(`-- Data for: ${tablename} (${count[0].n} rows)`);
237
+ const rows = await sql `SELECT * FROM ${sql(tablename)}`.values();
238
+ for (const row of rows) {
239
+ const values = row.map((val) => {
240
+ if (val === null || val === undefined)
241
+ return "NULL";
242
+ if (typeof val === "boolean")
243
+ return val ? "true" : "false";
244
+ if (typeof val === "number")
245
+ return String(val);
246
+ if (val instanceof Date)
247
+ return `'${val.toISOString()}'`;
248
+ if (typeof val === "object")
249
+ return `'${JSON.stringify(val).replace(/'/g, "''")}'`;
250
+ return `'${String(val).replace(/'/g, "''")}'`;
251
+ });
252
+ emit(`INSERT INTO "${tablename}" (${colNames}) VALUES (${values.join(", ")});`);
253
+ }
254
+ emit("");
255
+ }
256
+ // Sequence values
257
+ const sequences = await sql `
258
+ SELECT sequence_name
259
+ FROM information_schema.sequences
260
+ WHERE sequence_schema = 'public'
261
+ ORDER BY sequence_name
262
+ `;
263
+ if (sequences.length > 0) {
264
+ emit("-- Sequence values");
265
+ for (const seq of sequences) {
266
+ const val = await sql `
267
+ SELECT last_value::text FROM ${sql(seq.sequence_name)}
268
+ `;
269
+ if (val[0]) {
270
+ emit(`SELECT setval('"${seq.sequence_name}"', ${val[0].last_value});`);
271
+ }
272
+ }
273
+ emit("");
274
+ }
275
+ emit("COMMIT;");
276
+ emit("");
277
+ // Write the backup file
278
+ mkdirSync(BACKUP_DIR, { recursive: true });
279
+ const backupFile = resolve(BACKUP_DIR, `paperclip-${timestamp()}.sql`);
280
+ await writeFile(backupFile, lines.join("\n"), "utf8");
281
+ const sizeBytes = statSync(backupFile).size;
282
+ const sizeStr = sizeBytes < 1024
283
+ ? `${sizeBytes}B`
284
+ : sizeBytes < 1024 * 1024
285
+ ? `${(sizeBytes / 1024).toFixed(1)}K`
286
+ : `${(sizeBytes / (1024 * 1024)).toFixed(1)}M`;
287
+ console.log(`Backup saved: ${backupFile} (${sizeStr})`);
288
+ pruneOldBackups();
289
+ }
290
+ finally {
291
+ await sql.end();
292
+ }
293
+ }
294
+ main().catch((err) => {
295
+ console.error(err);
296
+ process.exit(1);
297
+ });
298
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import postgres from "postgres";
2
+ import * as schema from "./schema/index.js";
3
+ export type MigrationState = {
4
+ status: "upToDate";
5
+ tableCount: number;
6
+ availableMigrations: string[];
7
+ appliedMigrations: string[];
8
+ } | {
9
+ status: "needsMigrations";
10
+ tableCount: number;
11
+ availableMigrations: string[];
12
+ appliedMigrations: string[];
13
+ pendingMigrations: string[];
14
+ reason: "no-migration-journal-empty-db" | "no-migration-journal-non-empty-db" | "pending-migrations";
15
+ };
16
+ export declare function createDb(url: string): import("drizzle-orm/postgres-js").PostgresJsDatabase<typeof schema> & {
17
+ $client: postgres.Sql<{}>;
18
+ };
19
+ export type MigrationHistoryReconcileResult = {
20
+ repairedMigrations: string[];
21
+ remainingMigrations: string[];
22
+ };
23
+ export declare function reconcilePendingMigrationHistory(url: string): Promise<MigrationHistoryReconcileResult>;
24
+ export declare function inspectMigrations(url: string): Promise<MigrationState>;
25
+ export declare function applyPendingMigrations(url: string): Promise<void>;
26
+ export type MigrationBootstrapResult = {
27
+ migrated: true;
28
+ reason: "migrated-empty-db";
29
+ tableCount: 0;
30
+ } | {
31
+ migrated: false;
32
+ reason: "already-migrated";
33
+ tableCount: number;
34
+ } | {
35
+ migrated: false;
36
+ reason: "not-empty-no-migration-journal";
37
+ tableCount: number;
38
+ };
39
+ export declare function migratePostgresIfEmpty(url: string): Promise<MigrationBootstrapResult>;
40
+ export declare function ensurePostgresDatabase(url: string, databaseName: string): Promise<"created" | "exists">;
41
+ export type Db = ReturnType<typeof createDb>;
42
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AA0B5C,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,GACtG;IACE,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,+BAA+B,GAAG,mCAAmC,GAAG,oBAAoB,CAAC;CACtG,CAAC;AAEN,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM;;EAGnC;AA+ZD,MAAM,MAAM,+BAA+B,GAAG;IAC5C,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,+BAA+B,CAAC,CA2F1C;AAqBD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA0D5E;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCvE;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAC;IAAC,UAAU,EAAE,CAAC,CAAA;CAAE,GAC9D;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,gCAAgC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA+B3F;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,CAiB/B;AAED,MAAM,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC"}