mm_sqlite 1.3.2 → 1.3.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/link_model.js ADDED
@@ -0,0 +1,129 @@
1
+ /**
2
+ * 连接数据库模型类
3
+ * @class
4
+ */
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};
18
+
19
+ /**
20
+ * 模型集合
21
+ */
22
+ this.model = {};
23
+
24
+ /**
25
+ * 数据库集合
26
+ */
27
+ this.dbs = {};
28
+
29
+ /**
30
+ * 数据库集合
31
+ */
32
+ this.sql = sql;
33
+ }
34
+ }
35
+
36
+ /**
37
+ * 添加对象
38
+ * @param {string} table 表名
39
+ * @returns {object}
40
+ */
41
+ Link_model.prototype.add = async function(table) {
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
+ }
61
+
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;
73
+ };
74
+
75
+ /**
76
+ * 初始化
77
+ * @param {object} sql 数据管理器
78
+ * @returns {object} 当前对象
79
+ */
80
+ Link_model.prototype.init = function(sql) {
81
+ this.sql = sql;
82
+ return this;
83
+ };
84
+
85
+ /**
86
+ * 更新键值
87
+ * @param {object} key
88
+ * @param {object} value
89
+ * @returns {object} 当前对象
90
+ */
91
+ Link_model.prototype.update = function(key, value) {
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;
100
+ };
101
+
102
+ /**
103
+ * 合并属性
104
+ * @param {Array} arr_name 当前对象
105
+ * @returns {object}
106
+ */
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
+ };
128
+
129
+ module.exports = LinkModel;
package/package.json CHANGED
@@ -1,36 +1,50 @@
1
- {
2
- "name": "mm_sqlite",
3
- "version": "1.3.2",
4
- "description": "这是超级美眉sqlite帮助函数模块,用于便捷操作sqlite,使用await方式,可以避免嵌套函数",
5
- "main": "index.js",
6
- "scripts": {
7
- "test": "node test.js"
8
- },
9
- "repository": {
10
- "type": "git",
11
- "url": "git+https://github.com/qiuwenwu/mm_sqlite.git"
12
- },
13
- "keywords": [
14
- "mysql",
15
- "async",
16
- "await",
17
- "promise",
18
- "add",
19
- "del",
20
- "set",
21
- "get",
22
- "query",
23
- "run",
24
- "exec"
25
- ],
26
- "author": "邱文武",
27
- "license": "ISC",
28
- "bugs": {
29
- "url": "https://github.com/qiuwenwu/mm_sqlite/issues"
30
- },
31
- "homepage": "https://github.com/qiuwenwu/mm_sqlite#readme",
32
- "dependencies": {
33
- "mm_sql": "^1.3.1",
34
- "sqlite3": "^4.1.0"
35
- }
36
- }
1
+ {
2
+ "name": "mm_sqlite",
3
+ "version": "1.3.3",
4
+ "description": "高性能SQLite数据库操作模块,提供与mm_mysql完全兼容的API接口,支持异步操作、事务处理和批量操作",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "node test.js",
8
+ "dev": "nodemon test.js",
9
+ "lint": "eslint . --config eslint.config.js",
10
+ "lint:fix": "eslint . --config eslint.config.js --fix"
11
+ },
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://gitee.com/qiuwenwu91/mm_sqlite.git"
15
+ },
16
+ "keywords": [
17
+ "sqlite",
18
+ "node.js",
19
+ "async",
20
+ "await",
21
+ "promise",
22
+ "database",
23
+ "transaction",
24
+ "batch",
25
+ "sql",
26
+ "mm_mysql",
27
+ "compatible",
28
+ "node-sqlite3",
29
+ "async-await"
30
+ ],
31
+ "author": "邱文武",
32
+ "license": "MIT",
33
+ "bugs": {
34
+ "url": "https://gitee.com/qiuwenwu91/mm_sqlite/issues"
35
+ },
36
+ "homepage": "https://gitee.com/qiuwenwu91/mm_sqlite#readme",
37
+ "engines": {
38
+ "node": ">=14.0.0"
39
+ },
40
+ "dependencies": {
41
+ "mm_expand": "^2.0.2",
42
+ "sqlite3": "^6.0.1",
43
+ "sqlstring": "^2.3.3"
44
+ },
45
+ "devDependencies": {
46
+ "eslint": "^10.1.0",
47
+ "eslint-plugin-jsdoc": "^62.9.0",
48
+ "mm_eslint": "^1.7.1"
49
+ }
50
+ }