Compare commits

...

17 Commits

Author SHA1 Message Date
sweep-ai[bot] 119595f52a Merge main into sweep/port-mongo-document-store 2023-10-25 23:53:32 +00:00
sweep-ai[bot] 4d3f906ae6 Merge main into sweep/port-mongo-document-store 2023-10-25 21:13:09 +00:00
sweep-ai[bot] 203664d24c Merge main into sweep/port-mongo-document-store 2023-10-25 19:54:21 +00:00
sweep-ai[bot] 99e4bdd940 Merge main into sweep/port-mongo-document-store 2023-10-18 02:57:00 +00:00
sweep-ai[bot] 758c98a96f Merge main into sweep/port-mongo-document-store 2023-10-17 23:13:55 +00:00
sweep-ai[bot] 656cc099b4 Merge main into sweep/port-mongo-document-store 2023-10-16 16:29:24 +00:00
sweep-ai[bot] 28204ef9d0 Merge main into sweep/port-mongo-document-store 2023-10-16 16:23:14 +00:00
sweep-ai[bot] 82185e976f Merge main into sweep/port-mongo-document-store 2023-10-13 01:02:28 +00:00
sweep-ai[bot] 6a6b14cf92 Merge main into sweep/port-mongo-document-store 2023-10-10 21:34:52 +00:00
sweep-ai[bot] 639928ae05 Merge main into sweep/port-mongo-document-store 2023-10-10 01:17:34 +00:00
sweep-ai[bot] 2f30c24991 Merge main into sweep/port-mongo-document-store 2023-10-09 02:16:32 +00:00
sweep-ai[bot] 5ceffbec31 Merge main into sweep/port-mongo-document-store 2023-10-07 22:59:56 +00:00
sweep-ai[bot] 14848d133c Merge main into sweep/port-mongo-document-store 2023-10-06 01:37:40 +00:00
sweep-ai[bot] 7f1ac6099d Merge main into sweep/port-mongo-document-store 2023-10-06 01:37:23 +00:00
sweep-ai[bot] eed2660fd3 feat: Add utility functions for MongoDB interactio 2023-10-04 16:04:47 +00:00
sweep-ai[bot] b8284c2b29 feat: Add type definition for MongoDocumentStore c 2023-10-04 15:59:18 +00:00
sweep-ai[bot] 21c5d2110a feat: Implement MongoDocumentStore class 2023-10-04 15:53:48 +00:00
3 changed files with 76 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
import { MongoClient } from 'mongodb';
import { KVDocumentStore } from './KVDocumentStore';
import { Document } from './types';
import { handleMongoError } from './utils';
export class MongoDocumentStore extends KVDocumentStore {
private client: MongoClient;
private dbName: string;
constructor(connectionString: string, dbName: string) {
super();
this.client = new MongoClient(connectionString);
this.dbName = dbName;
}
async get(key: string): Promise<Document | null> {
try {
const db = this.client.db(this.dbName);
return await db.collection('documents').findOne({ key });
} catch (error) {
handleMongoError(error);
}
}
async set(key: string, value: Document): Promise<void> {
try {
const db = this.client.db(this.dbName);
await db.collection('documents').updateOne({ key }, { $set: { value } }, { upsert: true });
} catch (error) {
handleMongoError(error);
}
}
async delete(key: string): Promise<void> {
try {
const db = this.client.db(this.dbName);
await db.collection('documents').deleteOne({ key });
} catch (error) {
handleMongoError(error);
}
}
async keys(): Promise<string[]> {
try {
const db = this.client.db(this.dbName);
const documents = await db.collection('documents').find({}, { projection: { key: 1 } }).toArray();
return documents.map(document => document.key);
} catch (error) {
handleMongoError(error);
}
}
}
+9
View File
@@ -0,0 +1,9 @@
import { Document } from './types';
export interface MongoDocumentStore {
constructor(connectionString: string, dbName: string): void;
get(key: string): Promise<Document | null>;
set(key: string, value: Document): Promise<void>;
delete(key: string): Promise<void>;
keys(): Promise<string[]>;
}
+15
View File
@@ -0,0 +1,15 @@
import { MongoClient } from 'mongodb';
export function handleMongoError(error: Error): void {
console.error('An error occurred while interacting with MongoDB:', error);
}
export async function connectToMongoDB(connectionString: string): Promise<MongoClient> {
try {
const client = new MongoClient(connectionString);
await client.connect();
return client;
} catch (error) {
handleMongoError(error);
}
}