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  }