from sqlalchemy.orm import Session from sqlalchemy import text from isjkhrs.database import get_table from isjkhrs import schemas def exec_procedure(session, proc_name, params, database: str = None): sql_params = ",".join([f"@{name}='{value}'" if type(value) in [str] else f"@{name}={value}" for name, value in params.items()]) dbstr = "" if database: dbstr = f"[{database}]." sql_string = """ DECLARE @return_value int; EXEC @return_value = {dbstr}[dbo].[{proc_name}] {params}; SELECT 'Return Value' = @return_value; """.format(dbstr=dbstr, proc_name=proc_name, params=sql_params) data = session.execute(sql_string).fetchall() session.commit() session.expire_all() return data def exec_procedure_wo_result(session, proc_name, params, database: str = None): sql_params = ",".join([f"@{name}='{value}'" if type(value) in [str] else f"@{name}={value}" for name, value in params.items()]) dbstr = "" if database: dbstr = f"[{database}]." sql_string = """ EXEC {dbstr}[dbo].[{proc_name}] {params} """.format(dbstr=dbstr, proc_name=proc_name, params=sql_params) session.execute(sql_string) session.commit() class FilterViewSet: """get""" """post""" def get_filter_types(db: Session, data: schemas.FilterTypeInit): return exec_procedure(db, 'uspGetFilterTypes', data.dict(), 'ISJKHRSTO') def get_filter_list(db: Session, data: schemas.FilterListInit): return exec_procedure(db, 'uspGetFilterList', data.dict(), 'ISJKHRSTO') def set_filter_list(db: Session, data: schemas.FilterSetInit): return exec_procedure_wo_result(db, 'uspSetFilterList', data.dict(), 'ISJKHRSTO')