package stores import ( "fmt" "path/filepath" "gitea.unprism.ru/KRBL/Agate/store" "gitea.unprism.ru/KRBL/Agate/store/filesystem" "gitea.unprism.ru/KRBL/Agate/store/sqlite" ) // NewDefaultMetadataStore creates a new SQLite-based metadata store. func NewDefaultMetadataStore(metadataDir string) (store.MetadataStore, error) { dbPath := filepath.Join(metadataDir, "snapshots.db") return sqlite.NewSQLiteStore(dbPath) } // NewDefaultBlobStore creates a new filesystem-based blob store. func NewDefaultBlobStore(blobsDir string) (store.BlobStore, error) { return filesystem.NewFileSystemStore(blobsDir) } // InitDefaultStores initializes both metadata and blob stores with default implementations. // Returns the initialized stores or an error if initialization fails. func InitDefaultStores(baseDir string) (store.MetadataStore, store.BlobStore, error) { metadataDir := filepath.Join(baseDir, "metadata") blobsDir := filepath.Join(baseDir, "blobs") metadataStore, err := NewDefaultMetadataStore(metadataDir) if err != nil { return nil, nil, fmt.Errorf("failed to initialize metadata store: %w", err) } blobStore, err := NewDefaultBlobStore(blobsDir) if err != nil { // Clean up if blob store initialization fails metadataStore.Close() return nil, nil, fmt.Errorf("failed to initialize blob store: %w", err) } return metadataStore, blobStore, nil }