feat(db): add storage backend metadata columns #135
Reference in New Issue
Block a user
Delete Branch "feat-file-storage-metadata"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Add
storage_backendcolumns toitem_filesandrevisionstables to track which storage backend holds each file, enabling dual-running MinIO and filesystem backends during migration.Migration
migrations/017_file_storage_metadata.sql:Existing rows default to
'minio'. New uploads will write'filesystem'when the filesystem backend is active.DB repository changes
internal/db/items.go—RevisionstructFileStorageBackend stringfieldCreateRevision: insertsfile_storage_backend, defaults to"minio"if emptyGetRevisions: readsCOALESCE(file_storage_backend, 'minio')in thehasStatusColumnbranch; defaults to"minio"in the legacy branchGetRevision: same pattern as aboveCreateRevisionFromExisting: copiesFileStorageBackendfrom source revisioninternal/db/item_files.go—ItemFilestructStorageBackend stringfieldCreate: insertsstorage_backend, defaults to"minio"if emptyListByItem: readsCOALESCE(storage_backend, 'minio')Get: readsCOALESCE(storage_backend, 'minio')Backward compatibility
COALESCEin all SELECTs handles rows where the column hasn't been populated yet'minio'means existing data is unaffectedhasStatusColumn == falsebranches (pre-migration-007 databases) setFileStorageBackend = "minio"in Go — these databases certainly don't have migration 017 eitherFiles changed
migrations/017_file_storage_metadata.sqlinternal/db/items.goRevision.FileStorageBackend+ query updatesinternal/db/item_files.goItemFile.StorageBackend+ query updatesVerification
go build ./...passesgo vet ./...passesCloses #128
Part of
Storage Migration: MinIO → PostgreSQL + Filesystem