import { VectorStore, EmbeddingModel } from "../types";
import { MemoryVectorStore } from "./memory";

export type VectorStoreType = "memory" | "supabase" | "pinecone";

export class VectorStoreFactory {
  static create(
    type: VectorStoreType,
    embeddingModel: EmbeddingModel,
    config: any
  ): VectorStore {
    switch (type) {
      case "memory":
        return new MemoryVectorStore(embeddingModel, config.storePath);
      // TODO: Add other vector store implementations
      // case 'supabase':
      //   return new SupabaseVectorStore(embeddingModel, config);
      // case 'pinecone':
      //   return new PineconeVectorStore(embeddingModel, config);
      default:
        throw new Error(`Unsupported vector store type: ${type}`);
    }
  }
}

export * from "./memory";
export type { VectorStore, EmbeddingModel } from "../types";
