- 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
41 lines
1.1 KiB
Makefile
41 lines
1.1 KiB
Makefile
.PHONY: build frontend backend run migrate reconcile reconcile-delete tidy test clean
|
|
|
|
frontend:
|
|
cd frontend && npm ci && npm run build
|
|
rm -rf backend/static/*
|
|
cp -r frontend/build/* backend/static/
|
|
|
|
backend:
|
|
mkdir -p bin
|
|
# -tags nodynamic forces gen2brain/webp to use its pure-Go transpiled path
|
|
# (no purego/dlopen), keeping the binary fully static.
|
|
cd backend && CGO_ENABLED=0 go build -tags nodynamic -trimpath -ldflags="-s -w" \
|
|
-o ../bin/shared-album ./cmd/server
|
|
|
|
build: frontend backend
|
|
|
|
run: backend
|
|
cd backend && ../bin/shared-album
|
|
|
|
migrate:
|
|
cd backend && go run ./cmd/migrate
|
|
|
|
# Reconcile object storage against the metadata journal (report only).
|
|
reconcile:
|
|
cd backend && go run ./cmd/reconcile
|
|
|
|
# Reconcile and delete orphaned blobs older than --min-age (default 1h).
|
|
# Override the grace period when needed: make reconcile-delete MIN_AGE=1m
|
|
reconcile-delete:
|
|
cd backend && go run ./cmd/reconcile --delete $(if $(MIN_AGE),--min-age $(MIN_AGE),)
|
|
|
|
tidy:
|
|
cd backend && go mod tidy
|
|
|
|
test:
|
|
cd backend && go test ./...
|
|
|
|
clean:
|
|
rm -rf bin backend/static/*
|
|
touch backend/static/.gitkeep
|