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.
137 lines
4.8 KiB
137 lines
4.8 KiB
18 hours ago
|
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()
|