github.com/altipla-consulting/ravendb-go-client@v0.1.3/document_conflict_exception.go (about)

     1  package ravendb
     2  
     3  // DocumentConflictError represents document conflict error from the server
     4  type DocumentConflictError struct {
     5  	ConflictError
     6  	DocID       string
     7  	LargestEtag int64
     8  }
     9  
    10  func newDocumentConflictError(message string, docID string, etag int64) *DocumentConflictError {
    11  	res := &DocumentConflictError{}
    12  	res.ConflictError = *newConflictError("%s", message)
    13  	res.DocID = docID
    14  	res.LargestEtag = etag
    15  	return res
    16  }
    17  
    18  func newDocumentConflictErrorFromMessage(message string) *DocumentConflictError {
    19  	return newDocumentConflictError(message, "", 0)
    20  }
    21  
    22  func newDocumentConflictErrorFromJSON(js string) error {
    23  	var jsonNode map[string]interface{}
    24  	err := jsonUnmarshal([]byte(js), &jsonNode)
    25  	if err != nil {
    26  		return newBadResponseError("Unable to parse server response: %s", err)
    27  	}
    28  	docID, _ := jsonGetAsText(jsonNode, "DocId")
    29  	message, _ := jsonGetAsText(jsonNode, "Message")
    30  	largestEtag, _ := jsonGetAsInt64(jsonNode, "LargestEtag")
    31  
    32  	return newDocumentConflictError(message, docID, largestEtag)
    33  }