Skip to content

Commit 0e33442

Browse files
Merge pull request #164 from civo/feat/dbaas-backup
Support database backup
2 parents a270b14 + 30c18c1 commit 0e33442

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

database_backup.go

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package civogo
2+
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"fmt"
7+
)
8+
9+
// DatabaseBackup represents a backup
10+
type DatabaseBackup struct {
11+
Name string `json:"name"`
12+
DatabaseName string `json:"database_name"`
13+
DatabaseID string `json:"database_id"`
14+
Software string `json:"software"`
15+
Schedule string `json:"schedule"`
16+
Count int32 `json:"count"`
17+
Backups []string `json:"backups"`
18+
}
19+
20+
// DatabaseBackupCreateRequest represents a backup create request
21+
type DatabaseBackupCreateRequest struct {
22+
Name string `json:"name"`
23+
Schedule string `json:"schedule"`
24+
Count int32 `json:"count"`
25+
Region string `json:"region"`
26+
}
27+
28+
// DatabaseBackupUpdateRequest represents a backup update request
29+
type DatabaseBackupUpdateRequest struct {
30+
Name string `json:"name"`
31+
Schedule string `json:"schedule"`
32+
Count int32 `json:"count"`
33+
Region string `json:"region"`
34+
}
35+
36+
// ListDatabaseBackup lists backups for database
37+
func (c *Client) ListDatabaseBackup(did string) (*DatabaseBackup, error) {
38+
resp, err := c.SendGetRequest(fmt.Sprintf("/v2/databases/%s/backups", did))
39+
if err != nil {
40+
return nil, decodeError(err)
41+
}
42+
43+
back := &DatabaseBackup{}
44+
if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&back); err != nil {
45+
return nil, decodeError(err)
46+
}
47+
48+
return back, nil
49+
}
50+
51+
// UpdateDatabaseBackup update database backup
52+
func (c *Client) UpdateDatabaseBackup(did string, v *DatabaseBackupUpdateRequest) (*DatabaseBackup, error) {
53+
body, err := c.SendPutRequest(fmt.Sprintf("/v2/databases/%s/backups", did), v)
54+
if err != nil {
55+
return nil, decodeError(err)
56+
}
57+
58+
result := &DatabaseBackup{}
59+
if err := json.NewDecoder(bytes.NewReader(body)).Decode(result); err != nil {
60+
return nil, err
61+
}
62+
63+
return result, nil
64+
}
65+
66+
// CreateDatabaseBackup create database backup
67+
func (c *Client) CreateDatabaseBackup(did string, v *DatabaseBackupCreateRequest) (*DatabaseBackup, error) {
68+
body, err := c.SendPostRequest(fmt.Sprintf("/v2/databases/%s/backups", did), v)
69+
if err != nil {
70+
return nil, decodeError(err)
71+
}
72+
73+
result := &DatabaseBackup{}
74+
if err := json.NewDecoder(bytes.NewReader(body)).Decode(result); err != nil {
75+
return nil, err
76+
}
77+
78+
return result, nil
79+
}

0 commit comments

Comments
 (0)