feat(metadata): SQLite backend, storage reconciliation and local defaults
- pluggable per-domain Repository interfaces; PostgreSQL and SQLite impls - SQLite on modernc.org/sqlite (WAL, busy_timeout, foreign_keys, immediate tx) - separate migrations/sqlite and db.MigrateSQLite; store.NewPostgres/NewSQLite - cmd/reconcile compares object storage with the journal (report, then --delete) - storage.Backend.List and photos.Repository.AllStorageKeys - DB_BACKEND/SQLITE_PATH and STORAGE_BACKEND/FS_ROOT selectable; local defaults (sqlite ./galo.db, fs ./data) - Makefile reconcile/reconcile-delete; docs and .env.example updated
This commit is contained in:
@@ -9,7 +9,6 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
|
||||
"shared-album/internal/config"
|
||||
"shared-album/internal/storage"
|
||||
@@ -24,23 +23,14 @@ func mustSigner(t *testing.T) *storage.Signer {
|
||||
return signer
|
||||
}
|
||||
|
||||
func lazyPool(t *testing.T) *pgxpool.Pool {
|
||||
t.Helper()
|
||||
pool, err := pgxpool.New(context.Background(), "postgres://u:p@127.0.0.1:1/x?sslmode=disable")
|
||||
if err != nil {
|
||||
t.Fatalf("pool: %v", err)
|
||||
}
|
||||
t.Cleanup(pool.Close)
|
||||
return pool
|
||||
}
|
||||
|
||||
func TestHealthStorageLabel(t *testing.T) {
|
||||
gin.SetMode(gin.TestMode)
|
||||
fs, err := storage.NewFS(t.TempDir(), mustSigner(t))
|
||||
if err != nil {
|
||||
t.Fatalf("fs: %v", err)
|
||||
}
|
||||
srv := &Server{cfg: &config.Config{}, pool: lazyPool(t), storage: fs}
|
||||
ok := func(context.Context) error { return nil }
|
||||
srv := &Server{cfg: &config.Config{}, ping: ok, storage: fs}
|
||||
|
||||
call := func() map[string]any {
|
||||
rec := httptest.NewRecorder()
|
||||
|
||||
Reference in New Issue
Block a user