Update data scope and rule to m2m (#657)

This commit is contained in:
Wu Clan
2025-06-09 19:10:15 +08:00
committed by GitHub
parent b415dc8912
commit c9bbb105a3
4 changed files with 28 additions and 10 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ class CRUDDataRule(CRUDPlus[DataRule]):
:param name: 规则名称
:return:
"""
stmt = select(self.model).options(noload(self.model.scope)).order_by(desc(self.model.created_time))
stmt = select(self.model).options(noload(self.model.scopes)).order_by(desc(self.model.created_time))
filters = []
if name is not None:
+4 -6
View File
@@ -4,9 +4,10 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from sqlalchemy import ForeignKey, String
from sqlalchemy import String
from sqlalchemy.orm import Mapped, mapped_column, relationship
from backend.app.admin.model.m2m import sys_data_scope_rule
from backend.common.model import Base, id_key
if TYPE_CHECKING:
@@ -28,8 +29,5 @@ class DataRule(Base):
)
value: Mapped[str] = mapped_column(String(255), comment='规则值')
# 数据范围规则对多
scope_id: Mapped[int | None] = mapped_column(
ForeignKey('sys_data_scope.id', ondelete='SET NULL'), default=None, comment='数据范围关联 ID'
)
scope: Mapped[DataScope] = relationship(init=False, back_populates='rules')
# 数据范围规则对多
scopes: Mapped[list[DataScope]] = relationship(init=False, secondary=sys_data_scope_rule, back_populates='rules')
+3 -3
View File
@@ -7,7 +7,7 @@ from typing import TYPE_CHECKING
from sqlalchemy import String
from sqlalchemy.orm import Mapped, mapped_column, relationship
from backend.app.admin.model.m2m import sys_role_data_scope
from backend.app.admin.model.m2m import sys_data_scope_rule, sys_role_data_scope
from backend.common.model import Base, id_key
if TYPE_CHECKING:
@@ -23,8 +23,8 @@ class DataScope(Base):
name: Mapped[str] = mapped_column(String(50), unique=True, comment='名称')
status: Mapped[int] = mapped_column(default=1, comment='状态(0停用 1正常)')
# 数据范围规则对多
rules: Mapped[list[DataRule]] = relationship(init=False, back_populates='scope')
# 数据范围规则对多
rules: Mapped[list[DataRule]] = relationship(init=False, secondary=sys_data_scope_rule, back_populates='scopes')
# 角色数据范围多对多
roles: Mapped[list[Role]] = relationship(init=False, secondary=sys_role_data_scope, back_populates='scopes')
+20
View File
@@ -33,3 +33,23 @@ sys_role_data_scope = Table(
comment='数据范围 ID',
),
)
sys_data_scope_rule = Table(
'sys_data_scope_rule',
MappedBase.metadata,
Column('id', INT, primary_key=True, unique=True, index=True, autoincrement=True, comment='主键ID'),
Column(
'data_scope_id',
Integer,
ForeignKey('sys_data_scope.id', ondelete='CASCADE'),
primary_key=True,
comment='数据范围 ID',
),
Column(
'data_rule_id',
Integer,
ForeignKey('sys_data_rule.id', ondelete='CASCADE'),
primary_key=True,
comment='数据规则 ID',
),
)