from typing import List from sqlalchemy import desc, delete, func, select, update from sqlalchemy.ext.asyncio import AsyncSession from module_admin.entity.vo.user_vo import CurrentUserModel from module_admin.entity.vo.dataint_vo import VecsetPageObject from module_admin.entity.do.dataint_do import SysVecset from sqlalchemy import select, text, cast, Integer, and_, or_, outerjoin, func, join from utils.page_util import PageUtil class VecsetDao: """ 菜单管理模块数据库操作层 """ @classmethod async def get_vecset_list(cls, db: AsyncSession, vecset_query: VecsetPageObject): query = ( select(SysVecset).where( SysVecset.dasset_id == vecset_query.dasset_id if vecset_query.dasset_id else True, SysVecset.stab_name == vecset_query.stab_name if vecset_query.stab_name else True, SysVecset.squery == vecset_query.squery if vecset_query.squery else True, SysVecset.sanal_plan == vecset_query.sanal_plan if vecset_query.sanal_plan else True, SysVecset.status == vecset_query.status if vecset_query.status else True ).distinct() ) query_result = await PageUtil.paginate(db, query, vecset_query.page_num, vecset_query.page_size, True) return query_result @classmethod async def insert_vecset(cls, db: AsyncSession, sysVecset: SysVecset): db.add(sysVecset) await db.flush() return sysVecset @classmethod async def get_vecset_by_id(cls, db: AsyncSession, onum: str): result = ( ( await db.execute( select(SysVecset).where(SysVecset.onum == onum).distinct() ) ).scalars().first() ) return result @classmethod async def update_vecset(cls, db: AsyncSession, saveObj: dict): await db.execute(update(SysVecset), [saveObj]) @classmethod async def delete_vecset(cls, db: AsyncSession, array: List[str]): await db.execute(delete(SysVecset).where(SysVecset.onum.in_(array)))