Skip to content

Commit 261a660

Browse files
feat: UserWorkspace
1 parent 17fd6ff commit 261a660

File tree

4 files changed

+64
-6
lines changed

4 files changed

+64
-6
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"""021_user_ws_ddl
2+
3+
Revision ID: 440e9e41da3c
4+
Revises: a6b44114c17f
5+
Create Date: 2025-07-07 17:21:46.858887
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
import sqlmodel.sql.sqltypes
11+
12+
13+
# revision identifiers, used by Alembic.
14+
revision = '440e9e41da3c'
15+
down_revision = 'a6b44114c17f'
16+
branch_labels = None
17+
depends_on = None
18+
19+
20+
def upgrade():
21+
op.create_table(
22+
'sys_user_ws',
23+
sa.Column('id', sa.BigInteger(), primary_key=True, nullable=False),
24+
sa.Column('uid', sa.BigInteger(), nullable=False),
25+
sa.Column('oid', sa.BigInteger(), nullable=False),
26+
sa.Column('weight', sa.Integer(), nullable=False)
27+
)
28+
op.create_index(op.f('ix_sys_user_ws_id'), 'sys_user_ws', ['id'], unique=False)
29+
30+
31+
def downgrade():
32+
op.drop_index(op.f('ix_sys_user_ws_id'), table_name='sys_user_ws')
33+
op.drop_table('sys_user_ws')

backend/apps/system/api/workspace.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from fastapi import APIRouter
22
from sqlmodel import select
3-
from apps.system.models.system_model import WorkspaceBase, WorkspaceEditor, WorkspaceModel
3+
from apps.system.models.system_model import UserWsModel, WorkspaceBase, WorkspaceEditor, WorkspaceModel
4+
from apps.system.schemas.system_schema import UserWsBase, UserWsDTO
45
from common.core.deps import SessionDep, Trans
56
from common.utils.time import get_timestamp
67

@@ -49,6 +50,16 @@ async def delete(session: SessionDep, id: int):
4950
session.delete(db_model)
5051
session.commit()
5152

52-
@router.post("/user/{id}")
53-
async def bindUser(session: SessionDep, user_id: int):
54-
pass
53+
@router.post("/uws")
54+
async def create(session: SessionDep, creator: UserWsDTO):
55+
db_model = UserWsModel.model_validate(creator)
56+
session.add(db_model)
57+
session.commit()
58+
59+
@router.delete("/uws")
60+
async def delete(session: SessionDep, dto: UserWsBase):
61+
db_model: UserWsModel = session.exec(select(UserWsModel).where(UserWsModel.uid == dto.uid, UserWsModel.oid == dto.oid)).first()
62+
if not db_model:
63+
raise ValueError(f"UserWsModel not found")
64+
session.delete(db_model)
65+
session.commit()

backend/apps/system/models/system_model.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,12 @@ class WorkspaceEditor(WorkspaceBase, BaseCreatorDTO):
3131

3232
class WorkspaceModel(SnowflakeBase, WorkspaceBase, table=True):
3333
__tablename__ = "sys_workspace"
34-
create_time: int = Field(default=0, sa_type=BigInteger())
34+
create_time: int = Field(default=0, sa_type=BigInteger())
35+
36+
class UserWsBaseModel(SQLModel):
37+
uid: int = Field(nullable=False, sa_type=BigInteger())
38+
oid: int = Field(nullable=False, sa_type=BigInteger())
39+
weight: int = Field(default=0, nullable=False)
40+
41+
class UserWsModel(SnowflakeBase, UserWsBaseModel, table=True):
42+
__tablename__ = "sys_user_ws"

backend/apps/system/schemas/system_schema.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,10 @@ class UserGrid(UserEditor):
4141

4242
class PwdEditor(BaseModel):
4343
pwd: str
44-
new_pwd: str
44+
new_pwd: str
45+
46+
class UserWsBase(BaseModel):
47+
uid: int
48+
oid: int
49+
class UserWsDTO(UserWsBase):
50+
weight: int = 0

0 commit comments

Comments
 (0)