mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
45 lines
2.1 KiB
Python
45 lines
2.1 KiB
Python
import datetime
|
|
|
|
from sqlmodel import select
|
|
|
|
from common.core.deps import SessionDep, CurrentUser, Trans
|
|
from ..models.datasource import DsRecommendedProblem, RecommendedProblemBase, CoreDatasource, RecommendedProblemResponse
|
|
import orjson
|
|
|
|
|
|
def get_datasource_recommended(session: SessionDep, ds_id: int):
|
|
statement = select(DsRecommendedProblem).where(DsRecommendedProblem.datasource_id == ds_id)
|
|
dsRecommendedProblem = session.exec(statement).all()
|
|
return dsRecommendedProblem
|
|
|
|
def get_datasource_recommended_chart(session: SessionDep, ds_id: int):
|
|
statement = select(DsRecommendedProblem.question).where(DsRecommendedProblem.datasource_id == ds_id)
|
|
dsRecommendedProblems = session.exec(statement).all()
|
|
return dsRecommendedProblems
|
|
|
|
|
|
def get_datasource_recommended_base(session: SessionDep, ds_id: int):
|
|
statement = select(CoreDatasource.id,CoreDatasource.recommended_config).where(CoreDatasource.id == ds_id)
|
|
datasourceBase = session.exec(statement).first()
|
|
if datasourceBase is None:
|
|
return RecommendedProblemResponse(ds_id,0,None)
|
|
elif datasourceBase.recommended_config == 1:
|
|
return RecommendedProblemResponse(ds_id,1,None)
|
|
else:
|
|
dsRecommendedProblems = session.exec(select(DsRecommendedProblem.question).where(DsRecommendedProblem.datasource_id == ds_id)).all()
|
|
return RecommendedProblemResponse(ds_id,datasourceBase.recommended_config, orjson.dumps(dsRecommendedProblems).decode())
|
|
|
|
def save_recommended_problem(session: SessionDep,user: CurrentUser, data_info: RecommendedProblemBase):
|
|
session.query(DsRecommendedProblem).filter(DsRecommendedProblem.datasource_id == data_info.datasource_id).delete(synchronize_session=False)
|
|
problemInfo = data_info.problemInfo
|
|
if problemInfo is not None:
|
|
for problemItem in problemInfo:
|
|
problemItem.id = None
|
|
problemItem.create_time = datetime.datetime.now()
|
|
problemItem.create_by = user.id
|
|
record = DsRecommendedProblem(**problemItem.model_dump())
|
|
session.add(record)
|
|
session.flush()
|
|
session.refresh(record)
|
|
session.commit()
|