@event-driven-io/pongo 0.17.0-beta.36 → 0.17.0-beta.39

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 (43) hide show
  1. package/dist/cli.cjs +2 -2
  2. package/dist/cli.cjs.map +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/cloudflare.cjs +2 -2
  6. package/dist/cloudflare.d.cts +2 -2
  7. package/dist/cloudflare.d.ts +2 -2
  8. package/dist/cloudflare.js +2 -2
  9. package/dist/{core-DwoTLYbR.cjs → core-BYk4wCpe.cjs} +4 -4
  10. package/dist/{core-DwoTLYbR.cjs.map → core-BYk4wCpe.cjs.map} +1 -1
  11. package/dist/{core-CwxxuUAn.cjs → core-BdTIuXiI.cjs} +60 -47
  12. package/dist/core-BdTIuXiI.cjs.map +1 -0
  13. package/dist/{core-D_iZiiYe.js → core-Dtn-d-91.js} +60 -47
  14. package/dist/core-Dtn-d-91.js.map +1 -0
  15. package/dist/{core-fsJmsQDa.js → core-wHw_lMM5.js} +4 -4
  16. package/dist/{core-fsJmsQDa.js.map → core-wHw_lMM5.js.map} +1 -1
  17. package/dist/{index-DMq6F3x9.d.ts → index-BfOn92K5.d.cts} +6 -6
  18. package/dist/{index-qeC-p0Tq.d.cts → index-CL0zRxRl.d.ts} +6 -6
  19. package/dist/{index-Du_IHXAj.d.ts → index-Cxo6j266.d.ts} +2 -2
  20. package/dist/{index-ZKOB86ub.d.cts → index-DyNmc6tD.d.cts} +2 -2
  21. package/dist/index.cjs +1 -1
  22. package/dist/index.d.cts +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.js +1 -1
  25. package/dist/pg.cjs +3 -3
  26. package/dist/pg.cjs.map +1 -1
  27. package/dist/pg.d.cts +1 -1
  28. package/dist/pg.d.ts +1 -1
  29. package/dist/pg.js +3 -3
  30. package/dist/pg.js.map +1 -1
  31. package/dist/shim.cjs +1 -1
  32. package/dist/shim.cjs.map +1 -1
  33. package/dist/shim.d.cts +1 -1
  34. package/dist/shim.d.ts +1 -1
  35. package/dist/shim.js +1 -1
  36. package/dist/shim.js.map +1 -1
  37. package/dist/sqlite3.cjs +2 -2
  38. package/dist/sqlite3.d.cts +2 -2
  39. package/dist/sqlite3.d.ts +2 -2
  40. package/dist/sqlite3.js +2 -2
  41. package/package.json +2 -2
  42. package/dist/core-CwxxuUAn.cjs.map +0 -1
  43. package/dist/core-D_iZiiYe.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"core-fsJmsQDa.js","names":[],"sources":["../src/storage/sqlite/core/sqlBuilder/filter/queryOperators.ts","../src/storage/sqlite/core/sqlBuilder/filter/index.ts","../src/storage/sqlite/core/sqlBuilder/update/index.ts","../src/storage/sqlite/core/sqlBuilder/index.ts"],"sourcesContent":["import type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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 serializer: JSONSerializer,\n): SQL => {\n if (path === '_id' || path === '_version') {\n return handleMetadataOperator(path, operator, value);\n }\n\n switch (operator) {\n case '$eq': {\n const jsonPath = buildJsonPath(path);\n\n return SQL`(\n json_extract(data, '${SQL.plain(jsonPath)}') = ${value}\n OR (\n json_type(data, '${SQL.plain(jsonPath)}') = 'array'\n AND EXISTS(\n SELECT 1 FROM json_each(data, '${SQL.plain(jsonPath)}')\n WHERE json_each.value = ${value}\n )\n )\n )`;\n }\n case '$gt':\n case '$gte':\n case '$lt':\n case '$lte':\n case '$ne': {\n const jsonPath = buildJsonPath(path);\n\n return SQL`json_extract(data, '${SQL.plain(jsonPath)}') ${SQL.plain(OperatorMap[operator])} ${value}`;\n }\n case '$in': {\n const jsonPath = buildJsonPath(path);\n const values = value as unknown[];\n const inClause = SQL.merge(\n values.map((v) => SQL`${v}`),\n ', ',\n );\n\n return SQL`json_extract(data, '${SQL.plain(jsonPath)}') IN (${inClause})`;\n }\n case '$nin': {\n const jsonPath = buildJsonPath(path);\n const values = value as unknown[];\n const inClause = SQL.merge(\n values.map((v) => SQL`${v}`),\n ', ',\n );\n\n return SQL`json_extract(data, '${SQL.plain(jsonPath)}') NOT IN (${inClause})`;\n }\n case '$elemMatch': {\n const subConditions = objectEntries(value as Record<string, unknown>)\n .map(([subKey, subValue]) => {\n const serializedValue = serializer.serialize(subValue);\n return `json_extract(value, '$.${subKey}') = json('${serializedValue}')`;\n })\n .join(' AND ');\n\n const jsonPath = buildJsonPath(path);\n return SQL`EXISTS(SELECT 1 FROM json_each(data, '${SQL.plain(jsonPath)}') WHERE ${SQL.plain(subConditions)})`;\n }\n case '$all': {\n const jsonPath = buildJsonPath(path);\n const serializedValue = serializer.serialize(value);\n\n return SQL`(SELECT COUNT(*) FROM json_each(json(${serializedValue})) WHERE json_each.value NOT IN (SELECT value FROM json_each(data, '${SQL.plain(jsonPath)}'))) = 0`;\n }\n case '$size': {\n const jsonPath = buildJsonPath(path);\n\n return SQL`json_array_length(json_extract(data, '${SQL.plain(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 const values = value as unknown[];\n const inClause = SQL.merge(\n values.map((v) => SQL`${v}`),\n ', ',\n );\n return SQL`${SQL.plain(fieldName)} IN (${inClause})`;\n }\n case '$nin': {\n const values = value as unknown[];\n const inClause = SQL.merge(\n values.map((v) => SQL`${v}`),\n ', ',\n );\n return SQL`${SQL.plain(fieldName)} NOT IN (${inClause})`;\n }\n default:\n throw new Error(`Unsupported operator: ${operator}`);\n }\n};\n\nconst buildJsonPath = (path: string): string => {\n return `$.${path}`;\n};\n","import type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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>(\n filter: PongoFilter<T>,\n serializer: JSONSerializer,\n): SQL =>\n SQL.merge(\n Object.entries(filter).map(([key, value]) =>\n isRecord(value)\n ? constructComplexFilterQuery(key, value, serializer)\n : handleOperator(key, '$eq', value, serializer),\n ),\n ` ${AND} `,\n );\n\nconst constructComplexFilterQuery = (\n key: string,\n value: Record<string, unknown>,\n serializer: JSONSerializer,\n): SQL => {\n const isEquality = !hasOperators(value);\n\n return SQL.merge(\n objectEntries(value).map(([nestedKey, val]) =>\n isEquality\n ? handleOperator(\n `${key}.${nestedKey}`,\n QueryOperators.$eq,\n val,\n serializer,\n )\n : handleOperator(key, nestedKey, val, serializer),\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 type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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>(\n update: PongoUpdate<T>,\n serializer: JSONSerializer,\n): SQL =>\n objectEntries(update).reduce(\n (currentUpdateQuery, [op, value]) => {\n switch (op) {\n case '$set':\n return buildSetQuery(value, currentUpdateQuery, serializer);\n case '$unset':\n return buildUnsetQuery(value, currentUpdateQuery);\n case '$inc':\n return buildIncQuery(value, currentUpdateQuery);\n case '$push':\n return buildPushQuery(value, currentUpdateQuery, serializer);\n default:\n return currentUpdateQuery;\n }\n },\n SQL`data`,\n );\n\nexport const buildSetQuery = <T>(\n set: $set<T>,\n currentUpdateQuery: SQL,\n serializer: JSONSerializer,\n): SQL => SQL`json_patch(${currentUpdateQuery}, ${serializer.serialize(set)})`;\n\nexport const buildUnsetQuery = <T>(\n unset: $unset<T>,\n currentUpdateQuery: SQL,\n): SQL => {\n const keys = Object.keys(unset);\n let query = currentUpdateQuery;\n for (const key of keys) {\n query = SQL`json_remove(${query}, '$.${SQL.plain(key)}')`;\n }\n return query;\n};\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`json_set(${currentUpdateQuery}, '$.${SQL.plain(key)}', CAST((COALESCE(json_extract(${currentUpdateQuery}, '$.${SQL.plain(key)}'), 0) + ${value}) AS TEXT))`\n : SQL`json_set(${currentUpdateQuery}, '$.${SQL.plain(key)}', COALESCE(json_extract(${currentUpdateQuery}, '$.${SQL.plain(key)}'), 0) + ${value})`;\n }\n return currentUpdateQuery;\n};\n\nexport const buildPushQuery = <T>(\n push: $push<T>,\n currentUpdateQuery: SQL,\n serializer: JSONSerializer,\n): SQL => {\n for (const [key, value] of Object.entries(push)) {\n const serializedValue = serializer.serialize(value);\n currentUpdateQuery = SQL`json_set(${currentUpdateQuery}, '$.${SQL.plain(key)}', CASE\n WHEN json_type(json_extract(${currentUpdateQuery}, '$.${SQL.plain(key)}')) = 'array'\n THEN json_insert(json_extract(${currentUpdateQuery}, '$.${SQL.plain(key)}'), '$[#]', json(${serializedValue}))\n ELSE json_array(json(${serializedValue}))\n END)`;\n }\n return currentUpdateQuery;\n};\n","import type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { isSQL, SQL, sqlMigration } 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 WithId,\n type WithIdAndVersion,\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 JSON NOT NULL,\n metadata JSON NOT NULL DEFAULT '{}',\n _version INTEGER NOT NULL DEFAULT 1,\n _partition TEXT NOT NULL DEFAULT 'png_global',\n _archived INTEGER NOT NULL DEFAULT 0,\n _created TEXT NOT NULL DEFAULT (datetime('now')),\n _updated TEXT NOT NULL DEFAULT (datetime('now'))\n )`;\n\nexport const pongoCollectionSQLiteMigrations = (collectionName: string) => [\n sqlMigration(`pongoCollection:${collectionName}:001:createtable`, [\n createCollection(collectionName),\n ]),\n];\n\nexport const sqliteSQLBuilder = (\n collectionName: string,\n serializer: JSONSerializer,\n): PongoCollectionSQLBuilder => ({\n createCollection: (): SQL => createCollection(collectionName),\n insertOne: <T>(document: OptionalUnlessRequiredIdAndVersion<T>): SQL => {\n const serialized = document;\n const id = document._id;\n const version = document._version ?? 1n;\n\n return SQL`\n INSERT OR IGNORE INTO ${SQL.identifier(collectionName)} (_id, data, _version)\n VALUES (${id}, ${serialized}, ${version})\n RETURNING _id;`;\n },\n insertMany: <T>(documents: OptionalUnlessRequiredIdAndVersion<T>[]): SQL => {\n const values = SQL.merge(\n documents.map(\n (doc) =>\n SQL`(${doc._id}, ${serializer.serialize(doc)}, ${doc._version ?? 1n})`,\n ),\n ',',\n );\n\n return SQL`\n INSERT OR IGNORE INTO ${SQL.identifier(collectionName)} (_id, data, _version) VALUES ${values}\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 expectedVersionCheck =\n expectedVersion != null ? SQL`AND _version = ${expectedVersion}` : SQL``;\n\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n const updateQuery = isSQL(update)\n ? update\n : buildUpdateQuery(update, serializer);\n\n return SQL`\n UPDATE ${SQL.identifier(collectionName)}\n SET\n data = json_patch(${updateQuery}, json_object('_id', _id, '_version', cast(_version + 1 as TEXT))),\n _version = _version + 1,\n _updated = datetime('now')\n WHERE _id = (\n SELECT _id FROM ${SQL.identifier(collectionName)}\n ${where(filterQuery)}\n LIMIT 1\n ) ${expectedVersionCheck}\n RETURNING\n _id,\n cast(_version as TEXT) as version,\n 1 as matched,\n 1 as modified;`;\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 expectedVersionCheck =\n expectedVersion != null ? SQL`AND _version = ${expectedVersion}` : SQL``;\n\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`\n UPDATE ${SQL.identifier(collectionName)}\n SET\n data = json_patch(${serializer.serialize(document)}, json_object('_id', _id, '_version', cast(_version + 1 as TEXT))),\n _version = _version + 1,\n _updated = datetime('now')\n WHERE _id = (\n SELECT _id FROM ${SQL.identifier(collectionName)}\n ${where(filterQuery)}\n LIMIT 1\n ) ${expectedVersionCheck}\n RETURNING\n _id,\n cast(_version as TEXT) AS version,\n 1 AS matched,\n 1 AS modified;`;\n },\n updateMany: <T>(\n filter: PongoFilter<T> | SQL,\n update: PongoUpdate<T> | SQL,\n ): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n const updateQuery = isSQL(update)\n ? update\n : buildUpdateQuery(update, serializer);\n\n return SQL`\n UPDATE ${SQL.identifier(collectionName)}\n SET\n data = json_patch(${updateQuery}, json_object('_version', cast(_version + 1 as TEXT))),\n _version = _version + 1,\n _updated = datetime('now')\n ${where(filterQuery)}\n RETURNING _id;`;\n },\n deleteOne: <T>(\n filter: PongoFilter<T> | SQL,\n options?: DeleteOneOptions,\n ): SQL => {\n const expectedVersion = expectedVersionValue(options?.expectedVersion);\n const expectedVersionCheck =\n expectedVersion != null ? SQL`AND _version = ${expectedVersion}` : SQL``;\n\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`\n DELETE FROM ${SQL.identifier(collectionName)}\n WHERE _id = (\n SELECT _id FROM ${SQL.identifier(collectionName)}\n ${where(filterQuery)}\n LIMIT 1\n ) ${expectedVersionCheck}\n RETURNING\n _id,\n 1 AS matched,\n 1 AS deleted;`;\n },\n deleteMany: <T>(filter: PongoFilter<T> | SQL): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`DELETE FROM ${SQL.identifier(collectionName)} ${where(filterQuery)} RETURNING _id`;\n },\n replaceMany: <T>(documents: Array<WithIdAndVersion<T> | WithId<T>>): SQL => {\n const col = SQL.identifier(collectionName);\n const hasVersions = documents.some(\n (d) => '_version' in d && d._version !== undefined,\n );\n\n if (hasVersions) {\n const values = SQL.merge(\n documents.map(\n (d) =>\n SQL`(${d._id}, ${serializer.serialize(d)}, ${(d as WithIdAndVersion<T>)._version ?? 0n})`,\n ),\n ',',\n );\n return SQL`\n WITH replacements(_id, data, expected_version) AS (\n VALUES ${values}\n )\n UPDATE ${col}\n SET\n data = json_patch(r.data, json_object('_id', ${col}._id, '_version', cast(${col}._version + 1 as TEXT))),\n _version = ${col}._version + 1,\n _updated = datetime('now')\n FROM replacements r\n WHERE ${col}._id = r._id AND ${col}._version = r.expected_version\n RETURNING ${col}._id, cast(${col}._version as TEXT) as version;`;\n }\n\n const values = SQL.merge(\n documents.map((d) => SQL`(${d._id}, ${serializer.serialize(d)})`),\n ',',\n );\n return SQL`\n WITH replacements(_id, data) AS (\n VALUES ${values}\n )\n UPDATE ${col}\n SET\n data = json_patch(r.data, json_object('_id', ${col}._id, '_version', cast(${col}._version + 1 as TEXT))),\n _version = ${col}._version + 1,\n _updated = datetime('now')\n FROM replacements r\n WHERE ${col}._id = r._id\n RETURNING ${col}._id, cast(${col}._version as TEXT) as version;`;\n },\n deleteManyByIds: (ids: Array<{ _id: string; _version?: bigint }>): SQL => {\n const hasVersions = ids.some((d) => d._version !== undefined);\n\n if (hasVersions) {\n const values = SQL.merge(\n ids.map((d) => SQL`(${d._id}, ${d._version ?? 0n})`),\n ',',\n );\n\n return SQL`\n WITH targets(_id, expected_version) AS (\n VALUES ${values}\n )\n DELETE FROM ${SQL.identifier(collectionName)}\n WHERE _id IN (SELECT _id FROM targets)\n AND _version = (SELECT expected_version FROM targets WHERE targets._id = ${SQL.identifier(collectionName)}._id)\n RETURNING _id;`;\n }\n\n const idList = SQL.merge(\n ids.map((d) => SQL`${d._id}`),\n ',',\n );\n\n return SQL`\n DELETE FROM ${SQL.identifier(collectionName)}\n WHERE _id IN (${idList})\n RETURNING _id;`;\n },\n findOne: <T>(filter: PongoFilter<T> | SQL): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`SELECT data, _version FROM ${SQL.identifier(collectionName)} ${where(filterQuery)} LIMIT 1;`;\n },\n find: <T>(filter: PongoFilter<T> | SQL, options?: FindOptions): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n const query: SQL[] = [];\n\n query.push(\n SQL`SELECT data, _version FROM ${SQL.identifier(collectionName)}`,\n );\n\n query.push(where(filterQuery));\n\n if (options?.sort && Object.keys(options.sort).length > 0) {\n const clauses = Object.entries(options.sort).map(([field, dir]) => {\n // _id and _version are native columns, not JSON fields.\n const isMetadata = field === '_id' || field === '_version';\n const accessor = isMetadata\n ? SQL`${SQL.plain(field)}`\n : SQL`json_extract(data, '${SQL.plain(`$.${field}`)}')`;\n return dir === 1 ? SQL`${accessor} ASC` : SQL`${accessor} DESC`;\n });\n query.push(SQL`ORDER BY ${SQL.merge(clauses, ',')}`);\n }\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, serializer);\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"],"mappings":"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"}
