mirror of
https://github.com/fastapi-practices/fastapi_best_architecture.git
synced 2025-08-18 15:00:46 +08:00
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
from sqlalchemy import String
|
|
from sqlalchemy.dialects.mysql import LONGTEXT
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from backend.app.models.base import MappedBase, id_key
|
|
|
|
|
|
class CasbinRule(MappedBase):
|
|
"""重写 casbin 中的 casbinRule model 类, 使用自定义 Base, 避免产生 alembic 迁移问题"""
|
|
|
|
__tablename__ = 'sys_casbin_rule'
|
|
|
|
id: Mapped[id_key]
|
|
ptype: Mapped[str] = mapped_column(String(255), comment='策略类型: p 或者 g')
|
|
v0: Mapped[str] = mapped_column(String(255), comment='角色 / 用户uuid')
|
|
v1: Mapped[str] = mapped_column(LONGTEXT, comment='api路径 / 角色名称')
|
|
v2: Mapped[str | None] = mapped_column(String(255), comment='请求方法')
|
|
v3: Mapped[str | None] = mapped_column(String(255))
|
|
v4: Mapped[str | None] = mapped_column(String(255))
|
|
v5: Mapped[str | None] = mapped_column(String(255))
|
|
|
|
def __str__(self):
|
|
arr = [self.ptype]
|
|
for v in (self.v0, self.v1, self.v2, self.v3, self.v4, self.v5):
|
|
if v is None:
|
|
break
|
|
arr.append(v)
|
|
return ', '.join(arr)
|
|
|
|
def __repr__(self):
|
|
return '<CasbinRule {}: "{}">'.format(self.id, str(self))
|