dbctx 1.0.3 → 1.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 (119) hide show
  1. package/dist/app/assemble.d.mts +5 -0
  2. package/dist/app/assemble.d.mts.map +1 -0
  3. package/dist/app/assemble.mjs +161 -0
  4. package/dist/app/config.d.mts +9 -0
  5. package/dist/app/config.d.mts.map +1 -0
  6. package/dist/app/config.mjs +49 -0
  7. package/dist/app/db.d.mts +9 -0
  8. package/dist/app/db.d.mts.map +1 -0
  9. package/dist/app/db.mjs +181 -0
  10. package/dist/app/detect.d.mts +11 -0
  11. package/dist/app/detect.d.mts.map +1 -0
  12. package/dist/app/detect.mjs +105 -0
  13. package/dist/app/index.d.mts +3 -0
  14. package/dist/app/index.d.mts.map +1 -0
  15. package/dist/app/index.mjs +81 -0
  16. package/dist/app/open-url.d.mts +4 -0
  17. package/dist/app/open-url.d.mts.map +1 -0
  18. package/dist/app/open-url.mjs +27 -0
  19. package/dist/app/session.d.mts +8 -0
  20. package/dist/app/session.d.mts.map +1 -0
  21. package/dist/app/session.mjs +155 -0
  22. package/dist/app/ssh.d.mts +3 -0
  23. package/dist/app/ssh.d.mts.map +1 -0
  24. package/dist/app/ssh.mjs +207 -0
  25. package/dist/db/analyze.d.mts +1 -1
  26. package/dist/db/analyze.d.mts.map +1 -1
  27. package/dist/db/analyze.mjs +1 -1
  28. package/dist/db/attributes.d.mts +3 -3
  29. package/dist/db/attributes.d.mts.map +1 -1
  30. package/dist/db/attributes.mjs +2 -2
  31. package/dist/db/enums.d.mts +1 -1
  32. package/dist/db/enums.d.mts.map +1 -1
  33. package/dist/db/enums.mjs +2 -2
  34. package/dist/db/file-stats.d.mts +1 -1
  35. package/dist/db/file-stats.d.mts.map +1 -1
  36. package/dist/db/file-stats.mjs +1 -1
  37. package/dist/db/foreign-keys.d.mts +2 -2
  38. package/dist/db/foreign-keys.d.mts.map +1 -1
  39. package/dist/db/foreign-keys.mjs +1 -1
  40. package/dist/db/index.d.mts +9 -9
  41. package/dist/db/index.d.mts.map +1 -1
  42. package/dist/db/index.mjs +10 -10
  43. package/dist/db/indexes.d.mts +1 -1
  44. package/dist/db/indexes.d.mts.map +1 -1
  45. package/dist/db/indexes.mjs +1 -1
  46. package/dist/db/relations.d.mts +2 -2
  47. package/dist/db/relations.d.mts.map +1 -1
  48. package/dist/db/relations.mjs +2 -2
  49. package/dist/db/stats.d.mts +1 -1
  50. package/dist/db/stats.d.mts.map +1 -1
  51. package/dist/db/stats.mjs +2 -2
  52. package/dist/db/version.d.mts +2 -1
  53. package/dist/db/version.d.mts.map +1 -1
  54. package/dist/db/version.mjs +9 -1
  55. package/dist/index.d.mts +4 -3
  56. package/dist/index.d.mts.map +1 -1
  57. package/dist/index.mjs +105 -51
  58. package/dist/lib/trpc-url.d.mts +2 -0
  59. package/dist/lib/trpc-url.d.mts.map +1 -0
  60. package/dist/lib/trpc-url.mjs +6 -0
  61. package/dist/lib/trpc.d.mts +7 -0
  62. package/dist/lib/trpc.d.mts.map +1 -0
  63. package/dist/lib/trpc.mjs +37 -0
  64. package/dist/lib/trpc.react.d.mts +4 -0
  65. package/dist/lib/trpc.react.d.mts.map +1 -0
  66. package/dist/lib/trpc.react.mjs +3 -0
  67. package/dist/lib/version.d.mts +2 -0
  68. package/dist/lib/version.d.mts.map +1 -0
  69. package/dist/lib/version.mjs +5 -0
  70. package/dist/providers/TrpcProvider.d.ts +9 -0
  71. package/dist/providers/TrpcProvider.d.ts.map +1 -0
  72. package/dist/providers/TrpcProvider.js +41 -0
  73. package/dist/schemas/index.d.mts +106 -1
  74. package/dist/schemas/index.d.mts.map +1 -1
  75. package/dist/schemas/index.mjs +27 -2
  76. package/dist/store.d.mts +64 -0
  77. package/dist/store.d.mts.map +1 -0
  78. package/dist/store.mjs +68 -0
  79. package/dist/{App.d.ts → types/connection.d.mts} +3 -9
  80. package/dist/types/connection.d.mts.map +1 -0
  81. package/dist/types/connection.mjs +2 -0
  82. package/dist/ui/App.d.ts +10 -0
  83. package/dist/ui/App.d.ts.map +1 -0
  84. package/dist/ui/App.js +13 -0
  85. package/dist/ui/components/DB.d.ts +10 -0
  86. package/dist/ui/components/DB.d.ts.map +1 -0
  87. package/dist/ui/components/DB.js +22 -0
  88. package/dist/{components → ui/components}/Error.d.ts +1 -1
  89. package/dist/ui/components/Error.d.ts.map +1 -0
  90. package/dist/ui/components/Error.js +6 -0
  91. package/dist/ui/components/Gate.d.ts +10 -0
  92. package/dist/ui/components/Gate.d.ts.map +1 -0
  93. package/dist/ui/components/Gate.js +15 -0
  94. package/dist/ui/components/Introspect.d.ts +10 -0
  95. package/dist/ui/components/Introspect.d.ts.map +1 -0
  96. package/dist/ui/components/Introspect.js +66 -0
  97. package/dist/ui/components/PasswordInput.d.ts +7 -0
  98. package/dist/ui/components/PasswordInput.d.ts.map +1 -0
  99. package/dist/ui/components/PasswordInput.js +32 -0
  100. package/dist/ui/components/SSH.d.ts +10 -0
  101. package/dist/ui/components/SSH.d.ts.map +1 -0
  102. package/dist/ui/components/SSH.js +22 -0
  103. package/dist/ui/components/Session.d.ts +10 -0
  104. package/dist/ui/components/Session.d.ts.map +1 -0
  105. package/dist/ui/components/Session.js +47 -0
  106. package/dist/ui/components/Spinner.d.ts +3 -0
  107. package/dist/ui/components/Spinner.d.ts.map +1 -0
  108. package/dist/ui/components/Spinner.js +18 -0
  109. package/dist/ui/components/Splash.d.ts +3 -0
  110. package/dist/ui/components/Splash.d.ts.map +1 -0
  111. package/dist/ui/components/Splash.js +13 -0
  112. package/dist/validatePaths.d.mts +1 -1
  113. package/dist/validatePaths.d.mts.map +1 -1
  114. package/dist/validatePaths.mjs +17 -11
  115. package/package.json +22 -2
  116. package/dist/App.d.ts.map +0 -1
  117. package/dist/App.js +0 -9
  118. package/dist/components/Error.d.ts.map +0 -1
  119. package/dist/components/Error.js +0 -6
