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

Function Create

client/driver.go:162–235  ·  view source on GitHub ↗

Create sends create database operation to block producer.

(meta ResourceMeta)

Source from the content-addressed store, hash-verified

160
161// Create sends create database operation to block producer.
162func Create(meta ResourceMeta) (txHash hash.Hash, dsn string, err error) {
163 if atomic.LoadUint32(&driverInitialized) == 0 {
164 err = ErrNotInitialized
165 return
166 }
167
168 var (
169 nonceReq = new(types.NextAccountNonceReq)
170 nonceResp = new(types.NextAccountNonceResp)
171 req = new(types.AddTxReq)
172 resp = new(types.AddTxResp)
173 privateKey *asymmetric.PrivateKey
174 clientAddr proto.AccountAddress
175 )
176 if privateKey, err = kms.GetLocalPrivateKey(); err != nil {
177 err = errors.Wrap(err, "get local private key failed")
178 return
179 }
180 if clientAddr, err = crypto.PubKeyHash(privateKey.PubKey()); err != nil {
181 err = errors.Wrap(err, "get local account address failed")
182 return
183 }
184 // allocate nonce
185 nonceReq.Addr = clientAddr
186
187 if err = requestBP(route.MCCNextAccountNonce, nonceReq, nonceResp); err != nil {
188 err = errors.Wrap(err, "allocate create database transaction nonce failed")
189 return
190 }
191
192 if meta.GasPrice == 0 {
193 meta.GasPrice = DefaultGasPrice
194 }
195 if meta.AdvancePayment == 0 {
196 meta.AdvancePayment = DefaultAdvancePayment
197 }
198
199 req.TTL = 1
200 req.Tx = types.NewCreateDatabase(&types.CreateDatabaseHeader{
201 Owner: clientAddr,
202 ResourceMeta: types.ResourceMeta{
203 TargetMiners: meta.TargetMiners,
204 Node: meta.Node,
205 Space: meta.Space,
206 Memory: meta.Memory,
207 LoadAvgPerCPU: meta.LoadAvgPerCPU,
208 EncryptionKey: meta.EncryptionKey,
209 UseEventualConsistency: meta.UseEventualConsistency,
210 ConsistencyLevel: meta.ConsistencyLevel,
211 IsolationLevel: meta.IsolationLevel,
212 },
213 GasPrice: meta.GasPrice,
214 AdvancePayment: meta.AdvancePayment,
215 TokenType: types.Particle,
216 Nonce: nonceResp.Nonce,
217 })
218
219 if err = req.Tx.Sign(privateKey); err != nil {

Callers 10

TestFullProcessFunction · 0.92
CreateMethod · 0.92
runCreateFunction · 0.92
initTestDBFunction · 0.92
TestFullProcessFunction · 0.92
benchMinerFunction · 0.92
TestCreateFunction · 0.70
TestWaitDBCreationFunction · 0.70

Calls 10

FormatDSNMethod · 0.95
GetLocalPrivateKeyFunction · 0.92
PubKeyHashFunction · 0.92
NewCreateDatabaseFunction · 0.92
FromAccountAndNonceFunction · 0.92
requestBPFunction · 0.85
NewConfigFunction · 0.85
PubKeyMethod · 0.80
SignMethod · 0.65
HashMethod · 0.65

Tested by 8

TestFullProcessFunction · 0.74
initTestDBFunction · 0.74
TestFullProcessFunction · 0.74
benchMinerFunction · 0.74
TestCreateFunction · 0.56
TestWaitDBCreationFunction · 0.56