@event-driven-io/pongo 0.17.0-beta.1 → 0.17.0-beta.10

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 (60) hide show
  1. package/dist/{chunk-DL4E3N6J.js → chunk-RBJRJFQY.js} +3 -7
  2. package/dist/chunk-RBJRJFQY.js.map +1 -0
  3. package/dist/chunk-TFE4LVVL.cjs +330 -0
  4. package/dist/chunk-TFE4LVVL.cjs.map +1 -0
  5. package/dist/{chunk-YLV7YIPZ.cjs → chunk-TP73JUIX.cjs} +3 -7
  6. package/dist/chunk-TP73JUIX.cjs.map +1 -0
  7. package/dist/chunk-XOVARYG4.js +330 -0
  8. package/dist/chunk-XOVARYG4.js.map +1 -0
  9. package/dist/cli.cjs +38 -22
  10. package/dist/cli.cjs.map +1 -1
  11. package/dist/cli.js +28 -12
  12. package/dist/cli.js.map +1 -1
  13. package/dist/cloudflare.cjs +53 -0
  14. package/dist/cloudflare.cjs.map +1 -0
  15. package/dist/cloudflare.d.cts +11 -0
  16. package/dist/cloudflare.d.ts +11 -0
  17. package/dist/cloudflare.js +53 -0
  18. package/dist/cloudflare.js.map +1 -0
  19. package/dist/index-BJopB-em.d.cts +7 -0
  20. package/dist/index-G5DECNb_.d.ts +7 -0
  21. package/dist/index.cjs +3 -4
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +4 -4
  24. package/dist/index.d.ts +4 -4
  25. package/dist/index.js +1 -2
  26. package/dist/pg.cjs +347 -4
  27. package/dist/pg.cjs.map +1 -1
  28. package/dist/pg.d.cts +10 -7
  29. package/dist/pg.d.ts +10 -7
  30. package/dist/pg.js +350 -7
  31. package/dist/pg.js.map +1 -1
  32. package/dist/{pongoCollectionSchemaComponent-BsHlVyN-.d.cts → pongoCollectionSchemaComponent-t_e9n2Wc.d.cts} +12 -8
  33. package/dist/{pongoCollectionSchemaComponent-BsHlVyN-.d.ts → pongoCollectionSchemaComponent-t_e9n2Wc.d.ts} +12 -8
  34. package/dist/shim.cjs +16 -12
  35. package/dist/shim.cjs.map +1 -1
  36. package/dist/shim.d.cts +4 -3
  37. package/dist/shim.d.ts +4 -3
  38. package/dist/shim.js +11 -7
  39. package/dist/shim.js.map +1 -1
  40. package/dist/sqlite3.cjs +15 -332
  41. package/dist/sqlite3.cjs.map +1 -1
  42. package/dist/sqlite3.d.cts +8 -7
  43. package/dist/sqlite3.d.ts +8 -7
  44. package/dist/sqlite3.js +8 -325
  45. package/dist/sqlite3.js.map +1 -1
  46. package/package.json +45 -13
  47. package/dist/chunk-3KNMMQUV.cjs +0 -362
  48. package/dist/chunk-3KNMMQUV.cjs.map +0 -1
  49. package/dist/chunk-5LN762VW.js +0 -362
  50. package/dist/chunk-5LN762VW.js.map +0 -1
  51. package/dist/chunk-7W6X4QGY.cjs +0 -10
  52. package/dist/chunk-7W6X4QGY.cjs.map +0 -1
  53. package/dist/chunk-DL4E3N6J.js.map +0 -1
  54. package/dist/chunk-IBJKZ6TS.js +0 -10
  55. package/dist/chunk-IBJKZ6TS.js.map +0 -1
  56. package/dist/chunk-YLV7YIPZ.cjs.map +0 -1
  57. package/dist/pg-WUYRNGST.js +0 -11
  58. package/dist/pg-WUYRNGST.js.map +0 -1
  59. package/dist/pg-XCWP4FAM.cjs +0 -11
  60. package/dist/pg-XCWP4FAM.cjs.map +0 -1
package/dist/pg.d.cts CHANGED
@@ -1,12 +1,12 @@
1
1
  import * as _event_driven_io_dumbo from '@event-driven-io/dumbo';
2
- import { q as PongoCollectionSQLBuilder, e as PongoDatabaseDriver, P as PongoDb, y as PongoDatabaseDriverOptions } from './pongoCollectionSchemaComponent-BsHlVyN-.cjs';
3
- import { NodePostgresDriverType, NodePostgresConnection } from '@event-driven-io/dumbo/pg';
2
+ import { r as PongoCollectionSQLBuilder, P as PongoDatabaseDriver, a as PongoDb, b as PongoDatabaseDriverOptions } from './pongoCollectionSchemaComponent-t_e9n2Wc.cjs';
3
+ import { PgDriverType, PgConnection } from '@event-driven-io/dumbo/pg';
4
4
  import pg from 'pg';
5
5
 
6
6
  declare const pongoCollectionPostgreSQLMigrations: (collectionName: string) => _event_driven_io_dumbo.SQLMigration[];
7
7
  declare const postgresSQLBuilder: (collectionName: string) => PongoCollectionSQLBuilder;
8
8
 