@@ -0,0 +1,207 @@
1
+ import { readFileSync, existsSync } from 'node:fs';
2
+ import { homedir, userInfo } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import net from 'node:net';
5
+ import ssh2 from 'ssh2';
6
+ const { Client, utils } = ssh2;
7
+ import SSHConfig from 'ssh-config';
8
+ import { runInAction, when } from 'mobx';
9
+ import { scope } from 'scope-utilities';
10
+ const SSH_KEY_ORDER = [
11
+ 'id_ed25519_sk',
12
+ 'id_ed25519',
13
+ 'id_ecdsa_sk',
14
+ 'id_ecdsa',
15
+ 'id_rsa',
16
+ 'id_dsa',
17
+ ];
18
+ const resolveSSHConfig = (store) => {
19
+ const sshDir = join(homedir(), '.ssh');
20
+ const configPath = join(sshDir, 'config');
21
+ return scope({
22
+ host: store.config.sshHost,
23
+ port: 22,
24
+ username: userInfo().username,
25
+ privateKeyPath: undefined,
26
+ })
27
+ .let((config) => {
28
+ if (!existsSync(configPath)) {
29
+ return config;
30
+ }
31
+ const configText = readFileSync(configPath, 'utf-8');
32
+ const computed = SSHConfig.parse(configText).compute(config.host);
33
+ const identityFile = computed['IdentityFile']
34
+ ? (Array.isArray(computed['IdentityFile'])
35
+ ? computed['IdentityFile'][0]
36
+ : computed['IdentityFile']).replace(/^~/, homedir())
37
+ : config.privateKeyPath;
38
+ return {
39
+ host: computed['HostName'] ?? config.host,
40
+ port: computed['Port']
41
+ ? parseInt(computed['Port'], 10)
42
+ : config.port,
43
+ username: computed['User'] ?? config.username,
44
+ privateKeyPath: identityFile,
45
+ };
46
+ })
47
+ .let((config) => ({
48
+ ...config,
49
+ privateKeyPath: config.privateKeyPath ??
50
+ SSH_KEY_ORDER.map((name) => join(sshDir, name)).find((path) => existsSync(path)),
51
+ }))
52
+ .let((config) => ({
53
+ host: config.host,
54
+ port: store.config.sshPort ?? config.port,
55
+ username: store.config.sshUsername ?? config.username,
56
+ privateKeyPath: store.config.sshKey ?? config.privateKeyPath,
57
+ }))
58
+ .value();
59
+ };
60
+ export const connectSSH = async (store) => {
61
+ if (!store.steps.sshConnection.enabled) {
62
+ return undefined;
63
+ }
64
+ const config = resolveSSHConfig(store);
65
+ const privateKey = config.privateKeyPath && existsSync(config.privateKeyPath)
66
+ ? readFileSync(config.privateKeyPath)
67
+ : undefined;
68
+ const keyIsEncrypted = privateKey !== undefined && utils.parseKey(privateKey) instanceof Error;
69
+ let publicKeyAttempted = false;
70
+ const promptForInput = (type, finish) => {
71
+ runInAction(() => {
72
+ store.steps.sshConnection.wrongAttempt =
73
+ store.steps.sshConnection.passwordPromptType === type;
74
+ store.steps.sshConnection.password = null;
75
+ store.steps.sshConnection.needPassword = true;
76
+ store.steps.sshConnection.passwordPromptType = type;
77
+ store.steps.sshConnection.promptCount += 1;
78
+ store.steps.sshConnection.state = 'need-password';
79
+ });
80
+ when(() => store.steps.sshConnection.password !== null).then(() => {
81
+ runInAction(() => {
82
+ store.steps.sshConnection.needPassword = false;
83
+ store.steps.sshConnection.state = 'connecting';
84
+ });
85
+ finish([store.steps.sshConnection.password]);
86
+ });
87
+ };
88
+ const promptForPassphrase = (finish) => {
89
+ promptForInput('passphrase', (responses) => {
90
+ const tryPassphrase = responses[0];
91
+ utils.parseKey(privateKey, tryPassphrase) instanceof Error
92
+ ? promptForPassphrase(finish)
93
+ : finish(tryPassphrase);
94
+ });
95
+ };
96
+ const authHandler = (methodsLeft, _partialSuccess, next) => {
97
+ const { username } = config;
98
+ // First call: methodsLeft is null — send 'none' to discover available methods
99
+ !methodsLeft
100
+ ? next({ type: 'none', username })
101
+ : methodsLeft.includes('publickey') &&
102
+ privateKey &&
103
+ keyIsEncrypted &&
104
+ !publicKeyAttempted
105
+ ? promptForPassphrase((validPassphrase) => {
106
+ publicKeyAttempted = true;
107
+ next({
108
+ type: 'publickey',
109
+ username,
110
+ key: privateKey,
111
+ passphrase: validPassphrase,
112
+ });
113
+ })
114
+ : methodsLeft.includes('publickey') &&
115
+ privateKey &&
116
+ !publicKeyAttempted
117
+ ? (() => {
118
+ publicKeyAttempted = true;
119
+ next({ type: 'publickey', username, key: privateKey });
120
+ })()
121
+ : methodsLeft.includes('keyboard-interactive')
122
+ ? next({
123
+ type: 'keyboard-interactive',
124
+ username,
125
+ prompt: (_name, _instructions, _lang, _prompts, finish) => {
126
+ promptForInput('password', finish);
127
+ },
128
+ })
129
+ : methodsLeft.includes('password')
130
+ ? promptForInput('password', (responses) => {
131
+ next({
132
+ type: 'password',
133
+ username,
134
+ password: responses[0],
135
+ });
136
+ })
137
+ : next('none');
138
+ };
139
+ const connectConfig = {
140
+ host: config.host,
141
+ port: config.port,
142
+ username: config.username,
143
+ readyTimeout: 0,
144
+ keepaliveInterval: 10_000,
145
+ keepaliveCountMax: 3,
146
+ authHandler: authHandler,
147
+ };
148
+ runInAction(() => {
149
+ store.steps.sshConnection.pickedHostname = config.host;
150
+ store.steps.sshConnection.pickedPort = config.port;
151
+ store.steps.sshConnection.pickedUsername = config.username;
152
+ store.steps.sshConnection.pickedKeyPath = config.privateKeyPath ?? null;
153
+ store.steps.sshConnection.state = 'connecting';
154
+ });
155
+ const client = new Client();
156
+ return new Promise((resolve, reject) => {
157
+ client.on('ready', () => {
158
+ runInAction(() => {
159
+ store.steps.sshConnection.state = 'connected';
160
+ store.steps.sshConnection.needPassword = false;
161
+ });
162
+ const remoteHost = store.config.hostname ?? 'localhost';
163
+ const remotePort = store.config.port ?? 5432;
164
+ const server = net.createServer((socket) => {
165
+ const localPort = server.address().port;
166
+ client.forwardOut('127.0.0.1', localPort, remoteHost, remotePort, (err, stream) => {
167
+ if (err) {
168
+ socket.end();
169
+ return;
170
+ }
171
+ socket.pipe(stream).pipe(socket);
172
+ });
173
+ });
174
+ server.listen(0, '127.0.0.1', () => {
175
+ const localPort = server.address().port;
176
+ runInAction(() => {
177
+ store.steps.sshConnection.localPort = localPort;
178
+ });
179
+ resolve(() => {
180
+ server.close();
181
+ client.end();
182
+ runInAction(() => {
183
+ store.steps.sshConnection.state = 'idle';
184
+ store.steps.sshConnection.localPort = null;
185
+ });
186
+ });
187
+ });
188
+ });
189
+ client.on('error', (err) => {
190
+ runInAction(() => {
191
+ store.steps.sshConnection.state = 'error';
192
+ store.steps.sshConnection.error = err.message;
193
+ });
194
+ reject(err);
195
+ });
196
+ client.on('close', () => {
197
+ runInAction(() => {
198
+ if (store.steps.sshConnection.state !== 'error') {
199
+ store.steps.sshConnection.state = 'closed';
200
+ }
201
+ store.steps.sshConnection.localPort = null;
202
+ });
203
+ });
204
+ client.connect(connectConfig);
205
+ });
206
+ };
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NoLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImFwcC9zc2gubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2pELE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDL0IsT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQzNCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUd4QixNQUFNLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyxHQUFHLElBQUksQ0FBQztBQUM3QixPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSXRDLE1BQU0sYUFBYSxHQUFHO0lBQ2xCLGVBQWU7SUFDZixZQUFZO0lBQ1osYUFBYTtJQUNiLFVBQVU7SUFDVixRQUFRO0lBQ1IsUUFBUTtDQUNGLENBQUM7QUFFWCxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUMsT0FBTyxLQUFLLENBQUM7UUFDVCxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFRO1FBQzNCLElBQUksRUFBRSxFQUFFO1FBQ1IsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVE7UUFDN0IsY0FBYyxFQUFFLFNBQStCO0tBQ2xELENBQUM7U0FDRyxHQUFHLENBQUMsQ0FB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S0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUMxQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNwQixXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUNiLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO2dCQUMvQyxDQUFDO2dCQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JlYWRGaWxlU3luYywgZXhpc3RzU3luY30gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge2hvbWVkaXIsIHVzZXJJbmZvfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7am9pbn0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBuZXQgZnJvbSAnbm9kZTpuZXQnO1xuaW1wb3J0IHNzaDIgZnJvbSAnc3NoMic7XG5pbXBvcnQgdHlwZSB7QXV0aEhhbmRsZXJNaWRkbGV3YXJlLCBDb25uZWN0Q29uZmlnfSBmcm9tICdzc2gyJztcblxuY29uc3Qge0NsaWVudCwgdXRpbHN9ID0gc3NoMjtcbmltcG9ydCBTU0hDb25maWcgZnJvbSAnc3NoLWNvbmZpZyc7XG5pbXBvcnQge3J1bkluQWN0aW9uLCB3aGVufSBmcm9tICdtb2J4JztcbmltcG9ydCB7c2NvcGV9IGZyb20gJ3Njb3BlLXV0aWxpdGllcyc7XG5cbmltcG9ydCB0eXBlIHtUU3RvcmV9IGZyb20gJy4uL3N0b3JlLm1qcyc7XG5cbmNvbnN0IFNTSF9LRVlfT1JERVIgPSBbXG4gICAgJ2lkX2VkMjU1MTlfc2snLFxuICAgICdpZF9lZDI1NTE5JyxcbiAgICAnaWRfZWNkc2Ffc2snLFxuICAgICdpZF9lY2RzYScsXG4gICAgJ2lkX3JzYScsXG4gICAgJ2lkX2RzYScsXG5dIGFzIGNvbnN0O1xuXG5jb25zdCByZXNvbHZlU1NIQ29uZmlnID0gKHN0b3JlOiBUU3RvcmUpID0+IHtcbiAgICBjb25zdCBzc2hEaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5zc2gnKTtcbiAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihzc2hEaXIsICdjb25maWcnKTtcblxuICAgIHJldHVybiBzY29wZSh7XG4gICAgICAgIGhvc3Q6IHN0b3JlLmNvbmZpZy5zc2hIb3N0ISxcbiAgICAgICAgcG9ydDogMjIsXG4gICAgICAgIHVzZXJuYW1lOiB1c2VySW5mbygpLnVzZXJuYW1lLFxuICAgICAgICBwcml2YXRlS2V5UGF0aDogdW5kZWZpbmVkIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB9KVxuICAgICAgICAubGV0KChjb25maWcpID0+IHtcbiAgICAgICAgICAgIGlmICghZXhpc3RzU3luYyhjb25maWdQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ1RleHQgPSByZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgICBjb25zdCBjb21wdXRlZCA9IFNTSENvbmZpZy5wYXJzZShjb25maWdUZXh0KS5jb21wdXRlKGNvbmZpZy5ob3N0KTtcblxuICAgICAgICAgICAgY29uc3QgaWRlbnRpdHlGaWxlID0gY29tcHV0ZWRbJ0lkZW50aXR5RmlsZSddXG4gICAgICAgICAgICAgICAgPyAoQXJyYXkuaXNBcnJheShjb21wdXRlZFsnSWRlbnRpdHlGaWxlJ10pXG4gICAgICAgICAgICAgICAgICAgICAgPyBjb21wdXRlZFsnSWRlbnRpdHlGaWxlJ11bMF1cbiAgICAgICAgICAgICAgICAgICAgICA6IGNvbXB1dGVkWydJZGVudGl0eUZpbGUnXVxuICAgICAgICAgICAgICAgICAgKS5yZXBsYWNlKC9efi8sIGhvbWVkaXIoKSlcbiAgICAgICAgICAgICAgICA6IGNvbmZpZy5wcml2YXRlS2V5UGF0aDtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBob3N0OiAoY29tcHV0ZWRbJ0hvc3ROYW1lJ10gYXMgc3RyaW5nKSA/PyBjb25maWcuaG9zdCxcbiAgICAgICAgICAgICAgICBwb3J0OiBjb21wdXRlZFsnUG9ydCddXG4gICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQoY29tcHV0ZWRbJ1BvcnQnXSBhcyBzdHJpbmcsIDEwKVxuICAgICAgICAgICAgICAgICAgICA6IGNvbmZpZy5wb3J0LFxuICAgICAgICAgICAgICAgIHVzZXJuYW1lOiAoY29tcHV0ZWRbJ1VzZXInXSBhcyBzdHJpbmcpID8/IGNvbmZpZy51c2VybmFtZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlS2V5UGF0aDogaWRlbnRpdHlGaWxlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmxldCgoY29uZmlnKSA9PiAoe1xuICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgcHJpdmF0ZUtleVBhdGg6XG4gICAgICAgICAgICAgICAgY29uZmlnLnByaXZhdGVLZXlQYXRoID8/XG4gICAgICAgICAgICAgICAgU1NIX0tFWV9PUkRFUi5tYXAoKG5hbWUpID0+IGpvaW4oc3NoRGlyLCBuYW1lKSkuZmluZCgocGF0aCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZXhpc3RzU3luYyhwYXRoKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9KSlcbiAgICAgICAgLmxldCgoY29uZmlnKSA9PiAoe1xuICAgICAgICAgICAgaG9zdDogY29uZmlnLmhvc3QsXG4gICAgICAgICAgICBwb3J0OiBzdG9yZS5jb25maWcuc3NoUG9ydCA/PyBjb25maWcucG9ydCxcbiAgICAgICAgICAgIHVzZXJuYW1lOiBzdG9yZS5jb25maWcuc3NoVXNlcm5hbWUgPz8gY29uZmlnLnVzZXJuYW1lLFxuICAgICAgICAgICAgcHJpdmF0ZUtleVBhdGg6IHN0b3JlLmNvbmZpZy5zc2hLZXkgPz8gY29uZmlnLnByaXZhdGVLZXlQYXRoLFxuICAgICAgICB9KSlcbiAgICAgICAgLnZhbHVlKCk7XG59O1xuXG5leHBvcnQgY29uc3QgY29ubmVjdFNTSCA9IGFzeW5jIChcbiAgICBzdG9yZTogVFN0b3JlLFxuKTogUHJvbWlzZTwoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAoIXN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uZW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHJlc29sdmVTU0hDb25maWcoc3RvcmUpO1xuXG4gICAgY29uc3QgcHJpdmF0ZUtleSA9XG4gICAgICAgIGNvbmZpZy5wcml2YXRlS2V5UGF0aCAmJiBleGlzdHNTeW5jKGNvbmZpZy5wcml2YXRlS2V5UGF0aClcbiAgICAgICAgICAgID8gcmVhZEZpbGVTeW5jKGNvbmZpZy5wcml2YXRlS2V5UGF0aClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qga2V5SXNFbmNyeXB0ZWQgPVxuICAgICAgICBwcml2YXRlS2V5ICE9PSB1bmRlZmluZWQgJiYgdXRpbHMucGFyc2VLZXkocHJpdmF0ZUtleSkgaW5zdGFuY2VvZiBFcnJvcjtcblxuICAgIGxldCBwdWJsaWNLZXlBdHRlbXB0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHByb21wdEZvcklucHV0ID0gKFxuICAgICAgICB0eXBlOiAncGFzc3BocmFzZScgfCAncGFzc3dvcmQnLFxuICAgICAgICBmaW5pc2g6IChyZXNwb25zZXM6IHN0cmluZ1tdKSA9PiB2b2lkLFxuICAgICkgPT4ge1xuICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLndyb25nQXR0ZW1wdCA9XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZFByb21wdFR5cGUgPT09IHR5cGU7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnBhc3N3b3JkID0gbnVsbDtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ubmVlZFBhc3N3b3JkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGFzc3dvcmRQcm9tcHRUeXBlID0gdHlwZTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucHJvbXB0Q291bnQgKz0gMTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnbmVlZC1wYXNzd29yZCc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHdoZW4oKCkgPT4gc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZCAhPT0gbnVsbCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5uZWVkUGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nvbm5lY3RpbmcnO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZpbmlzaChbc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZCFdKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHByb21wdEZvclBhc3NwaHJhc2UgPSAoZmluaXNoOiAodmFsaWRQYXNzcGhyYXNlOiBzdHJpbmcpID0+IHZvaWQpID0+IHtcbiAgICAgICAgcHJvbXB0Rm9ySW5wdXQoJ3Bhc3NwaHJhc2UnLCAocmVzcG9uc2VzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cnlQYXNzcGhyYXNlID0gcmVzcG9uc2VzWzBdITtcbiAgICAgICAgICAgIHV0aWxzLnBhcnNlS2V5KHByaXZhdGVLZXkhLCB0cnlQYXNzcGhyYXNlKSBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICAgICAgPyBwcm9tcHRGb3JQYXNzcGhyYXNlKGZpbmlzaClcbiAgICAgICAgICAgICAgICA6IGZpbmlzaCh0cnlQYXNzcGhyYXNlKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGF1dGhIYW5kbGVyOiBBdXRoSGFuZGxlck1pZGRsZXdhcmUgPSAoXG4gICAgICAgIG1ldGhvZHNMZWZ0LFxuICAgICAgICBfcGFydGlhbFN1Y2Nlc3MsXG4gICAgICAgIG5leHQsXG4gICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IHt1c2VybmFtZX0gPSBjb25maWc7XG5cbiAgICAgICAgLy8gRmlyc3QgY2FsbDogbWV0aG9kc0xlZnQgaXMgbnVsbCDigJQgc2VuZCAnbm9uZScgdG8gZGlzY292ZXIgYXZhaWxhYmxlIG1ldGhvZHNcbiAgICAgICAgIW1ldGhvZHNMZWZ0XG4gICAgICAgICAgICA/IG5leHQoe3R5cGU6ICdub25lJywgdXNlcm5hbWV9KVxuICAgICAgICAgICAgOiBtZXRob2RzTGVmdC5pbmNsdWRlcygncHVibGlja2V5JykgJiZcbiAgICAgICAgICAgICAgICBwcml2YXRlS2V5ICYmXG4gICAgICAgICAgICAgICAga2V5SXNFbmNyeXB0ZWQgJiZcbiAgICAgICAgICAgICAgICAhcHVibGljS2V5QXR0ZW1wdGVkXG4gICAgICAgICAgICAgID8gcHJvbXB0Rm9yUGFzc3BocmFzZSgodmFsaWRQYXNzcGhyYXNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHB1YmxpY0tleUF0dGVtcHRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIG5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3B1YmxpY2tleScsXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogcHJpdmF0ZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NwaHJhc2U6IHZhbGlkUGFzc3BocmFzZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgOiBtZXRob2RzTGVmdC5pbmNsdWRlcygncHVibGlja2V5JykgJiZcbiAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXkgJiZcbiAgICAgICAgICAgICAgICAgICFwdWJsaWNLZXlBdHRlbXB0ZWRcbiAgICAgICAgICAgICAgICA/ICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHVibGljS2V5QXR0ZW1wdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0KHt0eXBlOiAncHVibGlja2V5JywgdXNlcm5hbWUsIGtleTogcHJpdmF0ZUtleX0pO1xuICAgICAgICAgICAgICAgICAgfSkoKVxuICAgICAgICAgICAgICAgIDogbWV0aG9kc0xlZnQuaW5jbHVkZXMoJ2tleWJvYXJkLWludGVyYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgID8gbmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAna2V5Ym9hcmQtaW50ZXJhY3RpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5zdHJ1Y3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sYW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wcm9tcHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdEZvcklucHV0KCdwYXNzd29yZCcsIGZpbmlzaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgOiBtZXRob2RzTGVmdC5pbmNsdWRlcygncGFzc3dvcmQnKVxuICAgICAgICAgICAgICAgICAgICA/IHByb21wdEZvcklucHV0KCdwYXNzd29yZCcsIChyZXNwb25zZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogcmVzcG9uc2VzWzBdISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBuZXh0KCdub25lJyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbm5lY3RDb25maWc6IENvbm5lY3RDb25maWcgPSB7XG4gICAgICAgIGhvc3Q6IGNvbmZpZy5ob3N0LFxuICAgICAgICBwb3J0OiBjb25maWcucG9ydCxcbiAgICAgICAgdXNlcm5hbWU6IGNvbmZpZy51c2VybmFtZSxcbiAgICAgICAgcmVhZHlUaW1lb3V0OiAwLFxuICAgICAgICBrZWVwYWxpdmVJbnRlcnZhbDogMTBfMDAwLFxuICAgICAgICBrZWVwYWxpdmVDb3VudE1heDogMyxcbiAgICAgICAgYXV0aEhhbmRsZXI6IGF1dGhIYW5kbGVyLFxuICAgIH07XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGlja2VkSG9zdG5hbWUgPSBjb25maWcuaG9zdDtcbiAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5waWNrZWRQb3J0ID0gY29uZmlnLnBvcnQ7XG4gICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGlja2VkVXNlcm5hbWUgPSBjb25maWcudXNlcm5hbWU7XG4gICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGlja2VkS2V5UGF0aCA9IGNvbmZpZy5wcml2YXRlS2V5UGF0aCA/PyBudWxsO1xuICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nvbm5lY3RpbmcnO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPCgpID0+IHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY2xpZW50Lm9uKCdyZWFkeScsICgpID0+IHtcbiAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nvbm5lY3RlZCc7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5uZWVkUGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCByZW1vdGVIb3N0ID0gc3RvcmUuY29uZmlnLmhvc3RuYW1lID8/ICdsb2NhbGhvc3QnO1xuICAgICAgICAgICAgY29uc3QgcmVtb3RlUG9ydCA9IHN0b3JlLmNvbmZpZy5wb3J0ID8/IDU0MzI7XG5cbiAgICAgICAgICAgIGNvbnN0IHNlcnZlciA9IG5ldC5jcmVhdGVTZXJ2ZXIoKHNvY2tldCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsUG9ydCA9IChzZXJ2ZXIuYWRkcmVzcygpIGFzIG5ldC5BZGRyZXNzSW5mbykucG9ydDtcblxuICAgICAgICAgICAgICAgIGNsaWVudC5mb3J3YXJkT3V0KFxuICAgICAgICAgICAgICAgICAgICAnMTI3LjAuMC4xJyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxQb3J0LFxuICAgICAgICAgICAgICAgICAgICByZW1vdGVIb3N0LFxuICAgICAgICAgICAgICAgICAgICByZW1vdGVQb3J0LFxuICAgICAgICAgICAgICAgICAgICAoZXJyLCBzdHJlYW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LnBpcGUoc3RyZWFtKS5waXBlKHNvY2tldCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBzZXJ2ZXIubGlzdGVuKDAsICcxMjcuMC4wLjEnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxQb3J0ID0gKHNlcnZlci5hZGRyZXNzKCkgYXMgbmV0LkFkZHJlc3NJbmZvKS5wb3J0O1xuXG4gICAgICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLmxvY2FsUG9ydCA9IGxvY2FsUG9ydDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJlc29sdmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50LmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2lkbGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5sb2NhbFBvcnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjbGllbnQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnZXJyb3InO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2xpZW50Lm9uKCdjbG9zZScsICgpID0+IHtcbiAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5zdGF0ZSAhPT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5sb2NhbFBvcnQgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNsaWVudC5jb25uZWN0KGNvbm5lY3RDb25maWcpO1xuICAgIH0pO1xufTtcbiJdfQ==
@@ -1,3 +1,3 @@
1
- import type { Pool } from "pg";
1
+ import type { Pool } from 'pg';
2
2
  export declare const analyzeRelation: (pool: Pool, relationName: string) => Promise<void>;
