w-orm-postgresql 1.0.0 → 1.0.1
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 +19 -18
- package/dist/w-orm-postgresql.umd.js +2 -2
- package/dist/w-orm-postgresql.umd.js.map +1 -1
- package/docs/WOrmPostgresql.html +7 -7
- package/docs/WOrmPostgresql.mjs.html +61 -43
- package/docs/index.html +1 -1
- package/g-basic.mjs +20 -20
- package/package.json +5 -5
- package/script.txt +4 -4
- package/src/WOrmPostgresql.mjs +60 -42
- package/test/basic.test.mjs +18 -19
package/g-basic.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
//import
|
|
1
|
+
import WOrm from './src/WOrmPostgresql.mjs'
|
|
2
|
+
//import WOrm from './dist/w-orm-postgresql.umd.js'
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
let opt = {
|
|
@@ -105,11 +105,11 @@ let rsm = [
|
|
|
105
105
|
|
|
106
106
|
async function test() {
|
|
107
107
|
|
|
108
|
-
//
|
|
109
|
-
let
|
|
110
|
-
// console.log('
|
|
108
|
+
//wo
|
|
109
|
+
let wo = WOrm(opt)
|
|
110
|
+
// console.log('wo', wo)
|
|
111
111
|
|
|
112
|
-
await
|
|
112
|
+
await wo.createTable(opt.cl, 'time', {
|
|
113
113
|
time: '2000-01-01T00:00:00Z', //time
|
|
114
114
|
name: 'abc', //string
|
|
115
115
|
value: 0.1, //float
|
|
@@ -122,12 +122,12 @@ async function test() {
|
|
|
122
122
|
})
|
|
123
123
|
|
|
124
124
|
//on
|
|
125
|
-
|
|
125
|
+
wo.on('change', function(mode, data, res) {
|
|
126
126
|
console.log('change', mode)
|
|
127
127
|
})
|
|
128
128
|
|
|
129
129
|
//delAll
|
|
130
|
-
await
|
|
130
|
+
await wo.delAll()
|
|
131
131
|
.then(function(msg) {
|
|
132
132
|
console.log('delAll then', msg)
|
|
133
133
|
})
|
|
@@ -136,7 +136,7 @@ async function test() {
|
|
|
136
136
|
})
|
|
137
137
|
|
|
138
138
|
//insert
|
|
139
|
-
await
|
|
139
|
+
await wo.insert(rs)
|
|
140
140
|
.then(function(msg) {
|
|
141
141
|
console.log('insert then', msg)
|
|
142
142
|
})
|
|
@@ -145,7 +145,7 @@ async function test() {
|
|
|
145
145
|
})
|
|
146
146
|
|
|
147
147
|
//save
|
|
148
|
-
await
|
|
148
|
+
await wo.save(rsm, { autoInsert: true })
|
|
149
149
|
.then(function(msg) {
|
|
150
150
|
console.log('save then', msg)
|
|
151
151
|
})
|
|
@@ -154,34 +154,34 @@ async function test() {
|
|
|
154
154
|
})
|
|
155
155
|
|
|
156
156
|
//select all
|
|
157
|
-
let ss = await
|
|
157
|
+
let ss = await wo.select()
|
|
158
158
|
console.log('select all', ss)
|
|
159
159
|
|
|
160
160
|
//select
|
|
161
|
-
let so = await
|
|
161
|
+
let so = await wo.select({ name: 'rosemary' })
|
|
162
162
|
console.log('select by name', so)
|
|
163
163
|
|
|
164
164
|
//select by $and, $gt, $lt
|
|
165
|
-
let spa = await
|
|
165
|
+
let spa = await wo.select({ '$and': [{ value: { '$gt': 123 } }, { value: { '$lt': 200 } }] })
|
|
166
166
|
console.log('select by $and, $gt, $lt', spa)
|
|
167
167
|
|
|
168
168
|
//select by $or, $gte, $lte
|
|
169
|
-
let spb = await
|
|
169
|
+
let spb = await wo.select({ '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 200 } }] })
|
|
170
170
|
console.log('select by $or, $gte, $lte', spb)
|
|
171
171
|
|
|
172
172
|
//select by $or, $and, $ne, $in, $nin
|
|
173
|
-
let spc = await
|
|
173
|
+
let spc = await wo.select({ '$or': [{ '$and': [{ value: { '$ne': 123 } }, { value: { '$in': [123, 321, 123.456, 456] } }, { value: { '$nin': [456, 654] } }] }, { '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 400 } }] }] })
|
|
174
174
|
console.log('select by $or, $and, $ne, $in, $nin', spc)
|
|
175
175
|
|
|
176
176
|
// //select by regex
|
|
177
|
-
// let sr = await
|
|
177
|
+
// let sr = await wo.select({ name: { $regex: 'PeT', $options: '$i' } })
|
|
178
178
|
// console.log('selectReg', sr)
|
|
179
179
|
|
|
180
180
|
//del
|
|
181
181
|
let d = {
|
|
182
182
|
time: '2024-01-01T00:00:00Z',
|
|
183
183
|
}
|
|
184
|
-
await
|
|
184
|
+
await wo.del(d)
|
|
185
185
|
.then(function(msg) {
|
|
186
186
|
console.log('del then', msg)
|
|
187
187
|
})
|
|
@@ -193,7 +193,7 @@ async function test() {
|
|
|
193
193
|
let ds = ss.filter(function(v) {
|
|
194
194
|
return v.name.indexOf('peter') >= 0 || v.name.indexOf('kettle') >= 0 || v.name.indexOf('sandler') >= 0
|
|
195
195
|
})
|
|
196
|
-
await
|
|
196
|
+
await wo.del(ds)
|
|
197
197
|
.then(function(msg) {
|
|
198
198
|
console.log('del then', msg)
|
|
199
199
|
})
|
|
@@ -202,7 +202,7 @@ async function test() {
|
|
|
202
202
|
})
|
|
203
203
|
|
|
204
204
|
//select all final
|
|
205
|
-
let ss2 = await
|
|
205
|
+
let ss2 = await wo.select()
|
|
206
206
|
console.log('select all final', ss2)
|
|
207
207
|
|
|
208
208
|
}
|
|
@@ -303,4 +303,4 @@ test()
|
|
|
303
303
|
// }
|
|
304
304
|
// ]
|
|
305
305
|
|
|
306
|
-
//node
|
|
306
|
+
//node g-basic.mjs
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "w-orm-postgresql",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"main": "dist/w-orm-postgresql.umd.js",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"mongo-sql": "^6.2.0",
|
|
7
|
-
"pg": "^8.
|
|
7
|
+
"pg": "^8.15.6",
|
|
8
8
|
"lodash-es": "^4.17.21",
|
|
9
|
-
"wsemi": "^1.7.
|
|
9
|
+
"wsemi": "^1.7.90"
|
|
10
10
|
},
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"w-package-tools": "^1.0.
|
|
12
|
+
"w-package-tools": "^1.0.90"
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
|
-
"test": "mocha --parallel --timeout 60000
|
|
15
|
+
"test": "mocha --parallel --timeout 60000",
|
|
16
16
|
"deploy": "gh-pages -d docs"
|
|
17
17
|
},
|
|
18
18
|
"repository": {
|
package/script.txt
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
#node
|
|
2
|
-
node
|
|
1
|
+
#node toolg/addVersion.mjs
|
|
2
|
+
node toolg/modifyReadme.mjs
|
|
3
3
|
|
|
4
|
-
node
|
|
4
|
+
node toolg/cleanFolder.mjs
|
|
5
5
|
./node_modules/.bin/jsdoc -c .jsdoc
|
|
6
6
|
|
|
7
|
-
node
|
|
7
|
+
node toolg/gDistRollup.mjs
|
|
8
8
|
|
|
9
9
|
git add . -A
|
|
10
10
|
git commit -m 'modify: '
|
package/src/WOrmPostgresql.mjs
CHANGED
|
@@ -37,7 +37,6 @@ function WOrmPostgresql(opt = {}) {
|
|
|
37
37
|
//url
|
|
38
38
|
let url = get(opt, 'url')
|
|
39
39
|
if (!isestr(url)) {
|
|
40
|
-
// url = `postgresql://${user}:${password}@${ip}:${port}`
|
|
41
40
|
url = 'postgresql://user:password@127.0.0.1:5432'
|
|
42
41
|
}
|
|
43
42
|
|
|
@@ -146,14 +145,14 @@ function WOrmPostgresql(opt = {}) {
|
|
|
146
145
|
// console.log('PgClient', PgClient)
|
|
147
146
|
|
|
148
147
|
/**
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
148
|
+
* 創建資料表
|
|
149
|
+
*
|
|
150
|
+
* @memberOf WOrmPostgresql
|
|
151
|
+
* @param {String} cl 輸入資料表名字串
|
|
152
|
+
* @param {String} pk 輸入主鍵字串
|
|
153
|
+
* @param {Array|Object} arr 輸入數據物件陣列或數據物件
|
|
154
|
+
* @returns {Promise} 回傳Promise,resolve回傳成功訊息,reject回傳錯誤訊息
|
|
155
|
+
*/
|
|
157
156
|
async function createTable(cl, pk, arr) {
|
|
158
157
|
let isErr = false
|
|
159
158
|
let res = null
|
|
@@ -228,13 +227,13 @@ function WOrmPostgresql(opt = {}) {
|
|
|
228
227
|
}
|
|
229
228
|
|
|
230
229
|
/**
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
230
|
+
* 查詢數據
|
|
231
|
+
*
|
|
232
|
+
* @memberOf WOrmPostgresql
|
|
233
|
+
* @param {Object} [find={}] 輸入查詢條件物件
|
|
234
|
+
* @param {Object} [order={}] 輸入排序條件物件
|
|
235
|
+
* @returns {Promise} 回傳Promise,resolve回傳數據,reject回傳錯誤訊息
|
|
236
|
+
*/
|
|
238
237
|
async function select(find = {}, order = {}) {
|
|
239
238
|
let isErr = false
|
|
240
239
|
let res = null
|
|
@@ -307,16 +306,25 @@ function WOrmPostgresql(opt = {}) {
|
|
|
307
306
|
}
|
|
308
307
|
|
|
309
308
|
/**
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
309
|
+
* 插入數據
|
|
310
|
+
*
|
|
311
|
+
* @memberOf WOrmPostgresql
|
|
312
|
+
* @param {Object|Array} data 輸入數據物件或陣列
|
|
313
|
+
* @returns {Promise} 回傳Promise,resolve回傳插入結果,reject回傳錯誤訊息
|
|
314
|
+
*/
|
|
316
315
|
async function insert(data) {
|
|
317
316
|
let isErr = false
|
|
318
317
|
let res = null
|
|
319
318
|
|
|
319
|
+
//check
|
|
320
|
+
if (!iseobj(data) && !isearr(data)) {
|
|
321
|
+
return {
|
|
322
|
+
n: 0,
|
|
323
|
+
nInserted: 0,
|
|
324
|
+
ok: 1,
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
320
328
|
//cloneDeep
|
|
321
329
|
data = cloneDeep(data)
|
|
322
330
|
|
|
@@ -409,18 +417,23 @@ function WOrmPostgresql(opt = {}) {
|
|
|
409
417
|
}
|
|
410
418
|
|
|
411
419
|
/**
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
+
* 儲存數據
|
|
421
|
+
*
|
|
422
|
+
* @memberOf WOrmPostgresql
|
|
423
|
+
* @param {Object|Array} data 輸入數據物件或陣列
|
|
424
|
+
* @param {Object} [option={}] 輸入設定物件,預設為{}
|
|
425
|
+
* @param {boolean} [option.autoInsert=true] 輸入是否於儲存時發現原本無數據,則自動改以插入處理,預設為true
|
|
426
|
+
* @returns {Promise} 回傳Promise,resolve回傳儲存結果,reject回傳錯誤訊息
|
|
427
|
+
*/
|
|
420
428
|
async function save(data, option = {}) {
|
|
421
429
|
let isErr = false
|
|
422
430
|
let res = null
|
|
423
431
|
|
|
432
|
+
//check
|
|
433
|
+
if (!iseobj(data) && !isearr(data)) {
|
|
434
|
+
return []
|
|
435
|
+
}
|
|
436
|
+
|
|
424
437
|
//cloneDeep
|
|
425
438
|
data = cloneDeep(data)
|
|
426
439
|
|
|
@@ -650,16 +663,21 @@ function WOrmPostgresql(opt = {}) {
|
|
|
650
663
|
}
|
|
651
664
|
|
|
652
665
|
/**
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
666
|
+
* 刪除數據
|
|
667
|
+
*
|
|
668
|
+
* @memberOf WOrmPostgresql
|
|
669
|
+
* @param {Object|Array} data 輸入數據物件或陣列
|
|
670
|
+
* @returns {Promise} 回傳Promise,resolve回傳刪除結果,reject回傳錯誤訊息
|
|
671
|
+
*/
|
|
659
672
|
async function del(data) {
|
|
660
673
|
let isErr = false
|
|
661
674
|
let res = null
|
|
662
675
|
|
|
676
|
+
//check
|
|
677
|
+
if (!iseobj(data) && !isearr(data)) {
|
|
678
|
+
return []
|
|
679
|
+
}
|
|
680
|
+
|
|
663
681
|
//cloneDeep
|
|
664
682
|
data = cloneDeep(data)
|
|
665
683
|
|
|
@@ -770,12 +788,12 @@ function WOrmPostgresql(opt = {}) {
|
|
|
770
788
|
}
|
|
771
789
|
|
|
772
790
|
/**
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
791
|
+
* 刪除全部數據,需與del分開,避免未傳數據導致直接刪除全表
|
|
792
|
+
*
|
|
793
|
+
* @memberOf WOrmPostgresql
|
|
794
|
+
* @param {Object} [find={}] 輸入刪除條件物件
|
|
795
|
+
* @returns {Promise} 回傳Promise,resolve回傳刪除結果,reject回傳錯誤訊息
|
|
796
|
+
*/
|
|
779
797
|
async function delAll(find = {}) {
|
|
780
798
|
let isErr = false
|
|
781
799
|
let res = null
|
package/test/basic.test.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import assert from 'assert'
|
|
2
|
-
import
|
|
2
|
+
import WOrm from '../src/WOrmPostgresql.mjs'
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
function isWindows() {
|
|
@@ -13,7 +13,6 @@ if (isWindows()) {
|
|
|
13
13
|
let vans = {}
|
|
14
14
|
let vget = {}
|
|
15
15
|
|
|
16
|
-
|
|
17
16
|
before(async function () {
|
|
18
17
|
|
|
19
18
|
let opt = {
|
|
@@ -117,15 +116,15 @@ if (isWindows()) {
|
|
|
117
116
|
},
|
|
118
117
|
]
|
|
119
118
|
|
|
120
|
-
//
|
|
121
|
-
let
|
|
119
|
+
//wo
|
|
120
|
+
let wo = WOrm(opt)
|
|
122
121
|
|
|
123
122
|
//on
|
|
124
|
-
|
|
123
|
+
wo.on('change', function(mode, data, res) {
|
|
125
124
|
// console.log('change', mode)
|
|
126
125
|
})
|
|
127
126
|
|
|
128
|
-
await
|
|
127
|
+
await wo.createTable(opt.cl, 'time', {
|
|
129
128
|
time: '2000-01-01T00:00:00Z', //time
|
|
130
129
|
name: 'abc', //string
|
|
131
130
|
value: 0.1, //float
|
|
@@ -140,7 +139,7 @@ if (isWindows()) {
|
|
|
140
139
|
//delAll
|
|
141
140
|
rt = null
|
|
142
141
|
vans[1] = { ok: 1 }
|
|
143
|
-
await
|
|
142
|
+
await wo.delAll()
|
|
144
143
|
.then(function(msg) {
|
|
145
144
|
// console.log('delAll then', msg)
|
|
146
145
|
//考慮有不同初始狀態, 僅比對ok欄位
|
|
@@ -157,7 +156,7 @@ if (isWindows()) {
|
|
|
157
156
|
//insert
|
|
158
157
|
rt = null
|
|
159
158
|
vans[2] = { n: 13, nInserted: 13, ok: 1 }
|
|
160
|
-
await
|
|
159
|
+
await wo.insert(rs)
|
|
161
160
|
.then(function(msg) {
|
|
162
161
|
// console.log('insert then', msg)
|
|
163
162
|
rt = msg
|
|
@@ -177,7 +176,7 @@ if (isWindows()) {
|
|
|
177
176
|
{ n: 1, nModified: 1, ok: 1 },
|
|
178
177
|
{ n: 1, nInserted: 1, ok: 1 }
|
|
179
178
|
]
|
|
180
|
-
await
|
|
179
|
+
await wo.save(rsm, { autoInsert: true })
|
|
181
180
|
.then(function(msg) {
|
|
182
181
|
// console.log('save then', msg)
|
|
183
182
|
rt = msg
|
|
@@ -206,7 +205,7 @@ if (isWindows()) {
|
|
|
206
205
|
{ time: new Date('2025-01-01T00:12:00.000Z'), name: 'peter', value: 99 },
|
|
207
206
|
{ time: new Date('2025-01-01T00:13:00.000Z'), name: 'sandler', value: null }
|
|
208
207
|
]
|
|
209
|
-
await
|
|
208
|
+
await wo.select()
|
|
210
209
|
.then(function(msg) {
|
|
211
210
|
// console.log('select all then', msg)
|
|
212
211
|
rt = msg
|
|
@@ -224,7 +223,7 @@ if (isWindows()) {
|
|
|
224
223
|
{ time: new Date('2025-01-01T00:04:00.000Z'), name: 'rosemary', value: 123.1236 },
|
|
225
224
|
{ time: new Date('2025-01-01T00:07:00.000Z'), name: 'rosemary', value: 124.76 }
|
|
226
225
|
]
|
|
227
|
-
await
|
|
226
|
+
await wo.select({ name: 'rosemary' })
|
|
228
227
|
.then(function(msg) {
|
|
229
228
|
// console.log('select all then', msg)
|
|
230
229
|
rt = msg
|
|
@@ -244,7 +243,7 @@ if (isWindows()) {
|
|
|
244
243
|
{ time: new Date('2025-01-01T00:07:00.000Z'), name: 'rosemary', value: 124.76 },
|
|
245
244
|
{ time: new Date('2025-01-01T00:09:00.000Z'), name: 'peter', value: 127 }
|
|
246
245
|
]
|
|
247
|
-
await
|
|
246
|
+
await wo.select({ '$and': [{ value: { '$gt': 123 } }, { value: { '$lt': 200 } }] })
|
|
248
247
|
.then(function(msg) {
|
|
249
248
|
// console.log('select all then', msg)
|
|
250
249
|
rt = msg
|
|
@@ -264,7 +263,7 @@ if (isWindows()) {
|
|
|
264
263
|
{ time: new Date('2025-01-01T00:08:00.000Z'), name: 'kettle', value: 524 },
|
|
265
264
|
{ time: new Date('2025-01-01T00:11:00.000Z'), name: 'kettle(modify)', value: 447 }
|
|
266
265
|
]
|
|
267
|
-
await
|
|
266
|
+
await wo.select({ '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 200 } }] })
|
|
268
267
|
.then(function(msg) {
|
|
269
268
|
// console.log('select all then', msg)
|
|
270
269
|
rt = msg
|
|
@@ -284,7 +283,7 @@ if (isWindows()) {
|
|
|
284
283
|
{ time: new Date('2025-01-01T00:08:00.000Z'), name: 'kettle', value: 524 },
|
|
285
284
|
{ time: new Date('2025-01-01T00:11:00.000Z'), name: 'kettle(modify)', value: 447 }
|
|
286
285
|
]
|
|
287
|
-
await
|
|
286
|
+
await wo.select({ '$or': [{ '$and': [{ value: { '$ne': 123 } }, { value: { '$in': [123, 321, 123.456, 456] } }, { value: { '$nin': [456, 654] } }] }, { '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 400 } }] }] })
|
|
288
287
|
.then(function(msg) {
|
|
289
288
|
// console.log('select all then', msg)
|
|
290
289
|
rt = msg
|
|
@@ -298,7 +297,7 @@ if (isWindows()) {
|
|
|
298
297
|
// //select by regex
|
|
299
298
|
// rt = null
|
|
300
299
|
// vans[9] = []
|
|
301
|
-
// let sr = await
|
|
300
|
+
// let sr = await wo.select({ name: { $regex: 'PeT', $options: '$i' } })
|
|
302
301
|
// .then(function(msg) {
|
|
303
302
|
// // console.log('select all then', msg)
|
|
304
303
|
// rt = msg
|
|
@@ -315,7 +314,7 @@ if (isWindows()) {
|
|
|
315
314
|
let d = {
|
|
316
315
|
time: '2024-01-01T00:00:00Z',
|
|
317
316
|
}
|
|
318
|
-
await
|
|
317
|
+
await wo.del(d)
|
|
319
318
|
.then(function(msg) {
|
|
320
319
|
// console.log('del then', msg)
|
|
321
320
|
rt = msg
|
|
@@ -340,11 +339,11 @@ if (isWindows()) {
|
|
|
340
339
|
{ n: 1, nDeleted: 1, ok: 1 },
|
|
341
340
|
{ n: 1, nDeleted: 1, ok: 1 }
|
|
342
341
|
]
|
|
343
|
-
let ss = await
|
|
342
|
+
let ss = await wo.select()
|
|
344
343
|
let ds = ss.filter(function(v) {
|
|
345
344
|
return v.name.indexOf('peter') >= 0 || v.name.indexOf('kettle') >= 0 || v.name.indexOf('sandler') >= 0
|
|
346
345
|
})
|
|
347
|
-
await
|
|
346
|
+
await wo.del(ds)
|
|
348
347
|
.then(function(msg) {
|
|
349
348
|
// console.log('del then', msg)
|
|
350
349
|
rt = msg
|
|
@@ -363,7 +362,7 @@ if (isWindows()) {
|
|
|
363
362
|
{ time: new Date('2025-01-01T00:07:00.000Z'), name: 'rosemary', value: 124.76 },
|
|
364
363
|
{ time: new Date('2025-01-01T00:10:00.000Z'), name: 'rosemary(modify)', value: 113.98 }
|
|
365
364
|
]
|
|
366
|
-
await
|
|
365
|
+
await wo.select()
|
|
367
366
|
.then(function(msg) {
|
|
368
367
|
// console.log('select all then', msg)
|
|
369
368
|
rt = msg
|