Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
后端:table定义model都使用sa_column定义
  • Loading branch information
4linuxfun committed Mar 14, 2024
commit a29724a9a1452792f17ffa24f07a0232e689e1b9
18 changes: 9 additions & 9 deletions server/models/internal/dictonary.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from typing import Optional, List, Union
from sqlmodel import SQLModel, Field, Relationship, Column, Boolean, Integer
from sqlmodel import SQLModel, Field, Relationship, Column, Boolean, Integer, String


class DataDictBase(SQLModel):
name: str = Field(max_length=50, sa_column_kwargs={'comment': '字典名称'})
code: str = Field(max_length=100, sa_column_kwargs={'comment': '字典编号'})
desc: Optional[str] = Field(max_length=100, sa_column_kwargs={'comment': '描述'})
name: str = Field(sa_column=Column(String(50), nullable=False, comment='字典名称'))
code: str = Field(sa_column=Column(String(100), nullable=False, comment='字典编号'))
desc: Optional[str] = Field(sa_column=Column(String(100), default=None, comment='描述'))


class DataDict(DataDictBase, table=True):
Expand All @@ -20,11 +20,11 @@ class DataDictSearch(SQLModel):


class DictBase(SQLModel):
label: str = Field(max_length=50, sa_column_kwargs={'comment': '名称'})
value: str = Field(max_length=100, sa_column_kwargs={'comment': '数据值'})
desc: Optional[str] = Field(max_length=100, sa_column_kwargs={'comment': '描述'})
sort: Optional[int] = Field(default=1, sa_column_kwargs={'comment': '排序值,越小越靠前'})
enable: bool = Field(default=True, sa_column=Column(Boolean, comment='是否启用'))
label: str = Field(sa_column=Column(String(50), nullable=False, comment='名称'))
value: str = Field(sa_column=Column(String(100), nullable=False, comment='数据值'))
desc: Optional[str] = Field(sa_column=Column(String(100), default=None, comment='描述'))
sort: Optional[int] = Field(sa_column=Column(Integer, default=1, comment='排序值,越小越靠前'))
enable: bool = Field(sa_column=Column(Boolean, default=True, comment='是否启用'))
dict_id: Optional[int] = Field(foreign_key="data_dict.id")


Expand Down
20 changes: 10 additions & 10 deletions server/models/internal/menu.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
from typing import Optional, List
from sqlmodel import SQLModel, Field, Relationship, Column, Boolean, Integer
from sqlmodel import SQLModel, Field, Relationship, Column, Boolean, Integer, String, Float
from .relationships import RoleMenu


class MenuBase(SQLModel):
id: Optional[int] = Field(sa_column=Column('id', Integer, primary_key=True, autoincrement=True))
name: str = Field(max_length=20, sa_column_kwargs={'comment': '菜单名'})
icon: Optional[str] = Field(default=None, max_length=50, sa_column_kwargs={'comment': 'Icon图标'})
path: Optional[str] = Field(max_length=100, sa_column_kwargs={'comment': '路径'})
component: Optional[str] = Field(max_length=50, sa_column_kwargs={'comment': '组件'})
auth: Optional[str] = Field(max_length=50, sa_column_kwargs={'comment': '授权标识'})
type: str = Field(max_length=10, sa_column_kwargs={'comment': '类型'})
parent_id: Optional[int] = Field(default=None, sa_column_kwargs={'comment': '父级ID'})
sort: Optional[float] = Field(default=None, sa_column_kwargs={'comment': '菜单排序'})
enable: bool = Field(default=True, sa_column=Column(Boolean, comment='启用'))
name: str = Field(sa_column=Column(String(20), nullable=False, comment='菜单名'))
icon: Optional[str] = Field(sa_column=Column(String(50), default=None, comment='Icon图标'))
path: Optional[str] = Field(sa_column=Column(String(100), default=None, comment='路径'))
component: Optional[str] = Field(sa_column=Column(String(50), default=None, comment='组件'))
auth: Optional[str] = Field(sa_column=Column(String(50), default=None, comment='授权标识'))
type: str = Field(sa_column=Column(String(10), nullable=False, comment='类型'))
parent_id: Optional[int] = Field(sa_column=Column(Integer, default=None, comment='父级ID'))
sort: Optional[float] = Field(sa_column=Column(Float, default=None, comment='菜单排序'))
enable: bool = Field(sa_column=Column(Boolean, default=True, comment='启用'))


class Menu(MenuBase, table=True):
Expand Down
19 changes: 11 additions & 8 deletions server/models/internal/role.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,28 @@
from typing import Optional, List, TYPE_CHECKING, Union
from sqlmodel import SQLModel, Field, Relationship, Column, Integer, Boolean
from sqlmodel import SQLModel, Field, Relationship, Column, Integer, Boolean, String
from .relationships import RoleMenu, UserRole

