mm_sqlite 1.2.1 → 1.2.3
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/README.md +98 -348
- package/README_EN.md +293 -0
- package/db.js +742 -690
- package/eslint.config.js +235 -0
- package/index.js +676 -676
- package/link_model.js +96 -99
- package/package.json +11 -4
- package/sql.js +1341 -1239
package/link_model.js
CHANGED
|
@@ -2,131 +2,128 @@
|
|
|
2
2
|
* 连接数据库模型类
|
|
3
3
|
* @class
|
|
4
4
|
*/
|
|
5
|
-
class
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}, config);
|
|
5
|
+
class LinkModel {
|
|
6
|
+
/**
|
|
7
|
+
* 构造函数
|
|
8
|
+
* @param {object} config 配置参数
|
|
9
|
+
* @param sql
|
|
10
|
+
*/
|
|
11
|
+
constructor(config, sql) {
|
|
12
|
+
/**
|
|
13
|
+
* 配置参数
|
|
14
|
+
*/
|
|
15
|
+
this.config = {key: 'user_id',
|
|
16
|
+
value: 0,
|
|
17
|
+
clear_prefix: true, ...config};
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
/**
|
|
20
|
+
* 模型集合
|
|
21
|
+
*/
|
|
22
|
+
this.model = {};
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
/**
|
|
25
|
+
* 数据库集合
|
|
26
|
+
*/
|
|
27
|
+
this.dbs = {};
|
|
29
28
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
/**
|
|
30
|
+
* 数据库集合
|
|
31
|
+
*/
|
|
32
|
+
this.sql = sql;
|
|
33
|
+
}
|
|
35
34
|
}
|
|
36
35
|
|
|
37
36
|
/**
|
|
38
37
|
* 添加对象
|
|
39
|
-
* @param {
|
|
40
|
-
* @
|
|
38
|
+
* @param {string} table 表名
|
|
39
|
+
* @returns {object}
|
|
41
40
|
*/
|
|
42
41
|
Link_model.prototype.add = async function(table) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
42
|
+
var {
|
|
43
|
+
key,
|
|
44
|
+
value,
|
|
45
|
+
clear_prefix
|
|
46
|
+
} = this.config;
|
|
47
|
+
var db = this.sql.db();
|
|
48
|
+
db.table = table;
|
|
49
|
+
db.key = key;
|
|
50
|
+
db.size = 1;
|
|
51
|
+
db.page = 1;
|
|
52
|
+
var query = {};
|
|
53
|
+
query[key] = value;
|
|
54
|
+
var obj = await db.getObj(query);
|
|
55
|
+
if (!obj) {
|
|
56
|
+
var n = await db.add(query);
|
|
57
|
+
if (n) {
|
|
58
|
+
obj = await db.getObj(query);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
62
61
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
62
|
+
var name = table;
|
|
63
|
+
// 是否去除表前缀
|
|
64
|
+
if (clear_prefix) {
|
|
65
|
+
var arr = table.split('_');
|
|
66
|
+
if (arr.length > 1) {
|
|
67
|
+
name = table.right('_');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
this.model[name] = obj;
|
|
71
|
+
this.dbs[table] = db;
|
|
72
|
+
return this;
|
|
74
73
|
};
|
|
75
74
|
|
|
76
75
|
/**
|
|
77
76
|
* 初始化
|
|
78
|
-
* @param {
|
|
79
|
-
* @
|
|
77
|
+
* @param {object} sql 数据管理器
|
|
78
|
+
* @returns {object} 当前对象
|
|
80
79
|
*/
|
|
81
80
|
Link_model.prototype.init = function(sql) {
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
this.sql = sql;
|
|
82
|
+
return this;
|
|
84
83
|
};
|
|
85
84
|
|
|
86
85
|
/**
|
|
87
86
|
* 更新键值
|
|
88
|
-
* @param {
|
|
89
|
-
* @param {
|
|
90
|
-
* @
|
|
87
|
+
* @param {object} key
|
|
88
|
+
* @param {object} value
|
|
89
|
+
* @returns {object} 当前对象
|
|
91
90
|
*/
|
|
92
91
|
Link_model.prototype.update = function(key, value) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
92
|
+
var m = this.model;
|
|
93
|
+
for (var k in m) {
|
|
94
|
+
var o = m[k];
|
|
95
|
+
if (o[key] !== undefined) {
|
|
96
|
+
o[key] = value;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return this;
|
|
101
100
|
};
|
|
102
101
|
|
|
103
102
|
/**
|
|
104
103
|
* 合并属性
|
|
105
104
|
* @param {Array} arr_name 当前对象
|
|
106
|
-
* @
|
|
105
|
+
* @returns {object}
|
|
107
106
|
*/
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
});
|
|
130
|
-
};
|
|
107
|
+
LinkModel.prototype.merge = function(...arr_name) {
|
|
108
|
+
var model = {};
|
|
109
|
+
const arr_names = arr_name.length === 0 ? Object.keys(this.model) : arr_name;
|
|
110
|
+
for (var i = 0; i < arr_names.length; i++) {
|
|
111
|
+
var name = arr_names[i];
|
|
112
|
+
var o = this.model[name];
|
|
113
|
+
if (o) {
|
|
114
|
+
for (var k in o) {
|
|
115
|
+
model[k] = o[k];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
var self = this;
|
|
120
|
+
return new Proxy(model, {
|
|
121
|
+
set: function(obj, prop, value) {
|
|
122
|
+
self.update(prop, value);
|
|
123
|
+
obj[prop] = value;
|
|
124
|
+
return obj;
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
};
|
|
131
128
|
|
|
132
|
-
module.exports =
|
|
129
|
+
module.exports = LinkModel;
|
package/package.json
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mm_sqlite",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "高性能SQLite数据库操作模块,提供与mm_mysql完全兼容的API接口,支持异步操作、事务处理和批量操作",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "node test.js",
|
|
8
|
-
"dev": "nodemon test.js"
|
|
8
|
+
"dev": "nodemon test.js",
|
|
9
|
+
"lint": "eslint . --config eslint.config.js",
|
|
10
|
+
"lint:fix": "eslint . --config eslint.config.js --fix"
|
|
9
11
|
},
|
|
10
12
|
"repository": {
|
|
11
13
|
"type": "git",
|
|
@@ -36,8 +38,13 @@
|
|
|
36
38
|
"node": ">=14.0.0"
|
|
37
39
|
},
|
|
38
40
|
"dependencies": {
|
|
39
|
-
"mm_expand": "^
|
|
41
|
+
"mm_expand": "^2.0.0",
|
|
40
42
|
"sqlite3": "^5.1.7",
|
|
41
43
|
"sqlstring": "^2.3.3"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"eslint": "^8.57.0",
|
|
47
|
+
"eslint-plugin-jsdoc": "^46.9.1",
|
|
48
|
+
"mm_eslint": "^1.1.1"
|
|
42
49
|
}
|
|
43
|
-
}
|
|
50
|
+
}
|