diff --git a/sqlor/sor.py b/sqlor/sor.py index 002dde5..47cb242 100755 --- a/sqlor/sor.py +++ b/sqlor/sor.py @@ -14,6 +14,8 @@ from appPublic.unicoding import uDict from appPublic.myTE import MyTemplateEngine from appPublic.objectAction import ObjectAction from appPublic.argsConvert import ArgsConvert,ConditionConvert +from appPublic.registerfunction import RegisterFunction +from appPublic.log import info from .filter import DBFilter def db_type_2_py_type(o): @@ -605,7 +607,17 @@ class SQLor(object): fns = ','.join(fields) vfns = ','.join(['${%s}$' % n for n in fields ]) sql = 'insert into %s.%s (%s) values (%s)' % (self.dbname, tablename,fns,vfns) - await self.runSQL({'sql_string':sql},ns,None) + rf = RegisterFunction() + rfname = f'{self.dbname}:{tablename}:c:before' + info(f'{rfname=}') + func = rf.get(rfname) + if func: + ns = func(ns) + r = await self.runSQL({'sql_string':sql},ns,None) + func = rf.get(f'{self.dbname}:{tablename}:c:after') + if func: + ns = func(ns) + return r async def R(self,tablename,ns,filters=None): desc = await self.I(tablename) @@ -650,8 +662,15 @@ class SQLor(object): u_str = ','.join(u) sql = 'update %s.%s set %s where %s' % (self.dbname, tablename, u_str,c_str) - await self.runSQL({'sql_string':sql},ns,None) - pass + rf = RegisterFunction() + func = rf.get(f'{self.dbname}:{tablename}:u:before') + if func: + ns = func(ns) + r = await self.runSQL({'sql_string':sql},ns,None) + func = rf.get(f'{self.dbname}:{tablename}:u:after') + if func: + ns = func(ns) + return r async def D(self,tablename,ns): desc = await self.I(tablename) @@ -660,6 +679,13 @@ class SQLor(object): c = [ '%s = ${%s}$' % (i,i) for i in condi ] c_str = ' and '.join(c) sql = 'delete from %s.%s where %s' % (self.dbname, tablename,c_str) - await self.runSQL({'sql_string':sql},ns,None) - + rf = RegisterFunction() + func = rf.get(f'{self.dbname}:{tablename}:d:before') + if func: + ns = func(ns) + r = await self.runSQL({'sql_string':sql},ns,None) + func = rf.get(f'{self.dbname}:{tablename}:d:after') + if func: + ns = func(ns) + return r