Commit 17966b76 authored by 林洋洋's avatar 林洋洋

Merge branch 'dev_1.0.0' of http://gitlab.solr.com.cn:10000/linyangyang/db_gpt into dev_1.0.0

parents cc2841b3 60dba501
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2022/2/24 10:21
# @File : crud.py
# @IDE : PyCharm
# @desc : 增删改查
from typing import Any
from redis.asyncio import Redis
from fastapi import UploadFile
from sqlalchemy.exc import StatementError
from sqlalchemy.orm import joinedload, aliased
from sqlalchemy.orm.strategy_options import _AbstractLoad, contains_eager
from dbgpt.app.apps.core.exception import CustomException
from fastapi.encoders import jsonable_encoder
from sqlalchemy import select, false, and_
from dbgpt.app.apps.core.crud import DalBase
from sqlalchemy.ext.asyncio import AsyncSession
from dbgpt.app.apps.core.validator import vali_telephone
# from dbgpt.app.apps.utils.file.aliyun_oss import AliyunOSS, BucketConf
from dbgpt.app.apps.utils.excel.import_manage import ImportManage, FieldType
from dbgpt.app.apps.utils.excel.write_xlsx import WriteXlsx
# from dbgpt.app.apps.utils.send_email import EmailSender
# from dbgpt.app.apps.utils.sms.reset_passwd import ResetPasswordSMS
from dbgpt.app.apps.utils.tools import test_password
from . import models, schemas
from .params.similar import SimilarParams
from .schemas.similar import SimilarIn
from dbgpt.app.apps.config import settings
from dbgpt.app.apps.utils.excel.excel_manage import ExcelManage
from dbgpt.app.apps.system import crud as vadmin_system_crud
# from dbgpt.app.apps.vadmin.help import models as vadmin_help_models
import copy
from dbgpt.app.apps.utils import status
from datetime import datetime
from typing import List
class SimilarDal(DalBase):
def __init__(self, db: AsyncSession):
super(SimilarDal, self).__init__()
self.db = db
self.model = models.similar.VadminWordSimilar
self.schema = schemas.similar.SimilarSchemas
async def get_similars(self)-> Any:
sql = select(models.similar.VadminWordSimilar).where(models.similar.VadminWordSimilar.is_delete == false())
queryset = await self.db.scalars(sql)
"""
for row in dataqs:
print(f"编号:{row.id} 词条:{row.word_name} 近义词:{row.similar_name} ")
"""
return list(queryset.all())
async def get_similar_byid(self, qid):
sql1 = select(models.similar.VadminWordSimilar).where(models.similar.VadminWordSimilar.id == qid)
queryset1 = await self.db.scalars(sql1)
similar1 = queryset1.unique().first()
if similar1 is None:
print('similar1 is None')
else:
print(f"编号:{similar1.id} 词条:{similar1.word_name} 近义词:{similar1.similar_name} ")
async def create_similar_data(
self,
data: SimilarIn,
v_options: list[_AbstractLoad] = None,
v_return_obj: bool = False,
v_schema: Any = None
) -> Any:
"""
创建近义词
:param data:
:param v_options:
:param v_return_obj:
:param v_schema:
:return:
"""
if data is None:
raise CustomException("data is None!", code=status.HTTP_ERROR)
unique = await self.get_data(word_name=data.word_name, v_return_none=True)
if unique:
raise CustomException("词条已存在!", code=status.HTTP_ERROR)
obj = self.model()
obj.word_name = data.word_name
obj.similar_name = data.similar_name
#await self.flush(obj)
#return await self.out_dict(obj, v_options, v_return_obj, v_schema)
self.db.add(obj)
await self.db.commit()
return None
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2022/7/7 13:41
# @File : __init__.py
# @IDE : PyCharm
# @desc : 简要说明
from .similar import VadminWordSimilar
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2022/7/7 13:41
# @File : user.py
# @IDE : PyCharm
# @desc : 同义词模型
from datetime import datetime
from sqlalchemy.orm import relationship, Mapped, mapped_column
from sqlalchemy import Column, DateTime, Integer, String, Text, func
from dbgpt.app.apps.db.db_base import BaseModel
class VadminWordSimilar(BaseModel):
__tablename__ = "vadmin_word_similar"
__table_args__ = ({'comment': '同义词表'})
word_name: Mapped[str] = mapped_column(String(100), index=True, nullable=False, comment="词条")
similar_name: Mapped[str] = mapped_column(String(100), index=True, nullable=False, comment="近义词")
\ No newline at end of file
from .similar import SimilarParams
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2021/10/18 22:19
# @File : user.py
# @IDE : PyCharm
# @desc : 查询参数-类依赖项
"""
类依赖项-官方文档:https://fastapi.tiangolo.com/zh/tutorial/dependencies/classes-as-dependencies/
"""
from fastapi import Depends, Query
from dbgpt.app.apps.core.dependencies import Paging, QueryParams
class SimilarParams(QueryParams):
"""
列表分页
"""
def __init__(
self,
word_name: str | None = Query(None, title="词条"),
similar_name: str | None = Query(None, title="近义词"),
):
self.word_name = ("like", word_name)
self.similar_name = ("like", similar_name)
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2021/10/18 22:19
# @File : user.py
# @IDE : PyCharm
# @desc : pydantic 模型,用于数据库序列化操作
from datetime import datetime
from pydantic import BaseModel, ConfigDict, field_validator
from pydantic_core.core_schema import FieldValidationInfo
class SimilarSchemas(BaseModel):
word_name: str | None = ""
similar_name: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
class SimilarIn(SimilarSchemas):
"""
创建近义词
"""
word_name: str | None = ""
similar_name: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
class SimilarOut(SimilarSchemas):
word_name: str | None = ""
similar_name: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
class SimilarUpdate(BaseModel):
"""
更新近义词信息
"""
word_name: str | None = ""
similar_name: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
from redis.asyncio import Redis
from fastapi import APIRouter, Depends, Body, UploadFile, Request
from dbgpt.app.apps.utils.response import SuccessResponse
from dbgpt.app.apps.vadmin.auth.utils.current import AllUserAuth, FullAdminAuth, OpenAuth
from dbgpt.app.apps.vadmin.auth.utils.validation.auth import Auth
from dbgpt.app.apps.vadmin.word.models.similar import VadminWordSimilar
from dbgpt.app.apps.vadmin.word.params.similar import SimilarParams
from dbgpt.app.apps.vadmin.word.schemas.similar import SimilarSchemas, SimilarIn
from dbgpt.app.apps.vadmin.word import crud
from fastapi.encoders import jsonable_encoder
router = APIRouter()
###########################################################
# 同义词管理
###########################################################
@router.get("/get_similars", summary="获取同义词列表")
async def get_similars(auth: Auth = Depends(OpenAuth())):
model = VadminWordSimilar
print(f"编号:{model.id} 近义词:{model.word_name}")
datas = await crud.SimilarDal(auth.db).get_similars()
jsondatas = jsonable_encoder(datas)
for row in datas:
print(f"编号:{row.id} 词条:{row.word_name} 近义词:{row.similar_name} ")
return SuccessResponse(jsondatas, count=1)
@router.post("/create_similar", summary="创建同义词")
async def create_similar(data: Request, auth: Auth = Depends(OpenAuth())):
#async def create_similar(data: SimilarIn, auth: Auth = Depends(FullAdminAuth(permissions=["auth.user.create"]))):
if data is None:
print('SimilarIn is None')
else:
print(f"req词条:{data.query_params['word_name']} req近义词:{data.query_params['similar_name']} ")
data: SimilarIn
data.word_name = data.query_params['word_name']
data.similar_name = data.query_params['similar_name']
data.is_delete = 0
data.create_datetime = ''
data.update_datetime = ''
data.delete_datetime = ''
await crud.SimilarDal(auth.db).create_similar_data(data=data)
datas = []
return SuccessResponse(datas, count=1)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment