forked from ravendb/ravendb-go-client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompact_database_operation.go
77 lines (62 loc) · 1.98 KB
/
compact_database_operation.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package ravendb
import (
"net/http"
)
var (
_ IServerOperation = &CompactDatabaseOperation{}
)
// CompactDatabaseOperation describes "compact database" operation
type CompactDatabaseOperation struct {
compactSettings *CompactSettings
Command *CompactDatabaseCommand
}
// NewCompactDatabaseOperation returns new CompactDatabaseOperation
func NewCompactDatabaseOperation(compactSettings *CompactSettings) *CompactDatabaseOperation {
return &CompactDatabaseOperation{
compactSettings: compactSettings,
}
}
// GetCommand returns a command
func (o *CompactDatabaseOperation) GetCommand(conventions *DocumentConventions) (RavenCommand, error) {
var err error
o.Command, err = NewCompactDatabaseCommand(conventions, o.compactSettings)
if err != nil {
return nil, err
}
return o.Command, nil
}
var _ RavenCommand = &CompactDatabaseCommand{}
// CompactDatabaseCommand describes "compact database" command
type CompactDatabaseCommand struct {
RavenCommandBase
compactSettings []byte // CompactSettings serialized to json
Result *OperationIDResult
}
//NewCompactDatabaseCommand returns new CompactDatabaseCommand
func NewCompactDatabaseCommand(conventions *DocumentConventions, compactSettings *CompactSettings) (*CompactDatabaseCommand, error) {
if conventions == nil {
return nil, newIllegalArgumentError("Conventions cannot be null")
}
if compactSettings == nil {
return nil, newIllegalArgumentError("CompactSettings cannot be null")
}
d, err := jsonMarshal(compactSettings)
if err != nil {
return nil, err
}
res := &CompactDatabaseCommand{
RavenCommandBase: NewRavenCommandBase(),
compactSettings: d,
}
return res, nil
}
func (c *CompactDatabaseCommand) createRequest(node *ServerNode) (*http.Request, error) {
url := node.URL + "/admin/compact"
return newHttpPost(url, c.compactSettings)
}
func (c *CompactDatabaseCommand) setResponse(response []byte, fromCache bool) error {
if len(response) == 0 {
return throwInvalidResponse()
}
return jsonUnmarshal(response, &c.Result)
}