Files
phylum/server/internal/app/storage_backends.go
2024-07-31 21:06:06 -07:00

52 lines
1.2 KiB
Go

package app
import (
"context"
"github.com/shroff/phylum/server/internal/app/core"
"github.com/shroff/phylum/server/internal/db"
"github.com/shroff/phylum/server/internal/sql"
"github.com/shroff/phylum/server/internal/storage"
)
func restoreStorageBackends(db *db.DbHandler) (map[string]core.Storage, error) {
backends, err := db.Queries().AllStorageBackends(context.Background())
if err != nil {
return nil, err
}
results := map[string]core.Storage{}
for _, b := range backends {
store, err := storage.Open(b.Name, b.Driver, b.Params)
if err != nil {
return nil, err
}
results[b.Name] = store
}
return results, nil
}
func (a App) CreateStorageBackend(name string, driver string, params map[string]string) error {
storage, err := storage.Open(name, driver, params)
if err != nil {
return nil
}
err = a.Db.Queries().CreateStorageBackend(context.Background(), sql.CreateStorageBackendParams{
Name: name,
Driver: driver,
Params: params,
})
if err != nil {
return err
}
a.backends[name] = storage
return nil
}
func (a App) FindStorageBackend(name string) core.Storage {
return a.backends[name]
}
func (a App) ListStorageBackends() map[string]core.Storage {
return a.backends
}