if TYPE_CHECKING:
from .user import User
from .menu import Menu


class RoleBase(SQLModel):
name: Union[str, None] = Field(max_length=20, default=None, sa_column_kwargs={'unique': True, 'comment': '角色名'})
description: Union[str, None] = Field(max_length=100, default=None, sa_column_kwargs={'comment': '描述'})
enable: Union[bool, None] = Field(default=True, sa_column=Column(Boolean, comment='启用'))


class Role(RoleBase, table=True):
class Role(SQLModel, table=True):
__tablename__ = "roles"
id: Optional[int] = Field(sa_column=Column('id', Integer, primary_key=True, autoincrement=True))
name: Union[str, None] = Field(sa_column=Column(String(20), nullable=False, unique=True, comment='角色名'))
description: Union[str, None] = Field(sa_column=Column(String(100), default=None, comment='描述'))
enable: Union[bool, None] = Field(sa_column=Column(Boolean, default=True, comment='启用'))
menus: List["Menu"] = Relationship(back_populates="roles", link_model=RoleMenu)
users: List["User"] = Relationship(back_populates="roles", link_model=UserRole)


class RoleBase(SQLModel):
name: Union[str, None] = Field(max_length=20, nullable=False)
description: Union[str, None] = Field(max_length=100, default=None)
enable: Union[bool, None] = Field(default=True)


class RoleInsert(RoleBase):
menus: List[int]

Expand Down
30 changes: 18 additions & 12 deletions server/models/internal/user.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Optional, List, Union, Literal, TYPE_CHECKING
from pydantic import BaseModel
from sqlmodel import SQLModel, Field, Relationship, Column, Integer, Boolean
from sqlmodel import SQLModel, Field, Relationship, Column, Integer, Boolean, String
from .relationships import UserRole, UserJob
from .role import Role

Expand All @@ -9,15 +9,27 @@
from .job import Job


class User(SQLModel, table=True):
__tablename__ = 'user'
id: Optional[int] = Field(sa_column=Column('id', Integer, primary_key=True, autoincrement=True))
name: Union[str, None] = Field(sa_column=Column(String(20), nullable=False, unique=True, comment='用户名'))
enable: Union[bool, None] = Field(sa_column=Column(Boolean, default=True, comment='可用'))
avatar: Union[str, None] = Field(sa_column=Column(String(100), default=None, comment='头像'))
email: Union[str, None] = Field(sa_column=Column(String(20), default=None, comment='邮箱'))
password: Optional[str] = Field(sa_column=Column(String(50), comment='密码'))
roles: List['Role'] = Relationship(back_populates="users", link_model=UserRole)
jobs: List['Job'] = Relationship(back_populates="user", link_model=UserJob)


class UserWithOutPasswd(SQLModel):
name: Union[str, None] = Field(max_length=20, default=None, sa_column_kwargs={'unique': True, 'comment': '用户名'})
enable: Union[bool, None] = Field(default=True, sa_column=Column(Boolean, comment='可用'))
avatar: Union[str, None] = Field(max_length=100, default=None, sa_column_kwargs={'comment': '头像'})
email: Union[str, None] = Field(max_length=20, default=None, sa_column_kwargs={'comment': '邮箱'})
name: Union[str, None] = Field(max_length=20, nullable=False)
enable: Union[bool, None] = Field(default=True)
avatar: Union[str, None] = Field(max_length=100, default=None)
email: Union[str, None] = Field(max_length=20, default=None)


class UserBase(UserWithOutPasswd):
password: Optional[str] = Field(max_length=50, sa_column_kwargs={'comment': '密码'})
password: Optional[str] = Field(sa_column=Column(String(50), comment='密码'))
# age: Optional[int] = Field(..., title='年龄', lt=120)


Expand All @@ -36,12 +48,6 @@ class UserRoles(SQLModel):
enable: List[str] = []


class User(UserBase, table=True):
id: Optional[int] = Field(sa_column=Column('id', Integer, primary_key=True, autoincrement=True))
roles: List['Role'] = Relationship(back_populates="users", link_model=UserRole)
jobs: List['Job'] = Relationship(back_populates="user", link_model=UserJob)


class UserCreateWithRoles(SQLModel):
# POST请求时,传递过来的模型
user: UserBase
Expand Down
15 changes: 15 additions & 0 deletions server/routers/internal/host.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from typing import Optional, List
from fastapi import APIRouter, Depends, status, HTTPException
from sqlmodel import Session
from server.models.internal.host import CreateGroup
from ...common.response_code import ApiResponse, SearchResponse
from ...common.database import get_session
from ... import crud

router = APIRouter(prefix='/api')


@router.post('/host/group', summary='添加主机分组')
async def create_group(group: CreateGroup, session: Session = Depends(get_session)):
crud.internal.group.insert(session, group)
return ApiResponse()