Skip to content

Commit f0dd661

Browse files
authored
feat: Implement backup and restore of dev-server database (#488)
feat: Implement backup and restore of dev-server database (#488)
1 parent 824da88 commit f0dd661

File tree

11 files changed

+756
-17
lines changed

11 files changed

+756
-17
lines changed

internal/dev_server/api/api.yaml

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,25 @@ info:
99
servers:
1010
- url: "http"
1111
paths:
12+
/dev/backup:
13+
get:
14+
summary: get the backup
15+
operationId: getBackup
16+
responses:
17+
200:
18+
$ref: "#/components/responses/DbBackup"
19+
post:
20+
summary: post backup
21+
operationId: restoreBackup
22+
requestBody:
23+
content:
24+
application/vnd.sqlite3:
25+
schema:
26+
type: string
27+
format: binary
28+
responses:
29+
200:
30+
description: 'Backup restored'
1231
/dev/projects:
1332
get:
1433
summary: lists all projects that have been configured for the dev server
@@ -142,7 +161,7 @@ paths:
142161
description: limit the number of environments returned
143162
required: false
144163
schema:
145-
type: integer
164+
type: integer
146165
responses:
147166
200:
148167
description: OK. List of environments
@@ -286,6 +305,13 @@ components:
286305
application/json:
287306
schema:
288307
$ref: "#/components/schemas/Project"
308+
DbBackup:
309+
description: A backup of the local sqlite database
310+
content:
311+
application/vnd.sqlite3:
312+
schema:
313+
type: string
314+
format: binary
289315
ErrorResponse:
290316
description: Error response object
291317
content:
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package api
2+
3+
import (
4+
"context"
5+
6+
"github.com/launchdarkly/ldcli/internal/dev_server/model"
7+
)
8+
9+
func (s server) GetBackup(ctx context.Context, request GetBackupRequestObject) (GetBackupResponseObject, error) {
10+
store := model.StoreFromContext(ctx)
11+
backup, size, err := store.CreateBackup(ctx)
12+
if err != nil {
13+
return nil, err
14+
}
15+
16+
return GetBackup200ApplicationvndSqlite3Response{DbBackupApplicationvndSqlite3Response{
17+
Body: backup,
18+
ContentLength: size,
19+
}}, nil
20+
21+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package api
2+
3+
import (
4+
"context"
5+
"github.com/launchdarkly/ldcli/internal/dev_server/model"
6+
)
7+
8+
func (s server) RestoreBackup(ctx context.Context, request RestoreBackupRequestObject) (RestoreBackupResponseObject, error) {
9+
err := model.RestoreDb(ctx, request.Body)
10+
if err != nil {
11+
return nil, err
12+
}
13+
return RestoreBackup200Response{}, nil
14+
}

internal/dev_server/api/server.gen.go

Lines changed: 144 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)