Files
service-app/isjkhrs/crud.py
2022-06-16 09:38:24 +09:00

54 lines
1.9 KiB
Python

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 GeneralViewSet:
def get_changing_list(db: Session, data: schemas.ChangingListInit):
return exec_procedure(db, 'uspGetChangingList', data.dict(), 'General')
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')