This commit is contained in:
yumoqing 2024-05-10 16:24:54 +08:00
parent ea15f463cd
commit 8b0db960a4
2 changed files with 37 additions and 4 deletions

View File

@ -35,9 +35,11 @@ except:
class DBFilter(object):
def __init__(self,filterjson):
if isinstance(filterjson, str):
filterjson = json.loads(filterjson)
self.filterjson = filterjson
def genFilterString(self, ns={}):
def gen(self, ns={}):
self.consts = {}
ret = self._genFilterSQL(self.filterjson, ns)
ns.update(self.consts)
@ -112,9 +114,40 @@ class DBFilter(object):
if 'const' in keys:
cnt = len(self.consts.keys())
name = f'filter_const_{cnt}'
self.consts.update({nmae:fj.get('const')})
self.consts.update({name:fj.get('const')})
sql = '%s %s ${%s}$' % (fj.get('field'), fj.get('op'), name)
return sql
sql = '%s %s ${%s}$' % (fj.get('field'), fj.get('op'), fj.get('var'))
return sql
def default_filterjson(fields: list, ns: dict):
fj = {}
c = [ {
'field':k,
'op':'=',
'var':k
} for k in ns.keys() if k in fields ]
return {
'AND':c
}
if __name__ == '__main__':
fj = {
"AND":[
{
"field":'field1',
"op":"=",
"var":"name"
},
{
"field":'del_flg',
"op":"=",
"const":"0"
}]
}
dbf = DBFilter(fj)
print(fj)
print(dbf.gen({'name':'joe'}))
print(f'{dbf.consts=}')

View File

@ -15,7 +15,6 @@ from appPublic.myTE import MyTemplateEngine
from appPublic.objectAction import ObjectAction
from appPublic.argsConvert import ArgsConvert,ConditionConvert
from .filter import DBFilter
from .const import *
def db_type_2_py_type(o):
if isinstance(o,decimal.Decimal):
@ -180,7 +179,7 @@ class SQLor(object):
default it not support paging
"""
page = int(NS.get(paging['pagename'],1))
rows = int(NS.get(paging['rowsname'],ROWS))
rows = int(NS.get(paging['rowsname'],80))
sort = NS.get(paging.get('sortname','sort'),None)
if isinstance(sort, list):
sort = ','.join(sort)
@ -556,6 +555,7 @@ class SQLor(object):
return desc
desc = {}
summary = [ i for i in await self.tables() if tablename.lower() == i['name'].lower() ]
print(f'{summary=}, {tablename=}, {desc=}')
pris = await self.primary(tablename)
primary = [i['name'] for i in pris ]
summary[0]['primary'] = primary