-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
104 lines (100 loc) · 2.17 KB
/
index.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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
var sqlite3 = require("cross-sqlcipher")
function Database(name) {
var i,db = new sqlite3.Database(name)
var get = db.get
var all = db.all
var exec = db.exec
var run = db.run
var prepare = db.prepare
var close = db.close
for (i in db) {
(function(f,i,who) {
who[i] = function() {
f.apply(db,arguments)
}
})(db[i],i,this)
}
this.close = function() {
return new Promise(function(resolve, reject) {
close.apply(db,[function() {
resolve()
}])
})
}
this.prepare = function(sql,params) {
if (!params) params=[]
return new Promise(function(resolve, reject) {
var stmt = prepare.apply(db,[sql,params,function(err) {
if (err) {
reject(err)
} else {
var stmt_run = stmt.run
stmt.run = function (params) {
if (!params) params=[]
return new Promise(function(resolve, reject) {
stmt_run.apply(stmt,[params,function(err) {
if (err) {
reject(err)
} else {
resolve(stmt)
}
}])
})
}
resolve(stmt)
}
}])
})
}
this.get = function(sql,params) {
if (!params) params=[]
return new Promise(function(resolve, reject) {
get.apply(db,[sql,params,function(err,row) {
if (err) {
reject(err)
} else {
resolve(row)
}
}])
})
}
this.all = function(sql,params) {
if (!params) params=[]
return new Promise(function(resolve, reject) {
all.apply(db,[sql,params,function(err,row) {
if (err) {
reject(err)
} else {
resolve(row)
}
}])
})
}
this.exec = function (sql) {
return new Promise(function(resolve, reject) {
exec.apply(db,[sql,function(err) {
if (err) {
reject(err)
} else {
resolve()
}
}])
})
}
this.run = function (sql,params) {
// db.run(sql,param,callback)
if (!params) params=[]
return new Promise(function(resolve, reject) {
run.apply(db,[sql,params,function(err) {
if (err) {
reject(err)
} else {
resolve([this.changes,this.lastID])
}
}])
})
}
}
module.exports = {
Database:Database
}