1
+ {"version":3,"file":"core-wHw_lMM5.js","names":[],"sources":["../src/storage/sqlite/core/sqlBuilder/filter/queryOperators.ts","../src/storage/sqlite/core/sqlBuilder/filter/index.ts","../src/storage/sqlite/core/sqlBuilder/update/index.ts","../src/storage/sqlite/core/sqlBuilder/index.ts"],"sourcesContent":["import type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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 serializer: JSONSerializer,\n): SQL => {\n if (path === '_id' || path === '_version') {\n return handleMetadataOperator(path, operator, value);\n }\n\n switch (operator) {\n case '$eq': {\n const jsonPath = buildJsonPath(path);\n\n return SQL`(\n json_extract(data, '${SQL.plain(jsonPath)}') = ${value}\n OR (\n json_type(data, '${SQL.plain(jsonPath)}') = 'array'\n AND EXISTS(\n SELECT 1 FROM json_each(data, '${SQL.plain(jsonPath)}')\n WHERE json_each.value = ${value}\n )\n )\n )`;\n }\n case '$gt':\n case '$gte':\n case '$lt':\n case '$lte':\n case '$ne': {\n const jsonPath = buildJsonPath(path);\n\n return SQL`json_extract(data, '${SQL.plain(jsonPath)}') ${SQL.plain(OperatorMap[operator])} ${value}`;\n }\n case '$in': {\n const jsonPath = buildJsonPath(path);\n const values = value as unknown[];\n const inClause = SQL.merge(\n values.map((v) => SQL`${v}`),\n ', ',\n );\n\n return SQL`json_extract(data, '${SQL.plain(jsonPath)}') IN (${inClause})`;\n }\n case '$nin': {\n const jsonPath = buildJsonPath(path);\n const values = value as unknown[];\n const inClause = SQL.merge(\n values.map((v) => SQL`${v}`),\n ', ',\n );\n\n return SQL`json_extract(data, '${SQL.plain(jsonPath)}') NOT IN (${inClause})`;\n }\n case '$elemMatch': {\n const subConditions = objectEntries(value as Record<string, unknown>)\n .map(([subKey, subValue]) => {\n const serializedValue = serializer.serialize(subValue);\n return `json_extract(value, '$.${subKey}') = json('${serializedValue}')`;\n })\n .join(' AND ');\n\n const jsonPath = buildJsonPath(path);\n return SQL`EXISTS(SELECT 1 FROM json_each(data, '${SQL.plain(jsonPath)}') WHERE ${SQL.plain(subConditions)})`;\n }\n case '$all': {\n const jsonPath = buildJsonPath(path);\n const serializedValue = serializer.serialize(value);\n\n return SQL`(SELECT COUNT(*) FROM json_each(json(${serializedValue})) WHERE json_each.value NOT IN (SELECT value FROM json_each(data, '${SQL.plain(jsonPath)}'))) = 0`;\n }\n case '$size': {\n const jsonPath = buildJsonPath(path);\n\n return SQL`json_array_length(json_extract(data, '${SQL.plain(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 const values = value as unknown[];\n const inClause = SQL.merge(\n values.map((v) => SQL`${v}`),\n ', ',\n );\n return SQL`${SQL.plain(fieldName)} IN (${inClause})`;\n }\n case '$nin': {\n const values = value as unknown[];\n const inClause = SQL.merge(\n values.map((v) => SQL`${v}`),\n ', ',\n );\n return SQL`${SQL.plain(fieldName)} NOT IN (${inClause})`;\n }\n default:\n throw new Error(`Unsupported operator: ${operator}`);\n }\n};\n\nconst buildJsonPath = (path: string): string => {\n return `$.${path}`;\n};\n","import type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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>(\n filter: PongoFilter<T>,\n serializer: JSONSerializer,\n): SQL =>\n SQL.merge(\n Object.entries(filter).map(([key, value]) =>\n isRecord(value)\n ? constructComplexFilterQuery(key, value, serializer)\n : handleOperator(key, '$eq', value, serializer),\n ),\n ` ${AND} `,\n );\n\nconst constructComplexFilterQuery = (\n key: string,\n value: Record<string, unknown>,\n serializer: JSONSerializer,\n): SQL => {\n const isEquality = !hasOperators(value);\n\n return SQL.merge(\n objectEntries(value).map(([nestedKey, val]) =>\n isEquality\n ? handleOperator(\n `${key}.${nestedKey}`,\n QueryOperators.$eq,\n val,\n serializer,\n )\n : handleOperator(key, nestedKey, val, serializer),\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 type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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>(\n update: PongoUpdate<T>,\n serializer: JSONSerializer,\n): SQL =>\n objectEntries(update).reduce(\n (currentUpdateQuery, [op, value]) => {\n switch (op) {\n case '$set':\n return buildSetQuery(value, currentUpdateQuery, serializer);\n case '$unset':\n return buildUnsetQuery(value, currentUpdateQuery);\n case '$inc':\n return buildIncQuery(value, currentUpdateQuery);\n case '$push':\n return buildPushQuery(value, currentUpdateQuery, serializer);\n default:\n return currentUpdateQuery;\n }\n },\n SQL`data`,\n );\n\nexport const buildSetQuery = <T>(\n set: $set<T>,\n currentUpdateQuery: SQL,\n serializer: JSONSerializer,\n): SQL => SQL`json_patch(${currentUpdateQuery}, ${serializer.serialize(set)})`;\n\nexport const buildUnsetQuery = <T>(\n unset: $unset<T>,\n currentUpdateQuery: SQL,\n): SQL => {\n const keys = Object.keys(unset);\n let query = currentUpdateQuery;\n for (const key of keys) {\n query = SQL`json_remove(${query}, '$.${SQL.plain(key)}')`;\n }\n return query;\n};\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`json_set(${currentUpdateQuery}, '$.${SQL.plain(key)}', CAST((COALESCE(json_extract(${currentUpdateQuery}, '$.${SQL.plain(key)}'), 0) + ${value}) AS TEXT))`\n : SQL`json_set(${currentUpdateQuery}, '$.${SQL.plain(key)}', COALESCE(json_extract(${currentUpdateQuery}, '$.${SQL.plain(key)}'), 0) + ${value})`;\n }\n return currentUpdateQuery;\n};\n\nexport const buildPushQuery = <T>(\n push: $push<T>,\n currentUpdateQuery: SQL,\n serializer: JSONSerializer,\n): SQL => {\n for (const [key, value] of Object.entries(push)) {\n const serializedValue = serializer.serialize(value);\n currentUpdateQuery = SQL`json_set(${currentUpdateQuery}, '$.${SQL.plain(key)}', CASE\n WHEN json_type(json_extract(${currentUpdateQuery}, '$.${SQL.plain(key)}')) = 'array'\n THEN json_insert(json_extract(${currentUpdateQuery}, '$.${SQL.plain(key)}'), '$[#]', json(${serializedValue}))\n ELSE json_array(json(${serializedValue}))\n END)`;\n }\n return currentUpdateQuery;\n};\n","import type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { isSQL, SQL, sqlMigration } 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 WithId,\n type WithIdAndVersion,\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 JSON NOT NULL,\n metadata JSON NOT NULL DEFAULT '{}',\n _version INTEGER NOT NULL DEFAULT 1,\n _partition TEXT NOT NULL DEFAULT 'png_global',\n _archived INTEGER NOT NULL DEFAULT 0,\n _created TEXT NOT NULL DEFAULT (datetime('now')),\n _updated TEXT NOT NULL DEFAULT (datetime('now'))\n )`;\n\nexport const pongoCollectionSQLiteMigrations = (collectionName: string) => [\n sqlMigration(`pongoCollection:${collectionName}:001:createtable`, [\n createCollection(collectionName),\n ]),\n];\n\nexport const sqliteSQLBuilder = (\n collectionName: string,\n serializer: JSONSerializer,\n): PongoCollectionSQLBuilder => ({\n createCollection: (): SQL => createCollection(collectionName),\n insertOne: <T>(document: OptionalUnlessRequiredIdAndVersion<T>): SQL => {\n const serialized = document;\n const id = document._id;\n const version = document._version ?? 1n;\n\n return SQL`\n INSERT OR IGNORE INTO ${SQL.identifier(collectionName)} (_id, data, _version)\n VALUES (${id}, ${serialized}, ${version})\n RETURNING _id;`;\n },\n insertMany: <T>(documents: OptionalUnlessRequiredIdAndVersion<T>[]): SQL => {\n const values = SQL.merge(\n documents.map(\n (doc) =>\n SQL`(${doc._id}, ${serializer.serialize(doc)}, ${doc._version ?? 1n})`,\n ),\n ',',\n );\n\n return SQL`\n INSERT OR IGNORE INTO ${SQL.identifier(collectionName)} (_id, data, _version) VALUES ${values}\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 expectedVersionCheck =\n expectedVersion != null ? SQL`AND _version = ${expectedVersion}` : SQL``;\n\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n const updateQuery = isSQL(update)\n ? update\n : buildUpdateQuery(update, serializer);\n\n return SQL`\n UPDATE ${SQL.identifier(collectionName)}\n SET\n data = json_patch(${updateQuery}, json_object('_id', _id, '_version', cast(_version + 1 as TEXT))),\n _version = _version + 1,\n _updated = datetime('now')\n WHERE _id = (\n SELECT _id FROM ${SQL.identifier(collectionName)}\n ${where(filterQuery)}\n LIMIT 1\n ) ${expectedVersionCheck}\n RETURNING\n _id,\n cast(_version as TEXT) as version,\n 1 as matched,\n 1 as modified;`;\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 expectedVersionCheck =\n expectedVersion != null ? SQL`AND _version = ${expectedVersion}` : SQL``;\n\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`\n UPDATE ${SQL.identifier(collectionName)}\n SET\n data = json_patch(${serializer.serialize(document)}, json_object('_id', _id, '_version', cast(_version + 1 as TEXT))),\n _version = _version + 1,\n _updated = datetime('now')\n WHERE _id = (\n SELECT _id FROM ${SQL.identifier(collectionName)}\n ${where(filterQuery)}\n LIMIT 1\n ) ${expectedVersionCheck}\n RETURNING\n _id,\n cast(_version as TEXT) AS version,\n 1 AS matched,\n 1 AS modified;`;\n },\n updateMany: <T>(\n filter: PongoFilter<T> | SQL,\n update: PongoUpdate<T> | SQL,\n ): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n const updateQuery = isSQL(update)\n ? update\n : buildUpdateQuery(update, serializer);\n\n return SQL`\n UPDATE ${SQL.identifier(collectionName)}\n SET\n data = json_patch(${updateQuery}, json_object('_version', cast(_version + 1 as TEXT))),\n _version = _version + 1,\n _updated = datetime('now')\n ${where(filterQuery)}\n RETURNING _id;`;\n },\n deleteOne: <T>(\n filter: PongoFilter<T> | SQL,\n options?: DeleteOneOptions,\n ): SQL => {\n const expectedVersion = expectedVersionValue(options?.expectedVersion);\n const expectedVersionCheck =\n expectedVersion != null ? SQL`AND _version = ${expectedVersion}` : SQL``;\n\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`\n DELETE FROM ${SQL.identifier(collectionName)}\n WHERE _id = (\n SELECT _id FROM ${SQL.identifier(collectionName)}\n ${where(filterQuery)}\n LIMIT 1\n ) ${expectedVersionCheck}\n RETURNING\n _id,\n 1 AS matched,\n 1 AS deleted;`;\n },\n deleteMany: <T>(filter: PongoFilter<T> | SQL): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`DELETE FROM ${SQL.identifier(collectionName)} ${where(filterQuery)} RETURNING _id`;\n },\n replaceMany: <T>(documents: Array<WithIdAndVersion<T> | WithId<T>>): SQL => {\n const col = SQL.identifier(collectionName);\n const hasVersions = documents.some(\n (d) => '_version' in d && d._version !== undefined,\n );\n\n if (hasVersions) {\n const values = SQL.merge(\n documents.map(\n (d) =>\n SQL`(${d._id}, ${serializer.serialize(d)}, ${(d as WithIdAndVersion<T>)._version ?? 0n})`,\n ),\n ',',\n );\n return SQL`\n WITH replacements(_id, data, expected_version) AS (\n VALUES ${values}\n )\n UPDATE ${col}\n SET\n data = json_patch(r.data, json_object('_id', ${col}._id, '_version', cast(${col}._version + 1 as TEXT))),\n _version = ${col}._version + 1,\n _updated = datetime('now')\n FROM replacements r\n WHERE ${col}._id = r._id AND ${col}._version = r.expected_version\n RETURNING ${col}._id, cast(${col}._version as TEXT) as version;`;\n }\n\n const values = SQL.merge(\n documents.map((d) => SQL`(${d._id}, ${serializer.serialize(d)})`),\n ',',\n );\n return SQL`\n WITH replacements(_id, data) AS (\n VALUES ${values}\n )\n UPDATE ${col}\n SET\n data = json_patch(r.data, json_object('_id', ${col}._id, '_version', cast(${col}._version + 1 as TEXT))),\n _version = ${col}._version + 1,\n _updated = datetime('now')\n FROM replacements r\n WHERE ${col}._id = r._id\n RETURNING ${col}._id, cast(${col}._version as TEXT) as version;`;\n },\n deleteManyByIds: (ids: Array<{ _id: string; _version?: bigint }>): SQL => {\n const hasVersions = ids.some((d) => d._version !== undefined);\n\n if (hasVersions) {\n const values = SQL.merge(\n ids.map((d) => SQL`(${d._id}, ${d._version ?? 0n})`),\n ',',\n );\n\n return SQL`\n WITH targets(_id, expected_version) AS (\n VALUES ${values}\n )\n DELETE FROM ${SQL.identifier(collectionName)}\n WHERE _id IN (SELECT _id FROM targets)\n AND _version = (SELECT expected_version FROM targets WHERE targets._id = ${SQL.identifier(collectionName)}._id)\n RETURNING _id;`;\n }\n\n const idList = SQL.merge(\n ids.map((d) => SQL`${d._id}`),\n ',',\n );\n\n return SQL`\n DELETE FROM ${SQL.identifier(collectionName)}\n WHERE _id IN (${idList})\n RETURNING _id;`;\n },\n findOne: <T>(filter: PongoFilter<T> | SQL): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`SELECT data, _id, _version FROM ${SQL.identifier(collectionName)} ${where(filterQuery)} LIMIT 1;`;\n },\n find: <T>(filter: PongoFilter<T> | SQL, options?: FindOptions): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n const query: SQL[] = [];\n\n query.push(\n SQL`SELECT data, _id, _version FROM ${SQL.identifier(collectionName)}`,\n );\n\n query.push(where(filterQuery));\n\n if (options?.sort && Object.keys(options.sort).length > 0) {\n const clauses = Object.entries(options.sort).map(([field, dir]) => {\n // _id and _version are native columns, not JSON fields.\n const isMetadata = field === '_id' || field === '_version';\n const accessor = isMetadata\n ? SQL`${SQL.plain(field)}`\n : SQL`json_extract(data, '${SQL.plain(`$.${field}`)}')`;\n return dir === 1 ? SQL`${accessor} ASC` : SQL`${accessor} DESC`;\n });\n query.push(SQL`ORDER BY ${SQL.merge(clauses, ',')}`);\n }\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, serializer);\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"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { LRUCache } from "lru-cache";
2
1
  import { AnyConnection, DatabaseDriverType, DatabaseTransaction, Dumbo, JSONSerializationOptions, JSONSerializer, MigrationStyle, QueryResult, QueryResultRow, RunSQLMigrationsResult, SQL, SQLCommandOptions, SQLExecutor, SQLQueryOptions, SchemaComponent, SchemaComponentOptions, WithDatabaseTransactionFactory } from "@event-driven-io/dumbo";
2
+ import { LRUCache } from "lru-cache";
3
3
 
4
4
  //#region src/core/typing/entries.d.ts
5
5
  type Entry<T> = { [K in keyof Required<T>]: [K, Required<T>[K]] }[keyof Required<T>];
@@ -38,8 +38,8 @@ type DocumentCommandHandlerInput = {
38
38
  expectedVersion?: ExpectedDocumentVersion;
39
39
  };
40
40
  declare function DocumentCommandHandler<T extends PongoDocument>(deps: DocumentCommandHandlerOptions<T>): {
41
- (id: string | DocumentCommandHandlerInput, handler: DocumentHandler<T>, options?: HandleOptions): Promise<PongoHandleResult<T>>;
42
- (ids: string[] | DocumentCommandHandlerInput[], handler: DocumentHandler<T>, options?: HandleOptions & BatchHandleOptions): Promise<PongoHandleResult<T>[]>;
41
+ (id: string | DocumentCommandHandlerInput, handler: DocumentHandler<T> | DocumentHandler<T>[], options?: HandleOptions): Promise<PongoHandleResult<T>>;
42
+ (ids: string[] | DocumentCommandHandlerInput[], handler: DocumentHandler<T> | DocumentHandler<T>[], options?: HandleOptions & BatchHandleOptions): Promise<PongoHandleResult<T>[]>;
43
43
  };
44
44
  //#endregion
45
45
  //#region src/core/collection/pongoCollection.d.ts
@@ -427,11 +427,11 @@ declare type OptionalUnlessRequiredVersion<TSchema> = TSchema extends {
427
427
  _version: bigint;
428
428
  } ? TSchema : OptionalVersion<TSchema>;
429
429
  declare type OptionalUnlessRequiredIdAndVersion<TSchema> = OptionalUnlessRequiredId<TSchema> & OptionalUnlessRequiredVersion<TSchema>;
430
- declare type WithId<TSchema> = EnhancedOmit<TSchema, '_id'> & {
430
+ declare type WithId<TSchema> = TSchema & {
431
431
  _id: string | ObjectId;
432
432
  };
433
433
  type WithoutId<T> = Omit<T, '_id'>;
434
- declare type WithVersion<TSchema> = EnhancedOmit<TSchema, '_version'> & {
434
+ declare type WithVersion<TSchema> = TSchema & {
435
435
  _version: bigint;
436
436
  };
437
437
  type WithoutVersion<T> = Omit<T, '_version'>;
@@ -702,4 +702,4 @@ declare const pongoSession: (options?: PongoSessionOptions) => PongoSession;
702
702
  declare const pongoTransaction: (options: PongoTransactionOptions) => PongoDbTransaction;
703
703
  //#endregion
704
704
  export { InferIdType as $, ExtractPongoDriverOptions as $t, MaybePromise as A, PongoCollectionSchemaComponent as An, PongoTransactionOptions as At, DOCUMENT_DOES_NOT_EXIST as B, DocumentCommandHandlerOptions as Bn, WithId as Bt, PongoCacheType as C, proxyPongoDbWithSchema as Cn, PongoFilterOperator as Ct, LRUCacheOptions as D, QueryOperators as Dn, PongoMigrationOptions as Dt, noopCacheProvider as E, OperatorMap as En, PongoInsertOneResult as Et, AlternativeType as F, PongoCollectionOptions as Fn, ReplaceManyOptions as Ft, DocumentHandler as G, WithoutVersion as Gt, DeleteManyOptions as H, idFromFilter as Hn, WithVersion as Ht, AnyPongoDb as I, pongoCollection as In, ReplaceOneOptions as It, ExpectedDocumentVersionGeneral as J, isGeneralExpectedDocumentVersion as Jt, EnhancedOmit as K, expectedVersion as Kt, BatchHandleOptions as L, transactionExecutorOrDefault as Ln, RootFilterOperators as Lt, $push as M, PongoCollectionURN as Mn, PongoUpdateManyResult as Mt, $set as N, PongoCollectionURNType as Nn, PongoUpdateResult as Nt, lruCache as O, hasOperators as On, PongoReplaceManyResult as Ot, $unset as P, PongoCollectionSQLBuilder as Pn, RegExpOrString as Pt, HasId as Q, ExtractPongoDatabaseTypeFromDriver as Qt, CollectionOperationOptions as R, DocumentCommandHandler as Rn, UpdateManyOptions as Rt, PongoCacheSetEntry as S, proxyClientWithSchema as Sn, PongoFilter as St, pongoCache as T, toDbSchemaMetadata as Tn, PongoInsertManyResult as Tt, DeleteOneOptions as U, NonPartial as Un, WithoutId as Ut, DOCUMENT_EXISTS as V, getIdsFromIdOnlyFilter as Vn, WithIdAndVersion as Vt, Document as W, objectEntries as Wn, WithoutIdAndVersion as Wt, FindOptions as X, AnyPongoDriver as Xt, ExpectedDocumentVersionValue as Y, operationResult as Yt, HandleOptions as Z, AnyPongoDriverOptions as Zt, CacheHooks as _, PongoDbSchema as _n, PongoDbOptions as _t, ConcurrencyError as a, PongoDatabaseSQLBuilder as an, ObjectIdLike as at, CacheType as b, PongoSchemaConfig as bn, PongoDeleteResult as bt, isString as c, PongoDatabaseURN as cn, OptionalUnlessRequiredId as ct, PongoDatabaseCache as d, DBsMap as dn, OptionalVersion as dt, PongoDatabaseFactoryOptions as en, InsertManyOptions as et, PongoTransactionCache as f, PongoClientSchema as fn, PongoClient as ft, CacheConfig as g, PongoCollectionSchemaMetadata as gn, PongoDb as gt, pongoCacheWrapper as h, PongoCollectionSchema as hn, PongoDBCollectionOptions as ht, pongoClient as i, pongoDriverRegistry as in, ObjectId as it, $inc as j, PongoCollectionSchemaComponentOptions as jn, PongoUpdate as jt, identityMapCache as k, isOperator as kn, PongoSession as kt, PongoDatabase as l, PongoDatabaseURNType as ln, OptionalUnlessRequiredIdAndVersion as lt, pongoTransactionCache as m, PongoClientWithSchema as mn, PongoCollection as mt, PongoSessionOptions as n, PongoDriverOptions as nn, NO_CONCURRENCY_CHECK as nt, PongoError as o, PongoDatabaseSchemaComponent as on, OperationResult as ot, PongoTransactionCacheOperationOptions as p, PongoClientSchemaMetadata as pn, PongoClientOptions as pt, ExpectedDocumentVersion as q, expectedVersionValue as qt, pongoSession as r, PongoDriverRegistry as rn, NonObjectIdLikeDocument as rt, isNumber as s, PongoDatabaseSchemaComponentOptions as sn, OptionalId as st, pongoTransaction as t, PongoDriver as tn, InsertOneOptions as tt, PongoDatabaseOptions as u, CollectionsMap as un, OptionalUnlessRequiredVersion as ut, CacheOptions as v, PongoDbSchemaMetadata as vn, PongoDbTransaction as vt, PongoDocumentCacheKey as w, toClientSchemaMetadata as wn, PongoHandleResult as wt, PongoCache as x, pongoSchema as xn, PongoDocument as xt, CacheSettings as y, PongoDbWithSchema as yn, PongoDeleteManyResult as yt, Condition as z, DocumentCommandHandlerInput as zn, UpdateOneOptions as zt };
705
- //# sourceMappingURL=index-DMq6F3x9.d.ts.map
705
+ //# sourceMappingURL=index-BfOn92K5.d.cts.map
@@ -1,5 +1,5 @@
1
- import { AnyConnection, DatabaseDriverType, DatabaseTransaction, Dumbo, JSONSerializationOptions, JSONSerializer, MigrationStyle, QueryResult, QueryResultRow, RunSQLMigrationsResult, SQL, SQLCommandOptions, SQLExecutor, SQLQueryOptions, SchemaComponent, SchemaComponentOptions, WithDatabaseTransactionFactory } from "@event-driven-io/dumbo";
2
1
  import { LRUCache } from "lru-cache";
2
+ import { AnyConnection, DatabaseDriverType, DatabaseTransaction, Dumbo, JSONSerializationOptions, JSONSerializer, MigrationStyle, QueryResult, QueryResultRow, RunSQLMigrationsResult, SQL, SQLCommandOptions, SQLExecutor, SQLQueryOptions, SchemaComponent, SchemaComponentOptions, WithDatabaseTransactionFactory } from "@event-driven-io/dumbo";
3
3
 
4
4
  //#region src/core/typing/entries.d.ts
5
5
  type Entry<T> = { [K in keyof Required<T>]: [K, Required<T>[K]] }[keyof Required<T>];
@@ -38,8 +38,8 @@ type DocumentCommandHandlerInput = {
38
38
  expectedVersion?: ExpectedDocumentVersion;
39
39
  };
40
40
  declare function DocumentCommandHandler<T extends PongoDocument>(deps: DocumentCommandHandlerOptions<T>): {
41
- (id: string | DocumentCommandHandlerInput, handler: DocumentHandler<T>, options?: HandleOptions): Promise<PongoHandleResult<T>>;
42
- (ids: string[] | DocumentCommandHandlerInput[], handler: DocumentHandler<T>, options?: HandleOptions & BatchHandleOptions): Promise<PongoHandleResult<T>[]>;
41
+ (id: string | DocumentCommandHandlerInput, handler: DocumentHandler<T> | DocumentHandler<T>[], options?: HandleOptions): Promise<PongoHandleResult<T>>;
42
+ (ids: string[] | DocumentCommandHandlerInput[], handler: DocumentHandler<T> | DocumentHandler<T>[], options?: HandleOptions & BatchHandleOptions): Promise<PongoHandleResult<T>[]>;
43
43
  };
44
44
  //#endregion
45
45
  //#region src/core/collection/pongoCollection.d.ts
@@ -427,11 +427,11 @@ declare type OptionalUnlessRequiredVersion<TSchema> = TSchema extends {
427
427
  _version: bigint;
428
428
  } ? TSchema : OptionalVersion<TSchema>;
429
429
  declare type OptionalUnlessRequiredIdAndVersion<TSchema> = OptionalUnlessRequiredId<TSchema> & OptionalUnlessRequiredVersion<TSchema>;
430
- declare type WithId<TSchema> = EnhancedOmit<TSchema, '_id'> & {
430
+ declare type WithId<TSchema> = TSchema & {
431
431
  _id: string | ObjectId;
432
432
  };
433
433
  type WithoutId<T> = Omit<T, '_id'>;
434
- declare type WithVersion<TSchema> = EnhancedOmit<TSchema, '_version'> & {
434
+ declare type WithVersion<TSchema> = TSchema & {
435
435
  _version: bigint;
436
436
  };
437
437
  type WithoutVersion<T> = Omit<T, '_version'>;
@@ -702,4 +702,4 @@ declare const pongoSession: (options?: PongoSessionOptions) => PongoSession;
702
702
  declare const pongoTransaction: (options: PongoTransactionOptions) => PongoDbTransaction;
703
703
  //#endregion
704
704
  export { InferIdType as $, ExtractPongoDriverOptions as $t, MaybePromise as A, PongoCollectionSchemaComponent as An, PongoTransactionOptions as At, DOCUMENT_DOES_NOT_EXIST as B, DocumentCommandHandlerOptions as Bn, WithId as Bt, PongoCacheType as C, proxyPongoDbWithSchema as Cn, PongoFilterOperator as Ct, LRUCacheOptions as D, QueryOperators as Dn, PongoMigrationOptions as Dt, noopCacheProvider as E, OperatorMap as En, PongoInsertOneResult as Et, AlternativeType as F, PongoCollectionOptions as Fn, ReplaceManyOptions as Ft, DocumentHandler as G, WithoutVersion as Gt, DeleteManyOptions as H, idFromFilter as Hn, WithVersion as Ht, AnyPongoDb as I, pongoCollection as In, ReplaceOneOptions as It, ExpectedDocumentVersionGeneral as J, isGeneralExpectedDocumentVersion as Jt, EnhancedOmit as K, expectedVersion as Kt, BatchHandleOptions as L, transactionExecutorOrDefault as Ln, RootFilterOperators as Lt, $push as M, PongoCollectionURN as Mn, PongoUpdateManyResult as Mt, $set as N, PongoCollectionURNType as Nn, PongoUpdateResult as Nt, lruCache as O, hasOperators as On, PongoReplaceManyResult as Ot, $unset as P, PongoCollectionSQLBuilder as Pn, RegExpOrString as Pt, HasId as Q, ExtractPongoDatabaseTypeFromDriver as Qt, CollectionOperationOptions as R, DocumentCommandHandler as Rn, UpdateManyOptions as Rt, PongoCacheSetEntry as S, proxyClientWithSchema as Sn, PongoFilter as St, pongoCache as T, toDbSchemaMetadata as Tn, PongoInsertManyResult as Tt, DeleteOneOptions as U, NonPartial as Un, WithoutId as Ut, DOCUMENT_EXISTS as V, getIdsFromIdOnlyFilter as Vn, WithIdAndVersion as Vt, Document as W, objectEntries as Wn, WithoutIdAndVersion as Wt, FindOptions as X, AnyPongoDriver as Xt, ExpectedDocumentVersionValue as Y, operationResult as Yt, HandleOptions as Z, AnyPongoDriverOptions as Zt, CacheHooks as _, PongoDbSchema as _n, PongoDbOptions as _t, ConcurrencyError as a, PongoDatabaseSQLBuilder as an, ObjectIdLike as at, CacheType as b, PongoSchemaConfig as bn, PongoDeleteResult as bt, isString as c, PongoDatabaseURN as cn, OptionalUnlessRequiredId as ct, PongoDatabaseCache as d, DBsMap as dn, OptionalVersion as dt, PongoDatabaseFactoryOptions as en, InsertManyOptions as et, PongoTransactionCache as f, PongoClientSchema as fn, PongoClient as ft, CacheConfig as g, PongoCollectionSchemaMetadata as gn, PongoDb as gt, pongoCacheWrapper as h, PongoCollectionSchema as hn, PongoDBCollectionOptions as ht, pongoClient as i, pongoDriverRegistry as in, ObjectId as it, $inc as j, PongoCollectionSchemaComponentOptions as jn, PongoUpdate as jt, identityMapCache as k, isOperator as kn, PongoSession as kt, PongoDatabase as l, PongoDatabaseURNType as ln, OptionalUnlessRequiredIdAndVersion as lt, pongoTransactionCache as m, PongoClientWithSchema as mn, PongoCollection as mt, PongoSessionOptions as n, PongoDriverOptions as nn, NO_CONCURRENCY_CHECK as nt, PongoError as o, PongoDatabaseSchemaComponent as on, OperationResult as ot, PongoTransactionCacheOperationOptions as p, PongoClientSchemaMetadata as pn, PongoClientOptions as pt, ExpectedDocumentVersion as q, expectedVersionValue as qt, pongoSession as r, PongoDriverRegistry as rn, NonObjectIdLikeDocument as rt, isNumber as s, PongoDatabaseSchemaComponentOptions as sn, OptionalId as st, pongoTransaction as t, PongoDriver as tn, InsertOneOptions as tt, PongoDatabaseOptions as u, CollectionsMap as un, OptionalUnlessRequiredVersion as ut, CacheOptions as v, PongoDbSchemaMetadata as vn, PongoDbTransaction as vt, PongoDocumentCacheKey as w, toClientSchemaMetadata as wn, PongoHandleResult as wt, PongoCache as x, pongoSchema as xn, PongoDocument as xt, CacheSettings as y, PongoDbWithSchema as yn, PongoDeleteManyResult as yt, Condition as z, DocumentCommandHandlerInput as zn, UpdateOneOptions as zt };
705
- //# sourceMappingURL=index-qeC-p0Tq.d.cts.map
705
+ //# sourceMappingURL=index-CL0zRxRl.d.ts.map
@@ -1,4 +1,4 @@
1
- import { Pn as PongoCollectionSQLBuilder } from "./index-DMq6F3x9.js";
1
+ import { Pn as PongoCollectionSQLBuilder } from "./index-CL0zRxRl.js";
2
2
  import * as _$_event_driven_io_dumbo0 from "@event-driven-io/dumbo";
3
3
  import { JSONSerializer } from "@event-driven-io/dumbo";
4
4
 
@@ -7,4 +7,4 @@ declare const pongoCollectionSQLiteMigrations: (collectionName: string) => _$_ev
7
7
  declare const sqliteSQLBuilder: (collectionName: string, serializer: JSONSerializer) => PongoCollectionSQLBuilder;
8
8
  //#endregion
9
9
  export { sqliteSQLBuilder as n, pongoCollectionSQLiteMigrations as t };
10
- //# sourceMappingURL=index-Du_IHXAj.d.ts.map
10
+ //# sourceMappingURL=index-Cxo6j266.d.ts.map
@@ -1,4 +1,4 @@
1
- import { Pn as PongoCollectionSQLBuilder } from "./index-qeC-p0Tq.cjs";
1
+ import { Pn as PongoCollectionSQLBuilder } from "./index-BfOn92K5.cjs";
2
2
  import * as _$_event_driven_io_dumbo0 from "@event-driven-io/dumbo";
3
3
  import { JSONSerializer } from "@event-driven-io/dumbo";
4
4
 
@@ -7,4 +7,4 @@ declare const pongoCollectionSQLiteMigrations: (collectionName: string) => _$_ev
7
7
  declare const sqliteSQLBuilder: (collectionName: string, serializer: JSONSerializer) => PongoCollectionSQLBuilder;
8
8
  //#endregion
9
9
  export { sqliteSQLBuilder as n, pongoCollectionSQLiteMigrations as t };
10
- //# sourceMappingURL=index-ZKOB86ub.d.cts.map
10
+ //# sourceMappingURL=index-DyNmc6tD.d.cts.map
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_core = require('./core-CwxxuUAn.cjs');
2
+ const require_core = require('./core-BdTIuXiI.cjs');
3
3
 
4
4
  //#region src/index.ts
5
5
  pongoDriverRegistry.register(`PostgreSQL:pg`, () => loadPongoClient("pg"));
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as InferIdType, $t as ExtractPongoDriverOptions, A as MaybePromise, An as PongoCollectionSchemaComponent, At as PongoTransactionOptions, B as DOCUMENT_DOES_NOT_EXIST, Bn as DocumentCommandHandlerOptions, Bt as WithId, C as PongoCacheType, Cn as proxyPongoDbWithSchema, Ct as PongoFilterOperator, D as LRUCacheOptions, Dn as QueryOperators, Dt as PongoMigrationOptions, E as noopCacheProvider, En as OperatorMap, Et as PongoInsertOneResult, F as AlternativeType, Fn as PongoCollectionOptions, Ft as ReplaceManyOptions, G as DocumentHandler, Gt as WithoutVersion, H as DeleteManyOptions, Hn as idFromFilter, Ht as WithVersion, I as AnyPongoDb, In as pongoCollection, It as ReplaceOneOptions, J as ExpectedDocumentVersionGeneral, Jt as isGeneralExpectedDocumentVersion, K as EnhancedOmit, Kt as expectedVersion, L as BatchHandleOptions, Ln as transactionExecutorOrDefault, Lt as RootFilterOperators, M as $push, Mn as PongoCollectionURN, Mt as PongoUpdateManyResult, N as $set, Nn as PongoCollectionURNType, Nt as PongoUpdateResult, O as lruCache, On as hasOperators, Ot as PongoReplaceManyResult, P as $unset, Pn as PongoCollectionSQLBuilder, Pt as RegExpOrString, Q as HasId, Qt as ExtractPongoDatabaseTypeFromDriver, R as CollectionOperationOptions, Rn as DocumentCommandHandler, Rt as UpdateManyOptions, S as PongoCacheSetEntry, Sn as proxyClientWithSchema, St as PongoFilter, T as pongoCache, Tn as toDbSchemaMetadata, Tt as PongoInsertManyResult, U as DeleteOneOptions, Un as NonPartial, Ut as WithoutId, V as DOCUMENT_EXISTS, Vn as getIdsFromIdOnlyFilter, Vt as WithIdAndVersion, W as Document, Wn as objectEntries, Wt as WithoutIdAndVersion, X as FindOptions, Xt as AnyPongoDriver, Y as ExpectedDocumentVersionValue, Yt as operationResult, Z as HandleOptions, Zt as AnyPongoDriverOptions, _ as CacheHooks, _n as PongoDbSchema, _t as PongoDbOptions, a as ConcurrencyError, an as PongoDatabaseSQLBuilder, at as ObjectIdLike, b as CacheType, bn as PongoSchemaConfig, bt as PongoDeleteResult, c as isString, cn as PongoDatabaseURN, ct as OptionalUnlessRequiredId, d as PongoDatabaseCache, dn as DBsMap, dt as OptionalVersion, en as PongoDatabaseFactoryOptions, et as InsertManyOptions, f as PongoTransactionCache, fn as PongoClientSchema, ft as PongoClient, g as CacheConfig, gn as PongoCollectionSchemaMetadata, gt as PongoDb, h as pongoCacheWrapper, hn as PongoCollectionSchema, ht as PongoDBCollectionOptions, i as pongoClient, in as pongoDriverRegistry, it as ObjectId, j as $inc, jn as PongoCollectionSchemaComponentOptions, jt as PongoUpdate, k as identityMapCache, kn as isOperator, kt as PongoSession, l as PongoDatabase, ln as PongoDatabaseURNType, lt as OptionalUnlessRequiredIdAndVersion, m as pongoTransactionCache, mn as PongoClientWithSchema, mt as PongoCollection, n as PongoSessionOptions, nn as PongoDriverOptions, nt as NO_CONCURRENCY_CHECK, o as PongoError, on as PongoDatabaseSchemaComponent, ot as OperationResult, p as PongoTransactionCacheOperationOptions, pn as PongoClientSchemaMetadata, pt as PongoClientOptions, q as ExpectedDocumentVersion, qt as expectedVersionValue, r as pongoSession, rn as PongoDriverRegistry, rt as NonObjectIdLikeDocument, s as isNumber, sn as PongoDatabaseSchemaComponentOptions, st as OptionalId, t as pongoTransaction, tn as PongoDriver, tt as InsertOneOptions, u as PongoDatabaseOptions, un as CollectionsMap, ut as OptionalUnlessRequiredVersion, v as CacheOptions, vn as PongoDbSchemaMetadata, vt as PongoDbTransaction, w as PongoDocumentCacheKey, wn as toClientSchemaMetadata, wt as PongoHandleResult, x as PongoCache, xn as pongoSchema, xt as PongoDocument, y as CacheSettings, yn as PongoDbWithSchema, yt as PongoDeleteManyResult, z as Condition, zn as DocumentCommandHandlerInput, zt as UpdateOneOptions } from "./index-qeC-p0Tq.cjs";
1
+ import { $ as InferIdType, $t as ExtractPongoDriverOptions, A as MaybePromise, An as PongoCollectionSchemaComponent, At as PongoTransactionOptions, B as DOCUMENT_DOES_NOT_EXIST, Bn as DocumentCommandHandlerOptions, Bt as WithId, C as PongoCacheType, Cn as proxyPongoDbWithSchema, Ct as PongoFilterOperator, D as LRUCacheOptions, Dn as QueryOperators, Dt as PongoMigrationOptions, E as noopCacheProvider, En as OperatorMap, Et as PongoInsertOneResult, F as AlternativeType, Fn as PongoCollectionOptions, Ft as ReplaceManyOptions, G as DocumentHandler, Gt as WithoutVersion, H as DeleteManyOptions, Hn as idFromFilter, Ht as WithVersion, I as AnyPongoDb, In as pongoCollection, It as ReplaceOneOptions, J as ExpectedDocumentVersionGeneral, Jt as isGeneralExpectedDocumentVersion, K as EnhancedOmit, Kt as expectedVersion, L as BatchHandleOptions, Ln as transactionExecutorOrDefault, Lt as RootFilterOperators, M as $push, Mn as PongoCollectionURN, Mt as PongoUpdateManyResult, N as $set, Nn as PongoCollectionURNType, Nt as PongoUpdateResult, O as lruCache, On as hasOperators, Ot as PongoReplaceManyResult, P as $unset, Pn as PongoCollectionSQLBuilder, Pt as RegExpOrString, Q as HasId, Qt as ExtractPongoDatabaseTypeFromDriver, R as CollectionOperationOptions, Rn as DocumentCommandHandler, Rt as UpdateManyOptions, S as PongoCacheSetEntry, Sn as proxyClientWithSchema, St as PongoFilter, T as pongoCache, Tn as toDbSchemaMetadata, Tt as PongoInsertManyResult, U as DeleteOneOptions, Un as NonPartial, Ut as WithoutId, V as DOCUMENT_EXISTS, Vn as getIdsFromIdOnlyFilter, Vt as WithIdAndVersion, W as Document, Wn as objectEntries, Wt as WithoutIdAndVersion, X as FindOptions, Xt as AnyPongoDriver, Y as ExpectedDocumentVersionValue, Yt as operationResult, Z as HandleOptions, Zt as AnyPongoDriverOptions, _ as CacheHooks, _n as PongoDbSchema, _t as PongoDbOptions, a as ConcurrencyError, an as PongoDatabaseSQLBuilder, at as ObjectIdLike, b as CacheType, bn as PongoSchemaConfig, bt as PongoDeleteResult, c as isString, cn as PongoDatabaseURN, ct as OptionalUnlessRequiredId, d as PongoDatabaseCache, dn as DBsMap, dt as OptionalVersion, en as PongoDatabaseFactoryOptions, et as InsertManyOptions, f as PongoTransactionCache, fn as PongoClientSchema, ft as PongoClient, g as CacheConfig, gn as PongoCollectionSchemaMetadata, gt as PongoDb, h as pongoCacheWrapper, hn as PongoCollectionSchema, ht as PongoDBCollectionOptions, i as pongoClient, in as pongoDriverRegistry, it as ObjectId, j as $inc, jn as PongoCollectionSchemaComponentOptions, jt as PongoUpdate, k as identityMapCache, kn as isOperator, kt as PongoSession, l as PongoDatabase, ln as PongoDatabaseURNType, lt as OptionalUnlessRequiredIdAndVersion, m as pongoTransactionCache, mn as PongoClientWithSchema, mt as PongoCollection, n as PongoSessionOptions, nn as PongoDriverOptions, nt as NO_CONCURRENCY_CHECK, o as PongoError, on as PongoDatabaseSchemaComponent, ot as OperationResult, p as PongoTransactionCacheOperationOptions, pn as PongoClientSchemaMetadata, pt as PongoClientOptions, q as ExpectedDocumentVersion, qt as expectedVersionValue, r as pongoSession, rn as PongoDriverRegistry, rt as NonObjectIdLikeDocument, s as isNumber, sn as PongoDatabaseSchemaComponentOptions, st as OptionalId, t as pongoTransaction, tn as PongoDriver, tt as InsertOneOptions, u as PongoDatabaseOptions, un as CollectionsMap, ut as OptionalUnlessRequiredVersion, v as CacheOptions, vn as PongoDbSchemaMetadata, vt as PongoDbTransaction, w as PongoDocumentCacheKey, wn as toClientSchemaMetadata, wt as PongoHandleResult, x as PongoCache, xn as pongoSchema, xt as PongoDocument, y as CacheSettings, yn as PongoDbWithSchema, yt as PongoDeleteManyResult, z as Condition, zn as DocumentCommandHandlerInput, zt as UpdateOneOptions } from "./index-BfOn92K5.cjs";
2
2
 
3
3
  //#region src/core/utils/deepEquals.d.ts
4
4
  declare const deepEquals: <T>(left: T, right: T) => boolean;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as InferIdType, $t as ExtractPongoDriverOptions, A as MaybePromise, An as PongoCollectionSchemaComponent, At as PongoTransactionOptions, B as DOCUMENT_DOES_NOT_EXIST, Bn as DocumentCommandHandlerOptions, Bt as WithId, C as PongoCacheType, Cn as proxyPongoDbWithSchema, Ct as PongoFilterOperator, D as LRUCacheOptions, Dn as QueryOperators, Dt as PongoMigrationOptions, E as noopCacheProvider, En as OperatorMap, Et as PongoInsertOneResult, F as AlternativeType, Fn as PongoCollectionOptions, Ft as ReplaceManyOptions, G as DocumentHandler, Gt as WithoutVersion, H as DeleteManyOptions, Hn as idFromFilter, Ht as WithVersion, I as AnyPongoDb, In as pongoCollection, It as ReplaceOneOptions, J as ExpectedDocumentVersionGeneral, Jt as isGeneralExpectedDocumentVersion, K as EnhancedOmit, Kt as expectedVersion, L as BatchHandleOptions, Ln as transactionExecutorOrDefault, Lt as RootFilterOperators, M as $push, Mn as PongoCollectionURN, Mt as PongoUpdateManyResult, N as $set, Nn as PongoCollectionURNType, Nt as PongoUpdateResult, O as lruCache, On as hasOperators, Ot as PongoReplaceManyResult, P as $unset, Pn as PongoCollectionSQLBuilder, Pt as RegExpOrString, Q as HasId, Qt as ExtractPongoDatabaseTypeFromDriver, R as CollectionOperationOptions, Rn as DocumentCommandHandler, Rt as UpdateManyOptions, S as PongoCacheSetEntry, Sn as proxyClientWithSchema, St as PongoFilter, T as pongoCache, Tn as toDbSchemaMetadata, Tt as PongoInsertManyResult, U as DeleteOneOptions, Un as NonPartial, Ut as WithoutId, V as DOCUMENT_EXISTS, Vn as getIdsFromIdOnlyFilter, Vt as WithIdAndVersion, W as Document, Wn as objectEntries, Wt as WithoutIdAndVersion, X as FindOptions, Xt as AnyPongoDriver, Y as ExpectedDocumentVersionValue, Yt as operationResult, Z as HandleOptions, Zt as AnyPongoDriverOptions, _ as CacheHooks, _n as PongoDbSchema, _t as PongoDbOptions, a as ConcurrencyError, an as PongoDatabaseSQLBuilder, at as ObjectIdLike, b as CacheType, bn as PongoSchemaConfig, bt as PongoDeleteResult, c as isString, cn as PongoDatabaseURN, ct as OptionalUnlessRequiredId, d as PongoDatabaseCache, dn as DBsMap, dt as OptionalVersion, en as PongoDatabaseFactoryOptions, et as InsertManyOptions, f as PongoTransactionCache, fn as PongoClientSchema, ft as PongoClient, g as CacheConfig, gn as PongoCollectionSchemaMetadata, gt as PongoDb, h as pongoCacheWrapper, hn as PongoCollectionSchema, ht as PongoDBCollectionOptions, i as pongoClient, in as pongoDriverRegistry, it as ObjectId, j as $inc, jn as PongoCollectionSchemaComponentOptions, jt as PongoUpdate, k as identityMapCache, kn as isOperator, kt as PongoSession, l as PongoDatabase, ln as PongoDatabaseURNType, lt as OptionalUnlessRequiredIdAndVersion, m as pongoTransactionCache, mn as PongoClientWithSchema, mt as PongoCollection, n as PongoSessionOptions, nn as PongoDriverOptions, nt as NO_CONCURRENCY_CHECK, o as PongoError, on as PongoDatabaseSchemaComponent, ot as OperationResult, p as PongoTransactionCacheOperationOptions, pn as PongoClientSchemaMetadata, pt as PongoClientOptions, q as ExpectedDocumentVersion, qt as expectedVersionValue, r as pongoSession, rn as PongoDriverRegistry, rt as NonObjectIdLikeDocument, s as isNumber, sn as PongoDatabaseSchemaComponentOptions, st as OptionalId, t as pongoTransaction, tn as PongoDriver, tt as InsertOneOptions, u as PongoDatabaseOptions, un as CollectionsMap, ut as OptionalUnlessRequiredVersion, v as CacheOptions, vn as PongoDbSchemaMetadata, vt as PongoDbTransaction, w as PongoDocumentCacheKey, wn as toClientSchemaMetadata, wt as PongoHandleResult, x as PongoCache, xn as pongoSchema, xt as PongoDocument, y as CacheSettings, yn as PongoDbWithSchema, yt as PongoDeleteManyResult, z as Condition, zn as DocumentCommandHandlerInput, zt as UpdateOneOptions } from "./index-DMq6F3x9.js";
1
+ import { $ as InferIdType, $t as ExtractPongoDriverOptions, A as MaybePromise, An as PongoCollectionSchemaComponent, At as PongoTransactionOptions, B as DOCUMENT_DOES_NOT_EXIST, Bn as DocumentCommandHandlerOptions, Bt as WithId, C as PongoCacheType, Cn as proxyPongoDbWithSchema, Ct as PongoFilterOperator, D as LRUCacheOptions, Dn as QueryOperators, Dt as PongoMigrationOptions, E as noopCacheProvider, En as OperatorMap, Et as PongoInsertOneResult, F as AlternativeType, Fn as PongoCollectionOptions, Ft as ReplaceManyOptions, G as DocumentHandler, Gt as WithoutVersion, H as DeleteManyOptions, Hn as idFromFilter, Ht as WithVersion, I as AnyPongoDb, In as pongoCollection, It as ReplaceOneOptions, J as ExpectedDocumentVersionGeneral, Jt as isGeneralExpectedDocumentVersion, K as EnhancedOmit, Kt as expectedVersion, L as BatchHandleOptions, Ln as transactionExecutorOrDefault, Lt as RootFilterOperators, M as $push, Mn as PongoCollectionURN, Mt as PongoUpdateManyResult, N as $set, Nn as PongoCollectionURNType, Nt as PongoUpdateResult, O as lruCache, On as hasOperators, Ot as PongoReplaceManyResult, P as $unset, Pn as PongoCollectionSQLBuilder, Pt as RegExpOrString, Q as HasId, Qt as ExtractPongoDatabaseTypeFromDriver, R as CollectionOperationOptions, Rn as DocumentCommandHandler, Rt as UpdateManyOptions, S as PongoCacheSetEntry, Sn as proxyClientWithSchema, St as PongoFilter, T as pongoCache, Tn as toDbSchemaMetadata, Tt as PongoInsertManyResult, U as DeleteOneOptions, Un as NonPartial, Ut as WithoutId, V as DOCUMENT_EXISTS, Vn as getIdsFromIdOnlyFilter, Vt as WithIdAndVersion, W as Document, Wn as objectEntries, Wt as WithoutIdAndVersion, X as FindOptions, Xt as AnyPongoDriver, Y as ExpectedDocumentVersionValue, Yt as operationResult, Z as HandleOptions, Zt as AnyPongoDriverOptions, _ as CacheHooks, _n as PongoDbSchema, _t as PongoDbOptions, a as ConcurrencyError, an as PongoDatabaseSQLBuilder, at as ObjectIdLike, b as CacheType, bn as PongoSchemaConfig, bt as PongoDeleteResult, c as isString, cn as PongoDatabaseURN, ct as OptionalUnlessRequiredId, d as PongoDatabaseCache, dn as DBsMap, dt as OptionalVersion, en as PongoDatabaseFactoryOptions, et as InsertManyOptions, f as PongoTransactionCache, fn as PongoClientSchema, ft as PongoClient, g as CacheConfig, gn as PongoCollectionSchemaMetadata, gt as PongoDb, h as pongoCacheWrapper, hn as PongoCollectionSchema, ht as PongoDBCollectionOptions, i as pongoClient, in as pongoDriverRegistry, it as ObjectId, j as $inc, jn as PongoCollectionSchemaComponentOptions, jt as PongoUpdate, k as identityMapCache, kn as isOperator, kt as PongoSession, l as PongoDatabase, ln as PongoDatabaseURNType, lt as OptionalUnlessRequiredIdAndVersion, m as pongoTransactionCache, mn as PongoClientWithSchema, mt as PongoCollection, n as PongoSessionOptions, nn as PongoDriverOptions, nt as NO_CONCURRENCY_CHECK, o as PongoError, on as PongoDatabaseSchemaComponent, ot as OperationResult, p as PongoTransactionCacheOperationOptions, pn as PongoClientSchemaMetadata, pt as PongoClientOptions, q as ExpectedDocumentVersion, qt as expectedVersionValue, r as pongoSession, rn as PongoDriverRegistry, rt as NonObjectIdLikeDocument, s as isNumber, sn as PongoDatabaseSchemaComponentOptions, st as OptionalId, t as pongoTransaction, tn as PongoDriver, tt as InsertOneOptions, u as PongoDatabaseOptions, un as CollectionsMap, ut as OptionalUnlessRequiredVersion, v as CacheOptions, vn as PongoDbSchemaMetadata, vt as PongoDbTransaction, w as PongoDocumentCacheKey, wn as toClientSchemaMetadata, wt as PongoHandleResult, x as PongoCache, xn as pongoSchema, xt as PongoDocument, y as CacheSettings, yn as PongoDbWithSchema, yt as PongoDeleteManyResult, z as Condition, zn as DocumentCommandHandlerInput, zt as UpdateOneOptions } from "./index-CL0zRxRl.js";
2
2
 
3
3
  //#region src/core/utils/deepEquals.d.ts
4
4
  declare const deepEquals: <T>(left: T, right: T) => boolean;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A as objectEntries, B as getIdsFromIdOnlyFilter, C as expectedVersionValue, D as PongoError, E as ConcurrencyError, F as isOperator, G as lruCache, H as pongoTransactionCache, I as PongoCollectionSchemaComponent, K as identityMapCache, L as pongoCollection, M as OperatorMap, N as QueryOperators, O as isNumber, P as hasOperators, R as transactionExecutorOrDefault, S as expectedVersion, T as operationResult, U as pongoCache, V as idFromFilter, W as noopCacheProvider, _ as toDbSchemaMetadata, a as isEquatable, b as NO_CONCURRENCY_CHECK, c as pongoTransaction, d as PongoDatabase, f as PongoDatabaseSchemaComponent, g as toClientSchemaMetadata, h as proxyPongoDbWithSchema, i as deepEquals, j as PongoDatabaseCache, k as isString, l as PongoDriverRegistry, m as proxyClientWithSchema, n as mapParallel, o as pongoClient, p as pongoSchema, q as pongoCacheWrapper, r as mapSequential, s as pongoSession, t as mapAsync, u as pongoDriverRegistry$1, v as DOCUMENT_DOES_NOT_EXIST, w as isGeneralExpectedDocumentVersion, x as ObjectId, y as DOCUMENT_EXISTS, z as DocumentCommandHandler } from "./core-D_iZiiYe.js";
1
+ import { A as objectEntries, B as getIdsFromIdOnlyFilter, C as expectedVersionValue, D as PongoError, E as ConcurrencyError, F as isOperator, G as lruCache, H as pongoTransactionCache, I as PongoCollectionSchemaComponent, K as identityMapCache, L as pongoCollection, M as OperatorMap, N as QueryOperators, O as isNumber, P as hasOperators, R as transactionExecutorOrDefault, S as expectedVersion, T as operationResult, U as pongoCache, V as idFromFilter, W as noopCacheProvider, _ as toDbSchemaMetadata, a as isEquatable, b as NO_CONCURRENCY_CHECK, c as pongoTransaction, d as PongoDatabase, f as PongoDatabaseSchemaComponent, g as toClientSchemaMetadata, h as proxyPongoDbWithSchema, i as deepEquals, j as PongoDatabaseCache, k as isString, l as PongoDriverRegistry, m as proxyClientWithSchema, n as mapParallel, o as pongoClient, p as pongoSchema, q as pongoCacheWrapper, r as mapSequential, s as pongoSession, t as mapAsync, u as pongoDriverRegistry$1, v as DOCUMENT_DOES_NOT_EXIST, w as isGeneralExpectedDocumentVersion, x as ObjectId, y as DOCUMENT_EXISTS, z as DocumentCommandHandler } from "./core-Dtn-d-91.js";
2
2
 
3
3
  //#region src/index.ts
4
4
  pongoDriverRegistry.register(`PostgreSQL:pg`, () => loadPongoClient("pg"));
package/dist/pg.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_core = require('./core-CwxxuUAn.cjs');
2
+ const require_core = require('./core-BdTIuXiI.cjs');
3
3
  const require_cli = require('./cli.cjs');
4
4
  let _event_driven_io_dumbo = require("@event-driven-io/dumbo");
5
5
  let _event_driven_io_dumbo_pg = require("@event-driven-io/dumbo/pg");
@@ -265,12 +265,12 @@ const postgresSQLBuilder = (collectionName, serializer) => ({
265
265
  },
266
266
  findOne: (filter) => {
267
267
  const filterQuery = (0, _event_driven_io_dumbo.isSQL)(filter) ? filter : constructFilterQuery(filter, serializer);
268
- return _event_driven_io_dumbo.SQL`SELECT data, _version FROM ${_event_driven_io_dumbo.SQL.identifier(collectionName)} ${where(filterQuery)} LIMIT 1;`;
268
+ return _event_driven_io_dumbo.SQL`SELECT data, _id, _version FROM ${_event_driven_io_dumbo.SQL.identifier(collectionName)} ${where(filterQuery)} LIMIT 1;`;
269
269
  },
270
270
  find: (filter, options) => {
271
271
  const filterQuery = (0, _event_driven_io_dumbo.isSQL)(filter) ? filter : constructFilterQuery(filter, serializer);
272
272
  const query = [];
273
- query.push(_event_driven_io_dumbo.SQL`SELECT data, _version FROM ${_event_driven_io_dumbo.SQL.identifier(collectionName)}`);
273
+ query.push(_event_driven_io_dumbo.SQL`SELECT data, _id, _version FROM ${_event_driven_io_dumbo.SQL.identifier(collectionName)}`);
274
274
  query.push(where(filterQuery));
275
275
  if (options?.sort && Object.keys(options.sort).length > 0) {
276
276
  const clauses = Object.entries(options.sort).map(([field, dir]) => {
package/dist/pg.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pg.cjs","names":["SQL","OperatorMap","objectEntries","SQL","hasOperators","objectEntries","QueryOperators","objectEntries","SQL","SQL","expectedVersionValue","PgDriverType","postgreSQLMetadata","PongoDatabase","dumboDriver","PongoDatabaseSchemaComponent","PongoCollectionSchemaComponent","JSONSerializer","pongoSchema"],"sources":["../src/storage/postgresql/core/sqlBuilder/filter/queryOperators.ts","../src/storage/postgresql/core/sqlBuilder/filter/index.ts","../src/storage/postgresql/core/sqlBuilder/update/index.ts","../src/storage/postgresql/core/sqlBuilder/index.ts","../src/storage/postgresql/pg/index.ts"],"sourcesContent":["import type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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 serializer: JSONSerializer,\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 = serializer.serialize(buildNestedObject(path, value));\n const serializedValue = serializer.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} = ANY (${value})`;\n }\n case '$nin': {\n const jsonPath = `{${path.split('.').join(',')}}`;\n\n return SQL`data #>> ${jsonPath} != ALL (${value})`;\n }\n case '$elemMatch': {\n const subQuery = objectEntries(value as Record<string, unknown>)\n .map(\n ([subKey, subValue]) =>\n `@.\"${subKey}\" == ${serializer.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 = serializer.serialize(buildNestedObject(path, value));\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)} = ANY (${value})`;\n case '$nin':\n return SQL`${SQL.plain(fieldName)} != ALL (${value})`;\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 type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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>(\n filter: PongoFilter<T>,\n serializer: JSONSerializer,\n): SQL =>\n SQL.merge(\n Object.entries(filter).map(([key, value]) =>\n isRecord(value)\n ? constructComplexFilterQuery(key, value, serializer)\n : handleOperator(key, '$eq', value, serializer),\n ),\n ` ${AND} `,\n );\n\nconst constructComplexFilterQuery = (\n key: string,\n value: Record<string, unknown>,\n serializer: JSONSerializer,\n): SQL => {\n const isEquality = !hasOperators(value);\n\n return SQL.merge(\n objectEntries(value).map(([nestedKey, val]) =>\n isEquality\n ? handleOperator(\n `${key}.${nestedKey}`,\n QueryOperators.$eq,\n val,\n serializer,\n )\n : handleOperator(key, nestedKey, val, serializer),\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 type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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>(\n update: PongoUpdate<T>,\n serializer: JSONSerializer,\n): SQL =>\n objectEntries(update).reduce(\n (currentUpdateQuery, [op, value]) => {\n switch (op) {\n case '$set':\n return buildSetQuery(value, currentUpdateQuery, serializer);\n case '$unset':\n return buildUnsetQuery(value, currentUpdateQuery);\n case '$inc':\n return buildIncQuery(value, currentUpdateQuery);\n case '$push':\n return buildPushQuery(value, currentUpdateQuery, serializer);\n default:\n return currentUpdateQuery;\n }\n },\n SQL`data`,\n );\n\nexport const buildSetQuery = <T>(\n set: $set<T>,\n currentUpdateQuery: SQL,\n serializer: JSONSerializer,\n): SQL => SQL`${currentUpdateQuery} || ${serializer.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 serializer: JSONSerializer,\n): SQL => {\n for (const [key, value] of Object.entries(push)) {\n const serializedValue = serializer.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 type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { isSQL, SQL, sqlMigration } 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 WithId,\n type WithIdAndVersion,\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 serializer: JSONSerializer,\n): PongoCollectionSQLBuilder => ({\n createCollection: (): SQL => createCollection(collectionName),\n insertOne: <T>(document: OptionalUnlessRequiredIdAndVersion<T>): SQL => {\n const serialized = serializer.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}, ${serializer.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)\n ? filter\n : constructFilterQuery(filter, serializer);\n const updateQuery = isSQL(update)\n ? update\n : buildUpdateQuery(update, serializer);\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)\n ? filter\n : constructFilterQuery(filter, serializer);\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 = ${serializer.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)\n ? filter\n : constructFilterQuery(filter, serializer);\n const updateQuery = isSQL(update)\n ? update\n : buildUpdateQuery(update, serializer);\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)\n ? filter\n : constructFilterQuery(filter, serializer);\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)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`DELETE FROM ${SQL.identifier(collectionName)} ${where(filterQuery)}`;\n },\n replaceMany: <T>(documents: Array<WithIdAndVersion<T> | WithId<T>>): SQL => {\n const hasVersions = documents.some(\n (d) => '_version' in d && d._version !== undefined,\n );\n\n if (hasVersions) {\n const values = SQL.merge(\n documents.map(\n (d) =>\n SQL`(${d._id}::text, ${serializer.serialize(d)}::jsonb, ${(d as WithIdAndVersion<T>)._version ?? 0n}::bigint)`,\n ),\n ',',\n );\n return SQL`\n WITH replacements(_id, data, expected_version) AS (\n VALUES ${values}\n )\n UPDATE ${SQL.identifier(collectionName)} t\n SET\n data = r.data\n || jsonb_build_object('_id', t._id)\n || jsonb_build_object('_version', (t._version + 1)::text),\n _version = t._version + 1\n FROM replacements r\n WHERE t._id = r._id AND t._version = r.expected_version\n RETURNING t._id, t._version AS version;`;\n }\n\n const values = SQL.merge(\n documents.map(\n (d) => SQL`(${d._id}::text, ${serializer.serialize(d)}::jsonb)`,\n ),\n ',',\n );\n return SQL`\n WITH replacements(_id, data) AS (\n VALUES ${values}\n )\n UPDATE ${SQL.identifier(collectionName)} t\n SET\n data = r.data\n || jsonb_build_object('_id', t._id)\n || jsonb_build_object('_version', (t._version + 1)::text),\n _version = t._version + 1\n FROM replacements r\n WHERE t._id = r._id\n RETURNING t._id, t._version AS version;`;\n },\n deleteManyByIds: (ids: Array<{ _id: string; _version?: bigint }>): SQL => {\n const hasVersions = ids.some((d) => d._version !== undefined);\n\n if (hasVersions) {\n const values = SQL.merge(\n ids.map((d) => SQL`(${d._id}::text, ${d._version ?? 0n}::bigint)`),\n ',',\n );\n\n return SQL`\n WITH targets(_id, expected_version) AS (\n VALUES ${values}\n ),\n deleted AS (\n DELETE FROM ${SQL.identifier(collectionName)} t\n USING targets r\n WHERE t._id = r._id AND t._version = r.expected_version\n RETURNING t._id\n )\n SELECT r._id,\n CASE WHEN d._id IS NOT NULL THEN 1 ELSE 0 END as deleted\n FROM targets r\n LEFT JOIN deleted d ON r._id = d._id;`;\n }\n\n const values = SQL.merge(\n ids.map((d) => SQL`(${d._id}::text)`),\n ',',\n );\n\n return SQL`\n WITH targets(_id) AS (\n VALUES ${values}\n ),\n deleted AS (\n DELETE FROM ${SQL.identifier(collectionName)} t\n USING targets r\n WHERE t._id = r._id\n RETURNING t._id\n )\n SELECT r._id,\n CASE WHEN d._id IS NOT NULL THEN 1 ELSE 0 END as deleted\n FROM targets r\n LEFT JOIN deleted d ON r._id = d._id;`;\n },\n findOne: <T>(filter: PongoFilter<T> | SQL): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`SELECT data, _version FROM ${SQL.identifier(collectionName)} ${where(filterQuery)} LIMIT 1;`;\n },\n find: <T>(filter: PongoFilter<T> | SQL, options?: FindOptions): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n const query: SQL[] = [];\n\n query.push(\n SQL`SELECT data, _version FROM ${SQL.identifier(collectionName)}`,\n );\n\n query.push(where(filterQuery));\n\n if (options?.sort && Object.keys(options.sort).length > 0) {\n const clauses = Object.entries(options.sort).map(([field, dir]) => {\n const isMetadata = field === '_id' || field === '_version';\n const isNested = !isMetadata && field.includes('.');\n // _id and _version are native columns, not JSON fields.\n // Use -> / #> (returns jsonb) rather than ->> / #>> (returns text) so\n // that numeric fields are sorted numerically, not lexicographically.\n const accessor = isMetadata\n ? SQL`${SQL.plain(field)}`\n : isNested\n ? SQL`data #> '${SQL.plain(`{${field.split('.').join(',')}}`)}'`\n : SQL`data -> '${SQL.plain(field)}'`;\n // Match MongoDB's null ordering: missing/null values sort first on ASC,\n // last on DESC. PostgreSQL's default is the opposite for ASC (NULLS LAST).\n return dir === 1\n ? SQL`${accessor} ASC NULLS FIRST`\n : SQL`${accessor} DESC NULLS LAST`;\n });\n query.push(SQL`ORDER BY ${SQL.merge(clauses, ',')}`);\n }\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, serializer);\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 { dumbo, JSONSerializer } from '@event-driven-io/dumbo';\nimport {\n pgDumboDriver as dumboDriver,\n PgDriverType,\n postgreSQLMetadata,\n type PgConnection,\n} from '@event-driven-io/dumbo/pg';\nimport type pg from 'pg';\nimport {\n PongoCollectionSchemaComponent,\n PongoDatabase,\n PongoDatabaseSchemaComponent,\n pongoDriverRegistry,\n pongoSchema,\n type PongoDb,\n type PongoDriver,\n type PongoDriverOptions,\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 = PongoDriverOptions<PgPongoClientOptions> & {\n databaseName?: string | undefined;\n connectionString: string;\n};\n\nconst pgPongoDriver: PongoDriver<\n PongoDb<PgDriverType>,\n PgDatabaseDriverOptions\n> = {\n driverType: PgDriverType,\n databaseFactory: (options) => {\n const databaseName =\n options.databaseName ??\n postgreSQLMetadata.parseDatabaseName(options.connectionString) ??\n postgreSQLMetadata.defaultDatabaseName;\n\n return PongoDatabase({\n ...options,\n pool: dumbo({\n connectionString: options.connectionString,\n driver: dumboDriver,\n ...options.connectionOptions,\n serialization: { serializer: options.serializer },\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(\n schema.name,\n options.serialization?.serializer ?? JSONSerializer,\n ),\n }),\n definition:\n options.schema?.definition ?? pongoSchema.db(databaseName, {}),\n }),\n databaseName,\n });\n },\n};\n\nexport const usePgPongoDriver = () => {\n pongoDriverRegistry.register(PgDriverType, pgPongoDriver);\n};\n\nusePgPongoDriver();\n\nexport { pgPongoDriver as pgDriver, pgPongoDriver as pongoDriver };\n"],"mappings":"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"}
1
+ {"version":3,"file":"pg.cjs","names":["SQL","OperatorMap","objectEntries","SQL","hasOperators","objectEntries","QueryOperators","objectEntries","SQL","SQL","expectedVersionValue","PgDriverType","postgreSQLMetadata","PongoDatabase","dumboDriver","PongoDatabaseSchemaComponent","PongoCollectionSchemaComponent","JSONSerializer","pongoSchema"],"sources":["../src/storage/postgresql/core/sqlBuilder/filter/queryOperators.ts","../src/storage/postgresql/core/sqlBuilder/filter/index.ts","../src/storage/postgresql/core/sqlBuilder/update/index.ts","../src/storage/postgresql/core/sqlBuilder/index.ts","../src/storage/postgresql/pg/index.ts"],"sourcesContent":["import type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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 serializer: JSONSerializer,\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 = serializer.serialize(buildNestedObject(path, value));\n const serializedValue = serializer.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} = ANY (${value})`;\n }\n case '$nin': {\n const jsonPath = `{${path.split('.').join(',')}}`;\n\n return SQL`data #>> ${jsonPath} != ALL (${value})`;\n }\n case '$elemMatch': {\n const subQuery = objectEntries(value as Record<string, unknown>)\n .map(\n ([subKey, subValue]) =>\n `@.\"${subKey}\" == ${serializer.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 = serializer.serialize(buildNestedObject(path, value));\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)} = ANY (${value})`;\n case '$nin':\n return SQL`${SQL.plain(fieldName)} != ALL (${value})`;\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 type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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>(\n filter: PongoFilter<T>,\n serializer: JSONSerializer,\n): SQL =>\n SQL.merge(\n Object.entries(filter).map(([key, value]) =>\n isRecord(value)\n ? constructComplexFilterQuery(key, value, serializer)\n : handleOperator(key, '$eq', value, serializer),\n ),\n ` ${AND} `,\n );\n\nconst constructComplexFilterQuery = (\n key: string,\n value: Record<string, unknown>,\n serializer: JSONSerializer,\n): SQL => {\n const isEquality = !hasOperators(value);\n\n return SQL.merge(\n objectEntries(value).map(([nestedKey, val]) =>\n isEquality\n ? handleOperator(\n `${key}.${nestedKey}`,\n QueryOperators.$eq,\n val,\n serializer,\n )\n : handleOperator(key, nestedKey, val, serializer),\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 type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { 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>(\n update: PongoUpdate<T>,\n serializer: JSONSerializer,\n): SQL =>\n objectEntries(update).reduce(\n (currentUpdateQuery, [op, value]) => {\n switch (op) {\n case '$set':\n return buildSetQuery(value, currentUpdateQuery, serializer);\n case '$unset':\n return buildUnsetQuery(value, currentUpdateQuery);\n case '$inc':\n return buildIncQuery(value, currentUpdateQuery);\n case '$push':\n return buildPushQuery(value, currentUpdateQuery, serializer);\n default:\n return currentUpdateQuery;\n }\n },\n SQL`data`,\n );\n\nexport const buildSetQuery = <T>(\n set: $set<T>,\n currentUpdateQuery: SQL,\n serializer: JSONSerializer,\n): SQL => SQL`${currentUpdateQuery} || ${serializer.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 serializer: JSONSerializer,\n): SQL => {\n for (const [key, value] of Object.entries(push)) {\n const serializedValue = serializer.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 type { JSONSerializer } from '@event-driven-io/dumbo';\nimport { isSQL, SQL, sqlMigration } 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 WithId,\n type WithIdAndVersion,\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 serializer: JSONSerializer,\n): PongoCollectionSQLBuilder => ({\n createCollection: (): SQL => createCollection(collectionName),\n insertOne: <T>(document: OptionalUnlessRequiredIdAndVersion<T>): SQL => {\n const serialized = serializer.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}, ${serializer.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)\n ? filter\n : constructFilterQuery(filter, serializer);\n const updateQuery = isSQL(update)\n ? update\n : buildUpdateQuery(update, serializer);\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)\n ? filter\n : constructFilterQuery(filter, serializer);\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 = ${serializer.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)\n ? filter\n : constructFilterQuery(filter, serializer);\n const updateQuery = isSQL(update)\n ? update\n : buildUpdateQuery(update, serializer);\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)\n ? filter\n : constructFilterQuery(filter, serializer);\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)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`DELETE FROM ${SQL.identifier(collectionName)} ${where(filterQuery)}`;\n },\n replaceMany: <T>(documents: Array<WithIdAndVersion<T> | WithId<T>>): SQL => {\n const hasVersions = documents.some(\n (d) => '_version' in d && d._version !== undefined,\n );\n\n if (hasVersions) {\n const values = SQL.merge(\n documents.map(\n (d) =>\n SQL`(${d._id}::text, ${serializer.serialize(d)}::jsonb, ${(d as WithIdAndVersion<T>)._version ?? 0n}::bigint)`,\n ),\n ',',\n );\n return SQL`\n WITH replacements(_id, data, expected_version) AS (\n VALUES ${values}\n )\n UPDATE ${SQL.identifier(collectionName)} t\n SET\n data = r.data\n || jsonb_build_object('_id', t._id)\n || jsonb_build_object('_version', (t._version + 1)::text),\n _version = t._version + 1\n FROM replacements r\n WHERE t._id = r._id AND t._version = r.expected_version\n RETURNING t._id, t._version AS version;`;\n }\n\n const values = SQL.merge(\n documents.map(\n (d) => SQL`(${d._id}::text, ${serializer.serialize(d)}::jsonb)`,\n ),\n ',',\n );\n return SQL`\n WITH replacements(_id, data) AS (\n VALUES ${values}\n )\n UPDATE ${SQL.identifier(collectionName)} t\n SET\n data = r.data\n || jsonb_build_object('_id', t._id)\n || jsonb_build_object('_version', (t._version + 1)::text),\n _version = t._version + 1\n FROM replacements r\n WHERE t._id = r._id\n RETURNING t._id, t._version AS version;`;\n },\n deleteManyByIds: (ids: Array<{ _id: string; _version?: bigint }>): SQL => {\n const hasVersions = ids.some((d) => d._version !== undefined);\n\n if (hasVersions) {\n const values = SQL.merge(\n ids.map((d) => SQL`(${d._id}::text, ${d._version ?? 0n}::bigint)`),\n ',',\n );\n\n return SQL`\n WITH targets(_id, expected_version) AS (\n VALUES ${values}\n ),\n deleted AS (\n DELETE FROM ${SQL.identifier(collectionName)} t\n USING targets r\n WHERE t._id = r._id AND t._version = r.expected_version\n RETURNING t._id\n )\n SELECT r._id,\n CASE WHEN d._id IS NOT NULL THEN 1 ELSE 0 END as deleted\n FROM targets r\n LEFT JOIN deleted d ON r._id = d._id;`;\n }\n\n const values = SQL.merge(\n ids.map((d) => SQL`(${d._id}::text)`),\n ',',\n );\n\n return SQL`\n WITH targets(_id) AS (\n VALUES ${values}\n ),\n deleted AS (\n DELETE FROM ${SQL.identifier(collectionName)} t\n USING targets r\n WHERE t._id = r._id\n RETURNING t._id\n )\n SELECT r._id,\n CASE WHEN d._id IS NOT NULL THEN 1 ELSE 0 END as deleted\n FROM targets r\n LEFT JOIN deleted d ON r._id = d._id;`;\n },\n findOne: <T>(filter: PongoFilter<T> | SQL): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n\n return SQL`SELECT data, _id, _version FROM ${SQL.identifier(collectionName)} ${where(filterQuery)} LIMIT 1;`;\n },\n find: <T>(filter: PongoFilter<T> | SQL, options?: FindOptions): SQL => {\n const filterQuery = isSQL(filter)\n ? filter\n : constructFilterQuery(filter, serializer);\n const query: SQL[] = [];\n\n query.push(\n SQL`SELECT data, _id, _version FROM ${SQL.identifier(collectionName)}`,\n );\n\n query.push(where(filterQuery));\n\n if (options?.sort && Object.keys(options.sort).length > 0) {\n const clauses = Object.entries(options.sort).map(([field, dir]) => {\n const isMetadata = field === '_id' || field === '_version';\n const isNested = !isMetadata && field.includes('.');\n // _id and _version are native columns, not JSON fields.\n // Use -> / #> (returns jsonb) rather than ->> / #>> (returns text) so\n // that numeric fields are sorted numerically, not lexicographically.\n const accessor = isMetadata\n ? SQL`${SQL.plain(field)}`\n : isNested\n ? SQL`data #> '${SQL.plain(`{${field.split('.').join(',')}}`)}'`\n : SQL`data -> '${SQL.plain(field)}'`;\n // Match MongoDB's null ordering: missing/null values sort first on ASC,\n // last on DESC. PostgreSQL's default is the opposite for ASC (NULLS LAST).\n return dir === 1\n ? SQL`${accessor} ASC NULLS FIRST`\n : SQL`${accessor} DESC NULLS LAST`;\n });\n query.push(SQL`ORDER BY ${SQL.merge(clauses, ',')}`);\n }\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, serializer);\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 { dumbo, JSONSerializer } from '@event-driven-io/dumbo';\nimport {\n pgDumboDriver as dumboDriver,\n PgDriverType,\n postgreSQLMetadata,\n type PgConnection,\n} from '@event-driven-io/dumbo/pg';\nimport type pg from 'pg';\nimport {\n PongoCollectionSchemaComponent,\n PongoDatabase,\n PongoDatabaseSchemaComponent,\n pongoDriverRegistry,\n pongoSchema,\n type PongoDb,\n type PongoDriver,\n type PongoDriverOptions,\n} from '../../../core';\nimport {\n pongoCollectionPostgreSQLMigrations,\n postgresSQLBuilder,\n} from '../core';\n\nexport type PgPongoClientOptions =\n PooledPongoClientOptions | 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 = PongoDriverOptions<PgPongoClientOptions> & {\n databaseName?: string | undefined;\n connectionString: string;\n};\n\nconst pgPongoDriver: PongoDriver<\n PongoDb<PgDriverType>,\n PgDatabaseDriverOptions\n> = {\n driverType: PgDriverType,\n databaseFactory: (options) => {\n const databaseName =\n options.databaseName ??\n postgreSQLMetadata.parseDatabaseName(options.connectionString) ??\n postgreSQLMetadata.defaultDatabaseName;\n\n return PongoDatabase({\n ...options,\n pool: dumbo({\n connectionString: options.connectionString,\n driver: dumboDriver,\n ...options.connectionOptions,\n serialization: { serializer: options.serializer },\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(\n schema.name,\n options.serialization?.serializer ?? JSONSerializer,\n ),\n }),\n definition:\n options.schema?.definition ?? pongoSchema.db(databaseName, {}),\n }),\n databaseName,\n });\n },\n};\n\nexport const usePgPongoDriver = () => {\n pongoDriverRegistry.register(PgDriverType, pgPongoDriver);\n};\n\nusePgPongoDriver();\n\nexport { pgPongoDriver as pgDriver, pgPongoDriver as pongoDriver };\n"],"mappings":"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"}
package/dist/pg.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { Pn as PongoCollectionSQLBuilder, gt as PongoDb, nn as PongoDriverOptions, tn as PongoDriver } from "./index-qeC-p0Tq.cjs";
1
+ import { Pn as PongoCollectionSQLBuilder, gt as PongoDb, nn as PongoDriverOptions, tn as PongoDriver } from "./index-BfOn92K5.cjs";
2
2
  import * as _$_event_driven_io_dumbo0 from "@event-driven-io/dumbo";
3
3
  import { JSONSerializer } from "@event-driven-io/dumbo";
4
4
  import { PgConnection, PgDriverType } from "@event-driven-io/dumbo/pg";
package/dist/pg.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Pn as PongoCollectionSQLBuilder, gt as PongoDb, nn as PongoDriverOptions, tn as PongoDriver } from "./index-DMq6F3x9.js";
1
+ import { Pn as PongoCollectionSQLBuilder, gt as PongoDb, nn as PongoDriverOptions, tn as PongoDriver } from "./index-CL0zRxRl.js";
2
2
  import * as _$_event_driven_io_dumbo0 from "@event-driven-io/dumbo";
3
3
  import { JSONSerializer } from "@event-driven-io/dumbo";
4
4
  import { PgConnection, PgDriverType } from "@event-driven-io/dumbo/pg";
package/dist/pg.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A as objectEntries, C as expectedVersionValue, I as PongoCollectionSchemaComponent, M as OperatorMap, N as QueryOperators, P as hasOperators, d as PongoDatabase, f as PongoDatabaseSchemaComponent, p as pongoSchema, u as pongoDriverRegistry } from "./core-D_iZiiYe.js";
1
+ import { A as objectEntries, C as expectedVersionValue, I as PongoCollectionSchemaComponent, M as OperatorMap, N as QueryOperators, P as hasOperators, d as PongoDatabase, f as PongoDatabaseSchemaComponent, p as pongoSchema, u as pongoDriverRegistry } from "./core-Dtn-d-91.js";
2
2
  import { JSONSerializer, SQL, dumbo, isSQL, sqlMigration } from "@event-driven-io/dumbo";
3
3
  import { PgDriverType, pgDumboDriver, postgreSQLMetadata } from "@event-driven-io/dumbo/pg";
4
4
 
@@ -263,12 +263,12 @@ const postgresSQLBuilder = (collectionName, serializer) => ({
263
263
  },
264
264
  findOne: (filter) => {
265
265
  const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter, serializer);
266
- return SQL`SELECT data, _version FROM ${SQL.identifier(collectionName)} ${where(filterQuery)} LIMIT 1;`;
266
+ return SQL`SELECT data, _id, _version FROM ${SQL.identifier(collectionName)} ${where(filterQuery)} LIMIT 1;`;
267
267
  },
268
268
  find: (filter, options) => {
269
269
  const filterQuery = isSQL(filter) ? filter : constructFilterQuery(filter, serializer);
270
270
  const query = [];
271
- query.push(SQL`SELECT data, _version FROM ${SQL.identifier(collectionName)}`);
271
+ query.push(SQL`SELECT data, _id, _version FROM ${SQL.identifier(collectionName)}`);
272
272
  query.push(where(filterQuery));
273
273
  if (options?.sort && Object.keys(options.sort).length > 0) {
274
274
  const clauses = Object.entries(options.sort).map(([field, dir]) => {