github.com/altipla-consulting/ravendb-go-client@v0.1.3/delete_database_operation.go (about) 1 package ravendb 2 3 import ( 4 "net/http" 5 "time" 6 ) 7 8 var ( 9 _ IServerOperation = &DeleteDatabasesOperation{} 10 ) 11 12 type DeleteDatabasesOperation struct { 13 parameters *DeleteDatabaseParameters 14 15 Command *DeleteDatabaseCommand 16 } 17 18 type DeleteDatabaseParameters struct { 19 DatabaseNames []string `json:"DatabaseNames"` 20 HardDelete bool `json:"HardDelete"` 21 FromNodes []string `json:"FromNodes"` 22 TimeToWaitForConfirmation *time.Duration `json:"TimeToWaitForConfirmation"` 23 } 24 25 func NewDeleteDatabasesOperation(databaseName string, hardDelete bool) *DeleteDatabasesOperation { 26 return NewDeleteDatabasesOperation2(databaseName, hardDelete, "", 0) 27 } 28 29 func NewDeleteDatabasesOperation2(databaseName string, hardDelete bool, fromNode string, timeToWaitForConfirmation time.Duration) *DeleteDatabasesOperation { 30 parameters := &DeleteDatabaseParameters{ 31 DatabaseNames: []string{databaseName}, 32 HardDelete: hardDelete, 33 } 34 if timeToWaitForConfirmation != 0 { 35 parameters.TimeToWaitForConfirmation = &timeToWaitForConfirmation 36 } 37 if fromNode != "" { 38 parameters.FromNodes = []string{fromNode} 39 } 40 return NewDeleteDatabasesOperationWithParameters(parameters) 41 } 42 43 func NewDeleteDatabasesOperationWithParameters(parameters *DeleteDatabaseParameters) *DeleteDatabasesOperation { 44 return &DeleteDatabasesOperation{ 45 parameters: parameters, 46 } 47 } 48 49 func (o *DeleteDatabasesOperation) GetCommand(conventions *DocumentConventions) (RavenCommand, error) { 50 var err error 51 o.Command, err = NewDeleteDatabaseCommand(conventions, o.parameters) 52 if err != nil { 53 return nil, err 54 } 55 return o.Command, nil 56 } 57 58 var _ RavenCommand = &DeleteDatabaseCommand{} 59 60 type DeleteDatabaseCommand struct { 61 RavenCommandBase 62 63 parameters []byte 64 65 Result *DeleteDatabaseResult 66 } 67 68 func NewDeleteDatabaseCommand(conventions *DocumentConventions, parameters *DeleteDatabaseParameters) (*DeleteDatabaseCommand, error) { 69 d, err := jsonMarshal(parameters) 70 if err != nil { 71 return nil, err 72 } 73 74 cmd := &DeleteDatabaseCommand{ 75 RavenCommandBase: NewRavenCommandBase(), 76 77 parameters: d, 78 } 79 return cmd, nil 80 } 81 82 func (c *DeleteDatabaseCommand) createRequest(node *ServerNode) (*http.Request, error) { 83 url := node.URL + "/admin/databases" 84 return newHttpDelete(url, c.parameters) 85 } 86 87 func (c *DeleteDatabaseCommand) setResponse(response []byte, fromCache bool) error { 88 return jsonUnmarshal(response, &c.Result) 89 }