-
Notifications
You must be signed in to change notification settings - Fork 4
/
load.ts
86 lines (70 loc) · 2.41 KB
/
load.ts
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
83
84
85
86
import * as program from "commander";
import * as config from "config";
import * as knex from "knex";
import { Model, transaction } from "objection";
import * as path from "path";
import KeyModel from "../src/models/key";
let dbPath: string;
program.arguments("<db_path>").action(dbPathValue => {
dbPath = path.join(__dirname, "..", dbPathValue);
});
program.parse(process.argv);
Model.knex(knex(config.get("knex")));
async function main() {
const tx = await transaction.start(Model.knex());
try {
if (dbPath === undefined) {
console.error("no db_path given!");
process.exit(1);
}
const keystore = require(dbPath);
for (const addr of keystore.platform) {
const row = await KeyModel.query().findById([
"platform",
addr.address
]);
if (row != null) {
throw new Error(`Platform key ${addr.address} already exists!`);
}
await KeyModel.query(tx).insert({
type: "platform",
address: addr.address,
version: addr.version,
kdf: addr.crypto.kdf,
kdfparams: addr.crypto.kdfparams,
mac: addr.crypto.mac,
cipher: addr.crypto.cipher,
cipherparams: addr.crypto.cipherparams,
ciphertext: addr.crypto.ciphertext,
meta: addr.meta
});
}
for (const addr of keystore.asset) {
const row = await KeyModel.query().findById([
"asset",
addr.address
]);
if (row != null) {
throw new Error(`Asset key ${addr.address} already exists!`);
}
await KeyModel.query(tx).insert({
type: "asset",
address: addr.address,
version: addr.version,
kdf: addr.crypto.kdf,
kdfparams: addr.crypto.kdfparams,
mac: addr.crypto.mac,
cipher: addr.crypto.cipher,
cipherparams: addr.crypto.cipherparams,
ciphertext: addr.crypto.ciphertext,
meta: addr.meta
});
}
await tx.commit();
} catch (e) {
console.error(`Unexpected error found!: ${e}`);
await tx.rollback();
}
process.exit(0);
}
main().catch(console.error);