3
3
  //# sourceMappingURL=analyze.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.mts","sourceRoot":"./src/","sources":["db/analyze.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,eAAO,MAAM,eAAe,GAAU,MAAM,IAAI,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,IAAI,CAmBpF,CAAC"}
1
+ {"version":3,"file":"analyze.d.mts","sourceRoot":"./src/","sources":["db/analyze.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,eAAO,MAAM,eAAe,GACxB,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,IAAI,CAqBd,CAAC"}
@@ -13,4 +13,4 @@ export const analyzeRelation = async (pool, relationName) => {
13
13
  }
14
14
  await pool.query(`ANALYZE public.${validation.rows[0].quoted_name}`);
15
15
  };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9hbmFseXplLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLElBQVUsRUFBRSxZQUFvQixFQUFpQixFQUFFO0lBQ3JGLGlGQUFpRjtJQUNqRixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQy9COzs7Ozs7O1NBT0MsRUFDRCxDQUFDLFlBQVksQ0FBQyxDQUNqQixDQUFDO0lBRUYsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsWUFBWSw4QkFBOEIsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBvb2wgfSBmcm9tIFwicGdcIjtcblxuZXhwb3J0IGNvbnN0IGFuYWx5emVSZWxhdGlvbiA9IGFzeW5jIChwb29sOiBQb29sLCByZWxhdGlvbk5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIC8vIFZhbGlkYXRlIHJlbGF0aW9uIGV4aXN0cyBhbmQgZ2V0IHByb3Blcmx5IHF1b3RlZCBuYW1lIHRvIHByZXZlbnQgU1FMIGluamVjdGlvblxuICAgIGNvbnN0IHZhbGlkYXRpb24gPSBhd2FpdCBwb29sLnF1ZXJ5PHsgcXVvdGVkX25hbWU6IHN0cmluZyB9PihcbiAgICAgICAgYFxuICAgICAgICBTRUxFQ1QgZm9ybWF0KCclSScsIGMucmVsbmFtZSkgQVMgcXVvdGVkX25hbWVcbiAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gYy5yZWxuYW1lc3BhY2VcbiAgICAgICAgV0hFUkUgbi5uc3BuYW1lID0gJ3B1YmxpYydcbiAgICAgICAgICAgIEFORCBjLnJlbG5hbWUgPSAkMVxuICAgICAgICAgICAgQU5EIGMucmVsa2luZCBJTiAoJ3InLCAncCcsICdtJylcbiAgICAgICAgYCxcbiAgICAgICAgW3JlbGF0aW9uTmFtZV1cbiAgICApO1xuXG4gICAgaWYgKHZhbGlkYXRpb24ucm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWxhdGlvbiBcIiR7cmVsYXRpb25OYW1lfVwiIG5vdCBmb3VuZCBpbiBwdWJsaWMgc2NoZW1hYCk7XG4gICAgfVxuXG4gICAgYXdhaXQgcG9vbC5xdWVyeShgQU5BTFlaRSBwdWJsaWMuJHt2YWxpZGF0aW9uLnJvd3NbMF0ucXVvdGVkX25hbWV9YCk7XG59O1xuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9hbmFseXplLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUNoQyxJQUFVLEVBQ1YsWUFBb0IsRUFDUCxFQUFFO0lBQ2YsaUZBQWlGO0lBQ2pGLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDL0I7Ozs7Ozs7U0FPQyxFQUNELENBQUMsWUFBWSxDQUFDLENBQ2pCLENBQUM7SUFFRixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQ1gsYUFBYSxZQUFZLDhCQUE4QixDQUMxRCxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5cbmV4cG9ydCBjb25zdCBhbmFseXplUmVsYXRpb24gPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbiAgICByZWxhdGlvbk5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIC8vIFZhbGlkYXRlIHJlbGF0aW9uIGV4aXN0cyBhbmQgZ2V0IHByb3Blcmx5IHF1b3RlZCBuYW1lIHRvIHByZXZlbnQgU1FMIGluamVjdGlvblxuICAgIGNvbnN0IHZhbGlkYXRpb24gPSBhd2FpdCBwb29sLnF1ZXJ5PHtxdW90ZWRfbmFtZTogc3RyaW5nfT4oXG4gICAgICAgIGBcbiAgICAgICAgU0VMRUNUIGZvcm1hdCgnJUknLCBjLnJlbG5hbWUpIEFTIHF1b3RlZF9uYW1lXG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlXG4gICAgICAgIFdIRVJFIG4ubnNwbmFtZSA9ICdwdWJsaWMnXG4gICAgICAgICAgICBBTkQgYy5yZWxuYW1lID0gJDFcbiAgICAgICAgICAgIEFORCBjLnJlbGtpbmQgSU4gKCdyJywgJ3AnLCAnbScpXG4gICAgICAgIGAsXG4gICAgICAgIFtyZWxhdGlvbk5hbWVdLFxuICAgICk7XG5cbiAgICBpZiAodmFsaWRhdGlvbi5yb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgUmVsYXRpb24gXCIke3JlbGF0aW9uTmFtZX1cIiBub3QgZm91bmQgaW4gcHVibGljIHNjaGVtYWAsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgcG9vbC5xdWVyeShgQU5BTFlaRSBwdWJsaWMuJHt2YWxpZGF0aW9uLnJvd3NbMF0ucXVvdGVkX25hbWV9YCk7XG59O1xuIl19
