import json import pandas as pd from fastapi import APIRouter, Depends, Request import crud, schemas from api import deps from db.ckdb import get_ck_db, CKDrive from db.redisdb import get_redis_pool, RedisDrive from models import ToSql router = APIRouter() @router.post("/sql") async def query_sql( request: Request, data_in: schemas.Sql, ckdb: CKDrive = Depends(get_ck_db), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """原 sql 查询 """ data = await ckdb.execute(data_in.sql) return schemas.Msg(code=0, msg='ok', data=data) @router.post("/event_model_sql") async def event_model_sql( request: Request, game: str, data_in: schemas.CkQuery, ckdb: CKDrive = Depends(get_ck_db), rdb: RedisDrive = Depends(get_redis_pool), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 事件分析模型 sql""" columns_json = await rdb.get(f'{game}_event') columns = json.loads(columns_json) to_sql = ToSql(data_in.dict(), game, 'event', columns.keys()) res = to_sql.get_sql_query_event_model() return schemas.Msg(code=0, msg='ok', data=res) @router.post("/event_model") async def event_model( request: Request, game: str, data_in: schemas.CkQuery, ckdb: CKDrive = Depends(get_ck_db), rdb: RedisDrive = Depends(get_redis_pool), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 事件分析""" columns_json = await rdb.get(f'{game}_event') columns = json.loads(columns_json) to_sql = ToSql(data_in.dict(), game, 'event', columns.keys()) sqls = to_sql.get_sql_query_event_model() res = [] for sql in sqls: data = await ckdb.execute(sql) res.append(data) return schemas.Msg(code=0, msg='ok', data=res)