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): class DBFilter(object):
def __init__(self,filterjson): def __init__(self,filterjson):
if isinstance(filterjson, str):
filterjson = json.loads(filterjson)
self.filterjson = filterjson self.filterjson = filterjson
def genFilterString(self, ns={}): def gen(self, ns={}):
self.consts = {} self.consts = {}
ret = self._genFilterSQL(self.filterjson, ns) ret = self._genFilterSQL(self.filterjson, ns)
ns.update(self.consts) ns.update(self.consts)
@ -112,9 +114,40 @@ class DBFilter(object):
if 'const' in keys: if 'const' in keys:
cnt = len(self.consts.keys()) cnt = len(self.consts.keys())
name = f'filter_const_{cnt}' 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) sql = '%s %s ${%s}$' % (fj.get('field'), fj.get('op'), name)
return sql return sql
sql = '%s %s ${%s}$' % (fj.get('field'), fj.get('op'), fj.get('var')) sql = '%s %s ${%s}$' % (fj.get('field'), fj.get('op'), fj.get('var'))
return sql 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.objectAction import ObjectAction
from appPublic.argsConvert import ArgsConvert,ConditionConvert from appPublic.argsConvert import ArgsConvert,ConditionConvert
from .filter import DBFilter from .filter import DBFilter
from .const import *
def db_type_2_py_type(o): def db_type_2_py_type(o):
if isinstance(o,decimal.Decimal): if isinstance(o,decimal.Decimal):
@ -180,7 +179,7 @@ class SQLor(object):
default it not support paging default it not support paging
""" """
page = int(NS.get(paging['pagename'],1)) 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) sort = NS.get(paging.get('sortname','sort'),None)
if isinstance(sort, list): if isinstance(sort, list):
sort = ','.join(sort) sort = ','.join(sort)
@ -556,6 +555,7 @@ class SQLor(object):
return desc return desc
desc = {} desc = {}
summary = [ i for i in await self.tables() if tablename.lower() == i['name'].lower() ] summary = [ i for i in await self.tables() if tablename.lower() == i['name'].lower() ]
print(f'{summary=}, {tablename=}, {desc=}')
pris = await self.primary(tablename) pris = await self.primary(tablename)
primary = [i['name'] for i in pris ] primary = [i['name'] for i in pris ]
summary[0]['primary'] = primary summary[0]['primary'] = primary