@@ -1,6 +1,6 @@
1
- import type { Pool } from "pg";
2
- export type TAttributeKind = "regular" | "generated";
3
- export type TGeneratedStorage = "stored" | "virtual";
1
+ import type { Pool } from 'pg';
2
+ export type TAttributeKind = 'regular' | 'generated';
3
+ export type TGeneratedStorage = 'stored' | 'virtual';
4
4
  export type TAttributeInfo = {
5
5
  attribute_name: string;
6
6
  data_type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.d.mts","sourceRoot":"./src/","sources":["db/attributes.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,MAAM,IAAI,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,cAAc,EAAE,CAuCxG,CAAC"}
1
+ {"version":3,"file":"attributes.d.mts","sourceRoot":"./src/","sources":["db/attributes.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAChC,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,cAAc,EAAE,CAuC1B,CAAC"}
@@ -2,7 +2,7 @@ export const fetchRelationAttributes = async (pool, relationName) => {
2
2
  const result = await pool.query(`
3
3
  SELECT
4
4
  a.attname AS attribute_name,
5
- format_type(a.atttypid, a.atttypemod) AS data_type,
5
+ format_type(a.atttypid, a.atttypmod) AS data_type,
6
6
  NOT a.attnotnull AS is_nullable,
7
7
  ad.adbin IS NOT NULL AS has_default,
8
8
  CASE
@@ -34,4 +34,4 @@ export const fetchRelationAttributes = async (pool, relationName) => {
34
34
  `, [relationName]);
35
35
  return result.rows;
36
36
  };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlcy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9hdHRyaWJ1dGVzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxFQUFFLElBQVUsRUFBRSxZQUFvQixFQUE2QixFQUFFO0lBQ3pHLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBZ0NDLEVBQ0QsQ0FBQyxZQUFZLENBQUMsQ0FDakIsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztBQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBvb2wgfSBmcm9tIFwicGdcIjtcblxuZXhwb3J0IHR5cGUgVEF0dHJpYnV0ZUtpbmQgPSBcInJlZ3VsYXJcIiB8IFwiZ2VuZXJhdGVkXCI7XG5cbmV4cG9ydCB0eXBlIFRHZW5lcmF0ZWRTdG9yYWdlID0gXCJzdG9yZWRcIiB8IFwidmlydHVhbFwiO1xuXG5leHBvcnQgdHlwZSBUQXR0cmlidXRlSW5mbyA9IHtcbiAgICBhdHRyaWJ1dGVfbmFtZTogc3RyaW5nO1xuICAgIGRhdGFfdHlwZTogc3RyaW5nO1xuICAgIGlzX251bGxhYmxlOiBib29sZWFuO1xuICAgIGhhc19kZWZhdWx0OiBib29sZWFuO1xuICAgIGRlZmF1bHRfZXhwcmVzc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgICBraW5kOiBUQXR0cmlidXRlS2luZDtcbiAgICBnZW5lcmF0ZWRfc3RvcmFnZTogVEdlbmVyYXRlZFN0b3JhZ2UgfCBudWxsO1xuICAgIGdlbmVyYXRlZF9leHByZXNzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgIGNvbW1lbnQ6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hSZWxhdGlvbkF0dHJpYnV0ZXMgPSBhc3luYyAocG9vbDogUG9vbCwgcmVsYXRpb25OYW1lOiBzdHJpbmcpOiBQcm9taXNlPFRBdHRyaWJ1dGVJbmZvW10+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PFRBdHRyaWJ1dGVJbmZvPihcbiAgICAgICAgYFxuICAgICAgICBTRUxFQ1RcbiAgICAgICAgICAgIGEuYXR0bmFtZSBBUyBhdHRyaWJ1dGVfbmFtZSxcbiAgICAgICAgICAgIGZvcm1hdF90eXBlKGEuYXR0dHlwaWQsIGEuYXR0dHlwZW1vZCkgQVMgZGF0YV90eXBlLFxuICAgICAgICAgICAgTk9UIGEuYXR0bm90bnVsbCBBUyBpc19udWxsYWJsZSxcbiAgICAgICAgICAgIGFkLmFkYmluIElTIE5PVCBOVUxMIEFTIGhhc19kZWZhdWx0LFxuICAgICAgICAgICAgQ0FTRVxuICAgICAgICAgICAgICAgIFdIRU4gYS5hdHRnZW5lcmF0ZWQgPSAnJyBBTkQgYWQuYWRiaW4gSVMgTk9UIE5VTEwgVEhFTiBwZ19nZXRfZXhwcihhZC5hZGJpbiwgYWQuYWRyZWxpZClcbiAgICAgICAgICAgICAgICBFTFNFIE5VTExcbiAgICAgICAgICAgIEVORCBBUyBkZWZhdWx0X2V4cHJlc3Npb24sXG4gICAgICAgICAgICBDQVNFIGEuYXR0Z2VuZXJhdGVkXG4gICAgICAgICAgICAgICAgV0hFTiAnJyBUSEVOICdyZWd1bGFyJ1xuICAgICAgICAgICAgICAgIEVMU0UgJ2dlbmVyYXRlZCdcbiAgICAgICAgICAgIEVORCBBUyBraW5kLFxuICAgICAgICAgICAgQ0FTRSBhLmF0dGdlbmVyYXRlZFxuICAgICAgICAgICAgICAgIFdIRU4gJ3MnIFRIRU4gJ3N0b3JlZCdcbiAgICAgICAgICAgICAgICBXSEVOICd2JyBUSEVOICd2aXJ0dWFsJ1xuICAgICAgICAgICAgICAgIEVMU0UgTlVMTFxuICAgICAgICAgICAgRU5EIEFTIGdlbmVyYXRlZF9zdG9yYWdlLFxuICAgICAgICAgICAgQ0FTRVxuICAgICAgICAgICAgICAgIFdIRU4gYS5hdHRnZW5lcmF0ZWQgIT0gJycgVEhFTiBwZ19nZXRfZXhwcihhZC5hZGJpbiwgYWQuYWRyZWxpZClcbiAgICAgICAgICAgICAgICBFTFNFIE5VTExcbiAgICAgICAgICAgIEVORCBBUyBnZW5lcmF0ZWRfZXhwcmVzc2lvbixcbiAgICAgICAgICAgIGNvbF9kZXNjcmlwdGlvbihjLm9pZCwgYS5hdHRudW0pIEFTIGNvbW1lbnRcbiAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBhIE9OIGEuYXR0cmVsaWQgPSBjLm9pZFxuICAgICAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19hdHRyZGVmIGFkIE9OIGFkLmFkcmVsaWQgPSBhLmF0dHJlbGlkIEFORCBhZC5hZG51bSA9IGEuYXR0bnVtXG4gICAgICAgIFdIRVJFIGMucmVsbmFtZSA9ICQxXG4gICAgICAgICAgICBBTkQgYy5yZWxuYW1lc3BhY2UgPSAoU0VMRUNUIG9pZCBGUk9NIHBnX25hbWVzcGFjZSBXSEVSRSBuc3BuYW1lID0gJ3B1YmxpYycpXG4gICAgICAgICAgICBBTkQgYS5hdHRudW0gPiAwXG4gICAgICAgICAgICBBTkQgTk9UIGEuYXR0aXNkcm9wcGVkXG4gICAgICAgIE9SREVSIEJZIGEuYXR0bnVtXG4gICAgICAgIGAsXG4gICAgICAgIFtyZWxhdGlvbk5hbWVdXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQucm93cztcbn07XG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlcy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9hdHRyaWJ1dGVzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxFQUN4QyxJQUFVLEVBQ1YsWUFBb0IsRUFDSyxFQUFFO0lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBZ0NDLEVBQ0QsQ0FBQyxZQUFZLENBQUMsQ0FDakIsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztBQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UG9vbH0gZnJvbSAncGcnO1xuXG5leHBvcnQgdHlwZSBUQXR0cmlidXRlS2luZCA9ICdyZWd1bGFyJyB8ICdnZW5lcmF0ZWQnO1xuXG5leHBvcnQgdHlwZSBUR2VuZXJhdGVkU3RvcmFnZSA9ICdzdG9yZWQnIHwgJ3ZpcnR1YWwnO1xuXG5leHBvcnQgdHlwZSBUQXR0cmlidXRlSW5mbyA9IHtcbiAgICBhdHRyaWJ1dGVfbmFtZTogc3RyaW5nO1xuICAgIGRhdGFfdHlwZTogc3RyaW5nO1xuICAgIGlzX251bGxhYmxlOiBib29sZWFuO1xuICAgIGhhc19kZWZhdWx0OiBib29sZWFuO1xuICAgIGRlZmF1bHRfZXhwcmVzc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgICBraW5kOiBUQXR0cmlidXRlS2luZDtcbiAgICBnZW5lcmF0ZWRfc3RvcmFnZTogVEdlbmVyYXRlZFN0b3JhZ2UgfCBudWxsO1xuICAgIGdlbmVyYXRlZF9leHByZXNzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgIGNvbW1lbnQ6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hSZWxhdGlvbkF0dHJpYnV0ZXMgPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbiAgICByZWxhdGlvbk5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8VEF0dHJpYnV0ZUluZm9bXT4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnk8VEF0dHJpYnV0ZUluZm8+KFxuICAgICAgICBgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgYS5hdHRuYW1lIEFTIGF0dHJpYnV0ZV9uYW1lLFxuICAgICAgICAgICAgZm9ybWF0X3R5cGUoYS5hdHR0eXBpZCwgYS5hdHR0eXBtb2QpIEFTIGRhdGFfdHlwZSxcbiAgICAgICAgICAgIE5PVCBhLmF0dG5vdG51bGwgQVMgaXNfbnVsbGFibGUsXG4gICAgICAgICAgICBhZC5hZGJpbiBJUyBOT1QgTlVMTCBBUyBoYXNfZGVmYXVsdCxcbiAgICAgICAgICAgIENBU0VcbiAgICAgICAgICAgICAgICBXSEVOIGEuYXR0Z2VuZXJhdGVkID0gJycgQU5EIGFkLmFkYmluIElTIE5PVCBOVUxMIFRIRU4gcGdfZ2V0X2V4cHIoYWQuYWRiaW4sIGFkLmFkcmVsaWQpXG4gICAgICAgICAgICAgICAgRUxTRSBOVUxMXG4gICAgICAgICAgICBFTkQgQVMgZGVmYXVsdF9leHByZXNzaW9uLFxuICAgICAgICAgICAgQ0FTRSBhLmF0dGdlbmVyYXRlZFxuICAgICAgICAgICAgICAgIFdIRU4gJycgVEhFTiAncmVndWxhcidcbiAgICAgICAgICAgICAgICBFTFNFICdnZW5lcmF0ZWQnXG4gICAgICAgICAgICBFTkQgQVMga2luZCxcbiAgICAgICAgICAgIENBU0UgYS5hdHRnZW5lcmF0ZWRcbiAgICAgICAgICAgICAgICBXSEVOICdzJyBUSEVOICdzdG9yZWQnXG4gICAgICAgICAgICAgICAgV0hFTiAndicgVEhFTiAndmlydHVhbCdcbiAgICAgICAgICAgICAgICBFTFNFIE5VTExcbiAgICAgICAgICAgIEVORCBBUyBnZW5lcmF0ZWRfc3RvcmFnZSxcbiAgICAgICAgICAgIENBU0VcbiAgICAgICAgICAgICAgICBXSEVOIGEuYXR0Z2VuZXJhdGVkICE9ICcnIFRIRU4gcGdfZ2V0X2V4cHIoYWQuYWRiaW4sIGFkLmFkcmVsaWQpXG4gICAgICAgICAgICAgICAgRUxTRSBOVUxMXG4gICAgICAgICAgICBFTkQgQVMgZ2VuZXJhdGVkX2V4cHJlc3Npb24sXG4gICAgICAgICAgICBjb2xfZGVzY3JpcHRpb24oYy5vaWQsIGEuYXR0bnVtKSBBUyBjb21tZW50XG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUgYSBPTiBhLmF0dHJlbGlkID0gYy5vaWRcbiAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfYXR0cmRlZiBhZCBPTiBhZC5hZHJlbGlkID0gYS5hdHRyZWxpZCBBTkQgYWQuYWRudW0gPSBhLmF0dG51bVxuICAgICAgICBXSEVSRSBjLnJlbG5hbWUgPSAkMVxuICAgICAgICAgICAgQU5EIGMucmVsbmFtZXNwYWNlID0gKFNFTEVDVCBvaWQgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgbnNwbmFtZSA9ICdwdWJsaWMnKVxuICAgICAgICAgICAgQU5EIGEuYXR0bnVtID4gMFxuICAgICAgICAgICAgQU5EIE5PVCBhLmF0dGlzZHJvcHBlZFxuICAgICAgICBPUkRFUiBCWSBhLmF0dG51bVxuICAgICAgICBgLFxuICAgICAgICBbcmVsYXRpb25OYW1lXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzO1xufTtcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import type { Pool } from "pg";
1
+ import type { Pool } from 'pg';
2
2
  export type TEnumInfo = {
3
3
  values: string[];
4
4
  comment: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"enums.d.mts","sourceRoot":"./src/","sources":["db/enums.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAU/B,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEtD,eAAO,MAAM,gBAAgB,GAAU,MAAM,IAAI,KAAG,OAAO,CAAC,aAAa,CAyBxE,CAAC"}
1
+ {"version":3,"file":"enums.d.mts","sourceRoot":"./src/","sources":["db/enums.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAU7B,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEtD,eAAO,MAAM,gBAAgB,GAAU,MAAM,IAAI,KAAG,OAAO,CAAC,aAAa,CAyBxE,CAAC"}
package/dist/db/enums.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { groupBy } from "es-toolkit";
1
+ import { groupBy } from 'es-toolkit';
2
2
  export const fetchPublicEnums = async (pool) => {
3
3
  const result = await pool.query(`
4
4
  SELECT
@@ -21,4 +21,4 @@ export const fetchPublicEnums = async (pool) => {
21
21
  },
22
22
  ]));
23
23
  };
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bXMubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiZGIvZW51bXMubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFnQnJDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxJQUFVLEVBQTBCLEVBQUU7SUFDekUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFnQjs7Ozs7Ozs7Ozs7S0FXOUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU3RCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzFDLElBQUk7UUFDSjtZQUNJLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUk7U0FDcEM7S0FDSixDQUFDLENBQ0wsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUG9vbCB9IGZyb20gXCJwZ1wiO1xuaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gXCJlcy10b29sa2l0XCI7XG5cbnR5cGUgVEVudW1WYWx1ZVJvdyA9IHtcbiAgICBlbnVtX25hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHNvcnRfb3JkZXI6IG51bWJlcjtcbiAgICBjb21tZW50OiBzdHJpbmcgfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgVEVudW1JbmZvID0ge1xuICAgIHZhbHVlczogc3RyaW5nW107XG4gICAgY29tbWVudDogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFRHcm91cGVkRW51bXMgPSBSZWNvcmQ8c3RyaW5nLCBURW51bUluZm8+O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hQdWJsaWNFbnVtcyA9IGFzeW5jIChwb29sOiBQb29sKTogUHJvbWlzZTxUR3JvdXBlZEVudW1zPiA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeTxURW51bVZhbHVlUm93PihgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgdC50eXBuYW1lIEFTIGVudW1fbmFtZSxcbiAgICAgICAgICAgIGUuZW51bWxhYmVsIEFTIHZhbHVlLFxuICAgICAgICAgICAgZS5lbnVtc29ydG9yZGVyIEFTIHNvcnRfb3JkZXIsXG4gICAgICAgICAgICBvYmpfZGVzY3JpcHRpb24odC5vaWQsICdwZ190eXBlJykgQVMgY29tbWVudFxuICAgICAgICBGUk9NIHBnX2NhdGFsb2cucGdfdHlwZSB0XG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19lbnVtIGUgT04gdC5vaWQgPSBlLmVudW10eXBpZFxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gdC50eXBuYW1lc3BhY2UgPSBuLm9pZFxuICAgICAgICBXSEVSRSBuLm5zcG5hbWUgPSAncHVibGljJ1xuICAgICAgICBPUkRFUiBCWSBlbnVtX25hbWUsIHNvcnRfb3JkZXJcbiAgICBgKTtcblxuICAgIGNvbnN0IGdyb3VwZWQgPSBncm91cEJ5KHJlc3VsdC5yb3dzLCAocm93KSA9PiByb3cuZW51bV9uYW1lKTtcblxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGdyb3VwZWQpLm1hcCgoW25hbWUsIHJvd3NdKSA9PiBbXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlczogcm93cy5tYXAoKHIpID0+IHIudmFsdWUpLFxuICAgICAgICAgICAgICAgIGNvbW1lbnQ6IHJvd3NbMF0/LmNvbW1lbnQgPz8gbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgKTtcbn07XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bXMubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiZGIvZW51bXMubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFnQm5DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxJQUFVLEVBQTBCLEVBQUU7SUFDekUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFnQjs7Ozs7Ozs7Ozs7S0FXOUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU3RCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzFDLElBQUk7UUFDSjtZQUNJLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUk7U0FDcEM7S0FDSixDQUFDLENBQ0wsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5pbXBvcnQge2dyb3VwQnl9IGZyb20gJ2VzLXRvb2xraXQnO1xuXG50eXBlIFRFbnVtVmFsdWVSb3cgPSB7XG4gICAgZW51bV9uYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBzb3J0X29yZGVyOiBudW1iZXI7XG4gICAgY29tbWVudDogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFRFbnVtSW5mbyA9IHtcbiAgICB2YWx1ZXM6IHN0cmluZ1tdO1xuICAgIGNvbW1lbnQ6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBUR3JvdXBlZEVudW1zID0gUmVjb3JkPHN0cmluZywgVEVudW1JbmZvPjtcblxuZXhwb3J0IGNvbnN0IGZldGNoUHVibGljRW51bXMgPSBhc3luYyAocG9vbDogUG9vbCk6IFByb21pc2U8VEdyb3VwZWRFbnVtcz4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnk8VEVudW1WYWx1ZVJvdz4oYFxuICAgICAgICBTRUxFQ1RcbiAgICAgICAgICAgIHQudHlwbmFtZSBBUyBlbnVtX25hbWUsXG4gICAgICAgICAgICBlLmVudW1sYWJlbCBBUyB2YWx1ZSxcbiAgICAgICAgICAgIGUuZW51bXNvcnRvcmRlciBBUyBzb3J0X29yZGVyLFxuICAgICAgICAgICAgb2JqX2Rlc2NyaXB0aW9uKHQub2lkLCAncGdfdHlwZScpIEFTIGNvbW1lbnRcbiAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX3R5cGUgdFxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfZW51bSBlIE9OIHQub2lkID0gZS5lbnVtdHlwaWRcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIHQudHlwbmFtZXNwYWNlID0gbi5vaWRcbiAgICAgICAgV0hFUkUgbi5uc3BuYW1lID0gJ3B1YmxpYydcbiAgICAgICAgT1JERVIgQlkgZW51bV9uYW1lLCBzb3J0X29yZGVyXG4gICAgYCk7XG5cbiAgICBjb25zdCBncm91cGVkID0gZ3JvdXBCeShyZXN1bHQucm93cywgKHJvdykgPT4gcm93LmVudW1fbmFtZSk7XG5cbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhncm91cGVkKS5tYXAoKFtuYW1lLCByb3dzXSkgPT4gW1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IHJvd3MubWFwKChyKSA9PiByLnZhbHVlKSxcbiAgICAgICAgICAgICAgICBjb21tZW50OiByb3dzWzBdPy5jb21tZW50ID8/IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKSxcbiAgICApO1xufTtcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import type { Pool } from "pg";
1
+ import type { Pool } from 'pg';
2
2
  export type TRelationFileStats = {
3
3
  relation_name: string;
4
4
  file_path: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"file-stats.d.mts","sourceRoot":"./src/","sources":["db/file-stats.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,MAAM,MAAM,kBAAkB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAU,MAAM,IAAI,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,kBAAkB,CA6CzG,CAAC"}
1
+ {"version":3,"file":"file-stats.d.mts","sourceRoot":"./src/","sources":["db/file-stats.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,kBAAkB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAC/B,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,kBAAkB,CA6C5B,CAAC"}
@@ -40,4 +40,4 @@ export const fetchRelationFileStats = async (pool, relationName) => {
40
40
  `, [relationName]);
41
41
  return result.rows[0];
42
42
  };
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zdGF0cy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9maWxlLXN0YXRzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLEVBQUUsSUFBVSxFQUFFLFlBQW9CLEVBQStCLEVBQUU7SUFDMUcsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUMzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FzQ0MsRUFDRCxDQUFDLFlBQVksQ0FBQyxDQUNqQixDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUG9vbCB9IGZyb20gXCJwZ1wiO1xuXG5leHBvcnQgdHlwZSBUUmVsYXRpb25GaWxlU3RhdHMgPSB7XG4gICAgcmVsYXRpb25fbmFtZTogc3RyaW5nO1xuICAgIGZpbGVfcGF0aDogc3RyaW5nIHwgbnVsbDtcbiAgICBtb2RpZmljYXRpb25fdGltZTogRGF0ZTtcbiAgICBzaXplX2J5dGVzOiBudW1iZXI7XG4gICAgaXNfcGFydGl0aW9uZWQ6IGJvb2xlYW47XG4gICAgcGFydGl0aW9uX2NvdW50OiBudW1iZXIgfCBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGZldGNoUmVsYXRpb25GaWxlU3RhdHMgPSBhc3luYyAocG9vbDogUG9vbCwgcmVsYXRpb25OYW1lOiBzdHJpbmcpOiBQcm9taXNlPFRSZWxhdGlvbkZpbGVTdGF0cz4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnk8VFJlbGF0aW9uRmlsZVN0YXRzPihcbiAgICAgICAgYFxuICAgICAgICBXSVRIIHRhcmdldCBBUyAoXG4gICAgICAgICAgICBTRUxFQ1QgYy5vaWQsIGMucmVsbmFtZSwgYy5yZWxraW5kXG4gICAgICAgICAgICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgY1xuICAgICAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gYy5yZWxuYW1lc3BhY2VcbiAgICAgICAgICAgIFdIRVJFIG4ubnNwbmFtZSA9ICdwdWJsaWMnXG4gICAgICAgICAgICAgICAgQU5EIGMucmVsbmFtZSA9ICQxXG4gICAgICAgICAgICAgICAgQU5EIGMucmVsa2luZCBJTiAoJ3InLCAncCcsICdtJylcbiAgICAgICAgKSxcbiAgICAgICAgcGFydGl0aW9uX3N0YXRzIEFTIChcbiAgICAgICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgICAgIChwZ19zdGF0X2ZpbGUocGdfcmVsYXRpb25fZmlsZXBhdGgoY2hpbGQub2lkKSkpLm1vZGlmaWNhdGlvbiBBUyBtb2RpZmljYXRpb25fdGltZSxcbiAgICAgICAgICAgICAgICAocGdfc3RhdF9maWxlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKGNoaWxkLm9pZCkpKS5zaXplIEFTIHNpemVfYnl0ZXNcbiAgICAgICAgICAgIEZST00gdGFyZ2V0IHRcbiAgICAgICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpIE9OIGkuaW5ocGFyZW50ID0gdC5vaWRcbiAgICAgICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjaGlsZCBPTiBjaGlsZC5vaWQgPSBpLmluaHJlbGlkXG4gICAgICAgICAgICBXSEVSRSB0LnJlbGtpbmQgPSAncCdcbiAgICAgICAgKVxuICAgICAgICBTRUxFQ1RcbiAgICAgICAgICAgIHQucmVsbmFtZSBBUyByZWxhdGlvbl9uYW1lLFxuICAgICAgICAgICAgQ0FTRVxuICAgICAgICAgICAgICAgIFdIRU4gdC5yZWxraW5kID0gJ3AnIFRIRU4gTlVMTFxuICAgICAgICAgICAgICAgIEVMU0UgcGdfcmVsYXRpb25fZmlsZXBhdGgodC5vaWQpXG4gICAgICAgICAgICBFTkQgQVMgZmlsZV9wYXRoLFxuICAgICAgICAgICAgQ0FTRVxuICAgICAgICAgICAgICAgIFdIRU4gdC5yZWxraW5kID0gJ3AnIFRIRU4gKFNFTEVDVCBNQVgobW9kaWZpY2F0aW9uX3RpbWUpIEZST00gcGFydGl0aW9uX3N0YXRzKVxuICAgICAgICAgICAgICAgIEVMU0UgKHBnX3N0YXRfZmlsZShwZ19yZWxhdGlvbl9maWxlcGF0aCh0Lm9pZCkpKS5tb2RpZmljYXRpb25cbiAgICAgICAgICAgIEVORCBBUyBtb2RpZmljYXRpb25fdGltZSxcbiAgICAgICAgICAgIENBU0VcbiAgICAgICAgICAgICAgICBXSEVOIHQucmVsa2luZCA9ICdwJyBUSEVOIChTRUxFQ1QgQ09BTEVTQ0UoU1VNKHNpemVfYnl0ZXMpLCAwKSBGUk9NIHBhcnRpdGlvbl9zdGF0cylcbiAgICAgICAgICAgICAgICBFTFNFIChwZ19zdGF0X2ZpbGUocGdfcmVsYXRpb25fZmlsZXBhdGgodC5vaWQpKSkuc2l6ZVxuICAgICAgICAgICAgRU5EIEFTIHNpemVfYnl0ZXMsXG4gICAgICAgICAgICB0LnJlbGtpbmQgPSAncCcgQVMgaXNfcGFydGl0aW9uZWQsXG4gICAgICAgICAgICBDQVNFXG4gICAgICAgICAgICAgICAgV0hFTiB0LnJlbGtpbmQgPSAncCcgVEhFTiAoU0VMRUNUIENPVU5UKCopIEZST00gcGFydGl0aW9uX3N0YXRzKVxuICAgICAgICAgICAgICAgIEVMU0UgTlVMTFxuICAgICAgICAgICAgRU5EIEFTIHBhcnRpdGlvbl9jb3VudFxuICAgICAgICBGUk9NIHRhcmdldCB0XG4gICAgICAgIGAsXG4gICAgICAgIFtyZWxhdGlvbk5hbWVdXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQucm93c1swXTtcbn07XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zdGF0cy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9maWxlLXN0YXRzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLEVBQ3ZDLElBQVUsRUFDVixZQUFvQixFQUNPLEVBQUU7SUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUMzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FzQ0MsRUFDRCxDQUFDLFlBQVksQ0FBQyxDQUNqQixDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5cbmV4cG9ydCB0eXBlIFRSZWxhdGlvbkZpbGVTdGF0cyA9IHtcbiAgICByZWxhdGlvbl9uYW1lOiBzdHJpbmc7XG4gICAgZmlsZV9wYXRoOiBzdHJpbmcgfCBudWxsO1xuICAgIG1vZGlmaWNhdGlvbl90aW1lOiBEYXRlO1xuICAgIHNpemVfYnl0ZXM6IG51bWJlcjtcbiAgICBpc19wYXJ0aXRpb25lZDogYm9vbGVhbjtcbiAgICBwYXJ0aXRpb25fY291bnQ6IG51bWJlciB8IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hSZWxhdGlvbkZpbGVTdGF0cyA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuICAgIHJlbGF0aW9uTmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTxUUmVsYXRpb25GaWxlU3RhdHM+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PFRSZWxhdGlvbkZpbGVTdGF0cz4oXG4gICAgICAgIGBcbiAgICAgICAgV0lUSCB0YXJnZXQgQVMgKFxuICAgICAgICAgICAgU0VMRUNUIGMub2lkLCBjLnJlbG5hbWUsIGMucmVsa2luZFxuICAgICAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiAgICAgICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlXG4gICAgICAgICAgICBXSEVSRSBuLm5zcG5hbWUgPSAncHVibGljJ1xuICAgICAgICAgICAgICAgIEFORCBjLnJlbG5hbWUgPSAkMVxuICAgICAgICAgICAgICAgIEFORCBjLnJlbGtpbmQgSU4gKCdyJywgJ3AnLCAnbScpXG4gICAgICAgICksXG4gICAgICAgIHBhcnRpdGlvbl9zdGF0cyBBUyAoXG4gICAgICAgICAgICBTRUxFQ1RcbiAgICAgICAgICAgICAgICAocGdfc3RhdF9maWxlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKGNoaWxkLm9pZCkpKS5tb2RpZmljYXRpb24gQVMgbW9kaWZpY2F0aW9uX3RpbWUsXG4gICAgICAgICAgICAgICAgKHBnX3N0YXRfZmlsZShwZ19yZWxhdGlvbl9maWxlcGF0aChjaGlsZC5vaWQpKSkuc2l6ZSBBUyBzaXplX2J5dGVzXG4gICAgICAgICAgICBGUk9NIHRhcmdldCB0XG4gICAgICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaSBPTiBpLmluaHBhcmVudCA9IHQub2lkXG4gICAgICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgY2hpbGQgT04gY2hpbGQub2lkID0gaS5pbmhyZWxpZFxuICAgICAgICAgICAgV0hFUkUgdC5yZWxraW5kID0gJ3AnXG4gICAgICAgIClcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgICB0LnJlbG5hbWUgQVMgcmVsYXRpb25fbmFtZSxcbiAgICAgICAgICAgIENBU0VcbiAgICAgICAgICAgICAgICBXSEVOIHQucmVsa2luZCA9ICdwJyBUSEVOIE5VTExcbiAgICAgICAgICAgICAgICBFTFNFIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKHQub2lkKVxuICAgICAgICAgICAgRU5EIEFTIGZpbGVfcGF0aCxcbiAgICAgICAgICAgIENBU0VcbiAgICAgICAgICAgICAgICBXSEVOIHQucmVsa2luZCA9ICdwJyBUSEVOIChTRUxFQ1QgTUFYKG1vZGlmaWNhdGlvbl90aW1lKSBGUk9NIHBhcnRpdGlvbl9zdGF0cylcbiAgICAgICAgICAgICAgICBFTFNFIChwZ19zdGF0X2ZpbGUocGdfcmVsYXRpb25fZmlsZXBhdGgodC5vaWQpKSkubW9kaWZpY2F0aW9uXG4gICAgICAgICAgICBFTkQgQVMgbW9kaWZpY2F0aW9uX3RpbWUsXG4gICAgICAgICAgICBDQVNFXG4gICAgICAgICAgICAgICAgV0hFTiB0LnJlbGtpbmQgPSAncCcgVEhFTiAoU0VMRUNUIENPQUxFU0NFKFNVTShzaXplX2J5dGVzKSwgMCkgRlJPTSBwYXJ0aXRpb25fc3RhdHMpXG4gICAgICAgICAgICAgICAgRUxTRSAocGdfc3RhdF9maWxlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKHQub2lkKSkpLnNpemVcbiAgICAgICAgICAgIEVORCBBUyBzaXplX2J5dGVzLFxuICAgICAgICAgICAgdC5yZWxraW5kID0gJ3AnIEFTIGlzX3BhcnRpdGlvbmVkLFxuICAgICAgICAgICAgQ0FTRVxuICAgICAgICAgICAgICAgIFdIRU4gdC5yZWxraW5kID0gJ3AnIFRIRU4gKFNFTEVDVCBDT1VOVCgqKSBGUk9NIHBhcnRpdGlvbl9zdGF0cylcbiAgICAgICAgICAgICAgICBFTFNFIE5VTExcbiAgICAgICAgICAgIEVORCBBUyBwYXJ0aXRpb25fY291bnRcbiAgICAgICAgRlJPTSB0YXJnZXQgdFxuICAgICAgICBgLFxuICAgICAgICBbcmVsYXRpb25OYW1lXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzWzBdO1xufTtcbiJdfQ==
@@ -1,5 +1,5 @@
1
- import type { Pool } from "pg";
2
- type TForeignKeyAction = "NO ACTION" | "RESTRICT" | "CASCADE" | "SET NULL" | "SET DEFAULT";
1
+ import type { Pool } from 'pg';
2
+ type TForeignKeyAction = 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SET DEFAULT';
3
3
  export type TForeignKeyInfo = {
4
4
  constraint_name: string;
5
5
  attributes: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"foreign-keys.d.mts","sourceRoot":"./src/","sources":["db/foreign-keys.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,KAAK,iBAAiB,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;AAE3F,MAAM,MAAM,eAAe,GAAG;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,IAAI,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,eAAe,EAAE,CA8C1G,CAAC"}
1
+ {"version":3,"file":"foreign-keys.d.mts","sourceRoot":"./src/","sources":["db/foreign-keys.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,KAAK,iBAAiB,GAChB,WAAW,GACX,UAAU,GACV,SAAS,GACT,UAAU,GACV,aAAa,CAAC;AAEpB,MAAM,MAAM,eAAe,GAAG;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACjC,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,eAAe,EAAE,CA8C3B,CAAC"}
@@ -41,4 +41,4 @@ export const fetchRelationForeignKeys = async (pool, relationName) => {
41
41
  `, [relationName]);
42
42
  return result.rows;
43
43
  };
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWlnbi1rZXlzLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImRiL2ZvcmVpZ24ta2V5cy5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0EsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxFQUFFLElBQVUsRUFBRSxZQUFvQixFQUE4QixFQUFFO0lBQzNHLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQXVDQyxFQUNELENBQUMsWUFBWSxDQUFDLENBQ2pCLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQb29sIH0gZnJvbSBcInBnXCI7XG5cbnR5cGUgVEZvcmVpZ25LZXlBY3Rpb24gPSBcIk5PIEFDVElPTlwiIHwgXCJSRVNUUklDVFwiIHwgXCJDQVNDQURFXCIgfCBcIlNFVCBOVUxMXCIgfCBcIlNFVCBERUZBVUxUXCI7XG5cbmV4cG9ydCB0eXBlIFRGb3JlaWduS2V5SW5mbyA9IHtcbiAgICBjb25zdHJhaW50X25hbWU6IHN0cmluZztcbiAgICBhdHRyaWJ1dGVzOiBzdHJpbmdbXTtcbiAgICByZWZlcmVuY2VkX3JlbGF0aW9uOiBzdHJpbmc7XG4gICAgcmVmZXJlbmNlZF9hdHRyaWJ1dGVzOiBzdHJpbmdbXTtcbiAgICBvbl91cGRhdGU6IFRGb3JlaWduS2V5QWN0aW9uO1xuICAgIG9uX2RlbGV0ZTogVEZvcmVpZ25LZXlBY3Rpb247XG4gICAgY29tbWVudDogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaFJlbGF0aW9uRm9yZWlnbktleXMgPSBhc3luYyAocG9vbDogUG9vbCwgcmVsYXRpb25OYW1lOiBzdHJpbmcpOiBQcm9taXNlPFRGb3JlaWduS2V5SW5mb1tdPiA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeTxURm9yZWlnbktleUluZm8+KFxuICAgICAgICBgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgY29uLmNvbm5hbWUgQVMgY29uc3RyYWludF9uYW1lLFxuICAgICAgICAgICAgQVJSQVkoXG4gICAgICAgICAgICAgICAgU0VMRUNUIGEuYXR0bmFtZVxuICAgICAgICAgICAgICAgIEZST00gdW5uZXN0KGNvbi5jb25rZXkpIFdJVEggT1JESU5BTElUWSBBUyBjb2xzKGF0dG51bSwgb3JkKVxuICAgICAgICAgICAgICAgIEpPSU4gcGdfYXR0cmlidXRlIGEgT04gYS5hdHRyZWxpZCA9IGNvbi5jb25yZWxpZCBBTkQgYS5hdHRudW0gPSBjb2xzLmF0dG51bVxuICAgICAgICAgICAgICAgIE9SREVSIEJZIGNvbHMub3JkXG4gICAgICAgICAgICApIEFTIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICByZWZfY2wucmVsbmFtZSBBUyByZWZlcmVuY2VkX3JlbGF0aW9uLFxuICAgICAgICAgICAgQVJSQVkoXG4gICAgICAgICAgICAgICAgU0VMRUNUIGEuYXR0bmFtZVxuICAgICAgICAgICAgICAgIEZST00gdW5uZXN0KGNvbi5jb25ma2V5KSBXSVRIIE9SRElOQUxJVFkgQVMgY29scyhhdHRudW0sIG9yZClcbiAgICAgICAgICAgICAgICBKT0lOIHBnX2F0dHJpYnV0ZSBhIE9OIGEuYXR0cmVsaWQgPSBjb24uY29uZnJlbGlkIEFORCBhLmF0dG51bSA9IGNvbHMuYXR0bnVtXG4gICAgICAgICAgICAgICAgT1JERVIgQlkgY29scy5vcmRcbiAgICAgICAgICAgICkgQVMgcmVmZXJlbmNlZF9hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgQ0FTRSBjb24uY29uZnVwZHR5cGVcbiAgICAgICAgICAgICAgICBXSEVOICdhJyBUSEVOICdOTyBBQ1RJT04nXG4gICAgICAgICAgICAgICAgV0hFTiAncicgVEhFTiAnUkVTVFJJQ1QnXG4gICAgICAgICAgICAgICAgV0hFTiAnYycgVEhFTiAnQ0FTQ0FERSdcbiAgICAgICAgICAgICAgICBXSEVOICduJyBUSEVOICdTRVQgTlVMTCdcbiAgICAgICAgICAgICAgICBXSEVOICdkJyBUSEVOICdTRVQgREVGQVVMVCdcbiAgICAgICAgICAgIEVORCBBUyBvbl91cGRhdGUsXG4gICAgICAgICAgICBDQVNFIGNvbi5jb25mZGVsdHlwZVxuICAgICAgICAgICAgICAgIFdIRU4gJ2EnIFRIRU4gJ05PIEFDVElPTidcbiAgICAgICAgICAgICAgICBXSEVOICdyJyBUSEVOICdSRVNUUklDVCdcbiAgICAgICAgICAgICAgICBXSEVOICdjJyBUSEVOICdDQVNDQURFJ1xuICAgICAgICAgICAgICAgIFdIRU4gJ24nIFRIRU4gJ1NFVCBOVUxMJ1xuICAgICAgICAgICAgICAgIFdIRU4gJ2QnIFRIRU4gJ1NFVCBERUZBVUxUJ1xuICAgICAgICAgICAgRU5EIEFTIG9uX2RlbGV0ZSxcbiAgICAgICAgICAgIG9ial9kZXNjcmlwdGlvbihjb24ub2lkLCAncGdfY29uc3RyYWludCcpIEFTIGNvbW1lbnRcbiAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgY29uXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjbCBPTiBjbC5vaWQgPSBjb24uY29ucmVsaWRcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHJlZl9jbCBPTiByZWZfY2wub2lkID0gY29uLmNvbmZyZWxpZFxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjbC5yZWxuYW1lc3BhY2VcbiAgICAgICAgV0hFUkUgY29uLmNvbnR5cGUgPSAnZidcbiAgICAgICAgICAgIEFORCBuLm5zcG5hbWUgPSAncHVibGljJ1xuICAgICAgICAgICAgQU5EIGNsLnJlbG5hbWUgPSAkMVxuICAgICAgICBPUkRFUiBCWSBjb24uY29ubmFtZVxuICAgICAgICBgLFxuICAgICAgICBbcmVsYXRpb25OYW1lXVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzdWx0LnJvd3M7XG59O1xuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWlnbi1rZXlzLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImRiL2ZvcmVpZ24ta2V5cy5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJBLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEtBQUssRUFDekMsSUFBVSxFQUNWLFlBQW9CLEVBQ00sRUFBRTtJQUM1QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0F1Q0MsRUFDRCxDQUFDLFlBQVksQ0FBQyxDQUNqQixDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5cbnR5cGUgVEZvcmVpZ25LZXlBY3Rpb24gPVxuICAgIHwgJ05PIEFDVElPTidcbiAgICB8ICdSRVNUUklDVCdcbiAgICB8ICdDQVNDQURFJ1xuICAgIHwgJ1NFVCBOVUxMJ1xuICAgIHwgJ1NFVCBERUZBVUxUJztcblxuZXhwb3J0IHR5cGUgVEZvcmVpZ25LZXlJbmZvID0ge1xuICAgIGNvbnN0cmFpbnRfbmFtZTogc3RyaW5nO1xuICAgIGF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICAgIHJlZmVyZW5jZWRfcmVsYXRpb246IHN0cmluZztcbiAgICByZWZlcmVuY2VkX2F0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICAgIG9uX3VwZGF0ZTogVEZvcmVpZ25LZXlBY3Rpb247XG4gICAgb25fZGVsZXRlOiBURm9yZWlnbktleUFjdGlvbjtcbiAgICBjb21tZW50OiBzdHJpbmcgfCBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGZldGNoUmVsYXRpb25Gb3JlaWduS2V5cyA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuICAgIHJlbGF0aW9uTmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTxURm9yZWlnbktleUluZm9bXT4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnk8VEZvcmVpZ25LZXlJbmZvPihcbiAgICAgICAgYFxuICAgICAgICBTRUxFQ1RcbiAgICAgICAgICAgIGNvbi5jb25uYW1lIEFTIGNvbnN0cmFpbnRfbmFtZSxcbiAgICAgICAgICAgIEFSUkFZKFxuICAgICAgICAgICAgICAgIFNFTEVDVCBhLmF0dG5hbWVcbiAgICAgICAgICAgICAgICBGUk9NIHVubmVzdChjb24uY29ua2V5KSBXSVRIIE9SRElOQUxJVFkgQVMgY29scyhhdHRudW0sIG9yZClcbiAgICAgICAgICAgICAgICBKT0lOIHBnX2F0dHJpYnV0ZSBhIE9OIGEuYXR0cmVsaWQgPSBjb24uY29ucmVsaWQgQU5EIGEuYXR0bnVtID0gY29scy5hdHRudW1cbiAgICAgICAgICAgICAgICBPUkRFUiBCWSBjb2xzLm9yZFxuICAgICAgICAgICAgKSBBUyBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgcmVmX2NsLnJlbG5hbWUgQVMgcmVmZXJlbmNlZF9yZWxhdGlvbixcbiAgICAgICAgICAgIEFSUkFZKFxuICAgICAgICAgICAgICAgIFNFTEVDVCBhLmF0dG5hbWVcbiAgICAgICAgICAgICAgICBGUk9NIHVubmVzdChjb24uY29uZmtleSkgV0lUSCBPUkRJTkFMSVRZIEFTIGNvbHMoYXR0bnVtLCBvcmQpXG4gICAgICAgICAgICAgICAgSk9JTiBwZ19hdHRyaWJ1dGUgYSBPTiBhLmF0dHJlbGlkID0gY29uLmNvbmZyZWxpZCBBTkQgYS5hdHRudW0gPSBjb2xzLmF0dG51bVxuICAgICAgICAgICAgICAgIE9SREVSIEJZIGNvbHMub3JkXG4gICAgICAgICAgICApIEFTIHJlZmVyZW5jZWRfYXR0cmlidXRlcyxcbiAgICAgICAgICAgIENBU0UgY29uLmNvbmZ1cGR0eXBlXG4gICAgICAgICAgICAgICAgV0hFTiAnYScgVEhFTiAnTk8gQUNUSU9OJ1xuICAgICAgICAgICAgICAgIFdIRU4gJ3InIFRIRU4gJ1JFU1RSSUNUJ1xuICAgICAgICAgICAgICAgIFdIRU4gJ2MnIFRIRU4gJ0NBU0NBREUnXG4gICAgICAgICAgICAgICAgV0hFTiAnbicgVEhFTiAnU0VUIE5VTEwnXG4gICAgICAgICAgICAgICAgV0hFTiAnZCcgVEhFTiAnU0VUIERFRkFVTFQnXG4gICAgICAgICAgICBFTkQgQVMgb25fdXBkYXRlLFxuICAgICAgICAgICAgQ0FTRSBjb24uY29uZmRlbHR5cGVcbiAgICAgICAgICAgICAgICBXSEVOICdhJyBUSEVOICdOTyBBQ1RJT04nXG4gICAgICAgICAgICAgICAgV0hFTiAncicgVEhFTiAnUkVTVFJJQ1QnXG4gICAgICAgICAgICAgICAgV0hFTiAnYycgVEhFTiAnQ0FTQ0FERSdcbiAgICAgICAgICAgICAgICBXSEVOICduJyBUSEVOICdTRVQgTlVMTCdcbiAgICAgICAgICAgICAgICBXSEVOICdkJyBUSEVOICdTRVQgREVGQVVMVCdcbiAgICAgICAgICAgIEVORCBBUyBvbl9kZWxldGUsXG4gICAgICAgICAgICBvYmpfZGVzY3JpcHRpb24oY29uLm9pZCwgJ3BnX2NvbnN0cmFpbnQnKSBBUyBjb21tZW50XG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGNvblxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgY2wgT04gY2wub2lkID0gY29uLmNvbnJlbGlkXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyByZWZfY2wgT04gcmVmX2NsLm9pZCA9IGNvbi5jb25mcmVsaWRcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gY2wucmVsbmFtZXNwYWNlXG4gICAgICAgIFdIRVJFIGNvbi5jb250eXBlID0gJ2YnXG4gICAgICAgICAgICBBTkQgbi5uc3BuYW1lID0gJ3B1YmxpYydcbiAgICAgICAgICAgIEFORCBjbC5yZWxuYW1lID0gJDFcbiAgICAgICAgT1JERVIgQlkgY29uLmNvbm5hbWVcbiAgICAgICAgYCxcbiAgICAgICAgW3JlbGF0aW9uTmFtZV0sXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQucm93cztcbn07XG4iXX0=
@@ -1,10 +1,10 @@
1
- export { fetchPublicRelations, type TRelationType, type TRelationInfo, type TGroupedRelations } from "./relations.mjs";
2
- export { fetchRelationAttributes, type TAttributeKind, type TGeneratedStorage, type TAttributeInfo } from "./attributes.mjs";
3
- export { fetchPublicEnums, type TEnumInfo, type TGroupedEnums } from "./enums.mjs";
4
- export { fetchRelationIndexes, type TIndexInfo } from "./indexes.mjs";
5
- export { fetchRelationForeignKeys, type TForeignKeyInfo } from "./foreign-keys.mjs";
6
- export { fetchPostgresVersion, type TPostgresVersion, fetchDatabaseIdentifier, type TDatabaseIdentifier } from "./version.mjs";
7
- export { fetchRelationFileStats, type TRelationFileStats } from "./file-stats.mjs";
8
- export { analyzeRelation } from "./analyze.mjs";
9
- export { fetchRelationStats, type TRelationStats, type TAttributeStats } from "./stats.mjs";
1
+ export { fetchPublicRelations, type TRelationType, type TRelationInfo, type TGroupedRelations, } from './relations.mjs';
2
+ export { fetchRelationAttributes, type TAttributeKind, type TGeneratedStorage, type TAttributeInfo, } from './attributes.mjs';
3
+ export { fetchPublicEnums, type TEnumInfo, type TGroupedEnums, } from './enums.mjs';
4
+ export { fetchRelationIndexes, type TIndexInfo } from './indexes.mjs';
5
+ export { fetchRelationForeignKeys, type TForeignKeyInfo, } from './foreign-keys.mjs';
6
+ export { fetchPostgresVersion, type TPostgresVersion, fetchDatabaseComment, fetchDatabaseIdentifier, type TDatabaseIdentifier, } from './version.mjs';
7
+ export { fetchRelationFileStats, type TRelationFileStats, } from './file-stats.mjs';
8
+ export { analyzeRelation } from './analyze.mjs';
9
+ export { fetchRelationStats, type TRelationStats, type TAttributeStats, } from './stats.mjs';
10
10
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"./src/","sources":["db/index.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvH,OAAO,EAAE,uBAAuB,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7H,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,uBAAuB,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC/H,OAAO,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"./src/","sources":["db/index.mts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,oBAAoB,EAAE,KAAK,UAAU,EAAC,MAAM,eAAe,CAAC;AACpE,OAAO,EACH,wBAAwB,EACxB,KAAK,eAAe,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,mBAAmB,GAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,sBAAsB,EACtB,KAAK,kBAAkB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,EACH,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,GACvB,MAAM,aAAa,CAAC"}
package/dist/db/index.mjs CHANGED
@@ -1,10 +1,10 @@
1
- export { fetchPublicRelations } from "./relations.mjs";
2
- export { fetchRelationAttributes } from "./attributes.mjs";
3
- export { fetchPublicEnums } from "./enums.mjs";
4
- export { fetchRelationIndexes } from "./indexes.mjs";
5
- export { fetchRelationForeignKeys } from "./foreign-keys.mjs";
6
- export { fetchPostgresVersion, fetchDatabaseIdentifier } from "./version.mjs";
7
- export { fetchRelationFileStats } from "./file-stats.mjs";
8
- export { analyzeRelation } from "./analyze.mjs";
9
- export { fetchRelationStats } from "./stats.mjs";
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiZGIvaW5kZXgubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBa0UsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsdUJBQXVCLEVBQW9FLE1BQU0sa0JBQWtCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGdCQUFnQixFQUFzQyxNQUFNLGFBQWEsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBd0IsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQXlCLHVCQUF1QixFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sa0JBQWtCLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQTZDLE1BQU0sYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZmV0Y2hQdWJsaWNSZWxhdGlvbnMsIHR5cGUgVFJlbGF0aW9uVHlwZSwgdHlwZSBUUmVsYXRpb25JbmZvLCB0eXBlIFRHcm91cGVkUmVsYXRpb25zIH0gZnJvbSBcIi4vcmVsYXRpb25zLm1qc1wiO1xuZXhwb3J0IHsgZmV0Y2hSZWxhdGlvbkF0dHJpYnV0ZXMsIHR5cGUgVEF0dHJpYnV0ZUtpbmQsIHR5cGUgVEdlbmVyYXRlZFN0b3JhZ2UsIHR5cGUgVEF0dHJpYnV0ZUluZm8gfSBmcm9tIFwiLi9hdHRyaWJ1dGVzLm1qc1wiO1xuZXhwb3J0IHsgZmV0Y2hQdWJsaWNFbnVtcywgdHlwZSBURW51bUluZm8sIHR5cGUgVEdyb3VwZWRFbnVtcyB9IGZyb20gXCIuL2VudW1zLm1qc1wiO1xuZXhwb3J0IHsgZmV0Y2hSZWxhdGlvbkluZGV4ZXMsIHR5cGUgVEluZGV4SW5mbyB9IGZyb20gXCIuL2luZGV4ZXMubWpzXCI7XG5leHBvcnQgeyBmZXRjaFJlbGF0aW9uRm9yZWlnbktleXMsIHR5cGUgVEZvcmVpZ25LZXlJbmZvIH0gZnJvbSBcIi4vZm9yZWlnbi1rZXlzLm1qc1wiO1xuZXhwb3J0IHsgZmV0Y2hQb3N0Z3Jlc1ZlcnNpb24sIHR5cGUgVFBvc3RncmVzVmVyc2lvbiwgZmV0Y2hEYXRhYmFzZUlkZW50aWZpZXIsIHR5cGUgVERhdGFiYXNlSWRlbnRpZmllciB9IGZyb20gXCIuL3ZlcnNpb24ubWpzXCI7XG5leHBvcnQgeyBmZXRjaFJlbGF0aW9uRmlsZVN0YXRzLCB0eXBlIFRSZWxhdGlvbkZpbGVTdGF0cyB9IGZyb20gXCIuL2ZpbGUtc3RhdHMubWpzXCI7XG5leHBvcnQgeyBhbmFseXplUmVsYXRpb24gfSBmcm9tIFwiLi9hbmFseXplLm1qc1wiO1xuZXhwb3J0IHsgZmV0Y2hSZWxhdGlvblN0YXRzLCB0eXBlIFRSZWxhdGlvblN0YXRzLCB0eXBlIFRBdHRyaWJ1dGVTdGF0cyB9IGZyb20gXCIuL3N0YXRzLm1qc1wiO1xuIl19
1
+ export { fetchPublicRelations, } from './relations.mjs';
2
+ export { fetchRelationAttributes, } from './attributes.mjs';
3
+ export { fetchPublicEnums, } from './enums.mjs';
4
+ export { fetchRelationIndexes } from './indexes.mjs';
5
+ export { fetchRelationForeignKeys, } from './foreign-keys.mjs';
6
+ export { fetchPostgresVersion, fetchDatabaseComment, fetchDatabaseIdentifier, } from './version.mjs';
7
+ export { fetchRelationFileStats, } from './file-stats.mjs';
8
+ export { analyzeRelation } from './analyze.mjs';
9
+ export { fetchRelationStats, } from './stats.mjs';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiZGIvaW5kZXgubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxvQkFBb0IsR0FJdkIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0gsdUJBQXVCLEdBSTFCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNILGdCQUFnQixHQUduQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUMsb0JBQW9CLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFDSCx3QkFBd0IsR0FFM0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0gsb0JBQW9CLEVBRXBCLG9CQUFvQixFQUNwQix1QkFBdUIsR0FFMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHNCQUFzQixHQUV6QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUNILGtCQUFrQixHQUdyQixNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gICAgZmV0Y2hQdWJsaWNSZWxhdGlvbnMsXG4gICAgdHlwZSBUUmVsYXRpb25UeXBlLFxuICAgIHR5cGUgVFJlbGF0aW9uSW5mbyxcbiAgICB0eXBlIFRHcm91cGVkUmVsYXRpb25zLFxufSBmcm9tICcuL3JlbGF0aW9ucy5tanMnO1xuZXhwb3J0IHtcbiAgICBmZXRjaFJlbGF0aW9uQXR0cmlidXRlcyxcbiAgICB0eXBlIFRBdHRyaWJ1dGVLaW5kLFxuICAgIHR5cGUgVEdlbmVyYXRlZFN0b3JhZ2UsXG4gICAgdHlwZSBUQXR0cmlidXRlSW5mbyxcbn0gZnJvbSAnLi9hdHRyaWJ1dGVzLm1qcyc7XG5leHBvcnQge1xuICAgIGZldGNoUHVibGljRW51bXMsXG4gICAgdHlwZSBURW51bUluZm8sXG4gICAgdHlwZSBUR3JvdXBlZEVudW1zLFxufSBmcm9tICcuL2VudW1zLm1qcyc7XG5leHBvcnQge2ZldGNoUmVsYXRpb25JbmRleGVzLCB0eXBlIFRJbmRleEluZm99IGZyb20gJy4vaW5kZXhlcy5tanMnO1xuZXhwb3J0IHtcbiAgICBmZXRjaFJlbGF0aW9uRm9yZWlnbktleXMsXG4gICAgdHlwZSBURm9yZWlnbktleUluZm8sXG59IGZyb20gJy4vZm9yZWlnbi1rZXlzLm1qcyc7XG5leHBvcnQge1xuICAgIGZldGNoUG9zdGdyZXNWZXJzaW9uLFxuICAgIHR5cGUgVFBvc3RncmVzVmVyc2lvbixcbiAgICBmZXRjaERhdGFiYXNlQ29tbWVudCxcbiAgICBmZXRjaERhdGFiYXNlSWRlbnRpZmllcixcbiAgICB0eXBlIFREYXRhYmFzZUlkZW50aWZpZXIsXG59IGZyb20gJy4vdmVyc2lvbi5tanMnO1xuZXhwb3J0IHtcbiAgICBmZXRjaFJlbGF0aW9uRmlsZVN0YXRzLFxuICAgIHR5cGUgVFJlbGF0aW9uRmlsZVN0YXRzLFxufSBmcm9tICcuL2ZpbGUtc3RhdHMubWpzJztcbmV4cG9ydCB7YW5hbHl6ZVJlbGF0aW9ufSBmcm9tICcuL2FuYWx5emUubWpzJztcbmV4cG9ydCB7XG4gICAgZmV0Y2hSZWxhdGlvblN0YXRzLFxuICAgIHR5cGUgVFJlbGF0aW9uU3RhdHMsXG4gICAgdHlwZSBUQXR0cmlidXRlU3RhdHMsXG59IGZyb20gJy4vc3RhdHMubWpzJztcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import type { Pool } from "pg";
1
+ import type { Pool } from 'pg';
2
2
  export type TIndexInfo = {
3
3
  index_name: string;
4
4
  relation_name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"indexes.d.mts","sourceRoot":"./src/","sources":["db/indexes.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,MAAM,MAAM,UAAU,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,MAAM,IAAI,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,UAAU,EAAE,CAwCjG,CAAC"}
1
+ {"version":3,"file":"indexes.d.mts","sourceRoot":"./src/","sources":["db/indexes.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,UAAU,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC7B,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,UAAU,EAAE,CAwCtB,CAAC"}
@@ -35,4 +35,4 @@ export const fetchRelationIndexes = async (pool, relationName) => {
35
35
  `, [relationName]);
36
36
  return result.rows;
37
37
  };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlcy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9pbmRleGVzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUFFLElBQVUsRUFBRSxZQUFvQixFQUF5QixFQUFFO0lBQ2xHLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWlDQyxFQUNELENBQUMsWUFBWSxDQUFDLENBQ2pCLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQb29sIH0gZnJvbSBcInBnXCI7XG5cbmV4cG9ydCB0eXBlIFRJbmRleEluZm8gPSB7XG4gICAgaW5kZXhfbmFtZTogc3RyaW5nO1xuICAgIHJlbGF0aW9uX25hbWU6IHN0cmluZztcbiAgICBpc191bmlxdWU6IGJvb2xlYW47XG4gICAgaXNfcHJpbWFyeTogYm9vbGVhbjtcbiAgICBpc19leGNsdXNpb246IGJvb2xlYW47XG4gICAgaXNfcGFydGlhbDogYm9vbGVhbjtcbiAgICBwYXJ0aWFsX3ByZWRpY2F0ZTogc3RyaW5nIHwgbnVsbDtcbiAgICBhdHRyaWJ1dGVzOiBzdHJpbmdbXTtcbiAgICBleGNsdXNpb25fb3BlcmF0b3JzOiBzdHJpbmdbXSB8IG51bGw7XG4gICAgZGVmaW5pdGlvbjogc3RyaW5nO1xuICAgIGNvbW1lbnQ6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hSZWxhdGlvbkluZGV4ZXMgPSBhc3luYyAocG9vbDogUG9vbCwgcmVsYXRpb25OYW1lOiBzdHJpbmcpOiBQcm9taXNlPFRJbmRleEluZm9bXT4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnk8VEluZGV4SW5mbz4oXG4gICAgICAgIGBcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgICBpLnJlbG5hbWUgQVMgaW5kZXhfbmFtZSxcbiAgICAgICAgICAgIHQucmVsbmFtZSBBUyByZWxhdGlvbl9uYW1lLFxuICAgICAgICAgICAgaXguaW5kaXN1bmlxdWUgQVMgaXNfdW5pcXVlLFxuICAgICAgICAgICAgaXguaW5kaXNwcmltYXJ5IEFTIGlzX3ByaW1hcnksXG4gICAgICAgICAgICBpeC5pbmRpc2V4Y2x1c2lvbiBBUyBpc19leGNsdXNpb24sXG4gICAgICAgICAgICBpeC5pbmRwcmVkIElTIE5PVCBOVUxMIEFTIGlzX3BhcnRpYWwsXG4gICAgICAgICAgICBwZ19nZXRfZXhwcihpeC5pbmRwcmVkLCBpeC5pbmRyZWxpZCkgQVMgcGFydGlhbF9wcmVkaWNhdGUsXG4gICAgICAgICAgICBBUlJBWShcbiAgICAgICAgICAgICAgICBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGl4LmluZGV4cmVsaWQsIGsgKyAxLCB0cnVlKVxuICAgICAgICAgICAgICAgIEZST00gZ2VuZXJhdGVfc3Vic2NyaXB0cyhpeC5pbmRrZXksIDEpIEFTIGtcbiAgICAgICAgICAgICAgICBPUkRFUiBCWSBrXG4gICAgICAgICAgICApIEFTIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBDQVNFXG4gICAgICAgICAgICAgICAgV0hFTiBpeC5pbmRpc2V4Y2x1c2lvbiBUSEVOIChcbiAgICAgICAgICAgICAgICAgICAgU0VMRUNUIEFSUkFZX0FHRyhvcC5vcHJuYW1lIE9SREVSIEJZIG9yZC5uKVxuICAgICAgICAgICAgICAgICAgICBGUk9NIHBnX2NvbnN0cmFpbnQgY29uXG4gICAgICAgICAgICAgICAgICAgIENST1NTIEpPSU4gTEFURVJBTCB1bm5lc3QoY29uLmNvbmV4Y2xvcCkgV0lUSCBPUkRJTkFMSVRZIEFTIG9yZChvcG9pZCwgbilcbiAgICAgICAgICAgICAgICAgICAgSk9JTiBwZ19vcGVyYXRvciBvcCBPTiBvcC5vaWQgPSBvcmQub3BvaWRcbiAgICAgICAgICAgICAgICAgICAgV0hFUkUgY29uLmNvbmluZGlkID0gaXguaW5kZXhyZWxpZFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBFTFNFIE5VTExcbiAgICAgICAgICAgIEVORCBBUyBleGNsdXNpb25fb3BlcmF0b3JzLFxuICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmKGl4LmluZGV4cmVsaWQpIEFTIGRlZmluaXRpb24sXG4gICAgICAgICAgICBvYmpfZGVzY3JpcHRpb24oaS5vaWQsICdwZ19jbGFzcycpIEFTIGNvbW1lbnRcbiAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2luZGV4IGl4XG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBpIE9OIGkub2lkID0gaXguaW5kZXhyZWxpZFxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgdCBPTiB0Lm9pZCA9IGl4LmluZHJlbGlkXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IHQucmVsbmFtZXNwYWNlXG4gICAgICAgIFdIRVJFIG4ubnNwbmFtZSA9ICdwdWJsaWMnXG4gICAgICAgICAgICBBTkQgdC5yZWxuYW1lID0gJDFcbiAgICAgICAgT1JERVIgQlkgaS5yZWxuYW1lXG4gICAgICAgIGAsXG4gICAgICAgIFtyZWxhdGlvbk5hbWVdXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQucm93cztcbn07XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlcy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9pbmRleGVzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUNyQyxJQUFVLEVBQ1YsWUFBb0IsRUFDQyxFQUFFO0lBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWlDQyxFQUNELENBQUMsWUFBWSxDQUFDLENBQ2pCLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Bvb2x9IGZyb20gJ3BnJztcblxuZXhwb3J0IHR5cGUgVEluZGV4SW5mbyA9IHtcbiAgICBpbmRleF9uYW1lOiBzdHJpbmc7XG4gICAgcmVsYXRpb25fbmFtZTogc3RyaW5nO1xuICAgIGlzX3VuaXF1ZTogYm9vbGVhbjtcbiAgICBpc19wcmltYXJ5OiBib29sZWFuO1xuICAgIGlzX2V4Y2x1c2lvbjogYm9vbGVhbjtcbiAgICBpc19wYXJ0aWFsOiBib29sZWFuO1xuICAgIHBhcnRpYWxfcHJlZGljYXRlOiBzdHJpbmcgfCBudWxsO1xuICAgIGF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICAgIGV4Y2x1c2lvbl9vcGVyYXRvcnM6IHN0cmluZ1tdIHwgbnVsbDtcbiAgICBkZWZpbml0aW9uOiBzdHJpbmc7XG4gICAgY29tbWVudDogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaFJlbGF0aW9uSW5kZXhlcyA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuICAgIHJlbGF0aW9uTmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTxUSW5kZXhJbmZvW10+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PFRJbmRleEluZm8+KFxuICAgICAgICBgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgaS5yZWxuYW1lIEFTIGluZGV4X25hbWUsXG4gICAgICAgICAgICB0LnJlbG5hbWUgQVMgcmVsYXRpb25fbmFtZSxcbiAgICAgICAgICAgIGl4LmluZGlzdW5pcXVlIEFTIGlzX3VuaXF1ZSxcbiAgICAgICAgICAgIGl4LmluZGlzcHJpbWFyeSBBUyBpc19wcmltYXJ5LFxuICAgICAgICAgICAgaXguaW5kaXNleGNsdXNpb24gQVMgaXNfZXhjbHVzaW9uLFxuICAgICAgICAgICAgaXguaW5kcHJlZCBJUyBOT1QgTlVMTCBBUyBpc19wYXJ0aWFsLFxuICAgICAgICAgICAgcGdfZ2V0X2V4cHIoaXguaW5kcHJlZCwgaXguaW5kcmVsaWQpIEFTIHBhcnRpYWxfcHJlZGljYXRlLFxuICAgICAgICAgICAgQVJSQVkoXG4gICAgICAgICAgICAgICAgU0VMRUNUIHBnX2dldF9pbmRleGRlZihpeC5pbmRleHJlbGlkLCBrICsgMSwgdHJ1ZSlcbiAgICAgICAgICAgICAgICBGUk9NIGdlbmVyYXRlX3N1YnNjcmlwdHMoaXguaW5ka2V5LCAxKSBBUyBrXG4gICAgICAgICAgICAgICAgT1JERVIgQlkga1xuICAgICAgICAgICAgKSBBUyBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgQ0FTRVxuICAgICAgICAgICAgICAgIFdIRU4gaXguaW5kaXNleGNsdXNpb24gVEhFTiAoXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBBUlJBWV9BR0cob3Aub3BybmFtZSBPUkRFUiBCWSBvcmQubilcbiAgICAgICAgICAgICAgICAgICAgRlJPTSBwZ19jb25zdHJhaW50IGNvblxuICAgICAgICAgICAgICAgICAgICBDUk9TUyBKT0lOIExBVEVSQUwgdW5uZXN0KGNvbi5jb25leGNsb3ApIFdJVEggT1JESU5BTElUWSBBUyBvcmQob3BvaWQsIG4pXG4gICAgICAgICAgICAgICAgICAgIEpPSU4gcGdfb3BlcmF0b3Igb3AgT04gb3Aub2lkID0gb3JkLm9wb2lkXG4gICAgICAgICAgICAgICAgICAgIFdIRVJFIGNvbi5jb25pbmRpZCA9IGl4LmluZGV4cmVsaWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgRUxTRSBOVUxMXG4gICAgICAgICAgICBFTkQgQVMgZXhjbHVzaW9uX29wZXJhdG9ycyxcbiAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZihpeC5pbmRleHJlbGlkKSBBUyBkZWZpbml0aW9uLFxuICAgICAgICAgICAgb2JqX2Rlc2NyaXB0aW9uKGkub2lkLCAncGdfY2xhc3MnKSBBUyBjb21tZW50XG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19pbmRleCBpeFxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgaSBPTiBpLm9pZCA9IGl4LmluZGV4cmVsaWRcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHQgT04gdC5vaWQgPSBpeC5pbmRyZWxpZFxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSB0LnJlbG5hbWVzcGFjZVxuICAgICAgICBXSEVSRSBuLm5zcG5hbWUgPSAncHVibGljJ1xuICAgICAgICAgICAgQU5EIHQucmVsbmFtZSA9ICQxXG4gICAgICAgIE9SREVSIEJZIGkucmVsbmFtZVxuICAgICAgICBgLFxuICAgICAgICBbcmVsYXRpb25OYW1lXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzO1xufTtcbiJdfQ==
@@ -1,5 +1,5 @@
1
- import type { Pool } from "pg";
2
- export type TRelationType = "partitioned_table" | "table" | "view" | "materialized_view";
1
+ import type { Pool } from 'pg';
2
+ export type TRelationType = 'partitioned_table' | 'table' | 'view' | 'materialized_view';
3
3
  export type TRelationInfo = {
4
4
  name: string;
5
5
  type: TRelationType;
@@ -1 +1 @@
1
- {"version":3,"file":"relations.d.mts","sourceRoot":"./src/","sources":["db/relations.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG/B,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,mBAAmB,CAAC;AAEzF,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC;AAEvE,eAAO,MAAM,oBAAoB,GAAU,MAAM,IAAI,KAAG,OAAO,CAAC,iBAAiB,CAqBhF,CAAC"}
1
+ {"version":3,"file":"relations.d.mts","sourceRoot":"./src/","sources":["db/relations.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAG7B,MAAM,MAAM,aAAa,GACnB,mBAAmB,GACnB,OAAO,GACP,MAAM,GACN,mBAAmB,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC;AAEvE,eAAO,MAAM,oBAAoB,GAC7B,MAAM,IAAI,KACX,OAAO,CAAC,iBAAiB,CAqB3B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { groupBy } from "es-toolkit";
1
+ import { groupBy } from 'es-toolkit';
2
2
  export const fetchPublicRelations = async (pool) => {
3
3
  const result = await pool.query(`
4
4
  SELECT relname AS name,
@@ -20,4 +20,4 @@ export const fetchPublicRelations = async (pool) => {
20
20
  `);
21
21
  return groupBy(result.rows, (row) => row.type);
22
22
  };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImRiL3JlbGF0aW9ucy5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQVlyQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQUUsSUFBVSxFQUE4QixFQUFFO0lBQ2pGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBaUI5QyxDQUFDLENBQUM7SUFFSCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFzQixDQUFDO0FBQ3hFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUG9vbCB9IGZyb20gXCJwZ1wiO1xuaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gXCJlcy10b29sa2l0XCI7XG5cbmV4cG9ydCB0eXBlIFRSZWxhdGlvblR5cGUgPSBcInBhcnRpdGlvbmVkX3RhYmxlXCIgfCBcInRhYmxlXCIgfCBcInZpZXdcIiB8IFwibWF0ZXJpYWxpemVkX3ZpZXdcIjtcblxuZXhwb3J0IHR5cGUgVFJlbGF0aW9uSW5mbyA9IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogVFJlbGF0aW9uVHlwZTtcbiAgICBjb21tZW50OiBzdHJpbmcgfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgVEdyb3VwZWRSZWxhdGlvbnMgPSBSZWNvcmQ8VFJlbGF0aW9uVHlwZSwgVFJlbGF0aW9uSW5mb1tdPjtcblxuZXhwb3J0IGNvbnN0IGZldGNoUHVibGljUmVsYXRpb25zID0gYXN5bmMgKHBvb2w6IFBvb2wpOiBQcm9taXNlPFRHcm91cGVkUmVsYXRpb25zPiA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeTxUUmVsYXRpb25JbmZvPihgXG4gICAgICAgIFNFTEVDVCByZWxuYW1lIEFTIG5hbWUsXG4gICAgICAgICAgICBDQVNFIHJlbGtpbmRcbiAgICAgICAgICAgICAgICBXSEVOICdwJyBUSEVOICdwYXJ0aXRpb25lZF90YWJsZSdcbiAgICAgICAgICAgICAgICBXSEVOICdyJyBUSEVOICd0YWJsZSdcbiAgICAgICAgICAgICAgICBXSEVOICd2JyBUSEVOICd2aWV3J1xuICAgICAgICAgICAgICAgIFdIRU4gJ20nIFRIRU4gJ21hdGVyaWFsaXplZF92aWV3J1xuICAgICAgICAgICAgRU5EIEFTIHR5cGUsXG4gICAgICAgICAgICBvYmpfZGVzY3JpcHRpb24ob2lkLCAncGdfY2xhc3MnKSBBUyBjb21tZW50XG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzc1xuICAgICAgICBXSEVSRSByZWxuYW1lc3BhY2UgPSAoU0VMRUNUIG9pZCBGUk9NIHBnX25hbWVzcGFjZSBXSEVSRSBuc3BuYW1lID0gJ3B1YmxpYycpXG4gICAgICAgICAgICBBTkQgKFxuICAgICAgICAgICAgICAgIHJlbGtpbmQgPSAncCdcbiAgICAgICAgICAgICAgICBPUiAocmVsa2luZCA9ICdyJyBBTkQgTk9UIHJlbGlzcGFydGl0aW9uKVxuICAgICAgICAgICAgICAgIE9SIHJlbGtpbmQgSU4gKCd2JywgJ20nKVxuICAgICAgICAgICAgKVxuICAgICAgICBPUkRFUiBCWSB0eXBlLCBuYW1lXG4gICAgYCk7XG5cbiAgICByZXR1cm4gZ3JvdXBCeShyZXN1bHQucm93cywgKHJvdykgPT4gcm93LnR5cGUpIGFzIFRHcm91cGVkUmVsYXRpb25zO1xufTtcbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImRiL3JlbGF0aW9ucy5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQWdCbkMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUNyQyxJQUFVLEVBQ2dCLEVBQUU7SUFDNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FpQjlDLENBQUMsQ0FBQztJQUVILE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQXNCLENBQUM7QUFDeEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Bvb2x9IGZyb20gJ3BnJztcbmltcG9ydCB7Z3JvdXBCeX0gZnJvbSAnZXMtdG9vbGtpdCc7XG5cbmV4cG9ydCB0eXBlIFRSZWxhdGlvblR5cGUgPVxuICAgIHwgJ3BhcnRpdGlvbmVkX3RhYmxlJ1xuICAgIHwgJ3RhYmxlJ1xuICAgIHwgJ3ZpZXcnXG4gICAgfCAnbWF0ZXJpYWxpemVkX3ZpZXcnO1xuXG5leHBvcnQgdHlwZSBUUmVsYXRpb25JbmZvID0ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBUUmVsYXRpb25UeXBlO1xuICAgIGNvbW1lbnQ6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBUR3JvdXBlZFJlbGF0aW9ucyA9IFJlY29yZDxUUmVsYXRpb25UeXBlLCBUUmVsYXRpb25JbmZvW10+O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hQdWJsaWNSZWxhdGlvbnMgPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbik6IFByb21pc2U8VEdyb3VwZWRSZWxhdGlvbnM+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PFRSZWxhdGlvbkluZm8+KGBcbiAgICAgICAgU0VMRUNUIHJlbG5hbWUgQVMgbmFtZSxcbiAgICAgICAgICAgIENBU0UgcmVsa2luZFxuICAgICAgICAgICAgICAgIFdIRU4gJ3AnIFRIRU4gJ3BhcnRpdGlvbmVkX3RhYmxlJ1xuICAgICAgICAgICAgICAgIFdIRU4gJ3InIFRIRU4gJ3RhYmxlJ1xuICAgICAgICAgICAgICAgIFdIRU4gJ3YnIFRIRU4gJ3ZpZXcnXG4gICAgICAgICAgICAgICAgV0hFTiAnbScgVEhFTiAnbWF0ZXJpYWxpemVkX3ZpZXcnXG4gICAgICAgICAgICBFTkQgQVMgdHlwZSxcbiAgICAgICAgICAgIG9ial9kZXNjcmlwdGlvbihvaWQsICdwZ19jbGFzcycpIEFTIGNvbW1lbnRcbiAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzXG4gICAgICAgIFdIRVJFIHJlbG5hbWVzcGFjZSA9IChTRUxFQ1Qgb2lkIEZST00gcGdfbmFtZXNwYWNlIFdIRVJFIG5zcG5hbWUgPSAncHVibGljJylcbiAgICAgICAgICAgIEFORCAoXG4gICAgICAgICAgICAgICAgcmVsa2luZCA9ICdwJ1xuICAgICAgICAgICAgICAgIE9SIChyZWxraW5kID0gJ3InIEFORCBOT1QgcmVsaXNwYXJ0aXRpb24pXG4gICAgICAgICAgICAgICAgT1IgcmVsa2luZCBJTiAoJ3YnLCAnbScpXG4gICAgICAgICAgICApXG4gICAgICAgIE9SREVSIEJZIHR5cGUsIG5hbWVcbiAgICBgKTtcblxuICAgIHJldHVybiBncm91cEJ5KHJlc3VsdC5yb3dzLCAocm93KSA9PiByb3cudHlwZSkgYXMgVEdyb3VwZWRSZWxhdGlvbnM7XG59O1xuIl19
@@ -1,4 +1,4 @@
1
- import type { Pool } from "pg";
1
+ import type { Pool } from 'pg';
2
2
  export type TAttributeStats = {
3
3
  attribute_name: string;
4
4
  estimated_distinct: number;
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.mts","sourceRoot":"./src/","sources":["db/stats.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,MAAM,MAAM,eAAe,GAAG;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,MAAM,IAAI,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,cAAc,CAqCjG,CAAC"}
1
+ {"version":3,"file":"stats.d.mts","sourceRoot":"./src/","sources":["db/stats.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,eAAe,GAAG;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC3B,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,cAAc,CAuCxB,CAAC"}