MCPcopy
hub / github.com/daptin/daptin / UpdateWithoutFilters

Method UpdateWithoutFilters

server/resource/resource_update.go:32–1105  ·  view source on GitHub ↗

Update an object Possible Responder status codes are: - 200 OK: Update successful, however some field(s) were changed, returns updates source - 202 Accepted: Processing is delayed, return nothing - 204 No Content: Update was successful, no fields were changed by the server, return nothing

(obj interface{}, req api2go.Request, updateTransaction *sqlx.Tx)

Source from the content-addressed store, hash-verified

30// - 202 Accepted: Processing is delayed, return nothing
31// - 204 No Content: Update was successful, no fields were changed by the server, return nothing
32func (dbResource *DbResource) UpdateWithoutFilters(obj interface{}, req api2go.Request, updateTransaction *sqlx.Tx) (map[string]interface{}, error) {
33
34 data, ok := obj.(api2go.Api2GoModel)
35
36 if !ok {
37 log.Errorf("Request data is not api2go model: %v", data)
38 return nil, errors.New("invalid request")
39 }
40
41 updateObjectReferenceId := uuid.MustParse(data.GetID())
42
43 var err error
44 idInt := data.GetColumnOriginalValue("id")
45
46 if idInt == nil {
47 idInt, err = GetReferenceIdToIdWithTransaction(dbResource.model.GetName(), daptinid.DaptinReferenceId(updateObjectReferenceId), updateTransaction)
48 if err != nil {
49 return nil, err
50 }
51 }
52
53 user := req.PlainRequest.Context().Value("user")
54 sessionUser := &auth.SessionUser{}
55
56 if user != nil {
57 sessionUser = user.(*auth.SessionUser)
58 }
59 isAdmin := IsAdminWithTransaction(sessionUser, updateTransaction)
60
61 attrs := data.GetAllAsAttributes()
62
63 if !data.HasVersion() {
64 originalData, err := dbResource.GetReferenceIdToObjectWithTransaction(dbResource.model.GetTableName(),
65 daptinid.DaptinReferenceId(updateObjectReferenceId), updateTransaction)
66 if err != nil {
67 return nil, err
68 }
69 data = api2go.NewApi2GoModelWithData(dbResource.model.GetTableName(), nil, 0, nil, originalData)
70 data.SetAttributes(attrs)
71 }
72
73 allChanges := data.GetChanges()
74 allColumns := dbResource.model.GetColumns()
75 //log.Printf("Update object request with changes: %v", allChanges)
76
77 //dataToInsert := make(map[string]interface{})
78
79 languagePreferences := make([]string, 0)
80 if dbResource.tableInfo.TranslationsEnabled {
81 prefs := req.PlainRequest.Context().Value("language_preference")
82 if prefs != nil {
83 languagePreferences = prefs.([]string)
84 }
85 }
86
87 var colsList []string
88 var valsList []interface{}
89 passwordChanged := false

Callers 10

UpdateMethod · 0.95
UpdateWithTransactionMethod · 0.95
DoActionMethod · 0.80
markOAuthStateUsedFunction · 0.80
DoActionMethod · 0.80
DoActionMethod · 0.80
DoActionMethod · 0.80
DoActionMethod · 0.80
GetTLSConfigMethod · 0.80

Tested by 1