forked from aerospike/aerospike-client-nodejs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathput.js
executable file
·82 lines (76 loc) · 2.35 KB
/
put.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env node
// *****************************************************************************
// Copyright 2013-2023 Aerospike, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License")
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// *****************************************************************************
const Aerospike = require('aerospike')
const shared = require('./shared')
shared.runner()
async function put (client, argv) {
const key = new Aerospike.Key(argv.namespace, argv.set, argv.key)
const bins = shared.cli.parseBins(argv.bins)
const meta = buildMeta(argv)
const policy = buildPolicy(argv, client.config)
console.info(key, bins, meta, policy)
await client.put(key, bins, meta, policy)
}
function buildMeta (argv) {
const meta = { }
if (argv.ttl) {
meta.ttl = argv.ttl
}
return meta
}
function buildPolicy (argv, config) {
const policy = { ...config.policies.write }
if (argv.create) {
policy.exists = Aerospike.policy.exists.CREATE
}
if (argv.replace) {
policy.exists = Aerospike.policy.exists.REPLACE
}
if (argv.update) {
policy.exists = Aerospike.policy.exists.UPDATE
}
return policy
}
exports.command = 'put <key> <bins...>'
exports.describe = 'Write a record to the database.\n bins format is a key value pair as "<bin_name>=<bin_value>"'
exports.handler = shared.run(put)
exports.builder = {
'time-to-live': {
alias: 'ttl',
describe: 'Record\'s time-to-live in seconds',
group: 'Command:',
type: 'number'
},
create: {
describe: 'Create a new record',
group: 'Command:',
requiresArg: false,
conflicts: ['update', 'replace']
},
replace: {
describe: 'Replace an existing record',
group: 'Command:',
requiresArg: false,
conflicts: ['create', 'update']
},
update: {
describe: 'Update an existing record',
group: 'Command:',
requiresArg: false,
conflicts: ['create', 'replace']
}
}