-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrepair.js
More file actions
156 lines (141 loc) · 4.54 KB
/
repair.js
File metadata and controls
156 lines (141 loc) · 4.54 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
const mysqlx = require('@mysql/xdevapi');
const config = require('./db/connection').config;
const crypto = require('crypto');
const HASH_ALG = require('./settings.json').defaultEncryption;
var accountManager = require('./db/comptesManager')();
var accountCodeGen = require("./lib/helpers");
const settings = require('./settings.json');
function createRootAdmin(session){
let adminDoc = settings.initialAdmin;
let credentials = adminDoc.credentials;
return new Promise((resolve,reject)=>{
let schema = session.getSchema(config.database);
let sysadmins = schema.getCollection("sysadmins");
credentials.passwordHash = crypto.createHash(HASH_ALG).update(adminDoc.credentials.password).digest('hex');
delete credentials.password;
adminDoc.credentials = credentials;
console.log("Creating Initial Admin Account");
sysadmins.add(adminDoc).execute()
.then((rs)=>{
console.log("Account Created.");
resolve();
})
})
}
function createRootAccount(session){
let rootAccount = settings.rootAccount;
rootAccount.code = accountCodeGen(16);
return new Promise((resolve,reject)=>{
let schema = session.getSchema(config.database);
let accounts = schema.getCollection("accounts");
console.log("Creating Initial ROOT Account");
accounts.add(rootAccount).execute()
.then((rs)=>{
console.log("Account Created.");
resolve();
})
.then(()=>{
return accountManager.generateActivityForAccount(
session,
`${rootAccount._id}`,
{
txnType:"PROVISION",
reason:"Provisionning",
balanceBefore: `${0} ${rootAccount.currency}`,
balanceAfter:`${rootAccount.amount} ${rootAccount.currency}`
}
)
})
.then(()=>{
resolve();
})
})
}
function createBufferAccount(session){
let bufferAccount = settings.bufferAccount;
bufferAccount.code = accountCodeGen(16);
return new Promise((resolve,reject)=>{
let schema = session.getSchema(config.database);
let accounts = schema.getCollection("accounts");
console.log("Creating Initial BUFFER Account");
accounts.add(bufferAccount).execute()
.then((rs)=>{
console.log("Account Created.");
resolve();
})
})
}
function __init__(){
return new Promise((resolve,reject)=>{
let session;
mysqlx.getSession(config)
.then((_s) => {
session = _s;
})
.then((_)=>{
return createRootAdmin(session);
})
.then((_)=>{
return createRootAccount(session);
})
.then((_)=>{
return createBufferAccount(session);
})
.then((_)=>{
resolve();
})
});
}
function __destroy__(){
return new Promise((resolve,reject)=>{
let session;
let schema;
mysqlx.getSession(config)
.then((_session) => {
session = _session;
schema = session.getSchema(config.database);
return schema.getCollection("accountActivity").remove("_id != ''").execute();
})
.then(()=>{
return schema.getCollection("accounts").remove("_id != ''").execute();
})
.then(()=>{
return schema.getCollection("agencies").remove("_id != ''").execute();
})
.then(()=>{
return schema.getCollection("agencyUsers").remove("_id != ''").execute();
})
.then(()=>{
return;//schema.getCollection("bouquets").remove("_id != ''").execute();
})
.then(()=>{
return ;//schema.getCollection("coupons").remove("_id != ''").execute();
})
.then(()=>{
return schema.getCollection("customers").remove("_id != ''").execute();
})
.then(()=>{
return schema.getCollection("subscriptions").remove("_id != ''").execute();
})
.then(()=>{
return schema.getCollection("sysadmins").remove("_id != ''").execute();
})
.then(()=>{
return schema.getCollection("transactions").remove("_id != ''").execute();
})
.then((_)=>{
session.done();
})
.then(()=>{
resolve();
return;
})
});
}
function fun(){
__destroy__()
.then(()=>{
return __init__();
})
}
fun();