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

Function createDatabase

cmd/cql-proxy/api/database.go:249–323  ·  view source on GitHub ↗
(db *gorp.DbMap, developer int64, account int64, nodeCount uint16)

Source from the content-addressed store, hash-verified

247}
248
249func createDatabase(db *gorp.DbMap, developer int64, account int64, nodeCount uint16) (tx hash.Hash, dbID proto.DatabaseID, key *asymmetric.PrivateKey, err error) {
250 p, err := model.GetAccountByID(db, developer, account)
251 if err != nil {
252 err = errors.Wrapf(err, "get account for task failed")
253 return
254 }
255
256 if err = p.LoadPrivateKey(); err != nil {
257 err = errors.Wrapf(err, "decode account private key failed")
258 return
259 }
260
261 key = p.Key
262
263 accountAddr, err := p.Account.Get()
264 if err != nil {
265 err = errors.Wrapf(err, "decode task account failed")
266 return
267 }
268
269 nonceReq := new(types.NextAccountNonceReq)
270 nonceResp := new(types.NextAccountNonceResp)
271 nonceReq.Addr = accountAddr
272
273 err = rpc.RequestBP(route.MCCNextAccountNonce.String(), nonceReq, nonceResp)
274 if err != nil {
275 err = errors.Wrapf(err, "get account nonce failed")
276 return
277 }
278
279 meta := client.ResourceMeta{}
280 meta.Node = nodeCount
281 meta.GasPrice = client.DefaultGasPrice
282 meta.AdvancePayment = client.DefaultAdvancePayment
283
284 var (
285 txReq = new(types.AddTxReq)
286 txResp = new(types.AddTxResp)
287 )
288
289 txReq.TTL = 1
290 txReq.Tx = types.NewCreateDatabase(&types.CreateDatabaseHeader{
291 Owner: accountAddr,
292 ResourceMeta: types.ResourceMeta{
293 TargetMiners: meta.TargetMiners,
294 Node: meta.Node,
295 Space: meta.Space,
296 Memory: meta.Memory,
297 LoadAvgPerCPU: meta.LoadAvgPerCPU,
298 EncryptionKey: meta.EncryptionKey,
299 UseEventualConsistency: meta.UseEventualConsistency,
300 ConsistencyLevel: meta.ConsistencyLevel,
301 IsolationLevel: meta.IsolationLevel,
302 },
303 GasPrice: meta.GasPrice,
304 AdvancePayment: meta.AdvancePayment,
305 TokenType: types.Particle,
306 Nonce: nonceResp.Nonce,

Callers 2

CreateDatabaseTaskFunction · 0.85
CreateProjectTaskFunction · 0.85

Calls 8

GetAccountByIDFunction · 0.92
NewCreateDatabaseFunction · 0.92
FromAccountAndNonceFunction · 0.92
LoadPrivateKeyMethod · 0.80
GetMethod · 0.65
SignMethod · 0.65
HashMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected