MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / Write

Method Write

sqlchain/adapter/api/query.go:106–171  ·  view source on GitHub ↗

Exec defines write query for database.

(rw http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

104
105// Exec defines write query for database.
106func (a *queryAPI) Write(rw http.ResponseWriter, r *http.Request) {
107 // check privilege
108 hasPrivilege := false
109
110 if config.GetConfig().TLSConfig == nil || !config.GetConfig().VerifyCertificate {
111 // http mode or no certificate verification required
112 hasPrivilege = true
113 }
114
115 if r.TLS != nil && len(r.TLS.PeerCertificates) > 0 {
116 cert := r.TLS.PeerCertificates[0]
117
118 for _, privilegedCert := range config.GetConfig().WriteCertificates {
119 if cert.Equal(privilegedCert) {
120 hasPrivilege = true
121 break
122 }
123 }
124
125 if !hasPrivilege {
126 for _, privilegedCert := range config.GetConfig().AdminCertificates {
127 if cert.Equal(privilegedCert) {
128 hasPrivilege = true
129 break
130 }
131 }
132 }
133 }
134
135 // forbidden
136 if !hasPrivilege {
137 sendResponse(http.StatusForbidden, false, nil, nil, rw)
138 return
139 }
140
141 var (
142 qm *queryMap
143 err error
144 )
145
146 if qm, err = parseForm(r); err != nil {
147 sendResponse(http.StatusBadRequest, false, err, nil, rw)
148 return
149 }
150
151 log.WithFields(log.Fields{
152 "db": qm.Database,
153 "query": qm.Query,
154 }).Info("got exec")
155
156 var (
157 affectedRows int64
158 lastInsertID int64
159 )
160
161 if affectedRows, lastInsertID, err = config.GetConfig().StorageInstance.Exec(
162 qm.Database, qm.Query, qm.Args...); err != nil {
163 sendResponse(http.StatusInternalServerError, false, err, nil, rw)

Callers

nothing calls this directly

Calls 6

GetConfigFunction · 0.92
WithFieldsFunction · 0.92
parseFormFunction · 0.85
InfoMethod · 0.80
sendResponseFunction · 0.70
ExecMethod · 0.65

Tested by

no test coverage detected