9
- type NodePostgresPongoClientOptions = PooledPongoClientOptions | NotPooledPongoOptions;
9
+ type PgPongoClientOptions = PooledPongoClientOptions | NotPooledPongoOptions;
10
10
  type PooledPongoClientOptions = {
11
11
  pool: pg.Pool;
12
12
  } | {
@@ -23,11 +23,14 @@ type NotPooledPongoOptions = {
23
23
  client: pg.Client;
24
24
  pooled: false;
25
25
  } | {
26
- connection: NodePostgresConnection;
26
+ connection: PgConnection;
27
27
  pooled?: false;
28
28
  };
29
- type NodePostgresDatabaseDriverOptions = PongoDatabaseDriverOptions<NodePostgresPongoClientOptions>;
30
- declare const pgDatabaseDriver: PongoDatabaseDriver<PongoDb<NodePostgresDriverType>, NodePostgresDatabaseDriverOptions>;
29
+ type PgDatabaseDriverOptions = PongoDatabaseDriverOptions<PgPongoClientOptions> & {
30
+ databaseName?: string | undefined;
31
+ connectionString: string;
32
+ };
33
+ declare const pgDatabaseDriver: PongoDatabaseDriver<PongoDb<PgDriverType>, PgDatabaseDriverOptions>;
31
34
  declare const usePgDatabaseDriver: () => void;
32
35
 
33
- export { type NodePostgresPongoClientOptions, type NotPooledPongoOptions, type PooledPongoClientOptions, pgDatabaseDriver as databaseDriver, pgDatabaseDriver as pgDriver, pongoCollectionPostgreSQLMigrations, postgresSQLBuilder, usePgDatabaseDriver };
36
+ export { type NotPooledPongoOptions, type PgPongoClientOptions, type PooledPongoClientOptions, pgDatabaseDriver as databaseDriver, pgDatabaseDriver as pgDriver, pongoCollectionPostgreSQLMigrations, postgresSQLBuilder, usePgDatabaseDriver };
package/dist/pg.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import * as _event_driven_io_dumbo from '@event-driven-io/dumbo';
2
- import { q as PongoCollectionSQLBuilder, e as PongoDatabaseDriver, P as PongoDb, y as PongoDatabaseDriverOptions } from './pongoCollectionSchemaComponent-BsHlVyN-.js';
3
- import { NodePostgresDriverType, NodePostgresConnection } from '@event-driven-io/dumbo/pg';
2
+ import { r as PongoCollectionSQLBuilder, P as PongoDatabaseDriver, a as PongoDb, b as PongoDatabaseDriverOptions } from './pongoCollectionSchemaComponent-t_e9n2Wc.js';
3
+ import { PgDriverType, PgConnection } from '@event-driven-io/dumbo/pg';
4
4
  import pg from 'pg';
5
5
 
6
6
  declare const pongoCollectionPostgreSQLMigrations: (collectionName: string) => _event_driven_io_dumbo.SQLMigration[];
7
7
  declare const postgresSQLBuilder: (collectionName: string) => PongoCollectionSQLBuilder;
8
8
 
9
- type NodePostgresPongoClientOptions = PooledPongoClientOptions | NotPooledPongoOptions;
9
+ type PgPongoClientOptions = PooledPongoClientOptions | NotPooledPongoOptions;
10
10
  type PooledPongoClientOptions = {
11
11
  pool: pg.Pool;
12
12
  } | {
@@ -23,11 +23,14 @@ type NotPooledPongoOptions = {
23
23
  client: pg.Client;
24
24
  pooled: false;
25
25
  } | {
26
- connection: NodePostgresConnection;
26
+ connection: PgConnection;
27
27
  pooled?: false;
28
28
  };
29
- type NodePostgresDatabaseDriverOptions = PongoDatabaseDriverOptions<NodePostgresPongoClientOptions>;
30
- declare const pgDatabaseDriver: PongoDatabaseDriver<PongoDb<NodePostgresDriverType>, NodePostgresDatabaseDriverOptions>;
29
+ type PgDatabaseDriverOptions = PongoDatabaseDriverOptions<PgPongoClientOptions> & {
30
+ databaseName?: string | undefined;
31
+ connectionString: string;
32
+ };
33
+ declare const pgDatabaseDriver: PongoDatabaseDriver<PongoDb<PgDriverType>, PgDatabaseDriverOptions>;
31
34
  declare const usePgDatabaseDriver: () => void;
32
35
 
33
- export { type NodePostgresPongoClientOptions, type NotPooledPongoOptions, type PooledPongoClientOptions, pgDatabaseDriver as databaseDriver, pgDatabaseDriver as pgDriver, pongoCollectionPostgreSQLMigrations, postgresSQLBuilder, usePgDatabaseDriver };
36
+ export { type NotPooledPongoOptions, type PgPongoClientOptions, type PooledPongoClientOptions, pgDatabaseDriver as databaseDriver, pgDatabaseDriver as pgDriver, pongoCollectionPostgreSQLMigrations, postgresSQLBuilder, usePgDatabaseDriver };
package/dist/pg.js CHANGED
@@ -1,11 +1,354 @@
1
- import "./chunk-IBJKZ6TS.js";
2
1
  import {
3
- pgDatabaseDriver,
4
- pongoCollectionPostgreSQLMigrations,
5
- postgresSQLBuilder,
6
- usePgDatabaseDriver
7
- } from "./chunk-5LN762VW.js";
8
- import "./chunk-DL4E3N6J.js";
2
+ OperatorMap,
3
+ PongoCollectionSchemaComponent,
4
+ PongoDatabase,
5
+ PongoDatabaseSchemaComponent,
6
+ QueryOperators,
7
+ expectedVersionValue,
8
+ hasOperators,
9
+ objectEntries,
10
+ pongoDatabaseDriverRegistry,
11
+ pongoSchema
12
+ } from "./chunk-RBJRJFQY.js";
13
+
14
+ // src/storage/postgresql/core/sqlBuilder/index.ts
15
+ import {
16
+ isSQL,
17
+ JSONSerializer as JSONSerializer3,
18
+ SQL as SQL4,
19
+ sqlMigration
20
+ } from "@event-driven-io/dumbo";
21
+
22
+ // src/storage/postgresql/core/sqlBuilder/filter/index.ts
23
+ import { SQL as SQL2 } from "@event-driven-io/dumbo";
24
+
25
+ // src/storage/postgresql/core/sqlBuilder/filter/queryOperators.ts
26
+ import { JSONSerializer, SQL } from "@event-driven-io/dumbo";
27
+ var handleOperator = (path, operator, value) => {
28
+ if (path === "_id" || path === "_version") {
29
+ return handleMetadataOperator(path, operator, value);
30
+ }
31
+ switch (operator) {
32
+ case "$eq": {
33
+ const nestedPath = JSONSerializer.serialize(
34
+ buildNestedObject(path, value)
35
+ );
36
+ const serializedValue = JSONSerializer.serialize(value);
37
+ return SQL`(data @> ${nestedPath}::jsonb OR jsonb_path_exists(data, '$.${SQL.plain(path)}[*] ? (@ == ${SQL.plain(serializedValue)})'))`;
38
+ }
39
+ case "$gt":
40
+ case "$gte":
41
+ case "$lt":
42
+ case "$lte":
43
+ case "$ne": {
44
+ const jsonPath = SQL.plain(path.split(".").join(","));
45
+ return SQL`data ->> '${jsonPath}' ${SQL.plain(OperatorMap[operator])} ${value}`;
46
+ }
47
+ case "$in": {
48
+ const jsonPath = `{${path.split(".").join(",")}}`;
49
+ return SQL`data #>> ${jsonPath} IN ${value}`;
50
+ }
51
+ case "$nin": {
52
+ const jsonPath = `{${path.split(".").join(",")}}`;
53
+ return SQL`data #>> ${jsonPath} NOT IN ${value}`;
54
+ }
55
+ case "$elemMatch": {
56
+ const subQuery = objectEntries(value).map(
57
+ ([subKey, subValue]) => `@."${subKey}" == ${JSONSerializer.serialize(subValue)}`
58
+ ).join(" && ");
59
+ return SQL`jsonb_path_exists(data, '$.${SQL.plain(path)}[*] ? (${SQL.plain(subQuery)})')`;
60
+ }
61
+ case "$all": {
62
+ const nestedPath = JSONSerializer.serialize(
63
+ buildNestedObject(path, value)
64
+ );
65
+ return SQL`data @> ${nestedPath}::jsonb`;
66
+ }
67
+ case "$size": {
68
+ const jsonPath = `{${path.split(".").join(",")}}`;
69
+ return SQL`jsonb_array_length(data #> ${jsonPath}) = ${value}`;
70
+ }
71
+ default:
72
+ throw new Error(`Unsupported operator: ${operator}`);
73
+ }
74
+ };
75
+ var handleMetadataOperator = (fieldName, operator, value) => {
76
+ switch (operator) {
77
+ case "$eq":
78
+ return SQL`${SQL.plain(fieldName)} = ${value}`;
79
+ case "$gt":
80
+ case "$gte":
81
+ case "$lt":
82
+ case "$lte":
83
+ case "$ne":
84
+ return SQL`${SQL.plain(fieldName)} ${SQL.plain(OperatorMap[operator])} ${value}`;
85
+ case "$in":
86
+ return SQL`${SQL.plain(fieldName)} IN ${value}`;
87
+ case "$nin":
88
+ return SQL`${SQL.plain(fieldName)} NOT IN ${value}`;
89
+ default:
90
+ throw new Error(`Unsupported operator: ${operator}`);
91
+ }
92
+ };
93
+ var buildNestedObject = (path, value) => path.split(".").reverse().reduce((acc, key) => ({ [key]: acc }), value);
94
+
95
+ // src/storage/postgresql/core/sqlBuilder/filter/index.ts
96
+ var AND = "AND";
97
+ var constructFilterQuery = (filter) => SQL2.merge(
98
+ Object.entries(filter).map(
99
+ ([key, value]) => isRecord(value) ? constructComplexFilterQuery(key, value) : handleOperator(key, "$eq", value)
100
+ ),
101
+ ` ${AND} `
102
+ );
103
+ var constructComplexFilterQuery = (key, value) => {
104
+ const isEquality = !hasOperators(value);
105
+ return SQL2.merge(
106
+ objectEntries(value).map(
107
+ ([nestedKey, val]) => isEquality ? handleOperator(`${key}.${nestedKey}`, QueryOperators.$eq, val) : handleOperator(key, nestedKey, val)
108
+ ),
109
+ ` ${AND} `
110
+ );
111
+ };
112
+ var isRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
113
+
114
+ // src/storage/postgresql/core/sqlBuilder/update/index.ts
115
+ import { JSONSerializer as JSONSerializer2, SQL as SQL3 } from "@event-driven-io/dumbo";
116
+ var buildUpdateQuery = (update) => objectEntries(update).reduce(
117
+ (currentUpdateQuery, [op, value]) => {
118
+ switch (op) {
119
+ case "$set":
120
+ return buildSetQuery(value, currentUpdateQuery);
121
+ case "$unset":
122
+ return buildUnsetQuery(value, currentUpdateQuery);
123
+ case "$inc":
124
+ return buildIncQuery(value, currentUpdateQuery);
125
+ case "$push":
126
+ return buildPushQuery(value, currentUpdateQuery);
127
+ default:
128
+ return currentUpdateQuery;
129
+ }
130
+ },
131
+ SQL3`data`
132
+ );
133
+ var buildSetQuery = (set, currentUpdateQuery) => SQL3`${currentUpdateQuery} || ${JSONSerializer2.serialize(set)}::jsonb`;
134
+ var buildUnsetQuery = (unset, currentUpdateQuery) => SQL3`${currentUpdateQuery} - ${Object.keys(unset).map((k) => `{${k}}`).join(", ")}`;
135
+ var buildIncQuery = (inc, currentUpdateQuery) => {
136
+ for (const [key, value] of Object.entries(inc)) {
137
+ currentUpdateQuery = typeof value === "bigint" ? SQL3`jsonb_set(${currentUpdateQuery}, '{${SQL3.plain(key)}}', to_jsonb((COALESCE((data->>'${SQL3.plain(key)}')::BIGINT, 0) + ${value})::TEXT), true)` : SQL3`jsonb_set(${currentUpdateQuery}, '{${SQL3.plain(key)}}', to_jsonb(COALESCE((data->>'${SQL3.plain(key)}')::NUMERIC, 0) + ${value}), true)`;
138
+ }
139
+ return currentUpdateQuery;
140
+ };
141
+ var buildPushQuery = (push, currentUpdateQuery) => {
142
+ for (const [key, value] of Object.entries(push)) {
143
+ const serializedValue = JSONSerializer2.serialize([value]);
144
+ currentUpdateQuery = SQL3`jsonb_set(${currentUpdateQuery}, '{${SQL3.plain(key)}}', (coalesce(data->'${SQL3.plain(key)}', '[]'::jsonb) || ${serializedValue}::jsonb), true)`;
145
+ }
146
+ return currentUpdateQuery;
147
+ };
148
+
149
+ // src/storage/postgresql/core/sqlBuilder/index.ts
150
+ var createCollection = (collectionName) => SQL4`
151
+ CREATE TABLE IF NOT EXISTS ${SQL4.identifier(collectionName)} (
152
+ _id TEXT PRIMARY KEY,
153
+ data JSONB NOT NULL,
154
+ metadata JSONB NOT NULL DEFAULT '{}',
155
+ _version BIGINT NOT NULL DEFAULT 1,
156
+ _partition TEXT NOT NULL DEFAULT 'png_global',
157
+ _archived BOOLEAN NOT NULL DEFAULT FALSE,
158
+ _created TIMESTAMPTZ NOT NULL DEFAULT now(),
159
+ _updated TIMESTAMPTZ NOT NULL DEFAULT now()
160
+ )`;
161
+ var pongoCollectionPostgreSQLMigrations = (collectionName) => [
162
+ sqlMigration(`pongoCollection:${collectionName}:001:createtable`, [
163
+ createCollection(collectionName)
164
+ ])
165
+ ];
166
+ var postgresSQLBuilder = (collectionName) => ({
167
+ createCollection: () => createCollection(collectionName),
168
+ insertOne: (document) => {
169
+ const serialized = JSONSerializer3.serialize(document);
170
+ const id = document._id;
171
+ const version = document._version ?? 1n;
172
+ return SQL4`
173
+ INSERT INTO ${SQL4.identifier(collectionName)} (_id, data, _version)
174
+ VALUES (${id}, ${serialized}, ${version}) ON CONFLICT(_id) DO NOTHING;`;
175
+ },
176
+ insertMany: (documents) => {
177
+ const values = SQL4.merge(
178
+ documents.map(
179
+ (doc) => SQL4`(${doc._id}, ${JSONSerializer3.serialize(doc)}, ${doc._version ?? 1n})`
180
+ ),
181
+ ","
182
+ );
183
+ return SQL4`
184
+ INSERT INTO ${SQL4.identifier(collectionName)} (_id, data, _version) VALUES ${values}
185
+ ON CONFLICT(_id) DO NOTHING
186
+ RETURNING _id;`;
187
+ },
188
+ updateOne: (filter, update, options) => {
189
+ const expectedVersion = expectedVersionValue(options?.expectedVersion);
190
+ const expectedVersionUpdate = expectedVersion != null ? SQL4`AND ${SQL4.identifier(collectionName)}._version = ${expectedVersion}` : SQL4``;
191
+ const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);
192
+ const updateQuery = isSQL(update) ? update : buildUpdateQuery(update);
193
+ return SQL4`
194
+ WITH existing AS (
195
+ SELECT _id, _version as current_version
196
+ FROM ${SQL4.identifier(collectionName)} ${where(filterQuery)}
197
+ LIMIT 1
198
+ ),
199
+ updated AS (
200
+ UPDATE ${SQL4.identifier(collectionName)}
201
+ SET
202
+ data = ${updateQuery} || jsonb_build_object('_id', ${SQL4.identifier(collectionName)}._id) || jsonb_build_object('_version', (_version + 1)::text),
203
+ _version = _version + 1
204
+ FROM existing
205
+ WHERE ${SQL4.identifier(collectionName)}._id = existing._id ${expectedVersionUpdate}
206
+ RETURNING ${SQL4.identifier(collectionName)}._id, ${SQL4.identifier(collectionName)}._version
207
+ )
208
+ SELECT
209
+ existing._id,
210
+ COALESCE(updated._version, existing.current_version) AS version,
211
+ COUNT(existing._id) over() AS matched,
212
+ COUNT(updated._id) over() AS modified
213
+ FROM existing
214
+ LEFT JOIN updated
215
+ ON existing._id = updated._id;`;
216
+ },
217
+ replaceOne: (filter, document, options) => {
218
+ const expectedVersion = expectedVersionValue(options?.expectedVersion);
219
+ const expectedVersionUpdate = expectedVersion != null ? SQL4`AND ${SQL4.identifier(collectionName)}._version = ${expectedVersion}` : SQL4``;
220
+ const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);
221
+ return SQL4`
222
+ WITH existing AS (
223
+ SELECT _id, _version as current_version
224
+ FROM ${SQL4.identifier(collectionName)} ${where(filterQuery)}
225
+ LIMIT 1
226
+ ),
227
+ updated AS (
228
+ UPDATE ${SQL4.identifier(collectionName)}
229
+ SET
230
+ data = ${JSONSerializer3.serialize(document)} || jsonb_build_object('_id', ${SQL4.identifier(collectionName)}._id) || jsonb_build_object('_version', (_version + 1)::text),
231
+ _version = _version + 1
232
+ FROM existing
233
+ WHERE ${SQL4.identifier(collectionName)}._id = existing._id ${expectedVersionUpdate}
234
+ RETURNING ${SQL4.identifier(collectionName)}._id, ${SQL4.identifier(collectionName)}._version
235
+ )
236
+ SELECT
237
+ existing._id,
238
+ COALESCE(updated._version, existing.current_version) AS version,
239
+ COUNT(existing._id) over() AS matched,
240
+ COUNT(updated._id) over() AS modified
241
+ FROM existing
242
+ LEFT JOIN updated
243
+ ON existing._id = updated._id;`;
244
+ },
245
+ updateMany: (filter, update) => {
246
+ const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);
247
+ const updateQuery = isSQL(update) ? update : buildUpdateQuery(update);
248
+ return SQL4`
249
+ UPDATE ${SQL4.identifier(collectionName)}
250
+ SET
251
+ data = ${updateQuery} || jsonb_build_object('_version', (_version + 1)::text),
252
+ _version = _version + 1
253
+ ${where(filterQuery)};`;
254
+ },
255
+ deleteOne: (filter, options) => {
256
+ const expectedVersion = expectedVersionValue(options?.expectedVersion);
257
+ const expectedVersionUpdate = expectedVersion != null ? SQL4`AND ${SQL4.identifier(collectionName)}._version = ${expectedVersion}` : SQL4``;
258
+ const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);
259
+ return SQL4`
260
+ WITH existing AS (
261
+ SELECT _id
262
+ FROM ${SQL4.identifier(collectionName)} ${where(filterQuery)}
263
+ LIMIT 1
264
+ ),
265
+ deleted AS (
266
+ DELETE FROM ${SQL4.identifier(collectionName)}
267
+ USING existing
268
+ WHERE ${SQL4.identifier(collectionName)}._id = existing._id ${expectedVersionUpdate}
269
+ RETURNING ${SQL4.identifier(collectionName)}._id
270
+ )
271
+ SELECT
272
+ existing._id,
273
+ COUNT(existing._id) over() AS matched,
274
+ COUNT(deleted._id) over() AS deleted
275
+ FROM existing
276
+ LEFT JOIN deleted
277
+ ON existing._id = deleted._id;`;
278
+ },
279
+ deleteMany: (filter) => {
280
+ const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);
281
+ return SQL4`DELETE FROM ${SQL4.identifier(collectionName)} ${where(filterQuery)}`;
282
+ },
283
+ findOne: (filter) => {
284
+ const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);
285
+ return SQL4`SELECT data FROM ${SQL4.identifier(collectionName)} ${where(filterQuery)} LIMIT 1;`;
286
+ },
287
+ find: (filter, options) => {
288
+ const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);
289
+ const query = [];
290
+ query.push(SQL4`SELECT data FROM ${SQL4.identifier(collectionName)}`);
291
+ query.push(where(filterQuery));
292
+ if (options?.limit) {
293
+ query.push(SQL4`LIMIT ${options.limit}`);
294
+ }
295
+ if (options?.skip) {
296
+ query.push(SQL4`OFFSET ${options.skip}`);
297
+ }
298
+ return SQL4.merge([...query, SQL4`;`]);
299
+ },
300
+ countDocuments: (filter) => {
301
+ const filterQuery = SQL4.check.isSQL(filter) ? filter : constructFilterQuery(filter);
302
+ return SQL4`SELECT COUNT(1) as count FROM ${SQL4.identifier(collectionName)} ${where(filterQuery)};`;
303
+ },
304
+ rename: (newName) => SQL4`ALTER TABLE ${SQL4.identifier(collectionName)} RENAME TO ${SQL4.identifier(newName)};`,
305
+ drop: (targetName = collectionName) => SQL4`DROP TABLE IF EXISTS ${SQL4.identifier(targetName)}`
306
+ });
307
+ var where = (filterQuery) => SQL4.check.isEmpty(filterQuery) ? SQL4.EMPTY : SQL4.merge([SQL4`WHERE `, filterQuery]);
308
+
309
+ // src/storage/postgresql/pg/index.ts
310
+ import { dumbo } from "@event-driven-io/dumbo";
311
+ import {
312
+ pgDatabaseDriver as dumboDriver,
313
+ getDatabaseNameOrDefault,
314
+ PgDriverType
315
+ } from "@event-driven-io/dumbo/pg";
316
+ import "pg";
317
+ var pgDatabaseDriver = {
318
+ driverType: PgDriverType,
319
+ databaseFactory: (options) => {
320
+ const databaseName = options.databaseName ?? getDatabaseNameOrDefault(options.connectionString);
321
+ return PongoDatabase({
322
+ ...options,
323
+ pool: dumbo({
324
+ connectionString: options.connectionString,
325
+ driver: dumboDriver,
326
+ ...options.connectionOptions
327
+ }),
328
+ schemaComponent: PongoDatabaseSchemaComponent({
329
+ driverType: PgDriverType,
330
+ collectionFactory: (schema) => PongoCollectionSchemaComponent({
331
+ driverType: PgDriverType,
332
+ definition: schema,
333
+ migrationsOrSchemaComponents: {
334
+ migrations: pongoCollectionPostgreSQLMigrations(schema.name)
335
+ },
336
+ sqlBuilder: postgresSQLBuilder(schema.name)
337
+ }),
338
+ definition: options.schema?.definition ?? pongoSchema.db(databaseName, {})
339
+ }),
340
+ databaseName
341
+ });
342
+ },
343
+ getDatabaseNameOrDefault: (options) => {
344
+ return options.databaseName ?? getDatabaseNameOrDefault(options.connectionString);
345
+ },
346
+ defaultConnectionString: "postgresql://localhost:5432/postgres"
347
+ };
348
+ var usePgDatabaseDriver = () => {
349
+ pongoDatabaseDriverRegistry.register(PgDriverType, pgDatabaseDriver);
350
+ };
351
+ usePgDatabaseDriver();
9
352
  export {
10
353
  pgDatabaseDriver as databaseDriver,
11
354
  pgDatabaseDriver as pgDriver,
package/dist/pg.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../src/storage/postgresql/core/sqlBuilder/index.ts","../src/storage/postgresql/core/sqlBuilder/filter/index.ts","../src/storage/postgresql/core/sqlBuilder/filter/queryOperators.ts","../src/storage/postgresql/core/sqlBuilder/update/index.ts","../src/storage/postgresql/pg/index.ts"],"sourcesContent":["import {\n isSQL,\n JSONSerializer,\n SQL,\n sqlMigration,\n} from '@event-driven-io/dumbo';\nimport {\n expectedVersionValue,\n type DeleteOneOptions,\n type FindOptions,\n type OptionalUnlessRequiredIdAndVersion,\n type PongoCollectionSQLBuilder,\n type PongoFilter,\n type PongoUpdate,\n type ReplaceOneOptions,\n type UpdateOneOptions,\n type WithoutId,\n} from '../../../../core';\nimport { constructFilterQuery } from './filter';\nimport { buildUpdateQuery } from './update';\n\nconst createCollection = (collectionName: string): SQL =>\n SQL`\n CREATE TABLE IF NOT EXISTS ${SQL.identifier(collectionName)} (\n _id TEXT PRIMARY KEY, \n data JSONB NOT NULL, \n metadata JSONB NOT NULL DEFAULT '{}',\n _version BIGINT NOT NULL DEFAULT 1,\n _partition TEXT NOT NULL DEFAULT 'png_global',\n _archived BOOLEAN NOT NULL DEFAULT FALSE,\n _created TIMESTAMPTZ NOT NULL DEFAULT now(),\n _updated TIMESTAMPTZ NOT NULL DEFAULT now()\n )`;\n\nexport const pongoCollectionPostgreSQLMigrations = (collectionName: string) => [\n sqlMigration(`pongoCollection:${collectionName}:001:createtable`, [\n createCollection(collectionName),\n ]),\n];\n\nexport const postgresSQLBuilder = (\n collectionName: string,\n): PongoCollectionSQLBuilder => ({\n createCollection: (): SQL => createCollection(collectionName),\n insertOne: <T>(document: OptionalUnlessRequiredIdAndVersion<T>): SQL => {\n const serialized = JSONSerializer.serialize(document);\n const id = document._id;\n const version = document._version ?? 1n;\n\n return SQL`\n INSERT INTO ${SQL.identifier(collectionName)} (_id, data, _version) \n VALUES (${id}, ${serialized}, ${version}) ON CONFLICT(_id) DO NOTHING;`;\n },\n insertMany: <T>(documents: OptionalUnlessRequiredIdAndVersion<T>[]): SQL => {\n const values = SQL.merge(\n documents.map(\n (doc) =>\n SQL`(${doc._id}, ${JSONSerializer.serialize(doc)}, ${doc._version ?? 1n})`,\n ),\n ',',\n );\n\n return SQL`\n INSERT INTO ${SQL.identifier(collectionName)} (_id, data, _version) VALUES ${values}\n ON CONFLICT(_id) DO NOTHING\n RETURNING _id;`;\n },\n updateOne: <T>(\n filter: PongoFilter<T> | SQL,\n update: PongoUpdate<T> | SQL,\n options?: UpdateOneOptions,\n ): SQL => {\n const expectedVersion = expectedVersionValue(options?.expectedVersion);\n const expectedVersionUpdate =\n expectedVersion != null\n ? SQL`AND ${SQL.identifier(collectionName)}._version = ${expectedVersion}`\n : SQL``;\n\n const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);\n const updateQuery = isSQL(update) ? update : buildUpdateQuery(update);\n\n return SQL`\n WITH existing AS (\n SELECT _id, _version as current_version\n FROM ${SQL.identifier(collectionName)} ${where(filterQuery)}\n LIMIT 1\n ),\n updated AS (\n UPDATE ${SQL.identifier(collectionName)} \n SET \n data = ${updateQuery} || jsonb_build_object('_id', ${SQL.identifier(collectionName)}._id) || jsonb_build_object('_version', (_version + 1)::text),\n _version = _version + 1\n FROM existing \n WHERE ${SQL.identifier(collectionName)}._id = existing._id ${expectedVersionUpdate}\n RETURNING ${SQL.identifier(collectionName)}._id, ${SQL.identifier(collectionName)}._version\n )\n SELECT \n existing._id,\n COALESCE(updated._version, existing.current_version) AS version,\n COUNT(existing._id) over() AS matched,\n COUNT(updated._id) over() AS modified\n FROM existing\n LEFT JOIN updated \n ON existing._id = updated._id;`;\n },\n replaceOne: <T>(\n filter: PongoFilter<T> | SQL,\n document: WithoutId<T>,\n options?: ReplaceOneOptions,\n ): SQL => {\n const expectedVersion = expectedVersionValue(options?.expectedVersion);\n const expectedVersionUpdate =\n expectedVersion != null\n ? SQL`AND ${SQL.identifier(collectionName)}._version = ${expectedVersion}`\n : SQL``;\n\n const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);\n\n return SQL`\n WITH existing AS (\n SELECT _id, _version as current_version\n FROM ${SQL.identifier(collectionName)} ${where(filterQuery)}\n LIMIT 1\n ),\n updated AS (\n UPDATE ${SQL.identifier(collectionName)} \n SET \n data = ${JSONSerializer.serialize(document)} || jsonb_build_object('_id', ${SQL.identifier(collectionName)}._id) || jsonb_build_object('_version', (_version + 1)::text),\n _version = _version + 1\n FROM existing \n WHERE ${SQL.identifier(collectionName)}._id = existing._id ${expectedVersionUpdate}\n RETURNING ${SQL.identifier(collectionName)}._id, ${SQL.identifier(collectionName)}._version\n )\n SELECT \n existing._id,\n COALESCE(updated._version, existing.current_version) AS version,\n COUNT(existing._id) over() AS matched,\n COUNT(updated._id) over() AS modified\n FROM existing\n LEFT JOIN updated \n ON existing._id = updated._id;`;\n },\n updateMany: <T>(\n filter: PongoFilter<T> | SQL,\n update: PongoUpdate<T> | SQL,\n ): SQL => {\n const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);\n const updateQuery = isSQL(update) ? update : buildUpdateQuery(update);\n\n return SQL`\n UPDATE ${SQL.identifier(collectionName)} \n SET \n data = ${updateQuery} || jsonb_build_object('_version', (_version + 1)::text),\n _version = _version + 1\n ${where(filterQuery)};`;\n },\n deleteOne: <T>(\n filter: PongoFilter<T> | SQL,\n options?: DeleteOneOptions,\n ): SQL => {\n const expectedVersion = expectedVersionValue(options?.expectedVersion);\n const expectedVersionUpdate =\n expectedVersion != null\n ? SQL`AND ${SQL.identifier(collectionName)}._version = ${expectedVersion}`\n : SQL``;\n\n const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);\n\n return SQL`\n WITH existing AS (\n SELECT _id\n FROM ${SQL.identifier(collectionName)} ${where(filterQuery)}\n LIMIT 1\n ),\n deleted AS (\n DELETE FROM ${SQL.identifier(collectionName)}\n USING existing\n WHERE ${SQL.identifier(collectionName)}._id = existing._id ${expectedVersionUpdate}\n RETURNING ${SQL.identifier(collectionName)}._id\n )\n SELECT \n existing._id,\n COUNT(existing._id) over() AS matched,\n COUNT(deleted._id) over() AS deleted\n FROM existing\n LEFT JOIN deleted \n ON existing._id = deleted._id;`;\n },\n deleteMany: <T>(filter: PongoFilter<T> | SQL): SQL => {\n const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);\n\n return SQL`DELETE FROM ${SQL.identifier(collectionName)} ${where(filterQuery)}`;\n },\n findOne: <T>(filter: PongoFilter<T> | SQL): SQL => {\n const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);\n\n return SQL`SELECT data FROM ${SQL.identifier(collectionName)} ${where(filterQuery)} LIMIT 1;`;\n },\n find: <T>(filter: PongoFilter<T> | SQL, options?: FindOptions): SQL => {\n const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter);\n const query: SQL[] = [];\n\n query.push(SQL`SELECT data FROM ${SQL.identifier(collectionName)}`);\n\n query.push(where(filterQuery));\n\n if (options?.limit) {\n query.push(SQL`LIMIT ${options.limit}`);\n }\n\n if (options?.skip) {\n query.push(SQL`OFFSET ${options.skip}`);\n }\n\n return SQL.merge([...query, SQL`;`]);\n },\n countDocuments: <T>(filter: PongoFilter<T> | SQL): SQL => {\n const filterQuery = SQL.check.isSQL(filter)\n ? filter\n : constructFilterQuery(filter);\n return SQL`SELECT COUNT(1) as count FROM ${SQL.identifier(collectionName)} ${where(filterQuery)};`;\n },\n rename: (newName: string): SQL =>\n SQL`ALTER TABLE ${SQL.identifier(collectionName)} RENAME TO ${SQL.identifier(newName)};`,\n drop: (targetName: string = collectionName): SQL =>\n SQL`DROP TABLE IF EXISTS ${SQL.identifier(targetName)}`,\n});\n\nconst where = (filterQuery: SQL): SQL =>\n SQL.check.isEmpty(filterQuery)\n ? SQL.EMPTY\n : SQL.merge([SQL`WHERE `, filterQuery]);\n","import { SQL } from '@event-driven-io/dumbo';\nimport {\n hasOperators,\n objectEntries,\n QueryOperators,\n type PongoFilter,\n} from '../../../../../core';\nimport { handleOperator } from './queryOperators';\n\nexport * from './queryOperators';\n\nconst AND = 'AND';\n\nexport const constructFilterQuery = <T>(filter: PongoFilter<T>): SQL =>\n SQL.merge(\n Object.entries(filter).map(([key, value]) =>\n isRecord(value)\n ? constructComplexFilterQuery(key, value)\n : handleOperator(key, '$eq', value),\n ),\n ` ${AND} `,\n );\n\nconst constructComplexFilterQuery = (\n key: string,\n value: Record<string, unknown>,\n): SQL => {\n const isEquality = !hasOperators(value);\n\n return SQL.merge(\n objectEntries(value).map(([nestedKey, val]) =>\n isEquality\n ? handleOperator(`${key}.${nestedKey}`, QueryOperators.$eq, val)\n : handleOperator(key, nestedKey, val),\n ),\n ` ${AND} `,\n );\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === 'object' && !Array.isArray(value);\n","import { JSONSerializer, SQL } from '@event-driven-io/dumbo';\nimport { objectEntries, OperatorMap } from '../../../../../core';\n\nexport const handleOperator = (\n path: string,\n operator: string,\n value: unknown,\n): SQL => {\n if (path === '_id' || path === '_version') {\n return handleMetadataOperator(path, operator, value);\n }\n\n switch (operator) {\n case '$eq': {\n const nestedPath = JSONSerializer.serialize(\n buildNestedObject(path, value),\n );\n const serializedValue = JSONSerializer.serialize(value);\n\n return SQL`(data @> ${nestedPath}::jsonb OR jsonb_path_exists(data, '$.${SQL.plain(path)}[*] ? (@ == ${SQL.plain(serializedValue)})'))`;\n }\n case '$gt':\n case '$gte':\n case '$lt':\n case '$lte':\n case '$ne': {\n const jsonPath = SQL.plain(path.split('.').join(','));\n\n return SQL`data ->> '${jsonPath}' ${SQL.plain(OperatorMap[operator])} ${value}`;\n }\n case '$in': {\n const jsonPath = `{${path.split('.').join(',')}}`;\n\n return SQL`data #>> ${jsonPath} IN ${value as unknown[]}`;\n }\n case '$nin': {\n const jsonPath = `{${path.split('.').join(',')}}`;\n\n return SQL`data #>> ${jsonPath} NOT IN ${value as unknown[]}`;\n }\n case '$elemMatch': {\n const subQuery = objectEntries(value as Record<string, unknown>)\n .map(\n ([subKey, subValue]) =>\n `@.\"${subKey}\" == ${JSONSerializer.serialize(subValue)}`,\n )\n .join(' && ');\n return SQL`jsonb_path_exists(data, '$.${SQL.plain(path)}[*] ? (${SQL.plain(subQuery)})')`;\n }\n case '$all': {\n const nestedPath = JSONSerializer.serialize(\n buildNestedObject(path, value),\n );\n return SQL`data @> ${nestedPath}::jsonb`;\n }\n case '$size': {\n const jsonPath = `{${path.split('.').join(',')}}`;\n\n return SQL`jsonb_array_length(data #> ${jsonPath}) = ${value}`;\n }\n default:\n throw new Error(`Unsupported operator: ${operator}`);\n }\n};\n\nconst handleMetadataOperator = (\n fieldName: string,\n operator: string,\n value: unknown,\n): SQL => {\n switch (operator) {\n case '$eq':\n return SQL`${SQL.plain(fieldName)} = ${value}`;\n case '$gt':\n case '$gte':\n case '$lt':\n case '$lte':\n case '$ne':\n return SQL`${SQL.plain(fieldName)} ${SQL.plain(OperatorMap[operator])} ${value}`;\n case '$in':\n return SQL`${SQL.plain(fieldName)} IN ${value as unknown[]}`;\n case '$nin':\n return SQL`${SQL.plain(fieldName)} NOT IN ${value as unknown[]}`;\n default:\n throw new Error(`Unsupported operator: ${operator}`);\n }\n};\n\nconst buildNestedObject = (\n path: string,\n value: unknown,\n): Record<string, unknown> =>\n path\n .split('.')\n .reverse()\n .reduce((acc, key) => ({ [key]: acc }), value as Record<string, unknown>);\n","import { JSONSerializer, SQL } from '@event-driven-io/dumbo';\nimport {\n objectEntries,\n type $inc,\n type $push,\n type $set,\n type $unset,\n type PongoUpdate,\n} from '../../../../../core';\n\nexport const buildUpdateQuery = <T>(update: PongoUpdate<T>): SQL =>\n objectEntries(update).reduce(\n (currentUpdateQuery, [op, value]) => {\n switch (op) {\n case '$set':\n return buildSetQuery(value, currentUpdateQuery);\n case '$unset':\n return buildUnsetQuery(value, currentUpdateQuery);\n case '$inc':\n return buildIncQuery(value, currentUpdateQuery);\n case '$push':\n return buildPushQuery(value, currentUpdateQuery);\n default:\n return currentUpdateQuery;\n }\n },\n SQL`data`,\n );\n\nexport const buildSetQuery = <T>(set: $set<T>, currentUpdateQuery: SQL): SQL =>\n SQL`${currentUpdateQuery} || ${JSONSerializer.serialize(set)}::jsonb`;\n\nexport const buildUnsetQuery = <T>(\n unset: $unset<T>,\n currentUpdateQuery: SQL,\n): SQL =>\n SQL`${currentUpdateQuery} - ${Object.keys(unset)\n .map((k) => `{${k}}`)\n .join(', ')}`;\n\nexport const buildIncQuery = <T>(\n inc: $inc<T>,\n currentUpdateQuery: SQL,\n): SQL => {\n for (const [key, value] of Object.entries(inc)) {\n currentUpdateQuery =\n typeof value === 'bigint'\n ? SQL`jsonb_set(${currentUpdateQuery}, '{${SQL.plain(key)}}', to_jsonb((COALESCE((data->>'${SQL.plain(key)}')::BIGINT, 0) + ${value})::TEXT), true)`\n : SQL`jsonb_set(${currentUpdateQuery}, '{${SQL.plain(key)}}', to_jsonb(COALESCE((data->>'${SQL.plain(key)}')::NUMERIC, 0) + ${value}), true)`;\n }\n return currentUpdateQuery;\n};\n\nexport const buildPushQuery = <T>(\n push: $push<T>,\n currentUpdateQuery: SQL,\n): SQL => {\n for (const [key, value] of Object.entries(push)) {\n const serializedValue = JSONSerializer.serialize([value]);\n currentUpdateQuery = SQL`jsonb_set(${currentUpdateQuery}, '{${SQL.plain(key)}}', (coalesce(data->'${SQL.plain(key)}', '[]'::jsonb) || ${serializedValue}::jsonb), true)`;\n }\n return currentUpdateQuery;\n};\n","import { dumbo } from '@event-driven-io/dumbo';\nimport {\n pgDatabaseDriver as dumboDriver,\n getDatabaseNameOrDefault,\n PgDriverType,\n type PgConnection,\n} from '@event-driven-io/dumbo/pg';\nimport pg from 'pg';\nimport {\n PongoCollectionSchemaComponent,\n PongoDatabase,\n pongoDatabaseDriverRegistry,\n PongoDatabaseSchemaComponent,\n pongoSchema,\n type PongoDatabaseDriver,\n type PongoDatabaseDriverOptions,\n type PongoDb,\n} from '../../../core';\nimport {\n pongoCollectionPostgreSQLMigrations,\n postgresSQLBuilder,\n} from '../core';\n\nexport type PgPongoClientOptions =\n | PooledPongoClientOptions\n | NotPooledPongoOptions;\n\nexport type PooledPongoClientOptions =\n | {\n pool: pg.Pool;\n }\n | {\n pooled: true;\n }\n | {\n pool: pg.Pool;\n pooled: true;\n }\n | object;\n\nexport type NotPooledPongoOptions =\n | {\n client: pg.Client;\n }\n | {\n pooled: false;\n }\n | {\n client: pg.Client;\n pooled: false;\n }\n | {\n connection: PgConnection;\n pooled?: false;\n };\n\ntype PgDatabaseDriverOptions =\n PongoDatabaseDriverOptions<PgPongoClientOptions> & {\n databaseName?: string | undefined;\n connectionString: string;\n };\n\nconst pgDatabaseDriver: PongoDatabaseDriver<\n PongoDb<PgDriverType>,\n PgDatabaseDriverOptions\n> = {\n driverType: PgDriverType,\n databaseFactory: (options) => {\n const databaseName =\n options.databaseName ??\n getDatabaseNameOrDefault(options.connectionString);\n\n return PongoDatabase({\n ...options,\n pool: dumbo({\n connectionString: options.connectionString,\n driver: dumboDriver,\n ...options.connectionOptions,\n }),\n schemaComponent: PongoDatabaseSchemaComponent({\n driverType: PgDriverType,\n collectionFactory: (schema) =>\n PongoCollectionSchemaComponent({\n driverType: PgDriverType,\n definition: schema,\n migrationsOrSchemaComponents: {\n migrations: pongoCollectionPostgreSQLMigrations(schema.name),\n },\n sqlBuilder: postgresSQLBuilder(schema.name),\n }),\n definition:\n options.schema?.definition ?? pongoSchema.db(databaseName, {}),\n }),\n databaseName,\n });\n },\n getDatabaseNameOrDefault: (options) => {\n return (\n options.databaseName ?? getDatabaseNameOrDefault(options.connectionString)\n );\n },\n defaultConnectionString: 'postgresql://localhost:5432/postgres',\n};\n\nexport const usePgDatabaseDriver = () => {\n pongoDatabaseDriverRegistry.register(PgDriverType, pgDatabaseDriver);\n};\n\nusePgDatabaseDriver();\n\nexport { pgDatabaseDriver as databaseDriver, pgDatabaseDriver as pgDriver };\n"],"mappings":"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","names":["JSONSerializer","SQL","SQL","SQL","JSONSerializer","SQL","SQL","JSONSerializer","SQL","JSONSerializer"]}
@@ -1,4 +1,4 @@
1
- import { DatabaseDriverType, SchemaComponent, MigrationStyle, DatabaseTransactionFactory, DatabaseTransaction, SQLExecutor, SQL, QueryResultRow, QueryResult, DatabaseConnectionString, InferDriverDatabaseType, SchemaComponentOptions } from '@event-driven-io/dumbo';
1
+ import { DatabaseDriverType, SchemaComponent, MigrationStyle, WithDatabaseTransactionFactory, AnyConnection, DatabaseTransaction, SQLExecutor, SQL, QueryResultRow, QueryResult, SchemaComponentOptions } from '@event-driven-io/dumbo';
2
2
 
3
3
  interface PongoCollectionSchema<T extends PongoDocument = PongoDocument> {
4
4
  name: string;
@@ -74,7 +74,6 @@ interface PongoDatabaseDriverOptions<ConnectionOptions = unknown> {
74
74
  type AnyPongoDatabaseDriverOptions = PongoDatabaseDriverOptions<any>;
75
75
  type PongoDatabaseFactoryOptions<CollectionsSchema extends Record<string, PongoCollectionSchema> = Record<string, PongoCollectionSchema>, DriverOptions extends AnyPongoDatabaseDriverOptions = AnyPongoDatabaseDriverOptions> = {
76
76
  databaseName?: string | undefined;
77
- connectionString: string;
78
77
  schema?: {
79
78
  autoMigration?: MigrationStyle;
80
79
  definition?: PongoDbSchema<CollectionsSchema>;
@@ -83,10 +82,16 @@ type PongoDatabaseFactoryOptions<CollectionsSchema extends Record<string, PongoC
83
82
  throwOnOperationFailures?: boolean;
84
83
  } | undefined;
85
84
  } & DriverOptions;
85
+ type DatabaseDriverOptionsWithDatabaseName = {
86
+ databaseName?: string | undefined;
87
+ };
88
+ type DatabaseDriverOptionsWithConnectionString = {
89
+ connectionString?: string | undefined;
90
+ };
86
91
  interface PongoDatabaseDriver<Database extends AnyPongoDb = AnyPongoDb, DriverOptions extends AnyPongoDatabaseDriverOptions = AnyPongoDatabaseDriverOptions> {
87
92
  driverType: Database['driverType'];
88
93
  databaseFactory<CollectionsSchema extends Record<string, PongoCollectionSchema> = Record<string, PongoCollectionSchema>>(options: PongoDatabaseFactoryOptions<CollectionsSchema, DriverOptions>): Database & PongoDb<Database['driverType']>;
89
- getDatabaseNameOrDefault(connectionString: string): string;
94
+ getDatabaseNameOrDefault?<CollectionsSchema extends Record<string, PongoCollectionSchema> = Record<string, PongoCollectionSchema>>(options: PongoDatabaseFactoryOptions<CollectionsSchema, DriverOptions>): string;
90
95
  defaultConnectionString: string;
91
96
  }
92
97
  type AnyPongoDatabaseDriver = PongoDatabaseDriver<AnyPongoDb, AnyPongoDatabaseDriverOptions>;
@@ -118,9 +123,8 @@ interface PongoClient<DriverType extends DatabaseDriverType = DatabaseDriverType
118
123
  startSession(): PongoSession<DriverType>;
119
124
  withSession<T = unknown>(callback: (session: PongoSession<DriverType>) => Promise<T>): Promise<T>;
120
125
  }
121
- type PongoClientOptions<DatabaseDriver extends AnyPongoDatabaseDriver = AnyPongoDatabaseDriver, ConnectionString extends DatabaseConnectionString<InferDriverDatabaseType<DatabaseDriver['driverType']>> = DatabaseConnectionString<InferDriverDatabaseType<DatabaseDriver['driverType']>>, TypedClientSchema extends PongoClientSchema = PongoClientSchema> = ExtractPongoDatabaseDriverOptions<DatabaseDriver> extends infer Options ? Options extends unknown ? {
126
+ type PongoClientOptions<DatabaseDriver extends AnyPongoDatabaseDriver = AnyPongoDatabaseDriver, TypedClientSchema extends PongoClientSchema = PongoClientSchema> = ExtractPongoDatabaseDriverOptions<DatabaseDriver> extends infer Options ? Options extends unknown ? {
122
127
  driver: DatabaseDriver;
123
- connectionString: ConnectionString | string;
124
128
  schema?: {
125
129
  autoMigration?: MigrationStyle;
126
130
  definition?: TypedClientSchema;
@@ -136,7 +140,7 @@ declare interface PongoTransactionOptions {
136
140
  interface PongoDbTransaction<DriverType extends DatabaseDriverType = DatabaseDriverType, Database extends PongoDb<DriverType> = PongoDb<DriverType>> {
137
141
  get databaseName(): string | null;
138
142
  options: PongoTransactionOptions;
139
- enlistDatabase: (database: Database) => Promise<DatabaseTransaction<DriverType>>;
143
+ enlistDatabase: (database: Database) => Promise<DatabaseTransaction<AnyConnection>>;
140
144
  commit: () => Promise<void>;
141
145
  rollback: (error?: unknown) => Promise<void>;
142
146
  get sqlExecutor(): SQLExecutor;
@@ -158,7 +162,7 @@ interface PongoSession<DriverType extends DatabaseDriverType = DatabaseDriverTyp
158
162
  abortTransaction(): Promise<void>;
159
163
  withTransaction<T = unknown>(fn: (session: PongoSession<DriverType>) => Promise<T>, options?: PongoTransactionOptions): Promise<T>;
160
164
  }
161
- interface PongoDb<DriverType extends DatabaseDriverType = DatabaseDriverType> extends DatabaseTransactionFactory<DriverType> {
165
+ interface PongoDb<DriverType extends DatabaseDriverType = DatabaseDriverType> extends WithDatabaseTransactionFactory<AnyConnection> {
162
166
  driverType: DriverType;
163
167
  databaseName: string;
164
168
  connect(): Promise<void>;
@@ -419,4 +423,4 @@ type PongoCollectionSchemaComponent = SchemaComponent<PongoCollectionURN> & {
419
423
  };
420
424
  declare const PongoCollectionSchemaComponent: <DriverType extends DatabaseDriverType = DatabaseDriverType>({ definition, migrationsOrSchemaComponents, sqlBuilder, }: PongoCollectionSchemaComponentOptions<DriverType>) => PongoCollectionSchemaComponent;
421
425
 
422
- export { type FindOptions as $, type AnyPongoDb as A, type ExtractPongoDatabaseDriverOptions as B, type CollectionOperationOptions as C, PongoDatabaseDriverRegistry as D, type ExtractPongoDatabaseTypeFromDriver as E, pongoDatabaseDriverRegistry as F, type CollectionsMap as G, type PongoDbWithSchema as H, type DBsMap as I, pongoSchema as J, proxyPongoDbWithSchema as K, proxyClientWithSchema as L, type PongoCollectionSchemaMetadata as M, type PongoDbSchemaMetadata as N, type PongoClientSchemaMetadata as O, type PongoDb as P, toDbSchemaMetadata as Q, toClientSchemaMetadata as R, type PongoSchemaConfig as S, type InsertOneOptions as T, type InsertManyOptions as U, type UpdateOneOptions as V, type UpdateManyOptions as W, type HandleOptions as X, type ReplaceOneOptions as Y, type DeleteOneOptions as Z, type DeleteManyOptions as _, PongoCollectionSchemaComponent as a, ObjectId as a0, type HasId as a1, type InferIdType as a2, type EnhancedOmit as a3, type OptionalUnlessRequiredId as a4, type OptionalUnlessRequiredVersion as a5, type OptionalUnlessRequiredIdAndVersion as a6, type WithId as a7, type WithoutId as a8, type WithVersion as a9, expectedVersion as aA, type PongoUpdate as aB, type OperationResult as aC, operationResult as aD, type PongoInsertOneResult as aE, type PongoInsertManyResult as aF, type PongoUpdateResult as aG, type PongoUpdateManyResult as aH, type PongoDeleteResult as aI, type PongoDeleteManyResult as aJ, type PongoHandleResult as aK, type DocumentHandler as aL, type WithoutVersion as aa, type WithIdAndVersion as ab, type WithoutIdAndVersion as ac, type RegExpOrString as ad, type Document as ae, type OptionalId as af, type OptionalVersion as ag, type ObjectIdLike as ah, type NonObjectIdLikeDocument as ai, type AlternativeType as aj, type Condition as ak, type PongoFilter as al, type RootFilterOperators as am, type PongoFilterOperator as an, type $set as ao, type $unset as ap, type $inc as aq, type $push as ar, type ExpectedDocumentVersionGeneral as as, type ExpectedDocumentVersionValue as at, type ExpectedDocumentVersion as au, DOCUMENT_EXISTS as av, DOCUMENT_DOES_NOT_EXIST as aw, NO_CONCURRENCY_CHECK as ax, isGeneralExpectedDocumentVersion as ay, expectedVersionValue as az, type PongoDocument as b, type PongoCollection as c, type PongoClientSchema as d, type PongoDatabaseDriver as e, type PongoCollectionSchema as f, type PongoDatabaseFactoryOptions as g, PongoDatabaseSchemaComponent as h, type PongoDbSchema as i, type AnyPongoDatabaseDriver as j, type PongoClientOptions as k, type PongoClient as l, type PongoClientWithSchema as m, type PongoTransactionOptions as n, type PongoSession as o, type PongoDbTransaction as p, type PongoCollectionSQLBuilder as q, type PongoCollectionURNType as r, type PongoCollectionURN as s, type PongoCollectionSchemaComponentOptions as t, type PongoDatabaseURNType as u, type PongoDatabaseURN as v, type PongoDatabaseSchemaComponentOptions as w, type PongoDatabaseSQLBuilder as x, type PongoDatabaseDriverOptions as y, type AnyPongoDatabaseDriverOptions as z };
426
+ export { type DeleteOneOptions as $, type AnyPongoDb as A, type DatabaseDriverOptionsWithConnectionString as B, type CollectionOperationOptions as C, type DatabaseDriverOptionsWithDatabaseName as D, type ExtractPongoDatabaseTypeFromDriver as E, type ExtractPongoDatabaseDriverOptions as F, PongoDatabaseDriverRegistry as G, pongoDatabaseDriverRegistry as H, type CollectionsMap as I, type PongoDbWithSchema as J, type DBsMap as K, pongoSchema as L, proxyPongoDbWithSchema as M, proxyClientWithSchema as N, type PongoCollectionSchemaMetadata as O, type PongoDatabaseDriver as P, type PongoDbSchemaMetadata as Q, type PongoClientSchemaMetadata as R, toDbSchemaMetadata as S, toClientSchemaMetadata as T, type PongoSchemaConfig as U, type InsertOneOptions as V, type InsertManyOptions as W, type UpdateOneOptions as X, type UpdateManyOptions as Y, type HandleOptions as Z, type ReplaceOneOptions as _, type PongoDb as a, type DeleteManyOptions as a0, type FindOptions as a1, ObjectId as a2, type HasId as a3, type InferIdType as a4, type EnhancedOmit as a5, type OptionalUnlessRequiredId as a6, type OptionalUnlessRequiredVersion as a7, type OptionalUnlessRequiredIdAndVersion as a8, type WithId as a9, isGeneralExpectedDocumentVersion as aA, expectedVersionValue as aB, expectedVersion as aC, type PongoUpdate as aD, type OperationResult as aE, operationResult as aF, type PongoInsertOneResult as aG, type PongoInsertManyResult as aH, type PongoUpdateResult as aI, type PongoUpdateManyResult as aJ, type PongoDeleteResult as aK, type PongoDeleteManyResult as aL, type PongoHandleResult as aM, type DocumentHandler as aN, type WithoutId as aa, type WithVersion as ab, type WithoutVersion as ac, type WithIdAndVersion as ad, type WithoutIdAndVersion as ae, type RegExpOrString as af, type Document as ag, type OptionalId as ah, type OptionalVersion as ai, type ObjectIdLike as aj, type NonObjectIdLikeDocument as ak, type AlternativeType as al, type Condition as am, type PongoFilter as an, type RootFilterOperators as ao, type PongoFilterOperator as ap, type $set as aq, type $unset as ar, type $inc as as, type $push as at, type ExpectedDocumentVersionGeneral as au, type ExpectedDocumentVersionValue as av, type ExpectedDocumentVersion as aw, DOCUMENT_EXISTS as ax, DOCUMENT_DOES_NOT_EXIST as ay, NO_CONCURRENCY_CHECK as az, type PongoDatabaseDriverOptions as b, PongoCollectionSchemaComponent as c, type PongoDocument as d, type PongoCollection as e, type PongoClientSchema as f, type PongoCollectionSchema as g, type PongoDatabaseFactoryOptions as h, PongoDatabaseSchemaComponent as i, type PongoDbSchema as j, type AnyPongoDatabaseDriver as k, type PongoClientOptions as l, type PongoClient as m, type PongoClientWithSchema as n, type PongoTransactionOptions as o, type PongoSession as p, type PongoDbTransaction as q, type PongoCollectionSQLBuilder as r, type PongoCollectionURNType as s, type PongoCollectionURN as t, type PongoCollectionSchemaComponentOptions as u, type PongoDatabaseURNType as v, type PongoDatabaseURN as w, type PongoDatabaseSchemaComponentOptions as x, type PongoDatabaseSQLBuilder as y, type AnyPongoDatabaseDriverOptions as z };