masterrecord 0.0.22 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Entity/EntityModel.js +128 -120
- package/Entity/EntityModelBuilder.js +63 -63
- package/Entity/EntityTrackerModel.js +42 -42
- package/Masterrecord.js +173 -178
- package/Migrations/cli.js +105 -105
- package/Migrations/migrationTemplate.js +63 -63
- package/Migrations/migrations.js +46 -22
- package/Migrations/schema.js +42 -42
- package/QueryLanguage/_Expression.js +321 -321
- package/QueryLanguage/_LogicalQuery.js +22 -22
- package/QueryLanguage/_OperatorList.js +87 -87
- package/QueryLanguage/_QueryModel.js +441 -441
- package/QueryLanguage/_Tokenization.js +172 -172
- package/QueryLanguage/__Query.js +385 -385
- package/QueryLanguage/_simpleQuery.js +183 -183
- package/QueryLanguage/queryBuilder.js +51 -51
- package/{SQLEngine.js → SQLiteEngine.js} +56 -52
- package/Tools.js +55 -55
- package/package.json +27 -27
|
@@ -1,184 +1,184 @@
|
|
|
1
|
-
// ALL THIS SHOULD DO IS BUILD A SQL QUERY
|
|
2
|
-
var EntityTrackerModel = require('masterrecord/Entity/EntityTrackerModel');
|
|
3
|
-
var Tokenize = require('masterrecord/QueryLanguage/_Tokenization');
|
|
4
|
-
var QueryModel = require('masterrecord/QueryLanguage/_QueryModel');
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class simpleQuery{
|
|
8
|
-
constructor(model, context) {
|
|
9
|
-
this.__model = model;
|
|
10
|
-
this.__context = context;
|
|
11
|
-
this.__contextList = context.__allContexts;
|
|
12
|
-
this.__queryModel = new QueryModel(model, context);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
raw(query){
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
add(entityValue){
|
|
20
|
-
// This will call context API to REMOVE entity to update list
|
|
21
|
-
var ent = EntityTrackerModel.build(entityValue, this.__model);
|
|
22
|
-
ent.__state = "insert";
|
|
23
|
-
this.__context.__Track(ent);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
remove(entityValue){
|
|
27
|
-
// This will call context API to REMOVE entity to Delete list
|
|
28
|
-
var ent = EntityTrackerModel.build(entityValue, this.__model);
|
|
29
|
-
ent.__state = "delete";
|
|
30
|
-
this.__context.__Track(ent);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
track(entityValue){
|
|
34
|
-
var ent = EntityTrackerModel.build(entityValue, this.__model);
|
|
35
|
-
ent.__state = "track";
|
|
36
|
-
return this.__context.__Track(ent);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
toList(){
|
|
41
|
-
// Rule you cannot do fucntions on queryNames s.count() will through error
|
|
42
|
-
/// select delimiter
|
|
43
|
-
// select [ID] AS [ID],
|
|
44
|
-
// CASE WHEN ([Extent1].[Name] LIKE N'%jist%') THEN cast(1 as bit) WHEN ( NOT ([Extent1].[Name] LIKE N'%Jist%')) THEN cast(0 as bit) END AS [C1],
|
|
45
|
-
// cannot do where on fields that dont have relationships;;
|
|
46
|
-
var qq = `s => ({
|
|
47
|
-
id: s.Id,
|
|
48
|
-
jj: s.Name != "richy" && s.james === "josj",
|
|
49
|
-
name: !s.Name.contains("jist"),
|
|
50
|
-
NumberOfFruits : s.Fruits.where(r => r.name == "richard").single().Courses.distinct()
|
|
51
|
-
}`;
|
|
52
|
-
|
|
53
|
-
var were = `s => s.Fruits.where(r => r.name == "richard").single().flys.distinct().toList()`;
|
|
54
|
-
|
|
55
|
-
var QueryModelTest = {
|
|
56
|
-
name : "posts",
|
|
57
|
-
limit:{},
|
|
58
|
-
dateRange: "",
|
|
59
|
-
conditions:[],
|
|
60
|
-
selects: [{
|
|
61
|
-
returnName : "id",
|
|
62
|
-
field : {
|
|
63
|
-
property: "s",
|
|
64
|
-
name : "id"
|
|
65
|
-
},
|
|
66
|
-
property : "s",
|
|
67
|
-
},{
|
|
68
|
-
returnName : "jj",
|
|
69
|
-
field : {
|
|
70
|
-
property : "s",
|
|
71
|
-
name : "Name"
|
|
72
|
-
},
|
|
73
|
-
property : "s",
|
|
74
|
-
operators : [{
|
|
75
|
-
property : "s",
|
|
76
|
-
field: "Name",
|
|
77
|
-
operator: "notEqual",
|
|
78
|
-
value : "richy",
|
|
79
|
-
logicalOperator : "and"
|
|
80
|
-
},{
|
|
81
|
-
property : "s",
|
|
82
|
-
field: "james",
|
|
83
|
-
operator: "equal",
|
|
84
|
-
value : "josj",
|
|
85
|
-
logicalOperator : ""
|
|
86
|
-
}]
|
|
87
|
-
},{
|
|
88
|
-
returnName : "name",
|
|
89
|
-
field : {
|
|
90
|
-
property : "s",
|
|
91
|
-
name : "name"
|
|
92
|
-
},
|
|
93
|
-
property : "s",
|
|
94
|
-
operator: [{
|
|
95
|
-
property : "s",
|
|
96
|
-
field: "name",
|
|
97
|
-
operator: "not",
|
|
98
|
-
value : "",
|
|
99
|
-
logicalOperator : "",
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
property : "s",
|
|
103
|
-
field: "Name",
|
|
104
|
-
operator: "in",
|
|
105
|
-
value : "jist",
|
|
106
|
-
logicalOperator : "",
|
|
107
|
-
}]
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
returnName : "NumberOfFruits",
|
|
111
|
-
fields : {},
|
|
112
|
-
property : "s",
|
|
113
|
-
operator: [],
|
|
114
|
-
}
|
|
115
|
-
],
|
|
116
|
-
relationships : [{ // union all relationships together
|
|
117
|
-
name: "Fruits", // could be changed nested type
|
|
118
|
-
dateRange: "",
|
|
119
|
-
limits: {
|
|
120
|
-
amount :1,
|
|
121
|
-
object : "single" // nested limit will produce inner select top
|
|
122
|
-
},
|
|
123
|
-
selects:[],
|
|
124
|
-
relationships: [{
|
|
125
|
-
name: "flys", // could be changed nested type
|
|
126
|
-
dateRange: "",
|
|
127
|
-
limits: {},
|
|
128
|
-
selects:[],
|
|
129
|
-
relationships: [],
|
|
130
|
-
conditions: []
|
|
131
|
-
}],
|
|
132
|
-
conditions: [{
|
|
133
|
-
type: "where",
|
|
134
|
-
context: "r",
|
|
135
|
-
field : {
|
|
136
|
-
property : "r",
|
|
137
|
-
name : "id"
|
|
138
|
-
},
|
|
139
|
-
operators: [{
|
|
140
|
-
property : "r",
|
|
141
|
-
field: "name",
|
|
142
|
-
operator: "equal",
|
|
143
|
-
value : "richard",
|
|
144
|
-
logicalOperator : ""
|
|
145
|
-
}],
|
|
146
|
-
}]
|
|
147
|
-
}]
|
|
148
|
-
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
var tt = new Tokenize();
|
|
153
|
-
var tokenList = tt.Tokenize(qq);
|
|
154
|
-
var james = this.__queryModel.select(tokenList);
|
|
155
|
-
var jj = "";
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
where(query){
|
|
159
|
-
if(query !== undefined || query !== null){
|
|
160
|
-
var tt = new Tokenize();
|
|
161
|
-
var tokenList = tt.Tokenize(query);
|
|
162
|
-
this.__queryModel.condition(tokenList, "where");
|
|
163
|
-
}
|
|
164
|
-
return this;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
select(query){
|
|
168
|
-
var tt = new Tokenize();
|
|
169
|
-
var tokenList = tt.Tokenize(query);
|
|
170
|
-
this.__queryModel.select(tokenList);
|
|
171
|
-
return this;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// can only be used at the end of a query not an inner query
|
|
175
|
-
single(){
|
|
176
|
-
return this;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
distinct(){
|
|
180
|
-
return this;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
1
|
+
// ALL THIS SHOULD DO IS BUILD A SQL QUERY
|
|
2
|
+
var EntityTrackerModel = require('masterrecord/Entity/EntityTrackerModel');
|
|
3
|
+
var Tokenize = require('masterrecord/QueryLanguage/_Tokenization');
|
|
4
|
+
var QueryModel = require('masterrecord/QueryLanguage/_QueryModel');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class simpleQuery{
|
|
8
|
+
constructor(model, context) {
|
|
9
|
+
this.__model = model;
|
|
10
|
+
this.__context = context;
|
|
11
|
+
this.__contextList = context.__allContexts;
|
|
12
|
+
this.__queryModel = new QueryModel(model, context);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
raw(query){
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
add(entityValue){
|
|
20
|
+
// This will call context API to REMOVE entity to update list
|
|
21
|
+
var ent = EntityTrackerModel.build(entityValue, this.__model);
|
|
22
|
+
ent.__state = "insert";
|
|
23
|
+
this.__context.__Track(ent);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
remove(entityValue){
|
|
27
|
+
// This will call context API to REMOVE entity to Delete list
|
|
28
|
+
var ent = EntityTrackerModel.build(entityValue, this.__model);
|
|
29
|
+
ent.__state = "delete";
|
|
30
|
+
this.__context.__Track(ent);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
track(entityValue){
|
|
34
|
+
var ent = EntityTrackerModel.build(entityValue, this.__model);
|
|
35
|
+
ent.__state = "track";
|
|
36
|
+
return this.__context.__Track(ent);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
toList(){
|
|
41
|
+
// Rule you cannot do fucntions on queryNames s.count() will through error
|
|
42
|
+
/// select delimiter
|
|
43
|
+
// select [ID] AS [ID],
|
|
44
|
+
// CASE WHEN ([Extent1].[Name] LIKE N'%jist%') THEN cast(1 as bit) WHEN ( NOT ([Extent1].[Name] LIKE N'%Jist%')) THEN cast(0 as bit) END AS [C1],
|
|
45
|
+
// cannot do where on fields that dont have relationships;;
|
|
46
|
+
var qq = `s => ({
|
|
47
|
+
id: s.Id,
|
|
48
|
+
jj: s.Name != "richy" && s.james === "josj",
|
|
49
|
+
name: !s.Name.contains("jist"),
|
|
50
|
+
NumberOfFruits : s.Fruits.where(r => r.name == "richard").single().Courses.distinct()
|
|
51
|
+
}`;
|
|
52
|
+
|
|
53
|
+
var were = `s => s.Fruits.where(r => r.name == "richard").single().flys.distinct().toList()`;
|
|
54
|
+
|
|
55
|
+
var QueryModelTest = {
|
|
56
|
+
name : "posts",
|
|
57
|
+
limit:{},
|
|
58
|
+
dateRange: "",
|
|
59
|
+
conditions:[],
|
|
60
|
+
selects: [{
|
|
61
|
+
returnName : "id",
|
|
62
|
+
field : {
|
|
63
|
+
property: "s",
|
|
64
|
+
name : "id"
|
|
65
|
+
},
|
|
66
|
+
property : "s",
|
|
67
|
+
},{
|
|
68
|
+
returnName : "jj",
|
|
69
|
+
field : {
|
|
70
|
+
property : "s",
|
|
71
|
+
name : "Name"
|
|
72
|
+
},
|
|
73
|
+
property : "s",
|
|
74
|
+
operators : [{
|
|
75
|
+
property : "s",
|
|
76
|
+
field: "Name",
|
|
77
|
+
operator: "notEqual",
|
|
78
|
+
value : "richy",
|
|
79
|
+
logicalOperator : "and"
|
|
80
|
+
},{
|
|
81
|
+
property : "s",
|
|
82
|
+
field: "james",
|
|
83
|
+
operator: "equal",
|
|
84
|
+
value : "josj",
|
|
85
|
+
logicalOperator : ""
|
|
86
|
+
}]
|
|
87
|
+
},{
|
|
88
|
+
returnName : "name",
|
|
89
|
+
field : {
|
|
90
|
+
property : "s",
|
|
91
|
+
name : "name"
|
|
92
|
+
},
|
|
93
|
+
property : "s",
|
|
94
|
+
operator: [{
|
|
95
|
+
property : "s",
|
|
96
|
+
field: "name",
|
|
97
|
+
operator: "not",
|
|
98
|
+
value : "",
|
|
99
|
+
logicalOperator : "",
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
property : "s",
|
|
103
|
+
field: "Name",
|
|
104
|
+
operator: "in",
|
|
105
|
+
value : "jist",
|
|
106
|
+
logicalOperator : "",
|
|
107
|
+
}]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
returnName : "NumberOfFruits",
|
|
111
|
+
fields : {},
|
|
112
|
+
property : "s",
|
|
113
|
+
operator: [],
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
relationships : [{ // union all relationships together
|
|
117
|
+
name: "Fruits", // could be changed nested type
|
|
118
|
+
dateRange: "",
|
|
119
|
+
limits: {
|
|
120
|
+
amount :1,
|
|
121
|
+
object : "single" // nested limit will produce inner select top
|
|
122
|
+
},
|
|
123
|
+
selects:[],
|
|
124
|
+
relationships: [{
|
|
125
|
+
name: "flys", // could be changed nested type
|
|
126
|
+
dateRange: "",
|
|
127
|
+
limits: {},
|
|
128
|
+
selects:[],
|
|
129
|
+
relationships: [],
|
|
130
|
+
conditions: []
|
|
131
|
+
}],
|
|
132
|
+
conditions: [{
|
|
133
|
+
type: "where",
|
|
134
|
+
context: "r",
|
|
135
|
+
field : {
|
|
136
|
+
property : "r",
|
|
137
|
+
name : "id"
|
|
138
|
+
},
|
|
139
|
+
operators: [{
|
|
140
|
+
property : "r",
|
|
141
|
+
field: "name",
|
|
142
|
+
operator: "equal",
|
|
143
|
+
value : "richard",
|
|
144
|
+
logicalOperator : ""
|
|
145
|
+
}],
|
|
146
|
+
}]
|
|
147
|
+
}]
|
|
148
|
+
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
var tt = new Tokenize();
|
|
153
|
+
var tokenList = tt.Tokenize(qq);
|
|
154
|
+
var james = this.__queryModel.select(tokenList);
|
|
155
|
+
var jj = "";
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
where(query){
|
|
159
|
+
if(query !== undefined || query !== null){
|
|
160
|
+
var tt = new Tokenize();
|
|
161
|
+
var tokenList = tt.Tokenize(query);
|
|
162
|
+
this.__queryModel.condition(tokenList, "where");
|
|
163
|
+
}
|
|
164
|
+
return this;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
select(query){
|
|
168
|
+
var tt = new Tokenize();
|
|
169
|
+
var tokenList = tt.Tokenize(query);
|
|
170
|
+
this.__queryModel.select(tokenList);
|
|
171
|
+
return this;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// can only be used at the end of a query not an inner query
|
|
175
|
+
single(){
|
|
176
|
+
return this;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
distinct(){
|
|
180
|
+
return this;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
184
|
module.exports = simpleQuery;
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
// version 1.0.
|
|
3
|
-
|
|
4
|
-
var entityTrackerModel = require('masterrecord/Entity/EntityTrackerModel');
|
|
5
|
-
|
|
6
|
-
class queryBuilder{
|
|
7
|
-
constructor(model, context) {
|
|
8
|
-
this.__model = model;
|
|
9
|
-
this.__context = context;
|
|
10
|
-
this.__contextList = context.__allContexts;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
raw(query){
|
|
14
|
-
// get the query
|
|
15
|
-
var entityValue = this.__context._SQLEngine.get(query);
|
|
16
|
-
if(entityValue){
|
|
17
|
-
var ent = new entityTrackerModel();
|
|
18
|
-
ent.build(entityValue, this.__model);
|
|
19
|
-
ent.__state = "track";
|
|
20
|
-
this.__context.__Track(ent);
|
|
21
|
-
return ent;
|
|
22
|
-
}else{
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
add(entityValue){
|
|
29
|
-
// This will call context API to REMOVE entity to update list
|
|
30
|
-
var ent = new entityTrackerModel();
|
|
31
|
-
ent.build(entityValue, this.__model);
|
|
32
|
-
ent.__state = "insert";
|
|
33
|
-
this.__context.__Track(ent);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
remove(entityValue){
|
|
37
|
-
// This will call context API to REMOVE entity to Delete list
|
|
38
|
-
var ent = new entityTrackerModel();
|
|
39
|
-
ent.build(entityValue, this.__model);
|
|
40
|
-
ent.__state = "delete";
|
|
41
|
-
this.__context.__Track(ent);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
track(entityValue){
|
|
45
|
-
var ent = new entityTrackerModel();
|
|
46
|
-
ent.build(entityValue, this.__model);
|
|
47
|
-
ent.__state = "track";
|
|
48
|
-
return this.__context.__Track(ent);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
1
|
+
|
|
2
|
+
// version 1.0.15
|
|
3
|
+
|
|
4
|
+
var entityTrackerModel = require('masterrecord/Entity/EntityTrackerModel');
|
|
5
|
+
|
|
6
|
+
class queryBuilder{
|
|
7
|
+
constructor(model, context) {
|
|
8
|
+
this.__model = model;
|
|
9
|
+
this.__context = context;
|
|
10
|
+
this.__contextList = context.__allContexts;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
raw(query){
|
|
14
|
+
// get the query
|
|
15
|
+
var entityValue = this.__context._SQLEngine.get(query);
|
|
16
|
+
if(entityValue){
|
|
17
|
+
var ent = new entityTrackerModel();
|
|
18
|
+
ent.build(entityValue, this.__model);
|
|
19
|
+
ent.__state = "track";
|
|
20
|
+
this.__context.__Track(ent);
|
|
21
|
+
return ent;
|
|
22
|
+
}else{
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
add(entityValue){
|
|
29
|
+
// This will call context API to REMOVE entity to update list
|
|
30
|
+
var ent = new entityTrackerModel();
|
|
31
|
+
ent.build(entityValue, this.__model);
|
|
32
|
+
ent.__state = "insert";
|
|
33
|
+
this.__context.__Track(ent);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
remove(entityValue){
|
|
37
|
+
// This will call context API to REMOVE entity to Delete list
|
|
38
|
+
var ent = new entityTrackerModel();
|
|
39
|
+
ent.build(entityValue, this.__model);
|
|
40
|
+
ent.__state = "delete";
|
|
41
|
+
this.__context.__Track(ent);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
track(entityValue){
|
|
45
|
+
var ent = new entityTrackerModel();
|
|
46
|
+
ent.build(entityValue, this.__model);
|
|
47
|
+
ent.__state = "track";
|
|
48
|
+
return this.__context.__Track(ent);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
52
|
module.exports = queryBuilder;
|
|
@@ -1,52 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
class
|
|
3
|
-
update(query){
|
|
4
|
-
var query = ` UPDATE ${query.tableName}
|
|
5
|
-
SET ${query.arg}
|
|
6
|
-
WHERE ${query.primaryKey} = ${query.value}` // primary key for that table =
|
|
7
|
-
return this.execute(query);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
delete(query){
|
|
11
|
-
var query = `DELETE FROM ${query.tableName} WHERE ${query.primaryKey} = ${query.value}`;
|
|
12
|
-
return this.execute(query);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
insert(query){
|
|
16
|
-
var query = `INSERT INTO ${query.tableName} (${query.columns})
|
|
17
|
-
VALUES (${query.values})`;
|
|
18
|
-
return this.execute(query);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
execute(query){
|
|
22
|
-
|
|
23
|
-
switch(this.db.__name) {
|
|
24
|
-
case "better-sqlite3":
|
|
25
|
-
console.log("SQL:", query);
|
|
26
|
-
return this.db.exec(query);
|
|
27
|
-
// code block
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
get(query){
|
|
33
|
-
switch(this.db.__name) {
|
|
34
|
-
case "better-sqlite3":
|
|
35
|
-
try {
|
|
36
|
-
console.log("SQL:", query);
|
|
37
|
-
return this.db.prepare(query).get();
|
|
38
|
-
} catch (err) {
|
|
39
|
-
console.error(err);
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
// code block
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
setDB(
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
1
|
+
|
|
2
|
+
class SQLiteEngine {
|
|
3
|
+
update(query){
|
|
4
|
+
var query = ` UPDATE ${query.tableName}
|
|
5
|
+
SET ${query.arg}
|
|
6
|
+
WHERE ${query.primaryKey} = ${query.value}` // primary key for that table =
|
|
7
|
+
return this.execute(query);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
delete(query){
|
|
11
|
+
var query = `DELETE FROM ${query.tableName} WHERE ${query.primaryKey} = ${query.value}`;
|
|
12
|
+
return this.execute(query);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
insert(query){
|
|
16
|
+
var query = `INSERT INTO ${query.tableName} (${query.columns})
|
|
17
|
+
VALUES (${query.values})`;
|
|
18
|
+
return this.execute(query);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
execute(query){
|
|
22
|
+
|
|
23
|
+
switch(this.db.__name) {
|
|
24
|
+
case "better-sqlite3":
|
|
25
|
+
console.log("SQL:", query);
|
|
26
|
+
return this.db.exec(query);
|
|
27
|
+
// code block
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get(query){
|
|
33
|
+
switch(this.db.__name) {
|
|
34
|
+
case "better-sqlite3":
|
|
35
|
+
try {
|
|
36
|
+
console.log("SQL:", query);
|
|
37
|
+
return this.db.prepare(query).get();
|
|
38
|
+
} catch (err) {
|
|
39
|
+
console.error(err);
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
// code block
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
setDB(env, sqlName){
|
|
48
|
+
const sqlite3 = require(sqlName);
|
|
49
|
+
let DBAddress = `${env.connection}${env.env}.sqlite3`;
|
|
50
|
+
this.db = new sqlite3(DBAddress, env);
|
|
51
|
+
db.__name = sqlName;
|
|
52
|
+
return db;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
module.exports = SQLiteEngine;
|