@query-doctor/core 0.8.9 → 0.10.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 (57) hide show
  1. package/dist/index.cjs +21 -1
  2. package/dist/index.d.cts +8 -5
  3. package/dist/index.d.mts +8 -5
  4. package/dist/index.mjs +5 -3
  5. package/dist/optimizer/genalgo.cjs +5 -5
  6. package/dist/optimizer/genalgo.cjs.map +1 -1
  7. package/dist/optimizer/genalgo.d.cts +6 -5
  8. package/dist/optimizer/genalgo.d.cts.map +1 -1
  9. package/dist/optimizer/genalgo.d.mts +6 -5
  10. package/dist/optimizer/genalgo.d.mts.map +1 -1
  11. package/dist/optimizer/genalgo.mjs +5 -5
  12. package/dist/optimizer/genalgo.mjs.map +1 -1
  13. package/dist/optimizer/statistics.cjs +1 -61
  14. package/dist/optimizer/statistics.cjs.map +1 -1
  15. package/dist/optimizer/statistics.d.cts +1 -20
  16. package/dist/optimizer/statistics.d.cts.map +1 -1
  17. package/dist/optimizer/statistics.d.mts +1 -20
  18. package/dist/optimizer/statistics.d.mts.map +1 -1
  19. package/dist/optimizer/statistics.mjs +1 -61
  20. package/dist/optimizer/statistics.mjs.map +1 -1
  21. package/dist/query.cjs +33 -0
  22. package/dist/query.cjs.map +1 -0
  23. package/dist/query.d.cts +105 -0
  24. package/dist/query.d.cts.map +1 -0
  25. package/dist/query.d.mts +105 -0
  26. package/dist/query.d.mts.map +1 -0
  27. package/dist/query.mjs +31 -0
  28. package/dist/query.mjs.map +1 -0
  29. package/dist/schema-dump.cjs +365 -0
  30. package/dist/schema-dump.cjs.map +1 -0
  31. package/dist/schema-dump.mjs +365 -0
  32. package/dist/schema-dump.mjs.map +1 -0
  33. package/dist/schema.cjs +172 -0
  34. package/dist/schema.cjs.map +1 -0
  35. package/dist/schema.d.cts +352 -0
  36. package/dist/schema.d.cts.map +1 -0
  37. package/dist/schema.d.mts +352 -0
  38. package/dist/schema.d.mts.map +1 -0
  39. package/dist/schema.mjs +157 -0
  40. package/dist/schema.mjs.map +1 -0
  41. package/dist/sql/database.d.cts +1 -1
  42. package/dist/sql/database.d.mts +1 -1
  43. package/dist/sql/indexes.cjs +51 -2
  44. package/dist/sql/indexes.cjs.map +1 -1
  45. package/dist/sql/indexes.d.cts +20 -4
  46. package/dist/sql/indexes.d.cts.map +1 -1
  47. package/dist/sql/indexes.d.mts +20 -4
  48. package/dist/sql/indexes.d.mts.map +1 -1
  49. package/dist/sql/indexes.mjs +51 -3
  50. package/dist/sql/indexes.mjs.map +1 -1
  51. package/dist/sql/walker.cjs +1 -1
  52. package/dist/sql/walker.mjs +1 -1
  53. package/dist/websocket-server.d.cts +68 -0
  54. package/dist/websocket-server.d.cts.map +1 -0
  55. package/dist/websocket-server.d.mts +68 -0
  56. package/dist/websocket-server.d.mts.map +1 -0
  57. package/package.json +4 -2
