Изменен ИС ЖКХ РС
This commit is contained in:
48
isjkhrs/crud.py
Normal file
48
isjkhrs/crud.py
Normal file
@ -0,0 +1,48 @@
|
||||
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')
|
Reference in New Issue
Block a user