UNPKG

psqlorm

Version:
194 lines (157 loc) 4.45 kB
'use strict'; const porm = require('../pqorm'); const PostgreModel = require('../pqmodel'); const db = { release: () => {}, query: () => {}, rollback:()=>{}, connect: () => { return db } }; let m = new porm(db); class TestModel extends PostgreModel { constructor (db) { super(db); this.tableName = 'test'; this.table = { column: { id: 'bigint', ilike: 'int', group: 'varchar(20)', if: 'int', AD: 'int' } } } } let pm = new TestModel(m); ;(async () => { //测试从处于释放状态的模型上继续执行新的sql。 let om = m.model('users').fetchSql() .where('age > ? and role = ?', [30, 'user']); console.log('run and get a free model...') console.log(await om.select()) console.log(await om.table('users').fetchSql().where('role != ?',['user']).select()) let r = await m.model('users') .fetchSql() .where('age > ? AND role ILIKE ?', [29, '%user%']) .where({username : {ILIKE : '%brave%'}}) .where('(points > ? OR points < ?)', [500, 200]) .limit(0, 2) .select(); console.log(r); console.log( await m.model('users').alias('u').leftJoin('userinfo as ui', 'ui.uid=u.id') .where('u.level > ? and u.role = ?', [0, 'user']) .where('u.forbid = ?', [0]) .limit(100, 0) .orderby('create_time', 'desc') .fetchSql() .select() ) r = await m.model('point_log') .fetchSql() .where({role: 'user', id : ['qwe','123','wee12','233e'], level: 2.5}) .where({ openid: null, info: { 'is not': null, 'ilike': '%teacher%' } }) .update({ '@points' : 'points+5', point_type : 'increase' }); console.log(r); r = await m.model('point_log') .fetchSql() .where({id : ['qwe','123','wee12','233e'], role : 'user'}) .where('is_test', 1) .where('status', 'ok') .where('key', null) .where({ point_time : { '>' : Date.now() - 864000000, '<' : Date.now() - 3600 } }) .update({ '@points' : 'points+5', point_type : 'increase', '@inner': 'inner+1' }); console.log(r); r = await m.model('special_limit') .fetchSql() .where({ '[special_name SIMILAR TO ? OR special_list SIMILAR TO ?]' : [ '%计算机%|%数学%', '%计算机%|%数学%' ], 'first_mask & 1' : { '!=' : 0 }, uncode : ['12345', '10086', '10085'], }) .order('create_time', 'DESC') .order('weight ASC') .select(); console.log(r); console.log(await m.model('users').fetchSql().autoId().insert({name:'success', role: 'user', tags:'x,y', sex: 1})) let dataList = [ { id : '123', points : '15', point_type : 'increase', }, { id : '124', points : 12, point_type : 'increase' } ]; r = await m.model('point_log') .fetchSql() .insertAll(dataList); console.log(r); console.log('>>>>>>>>>> 测试 关键字同名的列 -------------') console.log(pm.table.column, pm.__errors__) console.log( await pm.fetchSql().select(['id','group', 'ilike']) ) console.log( await pm.fetchSql().where({group: 'dsf'}).where('ilike', 'ok').select(['id', 'group', 'ilike']) ) console.log( await pm.fetchSql().where({group: 'ds'}).update({ group: 'ds1', ilike: '1w' }) ) console.log( await pm.fetchSql().where({group: 'ds'}).min('ilike') ) console.log( await pm.fetchSql().insert({ group: '123', ilike: 'd346' }) ) console.log( await pm.fetchSql().insert([ { group: 'dwd', ilike: 'oo' }, { group: 'ty', ilike: 'oo' }, ]) ) await pm.transaction(async (db, ret) => { let sqltext = await db.where({id: [1,2,3]}).fetchSql().select(); console.log(sqltext); sqltext = await db.model('user').where({id:234}).fetchSql().update({key: 234}); console.log(sqltext); }); })();