import { AxDBCloudflare, type AxDBCloudflareArgs } from './cloudflare.js'; import { AxDBMemory, type AxDBMemoryArgs } from './memory.js'; import { AxDBPinecone, type AxDBPineconeArgs } from './pinecone.js'; import type { AxDBQueryRequest, AxDBQueryResponse, AxDBService, AxDBUpsertRequest, AxDBUpsertResponse, } from './types.js'; import { AxDBWeaviate, type AxDBWeaviateArgs } from './weaviate.js'; export type AxDBArgs = | AxDBCloudflareArgs | AxDBPineconeArgs | AxDBWeaviateArgs | AxDBMemoryArgs; export class AxDB implements AxDBService { private db: AxDBService; constructor(args: Readonly) { switch (args.name) { case 'weaviate': this.db = new AxDBWeaviate(args); break; case 'pinecone': this.db = new AxDBPinecone(args); break; case 'cloudflare': this.db = new AxDBCloudflare(args); break; case 'memory': this.db = new AxDBMemory(args); break; default: throw new Error('Unknown DB'); } } async upsert( req: Readonly, update?: boolean ): Promise { return await this.db.upsert(req, update); } async batchUpsert( batchReq: Readonly, update?: boolean ): Promise { return await this.db.batchUpsert(batchReq, update); } async query(req: Readonly): Promise { return await this.db.query(req); } }