diff --git a/internal/dev_server/api/restore_backup.go b/internal/dev_server/api/restore_backup.go index d99b90ad..6864ed98 100644 --- a/internal/dev_server/api/restore_backup.go +++ b/internal/dev_server/api/restore_backup.go @@ -2,9 +2,14 @@ package api import ( "context" + "github.com/launchdarkly/ldcli/internal/dev_server/model" ) func (s server) RestoreBackup(ctx context.Context, request RestoreBackupRequestObject) (RestoreBackupResponseObject, error) { - request.Body - panic("implement me") + store := model.StoreFromContext(ctx) + _, err := store.RestoreBackup(ctx, request.Body) + if err != nil { + return nil, err + } + return RestoreBackup200Response{}, nil } diff --git a/internal/dev_server/db/backup/sqllite_backup.go b/internal/dev_server/db/backup/sqllite_backup.go index d6b3be83..191014e7 100644 --- a/internal/dev_server/db/backup/sqllite_backup.go +++ b/internal/dev_server/db/backup/sqllite_backup.go @@ -74,7 +74,7 @@ func (m *Manager) connectToDb(ctx context.Context, path string) (*sql.DB, error) } // RestoreToFile returns a string path of the sqlite database restored from the stream -func (m *Manager) RestoreToFile(ctx context.Context, stream io.ReadCloser) (string, error) { +func (m *Manager) RestoreToFile(ctx context.Context, stream io.Reader) (string, error) { m.mutex.Lock() defer m.mutex.Unlock() diff --git a/internal/dev_server/db/sqlite.go b/internal/dev_server/db/sqlite.go index 0d41f603..fc1ca531 100644 --- a/internal/dev_server/db/sqlite.go +++ b/internal/dev_server/db/sqlite.go @@ -349,7 +349,7 @@ func (s Sqlite) DeactivateOverride(ctx context.Context, projectKey, flagKey stri return version, nil } -func (s Sqlite) RestoreBackup(ctx context.Context, stream io.ReadCloser) (string, error) { +func (s Sqlite) RestoreBackup(ctx context.Context, stream io.Reader) (string, error) { filepath, err := s.backupManager.RestoreToFile(ctx, stream) return filepath, err diff --git a/internal/dev_server/model/mocks/store.go b/internal/dev_server/model/mocks/store.go index 7708da97..a5e2603a 100644 --- a/internal/dev_server/model/mocks/store.go +++ b/internal/dev_server/model/mocks/store.go @@ -162,7 +162,7 @@ func (mr *MockStoreMockRecorder) InsertProject(arg0, arg1 any) *gomock.Call { } // RestoreBackup mocks base method. -func (m *MockStore) RestoreBackup(arg0 context.Context, arg1 io.ReadCloser) (string, error) { +func (m *MockStore) RestoreBackup(arg0 context.Context, arg1 io.Reader) (string, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RestoreBackup", arg0, arg1) ret0, _ := ret[0].(string) diff --git a/internal/dev_server/model/store.go b/internal/dev_server/model/store.go index 41d79268..6d36bddb 100644 --- a/internal/dev_server/model/store.go +++ b/internal/dev_server/model/store.go @@ -31,7 +31,7 @@ type Store interface { GetAvailableVariationsForProject(ctx context.Context, projectKey string) (map[string][]Variation, error) CreateBackup(ctx context.Context) (io.ReadCloser, int64, error) - RestoreBackup(ctx context.Context, stream io.ReadCloser) (string, error) + RestoreBackup(ctx context.Context, stream io.Reader) (string, error) } func ContextWithStore(ctx context.Context, store Store) context.Context {