You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

136 lines
4.8 KiB

from sqlalchemy import delete, select, update, desc
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.metasecurity_do import MetaSecurityCol, MetaSecurityRow
from module_admin.entity.vo.metasecurity_vo import MetaSecurityColModel, MetaSecurityRowModel
from utils.page_util import PageUtil
class MetaSecurityDao:
"""
数据源安全管理模块数据库操作层
"""
@classmethod
async def get_meta_security_col_list(cls, db: AsyncSession, query_object: MetaSecurityColModel, is_page: bool = False):
"""
获取 MetaSecurityCol 的列表信息,支持模糊查询和分页
:param db: ORM对象
:param query_object: 查询参数对象
:param is_page: 是否开启分页
:return: 列表信息
"""
# 构建查询条件
filters = []
if query_object.dbCName:
filters.append(MetaSecurityCol.dbCName.like(f"%{query_object.dbCName}%"))
if query_object.obj_value:
filters.append(MetaSecurityCol.obj_value.like(f"%{query_object.obj_value}%"))
if query_object.dbTName:
filters.append(MetaSecurityCol.dbTName.like(f"%{query_object.dbTName}%"))
if query_object.dbSName:
filters.append(MetaSecurityCol.dbSName.like(f"%{query_object.dbSName}%"))
if query_object.dbRID:
filters.append(MetaSecurityCol.dbRID==query_object.dbRID)
# 构建查询语句
query = (
select(MetaSecurityCol)
.where(*filters)
.order_by(desc(MetaSecurityCol.create_time)) # 按创建时间降序排序
)
# 分页处理
col_list = await PageUtil.paginate(
db, query, query_object.page_num, query_object.page_size, is_page
)
return col_list
@classmethod
async def get_meta_security_row_list(cls, db: AsyncSession, query_object: MetaSecurityRowModel, is_page: bool = False):
"""
获取 MetaSecurityRow 的列表信息,支持模糊查询和分页
:param db: ORM对象
:param query_object: 查询参数对象
:param is_page: 是否开启分页
:return: 列表信息
"""
# 构建查询条件
filters = []
if query_object.dbCName:
filters.append(MetaSecurityRow.dbCName.like(f"%{query_object.dbCName}%"))
if query_object.obj_value:
filters.append(MetaSecurityRow.obj_value.like(f"%{query_object.obj_value}%"))
if query_object.dbTName:
filters.append(MetaSecurityRow.dbTName.like(f"%{query_object.dbTName}%"))
if query_object.dbSName:
filters.append(MetaSecurityRow.dbSName.like(f"%{query_object.dbSName}%"))
if query_object.dbRID:
filters.append(MetaSecurityRow.dbRID==query_object.dbRID)
# 构建查询语句
query = (
select(MetaSecurityRow)
.where(*filters)
.order_by(desc(MetaSecurityRow.create_time)) # 按创建时间降序排序
)
# 分页处理
row_list = await PageUtil.paginate(
db, query, query_object.page_num, query_object.page_size, is_page
)
return row_list
@classmethod
async def get_meta_security_col_by_id(cls, db: AsyncSession, colId: str):
col = (
await db.execute(
select(MetaSecurityCol)
.where(MetaSecurityCol.colId == colId)
)
).scalars().first()
return col
@classmethod
async def get_meta_security_row_by_id(cls, db: AsyncSession, rowId: str):
row = (
await db.execute(
select(MetaSecurityRow)
.where(MetaSecurityRow.rowId == rowId)
)
).scalars().first()
return row
@classmethod
async def add_meta_security_col(cls, db: AsyncSession,colModel:MetaSecurityColModel):
col = MetaSecurityCol(
**colModel.model_dump()
)
db.add(col)
await db.flush()
return col
@classmethod
async def add_meta_security_row(cls, db: AsyncSession,rowModel:MetaSecurityRowModel):
row = MetaSecurityRow(**rowModel.model_dump())
db.add(row)
await db.flush()
return row
@classmethod
async def delete_meta_security_col(cls, db: AsyncSession, colId: str):
await db.execute(delete(MetaSecurityCol).where(MetaSecurityCol.colId == colId))
@classmethod
async def delete_meta_security_row(cls, db: AsyncSession, rowId: str):
await db.execute(delete(MetaSecurityRow).where(MetaSecurityRow.rowId == rowId))
@classmethod
async def update_meta_security_col(cls, db: AsyncSession, update_data: MetaSecurityColModel):
await db.execute(update(MetaSecurityCol), [update_data])
await db.flush()
@classmethod
async def update_meta_security_row(cls, db: AsyncSession, update_data: MetaSecurityRowModel):
await db.execute(update(MetaSecurityRow), [update_data])
await db.flush()