From ac7df28f2710544a17099d1d6588c73878e7cf39 Mon Sep 17 00:00:00 2001 From: Oskar Dudycz Date: Tue, 9 Jul 2024 14:42:15 +0200 Subject: [PATCH] Added peer dependency to pg and uuid types Adjusted also README to show proper samples --- README.md | 37 +++++++++---------- src/docs/getting-started.md | 37 +++++++++---------- src/packages/pongo/package.json | 9 +++-- .../pongo/src/main/typing/operations.ts | 4 +- src/packages/pongo/src/mongo/mongoClient.ts | 2 +- 5 files changed, 43 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index cc4b75d..ec8f0df 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,8 @@ type User = { name: string; age: number }; const connectionString = "postgresql://dbuser:secretpassword@database.server.com:3211/mydb"; -const pongoClient = pongoClient(connectionString); -const pongoDb = pongoClient.db(); +const pongo = pongoClient(connectionString); +const pongoDb = pongo.db(); const users = pongoDb.collection("users"); const roger = { name: "Roger", age: 30 }; @@ -38,23 +38,23 @@ const anita = { name: "Anita", age: 25 }; const cruella = { _id: uuid(), name: "Cruella", age: 40 }; // Inserting -await pongoCollection.insertOne(roger); -await pongoCollection.insertOne(cruella); +await users.insertOne(roger); +await users.insertOne(cruella); -const { insertedId } = await pongoCollection.insertOne(anita); +const { insertedId } = await users.insertOne(anita); const anitaId = insertedId; // Updating await users.updateOne({ _id: anitaId }, { $set: { age: 31 } }); // Deleting -await pongoCollection.deleteOne({ _id: cruella._id }); +await users.deleteOne({ _id: cruella._id }); // Finding by Id -const anitaFromDb = await pongoCollection.findOne({ _id: anitaId }); +const anitaFromDb = await users.findOne({ _id: anitaId }); // Finding more -const users = await pongoCollection.find({ age: { $lt: 40 } }); +users = await users.find({ age: { $lt: 40 } }); ``` Or use MongoDB compliant shim: @@ -77,23 +77,23 @@ const anita = { name: "Anita", age: 25 }; const cruella = { _id: uuid(), name: "Cruella", age: 40 }; // Inserting -await pongoCollection.insertOne(roger); -await pongoCollection.insertOne(cruella); +await users.insertOne(roger); +await users.insertOne(cruella); -const { insertedId } = await pongoCollection.insertOne(anita); +const { insertedId } = await users.insertOne(anita); const anitaId = insertedId; // Updating await users.updateOne({ _id: anitaId }, { $set: { age: 31 } }); // Deleting -await pongoCollection.deleteOne({ _id: cruella._id }); +await users.deleteOne({ _id: cruella._id }); // Finding by Id -const anitaFromDb = await pongoCollection.findOne({ _id: anitaId }); +const anitaFromDb = await users.findOne({ _id: anitaId }); // Finding more -const users = await pongoCollection.find({ age: { $lt: 40 } }).toArray(); +users = await users.find({ age: { $lt: 40 } }).toArray(); ``` ## How does it work? @@ -114,12 +114,9 @@ CREATE TABLE IF NOT EXISTS "YourCollectionName" ( **E.g. the MongoDB update syntax:** ```ts -const pongoCollection = pongoDb.collection("users"); +const users = pongoDb.collection("users"); -await pongoCollection.updateOne( - { _id: someId }, - { $push: { tags: "character" } } -); +await users.updateOne({ _id: someId }, { $push: { tags: "character" } }); ``` will be translated to: @@ -133,7 +130,7 @@ WHERE _id = '137ef052-e41c-428b-b606-1c8070a47eda'; **Or for query:** ```ts -const result = await pongoCollection +const result = await users .find({ "address.history": { $elemMatch: { street: "Elm St" } } }) .toArray(); ``` diff --git a/src/docs/getting-started.md b/src/docs/getting-started.md index a132b03..8f4841a 100644 --- a/src/docs/getting-started.md +++ b/src/docs/getting-started.md @@ -27,8 +27,8 @@ type User = { name: string; age: number }; const connectionString = 'postgresql://dbuser:secretpassword@database.server.com:3211/mydb'; -const pongoClient = pongoClient(connectionString); -const pongoDb = pongoClient.db(); +const pongo = pongoClient(connectionString); +const pongoDb = pongo.db(); const users = pongoDb.collection('users'); const roger = { name: 'Roger', age: 30 }; @@ -36,23 +36,23 @@ const anita = { name: 'Anita', age: 25 }; const cruella = { _id: uuid(), name: 'Cruella', age: 40 }; // Inserting -await pongoCollection.insertOne(roger); -await pongoCollection.insertOne(cruella); +await users.insertOne(roger); +await users.insertOne(cruella); -const { insertedId } = await pongoCollection.insertOne(anita); +const { insertedId } = await users.insertOne(anita); const anitaId = insertedId; // Updating await users.updateOne({ _id: anitaId }, { $set: { age: 31 } }); // Deleting -await pongoCollection.deleteOne({ _id: cruella._id }); +await users.deleteOne({ _id: cruella._id }); // Finding by Id -const anitaFromDb = await pongoCollection.findOne({ _id: anitaId }); +const anitaFromDb = await users.findOne({ _id: anitaId }); // Finding more -const users = await pongoCollection.find({ age: { $lt: 40 } }); +const users = await users.find({ age: { $lt: 40 } }); ``` Or use MongoDB compliant shim: @@ -75,23 +75,23 @@ const anita = { name: 'Anita', age: 25 }; const cruella = { _id: uuid(), name: 'Cruella', age: 40 }; // Inserting -await pongoCollection.insertOne(roger); -await pongoCollection.insertOne(cruella); +await users.insertOne(roger); +await users.insertOne(cruella); -const { insertedId } = await pongoCollection.insertOne(anita); +const { insertedId } = await users.insertOne(anita); const anitaId = insertedId; // Updating await users.updateOne({ _id: anitaId }, { $set: { age: 31 } }); // Deleting -await pongoCollection.deleteOne({ _id: cruella._id }); +await users.deleteOne({ _id: cruella._id }); // Finding by Id -const anitaFromDb = await pongoCollection.findOne({ _id: anitaId }); +const anitaFromDb = await users.findOne({ _id: anitaId }); // Finding more -const users = await pongoCollection.find({ age: { $lt: 40 } }).toArray(); +const users = await users.find({ age: { $lt: 40 } }).toArray(); ``` ## How does it work? @@ -112,12 +112,9 @@ CREATE TABLE IF NOT EXISTS "YourCollectionName" ( **E.g. the MongoDB update syntax:** ```typescript -const pongoCollection = pongoDb.collection('users'); +const users = pongoDb.collection('users'); -await pongoCollection.updateOne( - { _id: someId }, - { $push: { tags: 'character' } }, -); +await users.updateOne({ _id: someId }, { $push: { tags: 'character' } }); ``` will be translated to: @@ -131,7 +128,7 @@ WHERE _id = '137ef052-e41c-428b-b606-1c8070a47eda'; **Or for query:** ```typescript -const result = await pongoCollection +const result = await users .find({ 'address.history': { $elemMatch: { street: 'Elm St' } } }) .toArray(); ``` diff --git a/src/packages/pongo/package.json b/src/packages/pongo/package.json index 9b7f05f..7ed853e 100644 --- a/src/packages/pongo/package.json +++ b/src/packages/pongo/package.json @@ -47,14 +47,15 @@ "dist" ], "peerDependencies": { + "@types/uuid": "^9.0.8", + "@types/pg": "^8.11.6", + "@types/pg-format": "^1.0.5", + "@types/mongodb": "^4.0.7", "pg": "^8.12.0", "pg-format": "^1.0.4", "uuid": "^9.0.1" }, "devDependencies": { - "@types/uuid": "^9.0.8", - "@types/node": "20.11.30", - "@types/pg": "^8.11.6", - "@types/pg-format": "^1.0.5" + "@types/node": "20.11.30" } } diff --git a/src/packages/pongo/src/main/typing/operations.ts b/src/packages/pongo/src/main/typing/operations.ts index 4a1e600..70a5139 100644 --- a/src/packages/pongo/src/main/typing/operations.ts +++ b/src/packages/pongo/src/main/typing/operations.ts @@ -30,8 +30,10 @@ export interface PongoCollection { export type WithId = T & { _id: string }; +export type WithoutId = Omit; + export type PongoFilter = { - [P in keyof T]?: T[P] | PongoFilterOperator; + [P in keyof T]?: WithId | PongoFilterOperator; }; export type PongoFilterOperator = { diff --git a/src/packages/pongo/src/mongo/mongoClient.ts b/src/packages/pongo/src/mongo/mongoClient.ts index c026374..d503bc3 100644 --- a/src/packages/pongo/src/mongo/mongoClient.ts +++ b/src/packages/pongo/src/mongo/mongoClient.ts @@ -18,7 +18,7 @@ export class MongoClient { await this.pongoClient.close(); } - db(dbName: string): Db { + db(dbName?: string): Db { return new Db(this.pongoClient.db(dbName)); } }