From 332c77a587c5f71e62d64c48879c1f21b0ffe3aa Mon Sep 17 00:00:00 2001 From: Oskar Dudycz Date: Wed, 9 Oct 2024 13:09:17 +0200 Subject: [PATCH 1/2] Used UUID v7 as sequential random id generator Added also ObjectId helper method to generate it with Mongo-like style --- README.md | 4 ++-- samples/simple-ts/src/index.ts | 2 +- samples/simple-ts/src/typedClient.ts | 2 +- src/docs/getting-started.md | 4 ++-- src/packages/pongo/src/core/collection/pongoCollection.ts | 2 +- src/packages/pongo/src/core/typing/operations.ts | 2 ++ src/packages/pongo/src/e2e/compatibilityTest.e2e.spec.ts | 2 +- src/packages/pongo/src/e2e/postgres.e2e.spec.ts | 2 +- .../pongo/src/e2e/postgres.optimistic-concurrency.spec.ts | 2 +- 9 files changed, 12 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 53df3ef..71cb1f5 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ You can use Pongo syntax with explicit typing about supported syntax: ```ts import { pongoClient } from "@event-driven-io/pongo"; -import { v4 as uuid } from "uuid"; +import { v7 as uuid } from "uuid"; type User = { name: string; age: number }; @@ -61,7 +61,7 @@ Or use MongoDB compliant shim: ```ts import { MongoClient } from "@event-driven-io/pongo/shim"; -import { v4 as uuid } from "uuid"; +import { v7 as uuid } from "uuid"; type User = { name: string; age: number }; diff --git a/samples/simple-ts/src/index.ts b/samples/simple-ts/src/index.ts index 327127b..0c04b3a 100644 --- a/samples/simple-ts/src/index.ts +++ b/samples/simple-ts/src/index.ts @@ -1,5 +1,5 @@ import { pongoClient } from '@event-driven-io/pongo'; -import { v4 as uuid } from 'uuid'; +import { v7 as uuid } from 'uuid'; type User = { _id?: string; name: string; age: number }; diff --git a/samples/simple-ts/src/typedClient.ts b/samples/simple-ts/src/typedClient.ts index 8cca086..031a2f6 100644 --- a/samples/simple-ts/src/typedClient.ts +++ b/samples/simple-ts/src/typedClient.ts @@ -1,5 +1,5 @@ import { pongoClient } from '@event-driven-io/pongo'; -import { v4 as uuid } from 'uuid'; +import { v7 as uuid } from 'uuid'; import config from './pongo.config'; const connectionString = diff --git a/src/docs/getting-started.md b/src/docs/getting-started.md index 03e9d5a..7a5d61d 100644 --- a/src/docs/getting-started.md +++ b/src/docs/getting-started.md @@ -20,7 +20,7 @@ You can use Pongo syntax with explicit typing about supported syntax: ```ts import { pongoClient } from '@event-driven-io/pongo'; -import { v4 as uuid } from 'uuid'; +import { v7 as uuid } from 'uuid'; type User = { name: string; age: number }; @@ -59,7 +59,7 @@ Or use MongoDB compliant shim: ```ts import { MongoClient } from '@event-driven-io/pongo/shim'; -import { v4 as uuid } from 'uuid'; +import { v7 as uuid } from 'uuid'; type User = { name: string; age: number }; diff --git a/src/packages/pongo/src/core/collection/pongoCollection.ts b/src/packages/pongo/src/core/collection/pongoCollection.ts index 3b58407..4a48bbf 100644 --- a/src/packages/pongo/src/core/collection/pongoCollection.ts +++ b/src/packages/pongo/src/core/collection/pongoCollection.ts @@ -12,7 +12,7 @@ import { type SQLExecutor, type SQLMigration, } from '@event-driven-io/dumbo'; -import { v4 as uuid } from 'uuid'; +import { v7 as uuid } from 'uuid'; import { expectedVersionValue, operationResult, diff --git a/src/packages/pongo/src/core/typing/operations.ts b/src/packages/pongo/src/core/typing/operations.ts index 32713ff..7ad9160 100644 --- a/src/packages/pongo/src/core/typing/operations.ts +++ b/src/packages/pongo/src/core/typing/operations.ts @@ -8,6 +8,7 @@ import { type SQL, type SQLExecutor, } from '@event-driven-io/dumbo'; +import { v7 as uuid } from 'uuid'; import { ConcurrencyError } from '../errors'; export interface PongoClient { @@ -220,6 +221,7 @@ export interface PongoCollection { } export type ObjectId = string & { __brandId: 'ObjectId' }; +export const ObjectId = (value?: string) => value ?? uuid(); export type HasId = { _id: string }; diff --git a/src/packages/pongo/src/e2e/compatibilityTest.e2e.spec.ts b/src/packages/pongo/src/e2e/compatibilityTest.e2e.spec.ts index d722d11..ed5180d 100644 --- a/src/packages/pongo/src/e2e/compatibilityTest.e2e.spec.ts +++ b/src/packages/pongo/src/e2e/compatibilityTest.e2e.spec.ts @@ -13,7 +13,7 @@ import { MongoClient as OriginalMongoClient, } from 'mongodb'; import { after, before, describe, it } from 'node:test'; -import { v4 as uuid } from 'uuid'; +import { v7 as uuid } from 'uuid'; import { MongoClient, type Db } from '../shim'; type History = { street: string }; diff --git a/src/packages/pongo/src/e2e/postgres.e2e.spec.ts b/src/packages/pongo/src/e2e/postgres.e2e.spec.ts index 70997b4..821dbaa 100644 --- a/src/packages/pongo/src/e2e/postgres.e2e.spec.ts +++ b/src/packages/pongo/src/e2e/postgres.e2e.spec.ts @@ -5,7 +5,7 @@ import { import assert from 'assert'; import console from 'console'; import { after, before, describe, it } from 'node:test'; -import { v4 as uuid } from 'uuid'; +import { v7 as uuid } from 'uuid'; import { pongoClient, type ObjectId, diff --git a/src/packages/pongo/src/e2e/postgres.optimistic-concurrency.spec.ts b/src/packages/pongo/src/e2e/postgres.optimistic-concurrency.spec.ts index f9caad7..5776059 100644 --- a/src/packages/pongo/src/e2e/postgres.optimistic-concurrency.spec.ts +++ b/src/packages/pongo/src/e2e/postgres.optimistic-concurrency.spec.ts @@ -5,7 +5,7 @@ import { import assert from 'assert'; import console from 'console'; import { after, before, beforeEach, describe, it } from 'node:test'; -import { v4 as uuid } from 'uuid'; +import { v7 as uuid } from 'uuid'; import { pongoClient, pongoSchema, From f4eda95983f06fbbac883d679f09c9ebdb9a459f Mon Sep 17 00:00:00 2001 From: Oskar Dudycz Date: Wed, 9 Oct 2024 13:11:54 +0200 Subject: [PATCH 2/2] Bumped to 0.16.0 --- src/package-lock.json | 10 +++++----- src/package.json | 2 +- src/packages/dumbo/package.json | 2 +- src/packages/pongo/package.json | 4 ++-- src/packages/pongo/src/commandLine/shell.ts | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/package-lock.json b/src/package-lock.json index a909504..acdea11 100644 --- a/src/package-lock.json +++ b/src/package-lock.json @@ -1,12 +1,12 @@ { "name": "@event-driven-io/pongo-core", - "version": "0.16.0-alpha.9", + "version": "0.16.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@event-driven-io/pongo-core", - "version": "0.16.0-alpha.9", + "version": "0.16.0", "workspaces": [ "packages/dumbo", "packages/pongo" @@ -8660,7 +8660,7 @@ }, "packages/dumbo": { "name": "@event-driven-io/dumbo", - "version": "0.12.0-alpha.9", + "version": "0.12.0", "devDependencies": { "@types/node": "22.4.1" }, @@ -8674,7 +8674,7 @@ }, "packages/pongo": { "name": "@event-driven-io/pongo", - "version": "0.16.0-alpha.9", + "version": "0.16.0", "bin": { "pongo": "dist/cli.js" }, @@ -8682,7 +8682,7 @@ "@types/node": "22.4.1" }, "peerDependencies": { - "@event-driven-io/dumbo": "0.12.0-alpha.9", + "@event-driven-io/dumbo": "0.12.0", "@types/mongodb": "^4.0.7", "@types/pg": "^8.11.6", "@types/uuid": "^10.0.0", diff --git a/src/package.json b/src/package.json index 215a729..22a16c4 100644 --- a/src/package.json +++ b/src/package.json @@ -1,6 +1,6 @@ { "name": "@event-driven-io/pongo-core", - "version": "0.16.0-alpha.11", + "version": "0.16.0", "description": "Pongo - Mongo with strong consistency on top of Postgres", "type": "module", "engines": { diff --git a/src/packages/dumbo/package.json b/src/packages/dumbo/package.json index 941ff68..dd15276 100644 --- a/src/packages/dumbo/package.json +++ b/src/packages/dumbo/package.json @@ -1,6 +1,6 @@ { "name": "@event-driven-io/dumbo", - "version": "0.12.0-alpha.11", + "version": "0.12.0", "description": "Dumbo - tools for dealing with PostgreSQL", "type": "module", "scripts": { diff --git a/src/packages/pongo/package.json b/src/packages/pongo/package.json index dddfe8a..f15bdeb 100644 --- a/src/packages/pongo/package.json +++ b/src/packages/pongo/package.json @@ -1,6 +1,6 @@ { "name": "@event-driven-io/pongo", - "version": "0.16.0-alpha.11", + "version": "0.16.0", "description": "Pongo - Mongo with strong consistency on top of Postgres", "type": "module", "scripts": { @@ -87,7 +87,7 @@ "pongo": "./dist/cli.js" }, "peerDependencies": { - "@event-driven-io/dumbo": "0.12.0-alpha.11", + "@event-driven-io/dumbo": "0.12.0", "@types/mongodb": "^4.0.7", "@types/pg": "^8.11.6", "@types/uuid": "^10.0.0", diff --git a/src/packages/pongo/src/commandLine/shell.ts b/src/packages/pongo/src/commandLine/shell.ts index f49c0b0..c9e7e41 100644 --- a/src/packages/pongo/src/commandLine/shell.ts +++ b/src/packages/pongo/src/commandLine/shell.ts @@ -118,7 +118,7 @@ const startRepl = async (options: { setLogLevel(process.env.DUMBO_LOG_LEVEL ?? options.logging.logLevel); setLogStyle(process.env.DUMBO_LOG_STYLE ?? options.logging.logStyle); - console.log(chalk.green('Starting Pongo Shell (version: 0.16.0-alpha.11)')); + console.log(chalk.green('Starting Pongo Shell (version: 0.16.0)')); const connectionString = options.connectionString ??