@@ -0,0 +1,365 @@
1
+ "use client";
2
+ //#region src/schema-dump.ts
3
+ const SCHEMA_DUMP_SQL = `WITH all_indexes AS (
4
+ SELECT
5
+ jsonb_strip_nulls(
6
+ jsonb_build_object(
7
+ 'type', 'index',
8
+ 'oid', i.oid::integer,
9
+ 'schemaName', quote_ident(n.nspname),
10
+ 'tableName', quote_ident(t.relname),
11
+ 'indexName', quote_ident(i.relname),
12
+ 'indexType', am.amname,
13
+ 'isUnique', ix.indisunique,
14
+ 'isPrimary', ix.indisprimary,
15
+ 'isClustered', ix.indisclustered,
16
+ 'wherePredicate', pg_get_expr(ix.indpred, t.oid),
17
+ 'tablespace', ts.spcname,
18
+ 'keyColumns', (
19
+ SELECT
20
+ jsonb_agg(
21
+ jsonb_strip_nulls(jsonb_build_object(
22
+ 'type', 'indexColumn',
23
+ 'name',
24
+ pg_get_indexdef(i.oid, k.ordinality, true),
25
+ 'order',
26
+ CASE WHEN (ix.indoption[k.ordinality - 1] & 1) = 1 THEN 'DESC' ELSE 'ASC' END,
27
+ 'nulls',
28
+ CASE
29
+ WHEN (ix.indoption[k.ordinality - 1] & 2) = 2 THEN 'FIRST'
30
+ WHEN (ix.indoption[k.ordinality - 1] & 4) = 4 THEN 'LAST'
31
+ ELSE NULL
32
+ END,
33
+ 'opclass',
34
+ (SELECT opcname FROM pg_opclass WHERE oid = ix.indclass[k.ordinality - 1]),
35
+ 'collation',
36
+ (SELECT collname FROM pg_collation WHERE oid = ix.indcollation[k.ordinality - 1] AND collname <> 'default')
37
+ ))
38
+ ORDER BY k.ordinality
39
+ )
40
+ FROM
41
+ generate_series(1, ix.indnkeyatts) AS k(ordinality)
42
+ ),
43
+ 'includedColumns', (
44
+ CASE WHEN ix.indnatts = ix.indnkeyatts THEN NULL
45
+ ELSE (
46
+ SELECT
47
+ jsonb_agg(
48
+ jsonb_build_object(
49
+ 'type', 'indexColumnIncluded',
50
+ 'name', pg_get_indexdef(i.oid, k.ordinality, true)
51
+ )
52
+ ORDER BY k.ordinality
53
+ )
54
+ FROM
55
+ generate_series(ix.indnkeyatts + 1, ix.indnatts) AS k(ordinality)
56
+ )
57
+ END
58
+ )
59
+ )
60
+ ) AS index_metadata
61
+ FROM
62
+ pg_class t
63
+ JOIN pg_index ix ON t.oid = ix.indrelid
64
+ JOIN pg_class i ON i.oid = ix.indexrelid
65
+ JOIN pg_am am ON i.relam = am.oid
66
+ JOIN pg_namespace n ON t.relnamespace = n.oid
67
+ LEFT JOIN pg_tablespace ts ON i.reltablespace = ts.oid
68
+ WHERE
69
+ n.nspname not like 'pg_%' AND
70
+ n.nspname not like '_timescaledb_%' AND
71
+ t.relispartition = false
72
+ ORDER BY
73
+ n.nspname, t.relname, i.relname
74
+ ),
75
+ all_tables as (
76
+ SELECT
77
+ jsonb_strip_nulls(
78
+ jsonb_build_object(
79
+ 'type', 'table',
80
+ 'oid', c.oid::integer,
81
+ 'schemaName', quote_ident(n.nspname),
82
+ 'tableName', quote_ident(c.relname),
83
+ 'tablespace', quote_ident(ts.spcname),
84
+ 'partitionKeyDef', pg_get_partkeydef(c.oid),
85
+ 'columns', (
86
+ SELECT
87
+ jsonb_agg(
88
+ jsonb_strip_nulls(
89
+ jsonb_build_object(
90
+ 'type', 'column',
91
+ 'name', quote_ident(a.attname),
92
+ 'order', a.attnum,
93
+ 'columnType', format_type(a.atttypid, a.atttypmod),
94
+ 'isNullable', NOT a.attnotnull,
95
+ 'defaultValue', pg_get_expr(ad.adbin, c.oid),
96
+ 'dropped', a.attisdropped,
97
+ 'collation', (
98
+ SELECT quote_ident(coll.collname)
99
+ FROM pg_collation coll
100
+ WHERE a.attcollation = coll.oid AND coll.collname <> 'default'
101
+ ),
102
+ 'storage',
103
+ CASE a.attstorage
104
+ WHEN 'p' THEN 'plain'
105
+ WHEN 'm' THEN 'main'
106
+ WHEN 'e' THEN 'external'
107
+ WHEN 'x' THEN 'extended'
108
+ END,
109
+ 'isIdentity',
110
+ CASE a.attidentity
111
+ WHEN 'a' THEN 'always'
112
+ WHEN 'd' THEN 'by default'
113
+ END
114
+ )
115
+ )
116
+ ORDER BY a.attnum
117
+ )
118
+ FROM
119
+ pg_attribute a
120
+ LEFT JOIN pg_attrdef ad ON a.attrelid = ad.adrelid AND a.attnum = ad.adnum
121
+ WHERE
122
+ a.attrelid = c.oid
123
+ AND a.attnum > 0
124
+ AND NOT a.attisdropped
125
+ )
126
+ )
127
+ ) AS table_metadata
128
+ FROM
129
+ pg_class c
130
+ JOIN pg_namespace n ON c.relnamespace = n.oid
131
+ LEFT JOIN pg_tablespace ts ON c.reltablespace = ts.oid
132
+ WHERE
133
+ n.nspname not like 'pg_%'
134
+ AND n.nspname <> 'information_schema'
135
+ AND c.relkind in ('r', 'm')
136
+ AND c.relispartition = false
137
+ ORDER BY
138
+ n.nspname, c.relname
139
+ ),
140
+ all_constraints as (
141
+ SELECT
142
+ jsonb_strip_nulls(
143
+ jsonb_build_object(
144
+ 'type', 'constraint',
145
+ 'oid', con.oid::integer,
146
+ 'schemaName', quote_ident(n.nspname),
147
+ 'tableName', quote_ident(c.relname),
148
+ 'constraintName', quote_ident(con.conname),
149
+ 'constraintType',
150
+ CASE con.contype
151
+ WHEN 'c' THEN 'check'
152
+ WHEN 'f' THEN 'foreign_key'
153
+ WHEN 'n' THEN 'not_null'
154
+ WHEN 'p' THEN 'primary_key'
155
+ WHEN 'u' THEN 'unique'
156
+ WHEN 't' THEN 'trigger'
157
+ WHEN 'x' THEN 'exclusion'
158
+ ELSE con.contype
159
+ END,
160
+ 'definition', pg_get_constraintdef(con.oid),
161
+ 'isDeferrable', con.condeferrable,
162
+ 'isInitiallyDeferred', con.condeferred,
163
+ 'isValidated', con.convalidated,
164
+ 'backingIndexOid',
165
+ CASE
166
+ WHEN con.conindid = 0 THEN NULL
167
+ ELSE con.conindid::integer
168
+ END
169
+ )
170
+ ) AS constraint_metadata
171
+ FROM
172
+ pg_constraint con
173
+ JOIN pg_class c ON con.conrelid = c.oid
174
+ JOIN pg_namespace n ON c.relnamespace = n.oid
175
+ WHERE
176
+ n.nspname not like 'pg_%'
177
+ and n.nspname <> 'information_schema'
178
+ AND con.conrelid <> 0
179
+ AND c.relispartition = false
180
+ ORDER BY
181
+ n.nspname, c.relname, con.conname
182
+ ),
183
+ all_functions as (
184
+ SELECT
185
+ jsonb_build_object(
186
+ 'type', 'function',
187
+ 'schemaName', quote_ident(n.nspname),
188
+ 'objectName', quote_ident(pro.proname),
189
+ 'objectType',
190
+ CASE pro.prokind
191
+ WHEN 'f' THEN 'function'
192
+ WHEN 'p' THEN 'procedure'
193
+ WHEN 'a' THEN 'aggregate'
194
+ WHEN 'w' THEN 'window function'
195
+ END,
196
+ 'identityArguments', pg_get_function_identity_arguments(pro.oid),
197
+ 'definition', pg_get_functiondef(pro.oid)
198
+ ) AS function_metadata
199
+ FROM
200
+ pg_proc pro
201
+ JOIN pg_namespace n ON pro.pronamespace = n.oid
202
+ LEFT JOIN pg_depend d ON d.objid = pro.oid AND d.deptype = 'e'
203
+ WHERE
204
+ n.nspname not like 'pg_%'
205
+ AND n.nspname <> 'information_schema'
206
+ AND d.objid IS NULL
207
+ AND NOT (pro.proname = 'bit_xor' AND pro.prokind = 'a')
208
+ ORDER BY
209
+ n.nspname, pro.proname, pg_get_function_identity_arguments(pro.oid)
210
+ ),
211
+ all_extensions as (
212
+ SELECT
213
+ jsonb_build_object(
214
+ 'type', 'extension',
215
+ 'extensionName', ext.extname,
216
+ 'version', ext.extversion,
217
+ 'schemaName', quote_ident(n.nspname)
218
+ ) AS extension_metadata
219
+ FROM
220
+ pg_extension ext
221
+ JOIN pg_namespace n ON ext.extnamespace = n.oid
222
+ WHERE
223
+ n.nspname not like 'pg_%'
224
+ AND n.nspname <> 'information_schema'
225
+ ORDER BY
226
+ ext.extname
227
+ ),
228
+ all_views as (
229
+ SELECT
230
+ jsonb_strip_nulls(
231
+ jsonb_build_object(
232
+ 'type', 'view',
233
+ 'schemaName', quote_ident(n.nspname),
234
+ 'viewName', quote_ident(c.relname),
235
+ 'objectType',
236
+ CASE c.relkind
237
+ WHEN 'v' THEN 'view'
238
+ WHEN 'm' THEN 'materialized_view'
239
+ END,
240
+ 'definition', pg_get_viewdef(c.oid),
241
+ 'tablespace', ts.spcname
242
+ )
243
+ ) AS view_metadata
244
+ FROM
245
+ pg_class c
246
+ JOIN pg_namespace n ON c.relnamespace = n.oid
247
+ LEFT JOIN pg_tablespace ts ON c.reltablespace = ts.oid
248
+ WHERE
249
+ n.nspname not like 'pg_%'
250
+ AND n.nspname <> 'information_schema'
251
+ AND n.nspname <> 'timescaledb_information'
252
+ AND n.nspname not like '_timescaledb_%'
253
+ AND c.relkind IN ('v', 'm')
254
+ ORDER BY
255
+ n.nspname, c.relname
256
+ ),
257
+ all_types as (
258
+ SELECT
259
+ jsonb_strip_nulls(
260
+ jsonb_build_object(
261
+ 'type', 'type',
262
+ 'schemaName', quote_ident(n.nspname),
263
+ 'typeName', quote_ident(t.typname),
264
+ 'typeCategory',
265
+ CASE t.typtype
266
+ WHEN 'e' THEN 'enum'
267
+ WHEN 'd' THEN 'domain'
268
+ WHEN 'c' THEN 'composite'
269
+ END,
270
+ 'enumLabels', (
271
+ CASE WHEN t.typtype = 'e' THEN (
272
+ SELECT jsonb_agg(e.enumlabel ORDER BY e.enumsortorder)
273
+ FROM pg_enum e
274
+ WHERE e.enumtypid = t.oid
275
+ ) ELSE NULL END
276
+ ),
277
+ 'domainBaseType', (
278
+ CASE WHEN t.typtype = 'd' THEN format_type(t.typbasetype, t.typtypmod) ELSE NULL END
279
+ ),
280
+ 'domainIsNotNull', (
281
+ CASE WHEN t.typtype = 'd' THEN t.typnotnull ELSE NULL END
282
+ ),
283
+ 'domainDefault', (
284
+ CASE WHEN t.typtype = 'd' THEN t.typdefault ELSE NULL END
285
+ ),
286
+ 'domainConstraints', (
287
+ CASE WHEN t.typtype = 'd' THEN (
288
+ SELECT jsonb_agg(jsonb_build_object('name', quote_ident(con.conname), 'definition', pg_get_constraintdef(con.oid)) ORDER BY con.conname)
289
+ FROM pg_constraint con
290
+ WHERE con.contypid = t.oid
291
+ ) ELSE NULL END
292
+ ),
293
+ 'compositeAttributes', (
294
+ CASE WHEN t.typtype = 'c' THEN (
295
+ SELECT jsonb_agg(
296
+ jsonb_strip_nulls(jsonb_build_object(
297
+ 'type', 'compositeAttribute',
298
+ 'name', quote_ident(a.attname),
299
+ 'attributeType', format_type(a.atttypid, a.atttypmod),
300
+ 'collation', (SELECT coll.collname FROM pg_collation coll WHERE a.attcollation = coll.oid AND coll.collname <> 'default')
301
+ ))
302
+ ORDER BY a.attnum
303
+ )
304
+ FROM pg_attribute a
305
+ WHERE a.attrelid = t.typrelid AND a.attnum > 0 AND NOT a.attisdropped
306
+ ) ELSE NULL END
307
+ )
308
+ )
309
+ ) AS type_metadata
310
+ FROM
311
+ pg_type t
312
+ JOIN pg_namespace n ON t.typnamespace = n.oid
313
+ LEFT JOIN pg_depend d ON d.objid = t.oid AND d.deptype = 'e'
314
+ WHERE
315
+ n.nspname not like 'pg_%'
316
+ AND n.nspname <> 'information_schema'
317
+ AND t.typtype IN ('e', 'd', 'c')
318
+ AND d.objid IS NULL
319
+ AND (t.typrelid = 0 OR (SELECT c.relkind FROM pg_class c WHERE c.oid = t.typrelid) not in ('r', 'v', 'w'))
320
+ ORDER BY
321
+ n.nspname, t.typname
322
+ ),
323
+ all_triggers as (
324
+ SELECT
325
+ jsonb_strip_nulls(
326
+ jsonb_build_object(
327
+ 'type', 'trigger',
328
+ 'schemaName', quote_ident(n.nspname),
329
+ 'tableName', quote_ident(c.relname),
330
+ 'triggerName', quote_ident(t.tgname),
331
+ 'definition', pg_get_triggerdef(t.oid),
332
+ 'enabledMode', t.tgenabled
333
+ )
334
+ ) AS trigger_metadata
335
+ FROM
336
+ pg_trigger t
337
+ JOIN pg_class c ON t.tgrelid = c.oid
338
+ JOIN pg_namespace n ON c.relnamespace = n.oid
339
+ LEFT JOIN pg_depend d ON d.objid = t.oid AND d.deptype = 'e'
340
+ WHERE
341
+ n.nspname not like 'pg_%'
342
+ AND n.nspname <> 'information_schema'
343
+ AND t.tgisinternal = false
344
+ AND d.objid IS NULL
345
+ AND c.relispartition = false
346
+ ORDER BY
347
+ n.nspname, c.relname, t.tgname
348
+ )
349
+ SELECT
350
+ jsonb_strip_nulls(
351
+ jsonb_build_object(
352
+ 'indexes', (select jsonb_agg(all_indexes.index_metadata) from all_indexes),
353
+ 'tables', (select jsonb_agg(all_tables.table_metadata) from all_tables),
354
+ 'constraints', (select jsonb_agg(all_constraints.constraint_metadata) from all_constraints),
355
+ 'functions', (select jsonb_agg(all_functions.function_metadata) from all_functions),
356
+ 'extensions', (select jsonb_agg(all_extensions.extension_metadata) from all_extensions),
357
+ 'views', (select jsonb_agg(all_views.view_metadata) from all_views),
358
+ 'types', (select jsonb_agg(all_types.type_metadata) from all_types),
359
+ 'triggers', (select jsonb_agg(all_triggers.trigger_metadata) from all_triggers)
360
+ )
361
+ ) as result; -- @qd_introspection`;
362
+ //#endregion
363
+ export { SCHEMA_DUMP_SQL };
364
+
365
+ //# sourceMappingURL=schema-dump.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-dump.mjs","names":[],"sources":["../src/schema-dump.ts"],"sourcesContent":["export const SCHEMA_DUMP_SQL = `WITH all_indexes AS (\n SELECT\n jsonb_strip_nulls(\n jsonb_build_object(\n 'type', 'index',\n 'oid', i.oid::integer,\n 'schemaName', quote_ident(n.nspname),\n 'tableName', quote_ident(t.relname),\n 'indexName', quote_ident(i.relname),\n 'indexType', am.amname,\n 'isUnique', ix.indisunique,\n 'isPrimary', ix.indisprimary,\n 'isClustered', ix.indisclustered,\n 'wherePredicate', pg_get_expr(ix.indpred, t.oid),\n 'tablespace', ts.spcname,\n 'keyColumns', (\n SELECT\n jsonb_agg(\n jsonb_strip_nulls(jsonb_build_object(\n 'type', 'indexColumn',\n 'name',\n pg_get_indexdef(i.oid, k.ordinality, true),\n 'order',\n CASE WHEN (ix.indoption[k.ordinality - 1] & 1) = 1 THEN 'DESC' ELSE 'ASC' END,\n 'nulls',\n CASE\n WHEN (ix.indoption[k.ordinality - 1] & 2) = 2 THEN 'FIRST'\n WHEN (ix.indoption[k.ordinality - 1] & 4) = 4 THEN 'LAST'\n ELSE NULL\n END,\n 'opclass',\n (SELECT opcname FROM pg_opclass WHERE oid = ix.indclass[k.ordinality - 1]),\n 'collation',\n (SELECT collname FROM pg_collation WHERE oid = ix.indcollation[k.ordinality - 1] AND collname <> 'default')\n ))\n ORDER BY k.ordinality\n )\n FROM\n generate_series(1, ix.indnkeyatts) AS k(ordinality)\n ),\n 'includedColumns', (\n CASE WHEN ix.indnatts = ix.indnkeyatts THEN NULL\n ELSE (\n SELECT\n jsonb_agg(\n jsonb_build_object(\n 'type', 'indexColumnIncluded',\n 'name', pg_get_indexdef(i.oid, k.ordinality, true)\n )\n ORDER BY k.ordinality\n )\n FROM\n generate_series(ix.indnkeyatts + 1, ix.indnatts) AS k(ordinality)\n )\n END\n )\n )\n ) AS index_metadata\n FROM\n pg_class t\n JOIN pg_index ix ON t.oid = ix.indrelid\n JOIN pg_class i ON i.oid = ix.indexrelid\n JOIN pg_am am ON i.relam = am.oid\n JOIN pg_namespace n ON t.relnamespace = n.oid\n LEFT JOIN pg_tablespace ts ON i.reltablespace = ts.oid\n WHERE\n n.nspname not like 'pg_%' AND\n n.nspname not like '_timescaledb_%' AND\n t.relispartition = false\n ORDER BY\n n.nspname, t.relname, i.relname\n),\nall_tables as (\nSELECT\n jsonb_strip_nulls(\n jsonb_build_object(\n 'type', 'table',\n 'oid', c.oid::integer,\n 'schemaName', quote_ident(n.nspname),\n 'tableName', quote_ident(c.relname),\n 'tablespace', quote_ident(ts.spcname),\n 'partitionKeyDef', pg_get_partkeydef(c.oid),\n 'columns', (\n SELECT\n jsonb_agg(\n jsonb_strip_nulls(\n jsonb_build_object(\n 'type', 'column',\n 'name', quote_ident(a.attname),\n 'order', a.attnum,\n 'columnType', format_type(a.atttypid, a.atttypmod),\n 'isNullable', NOT a.attnotnull,\n 'defaultValue', pg_get_expr(ad.adbin, c.oid),\n 'dropped', a.attisdropped,\n 'collation', (\n SELECT quote_ident(coll.collname)\n FROM pg_collation coll\n WHERE a.attcollation = coll.oid AND coll.collname <> 'default'\n ),\n 'storage',\n CASE a.attstorage\n WHEN 'p' THEN 'plain'\n WHEN 'm' THEN 'main'\n WHEN 'e' THEN 'external'\n WHEN 'x' THEN 'extended'\n END,\n 'isIdentity',\n CASE a.attidentity\n WHEN 'a' THEN 'always'\n WHEN 'd' THEN 'by default'\n END\n )\n )\n ORDER BY a.attnum\n )\n FROM\n pg_attribute a\n LEFT JOIN pg_attrdef ad ON a.attrelid = ad.adrelid AND a.attnum = ad.adnum\n WHERE\n a.attrelid = c.oid\n AND a.attnum > 0\n AND NOT a.attisdropped\n )\n )\n ) AS table_metadata\nFROM\n pg_class c\n JOIN pg_namespace n ON c.relnamespace = n.oid\n LEFT JOIN pg_tablespace ts ON c.reltablespace = ts.oid\nWHERE\n n.nspname not like 'pg_%'\n AND n.nspname <> 'information_schema'\n AND c.relkind in ('r', 'm')\n AND c.relispartition = false\nORDER BY\n n.nspname, c.relname\n),\nall_constraints as (\nSELECT\n jsonb_strip_nulls(\n jsonb_build_object(\n 'type', 'constraint',\n 'oid', con.oid::integer,\n 'schemaName', quote_ident(n.nspname),\n 'tableName', quote_ident(c.relname),\n 'constraintName', quote_ident(con.conname),\n 'constraintType',\n CASE con.contype\n WHEN 'c' THEN 'check'\n WHEN 'f' THEN 'foreign_key'\n WHEN 'n' THEN 'not_null'\n WHEN 'p' THEN 'primary_key'\n WHEN 'u' THEN 'unique'\n WHEN 't' THEN 'trigger'\n WHEN 'x' THEN 'exclusion'\n ELSE con.contype\n END,\n 'definition', pg_get_constraintdef(con.oid),\n 'isDeferrable', con.condeferrable,\n 'isInitiallyDeferred', con.condeferred,\n 'isValidated', con.convalidated,\n 'backingIndexOid',\n CASE\n WHEN con.conindid = 0 THEN NULL\n ELSE con.conindid::integer\n END\n )\n ) AS constraint_metadata\nFROM\n pg_constraint con\n JOIN pg_class c ON con.conrelid = c.oid\n JOIN pg_namespace n ON c.relnamespace = n.oid\nWHERE\n n.nspname not like 'pg_%'\n and n.nspname <> 'information_schema'\n AND con.conrelid <> 0\n AND c.relispartition = false\nORDER BY\n n.nspname, c.relname, con.conname\n),\nall_functions as (\n SELECT\n jsonb_build_object(\n 'type', 'function',\n 'schemaName', quote_ident(n.nspname),\n 'objectName', quote_ident(pro.proname),\n 'objectType',\n CASE pro.prokind\n WHEN 'f' THEN 'function'\n WHEN 'p' THEN 'procedure'\n WHEN 'a' THEN 'aggregate'\n WHEN 'w' THEN 'window function'\n END,\n 'identityArguments', pg_get_function_identity_arguments(pro.oid),\n 'definition', pg_get_functiondef(pro.oid)\n ) AS function_metadata\n FROM\n pg_proc pro\n JOIN pg_namespace n ON pro.pronamespace = n.oid\n LEFT JOIN pg_depend d ON d.objid = pro.oid AND d.deptype = 'e'\n WHERE\n n.nspname not like 'pg_%'\n AND n.nspname <> 'information_schema'\n AND d.objid IS NULL\n AND NOT (pro.proname = 'bit_xor' AND pro.prokind = 'a')\n ORDER BY\n n.nspname, pro.proname, pg_get_function_identity_arguments(pro.oid)\n),\nall_extensions as (\n SELECT\n jsonb_build_object(\n 'type', 'extension',\n 'extensionName', ext.extname,\n 'version', ext.extversion,\n 'schemaName', quote_ident(n.nspname)\n ) AS extension_metadata\n FROM\n pg_extension ext\n JOIN pg_namespace n ON ext.extnamespace = n.oid\n WHERE\n n.nspname not like 'pg_%'\n AND n.nspname <> 'information_schema'\n ORDER BY\n ext.extname\n),\nall_views as (\n SELECT\n jsonb_strip_nulls(\n jsonb_build_object(\n 'type', 'view',\n 'schemaName', quote_ident(n.nspname),\n 'viewName', quote_ident(c.relname),\n 'objectType',\n CASE c.relkind\n WHEN 'v' THEN 'view'\n WHEN 'm' THEN 'materialized_view'\n END,\n 'definition', pg_get_viewdef(c.oid),\n 'tablespace', ts.spcname\n )\n ) AS view_metadata\n FROM\n pg_class c\n JOIN pg_namespace n ON c.relnamespace = n.oid\n LEFT JOIN pg_tablespace ts ON c.reltablespace = ts.oid\n WHERE\n n.nspname not like 'pg_%'\n AND n.nspname <> 'information_schema'\n AND n.nspname <> 'timescaledb_information'\n AND n.nspname not like '_timescaledb_%'\n AND c.relkind IN ('v', 'm')\n ORDER BY\n n.nspname, c.relname\n),\nall_types as (\n SELECT\n jsonb_strip_nulls(\n jsonb_build_object(\n 'type', 'type',\n 'schemaName', quote_ident(n.nspname),\n 'typeName', quote_ident(t.typname),\n 'typeCategory',\n CASE t.typtype\n WHEN 'e' THEN 'enum'\n WHEN 'd' THEN 'domain'\n WHEN 'c' THEN 'composite'\n END,\n 'enumLabels', (\n CASE WHEN t.typtype = 'e' THEN (\n SELECT jsonb_agg(e.enumlabel ORDER BY e.enumsortorder)\n FROM pg_enum e\n WHERE e.enumtypid = t.oid\n ) ELSE NULL END\n ),\n 'domainBaseType', (\n CASE WHEN t.typtype = 'd' THEN format_type(t.typbasetype, t.typtypmod) ELSE NULL END\n ),\n 'domainIsNotNull', (\n CASE WHEN t.typtype = 'd' THEN t.typnotnull ELSE NULL END\n ),\n 'domainDefault', (\n CASE WHEN t.typtype = 'd' THEN t.typdefault ELSE NULL END\n ),\n 'domainConstraints', (\n CASE WHEN t.typtype = 'd' THEN (\n SELECT jsonb_agg(jsonb_build_object('name', quote_ident(con.conname), 'definition', pg_get_constraintdef(con.oid)) ORDER BY con.conname)\n FROM pg_constraint con\n WHERE con.contypid = t.oid\n ) ELSE NULL END\n ),\n 'compositeAttributes', (\n CASE WHEN t.typtype = 'c' THEN (\n SELECT jsonb_agg(\n jsonb_strip_nulls(jsonb_build_object(\n 'type', 'compositeAttribute',\n 'name', quote_ident(a.attname),\n 'attributeType', format_type(a.atttypid, a.atttypmod),\n 'collation', (SELECT coll.collname FROM pg_collation coll WHERE a.attcollation = coll.oid AND coll.collname <> 'default')\n ))\n ORDER BY a.attnum\n )\n FROM pg_attribute a\n WHERE a.attrelid = t.typrelid AND a.attnum > 0 AND NOT a.attisdropped\n ) ELSE NULL END\n )\n )\n ) AS type_metadata\n FROM\n pg_type t\n JOIN pg_namespace n ON t.typnamespace = n.oid\n LEFT JOIN pg_depend d ON d.objid = t.oid AND d.deptype = 'e'\n WHERE\n n.nspname not like 'pg_%'\n AND n.nspname <> 'information_schema'\n AND t.typtype IN ('e', 'd', 'c')\n AND d.objid IS NULL\n AND (t.typrelid = 0 OR (SELECT c.relkind FROM pg_class c WHERE c.oid = t.typrelid) not in ('r', 'v', 'w'))\n ORDER BY\n n.nspname, t.typname\n),\nall_triggers as (\n SELECT\n jsonb_strip_nulls(\n jsonb_build_object(\n 'type', 'trigger',\n 'schemaName', quote_ident(n.nspname),\n 'tableName', quote_ident(c.relname),\n 'triggerName', quote_ident(t.tgname),\n 'definition', pg_get_triggerdef(t.oid),\n 'enabledMode', t.tgenabled\n )\n ) AS trigger_metadata\n FROM\n pg_trigger t\n JOIN pg_class c ON t.tgrelid = c.oid\n JOIN pg_namespace n ON c.relnamespace = n.oid\n LEFT JOIN pg_depend d ON d.objid = t.oid AND d.deptype = 'e'\n WHERE\n n.nspname not like 'pg_%'\n AND n.nspname <> 'information_schema'\n AND t.tgisinternal = false\n AND d.objid IS NULL\n AND c.relispartition = false\n ORDER BY\n n.nspname, c.relname, t.tgname\n)\nSELECT\njsonb_strip_nulls(\n jsonb_build_object(\n 'indexes', (select jsonb_agg(all_indexes.index_metadata) from all_indexes),\n 'tables', (select jsonb_agg(all_tables.table_metadata) from all_tables),\n 'constraints', (select jsonb_agg(all_constraints.constraint_metadata) from all_constraints),\n 'functions', (select jsonb_agg(all_functions.function_metadata) from all_functions),\n 'extensions', (select jsonb_agg(all_extensions.extension_metadata) from all_extensions),\n 'views', (select jsonb_agg(all_views.view_metadata) from all_views),\n 'types', (select jsonb_agg(all_types.type_metadata) from all_types),\n 'triggers', (select jsonb_agg(all_triggers.trigger_metadata) from all_triggers)\n )\n) as result; -- @qd_introspection`;\n"],"mappings":";;AAAA,MAAa,kBAAkB"}
@@ -0,0 +1,172 @@
1
+ "use client";
2
+ require("./_virtual/_rolldown/runtime.cjs");
3
+ const require_schema_dump = require("./schema-dump.cjs");
4
+ const require_pg_identifier = require("./sql/pg-identifier.cjs");
5
+ let zod = require("zod");
6
+ //#region src/schema.ts
7
+ const Identifier = zod.z.codec(zod.z.string(), zod.z.custom(), {
8
+ encode: (v) => v.toString(),
9
+ decode: (v) => require_pg_identifier.PgIdentifier.fromString(v)
10
+ });
11
+ const FullSchemaKeyColumn = zod.z.object({
12
+ type: zod.z.literal("indexColumn"),
13
+ name: Identifier,
14
+ order: zod.z.enum(["ASC", "DESC"]).optional(),
15
+ nulls: zod.z.enum(["FIRST", "LAST"]).optional(),
16
+ opclass: zod.z.string().optional(),
17
+ collation: zod.z.string().optional()
18
+ });
19
+ const FullSchemaIncludedColumn = zod.z.object({ name: Identifier });
20
+ const FullSchemaIndex = zod.z.object({
21
+ type: zod.z.literal("index"),
22
+ oid: zod.z.number(),
23
+ schemaName: Identifier,
24
+ tableName: Identifier,
25
+ indexName: Identifier,
26
+ indexType: zod.z.string(),
27
+ isUnique: zod.z.boolean(),
28
+ isPrimary: zod.z.boolean(),
29
+ isClustered: zod.z.boolean(),
30
+ wherePredicate: zod.z.string().optional(),
31
+ tablespace: zod.z.string().optional(),
32
+ keyColumns: zod.z.array(FullSchemaKeyColumn),
33
+ includedColumns: zod.z.array(FullSchemaIncludedColumn).optional()
34
+ });
35
+ const FullSchemaColumn = zod.z.object({
36
+ type: zod.z.literal("column"),
37
+ name: Identifier,
38
+ order: zod.z.number(),
39
+ columnType: zod.z.string(),
40
+ isNullable: zod.z.boolean(),
41
+ defaultValue: zod.z.string().optional(),
42
+ dropped: zod.z.boolean(),
43
+ collation: zod.z.string().optional(),
44
+ storage: zod.z.enum([
45
+ "plain",
46
+ "main",
47
+ "external",
48
+ "extended"
49
+ ]).optional(),
50
+ isIdentity: zod.z.enum(["always", "by default"]).optional()
51
+ });
52
+ const FullSchemaTable = zod.z.object({
53
+ type: zod.z.literal("table"),
54
+ oid: zod.z.number(),
55
+ schemaName: Identifier,
56
+ tableName: Identifier,
57
+ tablespace: zod.z.string().optional(),
58
+ partitionKeyDef: zod.z.string().optional(),
59
+ columns: zod.z.array(FullSchemaColumn).default([])
60
+ });
61
+ const FullSchemaConstraint = zod.z.object({
62
+ type: zod.z.literal("constraint"),
63
+ oid: zod.z.number(),
64
+ schemaName: Identifier,
65
+ tableName: Identifier,
66
+ constraintName: Identifier,
67
+ constraintType: zod.z.enum([
68
+ "check",
69
+ "foreign_key",
70
+ "not_null",
71
+ "primary_key",
72
+ "unique",
73
+ "trigger",
74
+ "exclusion"
75
+ ]).or(zod.z.string()),
76
+ definition: zod.z.string(),
77
+ isDeferrable: zod.z.boolean().optional(),
78
+ isInitiallyDeferred: zod.z.boolean().optional(),
79
+ isValidated: zod.z.boolean().optional(),
80
+ backingIndexOid: zod.z.number().optional()
81
+ });
82
+ const FullSchemaFunction = zod.z.object({
83
+ type: zod.z.literal("function"),
84
+ schemaName: Identifier,
85
+ objectName: Identifier,
86
+ objectType: zod.z.enum([
87
+ "function",
88
+ "procedure",
89
+ "aggregate",
90
+ "window function"
91
+ ]),
92
+ identityArguments: zod.z.string().optional(),
93
+ definition: zod.z.string()
94
+ });
95
+ const FullSchemaExtension = zod.z.object({
96
+ extensionName: zod.z.string(),
97
+ version: zod.z.string(),
98
+ schemaName: Identifier
99
+ });
100
+ const FullSchemaView = zod.z.object({
101
+ type: zod.z.literal("view"),
102
+ schemaName: Identifier,
103
+ viewName: Identifier,
104
+ objectType: zod.z.enum(["view", "materialized_view"]),
105
+ definition: zod.z.string(),
106
+ tablespace: zod.z.string().optional()
107
+ });
108
+ const FullSchemaTypeConstraint = zod.z.object({
109
+ name: Identifier,
110
+ definition: zod.z.string()
111
+ });
112
+ const FullSchemaCompositeAttribute = zod.z.object({
113
+ type: zod.z.literal("compositeAttribute"),
114
+ name: Identifier,
115
+ attributeType: zod.z.string(),
116
+ collation: Identifier.optional()
117
+ });
118
+ const FullSchemaType = zod.z.object({
119
+ type: zod.z.literal("type"),
120
+ schemaName: Identifier,
121
+ typeName: Identifier,
122
+ typeCategory: zod.z.enum([
123
+ "enum",
124
+ "domain",
125
+ "composite"
126
+ ]),
127
+ enumLabels: zod.z.array(zod.z.string()).optional(),
128
+ domainBaseType: zod.z.string().optional(),
129
+ domainIsNotNull: zod.z.boolean().optional(),
130
+ domainDefault: zod.z.string().optional(),
131
+ domainConstraints: zod.z.array(FullSchemaTypeConstraint).optional(),
132
+ compositeAttributes: zod.z.array(FullSchemaCompositeAttribute).optional()
133
+ });
134
+ const FullSchemaTrigger = zod.z.object({
135
+ schemaName: Identifier,
136
+ tableName: Identifier,
137
+ triggerName: Identifier,
138
+ definition: zod.z.string(),
139
+ enabledMode: zod.z.string()
140
+ });
141
+ const FullSchema = zod.z.object({
142
+ indexes: zod.z.array(FullSchemaIndex).default([]),
143
+ tables: zod.z.array(FullSchemaTable).default([]),
144
+ constraints: zod.z.array(FullSchemaConstraint).default([]),
145
+ functions: zod.z.array(FullSchemaFunction).default([]),
146
+ extensions: zod.z.array(FullSchemaExtension).default([]),
147
+ views: zod.z.array(FullSchemaView).default([]),
148
+ types: zod.z.array(FullSchemaType).default([]),
149
+ triggers: zod.z.array(FullSchemaTrigger).default([])
150
+ });
151
+ async function dumpSchema(db) {
152
+ const rows = await db.exec(require_schema_dump.SCHEMA_DUMP_SQL);
153
+ return FullSchema.parse(rows[0]?.result ?? {});
154
+ }
155
+ //#endregion
156
+ exports.FullSchema = FullSchema;
157
+ exports.FullSchemaColumn = FullSchemaColumn;
158
+ exports.FullSchemaCompositeAttribute = FullSchemaCompositeAttribute;
159
+ exports.FullSchemaConstraint = FullSchemaConstraint;
160
+ exports.FullSchemaExtension = FullSchemaExtension;
161
+ exports.FullSchemaFunction = FullSchemaFunction;
162
+ exports.FullSchemaIncludedColumn = FullSchemaIncludedColumn;
163
+ exports.FullSchemaIndex = FullSchemaIndex;
164
+ exports.FullSchemaKeyColumn = FullSchemaKeyColumn;
165
+ exports.FullSchemaTable = FullSchemaTable;
166
+ exports.FullSchemaTrigger = FullSchemaTrigger;
167
+ exports.FullSchemaType = FullSchemaType;
168
+ exports.FullSchemaTypeConstraint = FullSchemaTypeConstraint;
169
+ exports.FullSchemaView = FullSchemaView;
170
+ exports.dumpSchema = dumpSchema;
171
+
172
+ //# sourceMappingURL=schema.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.cjs","names":["z","PgIdentifier","SCHEMA_DUMP_SQL"],"sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { SCHEMA_DUMP_SQL } from \"./schema-dump.js\";\nimport type { Postgres } from \"./sql/database.js\";\nimport { PgIdentifier } from \"./sql/pg-identifier.js\";\n\nconst Identifier = z.codec(z.string(), z.custom<PgIdentifier>(), {\n encode: (v) => v.toString(),\n decode: (v) => PgIdentifier.fromString(v),\n});\n\nexport const FullSchemaKeyColumn = z.object({\n type: z.literal(\"indexColumn\"),\n name: Identifier,\n order: z.enum([\"ASC\", \"DESC\"]).optional(),\n nulls: z.enum([\"FIRST\", \"LAST\"]).optional(),\n opclass: z.string().optional(),\n collation: z.string().optional(),\n});\n\nexport type FullSchemaKeyColumn = z.infer<typeof FullSchemaKeyColumn>;\n\nexport const FullSchemaIncludedColumn = z.object({\n name: Identifier,\n});\n\nexport type FullSchemaIncludedColumn = z.infer<typeof FullSchemaIncludedColumn>;\n\nexport const FullSchemaIndex = z.object({\n type: z.literal(\"index\"),\n oid: z.number(),\n schemaName: Identifier,\n tableName: Identifier,\n indexName: Identifier,\n indexType: z.string(),\n isUnique: z.boolean(),\n isPrimary: z.boolean(),\n isClustered: z.boolean(),\n wherePredicate: z.string().optional(),\n tablespace: z.string().optional(),\n keyColumns: z.array(FullSchemaKeyColumn),\n includedColumns: z.array(FullSchemaIncludedColumn).optional(),\n});\n\nexport type FullSchemaIndex = z.infer<typeof FullSchemaIndex>;\n\nexport const FullSchemaColumn = z.object({\n type: z.literal(\"column\"),\n name: Identifier,\n order: z.number(),\n columnType: z.string(),\n isNullable: z.boolean(),\n defaultValue: z.string().optional(),\n dropped: z.boolean(),\n collation: z.string().optional(),\n storage: z.enum([\"plain\", \"main\", \"external\", \"extended\"]).optional(),\n isIdentity: z.enum([\"always\", \"by default\"]).optional(),\n});\n\nexport type FullSchemaColumn = z.infer<typeof FullSchemaColumn>;\n\nexport const FullSchemaTable = z.object({\n type: z.literal(\"table\"),\n oid: z.number(),\n schemaName: Identifier,\n tableName: Identifier,\n tablespace: z.string().optional(),\n partitionKeyDef: z.string().optional(),\n columns: z.array(FullSchemaColumn).default([]),\n});\n\nexport type FullSchemaTable = z.infer<typeof FullSchemaTable>;\n\nexport const FullSchemaConstraint = z.object({\n type: z.literal(\"constraint\"),\n oid: z.number(),\n schemaName: Identifier,\n tableName: Identifier,\n constraintName: Identifier,\n constraintType: z\n .enum([\n \"check\",\n \"foreign_key\",\n \"not_null\",\n \"primary_key\",\n \"unique\",\n \"trigger\",\n \"exclusion\",\n ])\n .or(z.string()),\n definition: z.string(),\n isDeferrable: z.boolean().optional(),\n isInitiallyDeferred: z.boolean().optional(),\n isValidated: z.boolean().optional(),\n backingIndexOid: z.number().optional(),\n});\n\nexport type FullSchemaConstraint = z.infer<typeof FullSchemaConstraint>;\n\nexport const FullSchemaFunction = z.object({\n type: z.literal(\"function\"),\n schemaName: Identifier,\n objectName: Identifier,\n objectType: z.enum([\"function\", \"procedure\", \"aggregate\", \"window function\"]),\n identityArguments: z.string().optional(),\n definition: z.string(),\n});\n\nexport type FullSchemaFunction = z.infer<typeof FullSchemaFunction>;\n\nexport const FullSchemaExtension = z.object({\n extensionName: z.string(),\n version: z.string(),\n schemaName: Identifier,\n});\n\nexport type FullSchemaExtension = z.infer<typeof FullSchemaExtension>;\n\nexport const FullSchemaView = z.object({\n type: z.literal(\"view\"),\n schemaName: Identifier,\n viewName: Identifier,\n objectType: z.enum([\"view\", \"materialized_view\"]),\n definition: z.string(),\n tablespace: z.string().optional(),\n});\n\nexport type FullSchemaView = z.infer<typeof FullSchemaView>;\n\nexport const FullSchemaTypeConstraint = z.object({\n name: Identifier,\n definition: z.string(),\n});\n\nexport type FullSchemaTypeConstraint = z.infer<typeof FullSchemaTypeConstraint>;\n\nexport const FullSchemaCompositeAttribute = z.object({\n type: z.literal(\"compositeAttribute\"),\n name: Identifier,\n attributeType: z.string(),\n collation: Identifier.optional(),\n});\n\nexport type FullSchemaCompositeAttribute = z.infer<\n typeof FullSchemaCompositeAttribute\n>;\n\nexport const FullSchemaType = z.object({\n type: z.literal(\"type\"),\n schemaName: Identifier,\n typeName: Identifier,\n typeCategory: z.enum([\"enum\", \"domain\", \"composite\"]),\n enumLabels: z.array(z.string()).optional(),\n domainBaseType: z.string().optional(),\n domainIsNotNull: z.boolean().optional(),\n domainDefault: z.string().optional(),\n domainConstraints: z.array(FullSchemaTypeConstraint).optional(),\n compositeAttributes: z.array(FullSchemaCompositeAttribute).optional(),\n});\n\nexport type FullSchemaType = z.infer<typeof FullSchemaType>;\n\nexport const FullSchemaTrigger = z.object({\n schemaName: Identifier,\n tableName: Identifier,\n triggerName: Identifier,\n definition: z.string(),\n enabledMode: z.string(),\n});\n\nexport type FullSchemaTrigger = z.infer<typeof FullSchemaTrigger>;\n\nexport const FullSchema = z.object({\n indexes: z.array(FullSchemaIndex).default([]),\n tables: z.array(FullSchemaTable).default([]),\n constraints: z.array(FullSchemaConstraint).default([]),\n functions: z.array(FullSchemaFunction).default([]),\n extensions: z.array(FullSchemaExtension).default([]),\n views: z.array(FullSchemaView).default([]),\n types: z.array(FullSchemaType).default([]),\n triggers: z.array(FullSchemaTrigger).default([]),\n});\n\nexport type FullSchema = z.infer<typeof FullSchema>;\n\nexport async function dumpSchema(db: Postgres): Promise<FullSchema> {\n const rows = await db.exec<{ result: FullSchema }>(SCHEMA_DUMP_SQL);\n return FullSchema.parse(rows[0]?.result ?? {});\n}\n"],"mappings":"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"}