package document import ( "fmt" "go.mongodb.org/mongo-driver/bson" "git.pyer.club/kingecg/godocdb/storage" ) // DocumentStore 管理文档的存储和检索 type DocumentStore struct { storage *storage.LevelDBStorage } // NewDocumentStore 创建新的文档存储实例 func NewDocumentStore(path string) (*DocumentStore, error) { storage, err := storage.NewLevelDBStorage(path) if err != nil { return nil, err } return &DocumentStore{storage: storage}, nil } // StoreDocument 存储文档 func (ds *DocumentStore) StoreDocument(id string, doc interface{}) error { // 使用BSON序列化文档 data, err := bson.Marshal(doc) if err != nil { return fmt.Errorf("failed to marshal document: %v", err) } // 存储文档(格式: collection:id → BSON数据) key := []byte(fmt.Sprintf("documents:%s", id)) return ds.storage.Put(key, data) } // GetDocument 获取文档 func (ds *DocumentStore) GetDocument(id string, result interface{}) error { key := []byte(fmt.Sprintf("documents:%s", id)) data, err := ds.storage.Get(key) if err != nil { return fmt.Errorf("document not found: %v", err) } // 使用BSON反序列化文档 return bson.Unmarshal(data, result) } // DeleteDocument 删除文档 func (ds *DocumentStore) DeleteDocument(id string) error { key := []byte(fmt.Sprintf("documents:%s", id)) return ds.storage.Delete(key) }