v0.10.0: ports and adapters refactor
- Extract shared manifest types into internal/manifest/types leaf package. - Extract SQLite adapter into internal/manifest/sqlite. - Extract JSONL adapter into internal/manifest/jsonl. - Isolate modernc.org/sqlite import to sqlite/adapter.go. - Add adapter-backed registry with manifest.Default. - Adapter-agnostic ConvertManifest in types/. - MemoryAdapter for in-memory manifest testing. - CLI uses manifest.Default registry directly. - SQLite LogWriter type assertion moved into SQLiteAdapter. - Manifest interface includes Entries(); EntryReader removed. - No behavior changes. 100% coverage across all 6 packages.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package manifest
|
||||
|
||||
import "gitea.k3s.k0.nu/tools/photocli/internal/manifest/types"
|
||||
|
||||
type memoryStore struct {
|
||||
entries map[string]types.Entry
|
||||
}
|
||||
|
||||
func newMemoryStore() *memoryStore {
|
||||
return &memoryStore{entries: make(map[string]types.Entry)}
|
||||
}
|
||||
|
||||
func (m *memoryStore) Has(id string) bool {
|
||||
_, ok := m.entries[id]
|
||||
return ok
|
||||
}
|
||||
|
||||
func (m *memoryStore) Add(id string, filename string, size int64, cloud string) {
|
||||
m.AddEntry(types.NewEntry(id, filename, filename, size, cloud))
|
||||
}
|
||||
|
||||
func (m *memoryStore) AddEntry(entry types.Entry) {
|
||||
if entry.Path == "" {
|
||||
entry.Path = entry.Filename
|
||||
}
|
||||
m.entries[entry.ID] = entry
|
||||
}
|
||||
|
||||
func (m *memoryStore) Save() error { return nil }
|
||||
func (m *memoryStore) Close() { _ = m }
|
||||
|
||||
func (m *memoryStore) OpenAppend() error { return nil }
|
||||
|
||||
func (m *memoryStore) Entries() map[string]types.Entry {
|
||||
out := make(map[string]types.Entry, len(m.entries))
|
||||
for k, v := range m.entries {
|
||||
out[k] = v
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
type MemoryAdapter struct{}
|
||||
|
||||
func (MemoryAdapter) Format() types.Format { return types.FormatJSONL }
|
||||
func (MemoryAdapter) Aliases() []string { return nil }
|
||||
func (MemoryAdapter) Path(string) string { return "" }
|
||||
func (MemoryAdapter) Exists(string) bool { return false }
|
||||
func (MemoryAdapter) Open(string) (types.Manifest, error) { return newMemoryStore(), nil }
|
||||
|
||||
func (MemoryAdapter) OpenLogWriter(types.Manifest, string) (types.LogWriter, error) {
|
||||
return types.NoopLogWriter, nil
|
||||
}
|
||||
Reference in New Issue
Block a user