mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
feat: Workspace
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
"""020_workspace_ddl
|
||||
|
||||
Revision ID: a6b44114c17f
|
||||
Revises: dcaecd481715
|
||||
Create Date: 2025-07-06 18:03:36.143060
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
import sqlmodel.sql.sqltypes
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'a6b44114c17f'
|
||||
down_revision = 'dcaecd481715'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.create_table(
|
||||
'sys_workspace',
|
||||
sa.Column('id', sa.BigInteger(), primary_key=True, nullable=False),
|
||||
sa.Column('name', sa.String(255), nullable=False),
|
||||
sa.Column('create_time', sa.BigInteger(), default=0, nullable=False)
|
||||
)
|
||||
op.create_index(op.f('ix_sys_workspace_id'), 'sys_workspace', ['id'], unique=False)
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_table('sys_workspace')
|
||||
op.drop_index(op.f('ix_sys_workspace_id'), table_name='sys_workspace')
|
||||
+2
-1
@@ -4,12 +4,13 @@ from apps.chat.api import chat
|
||||
from apps.dashboard.api import dashboard_api
|
||||
from apps.datasource.api import datasource
|
||||
from apps.settings.api import terminology
|
||||
from apps.system.api import login, user, aimodel
|
||||
from apps.system.api import login, user, aimodel, workspace
|
||||
from apps.mcp import mcp
|
||||
|
||||
api_router = APIRouter()
|
||||
api_router.include_router(login.router)
|
||||
api_router.include_router(user.router)
|
||||
api_router.include_router(workspace.router)
|
||||
api_router.include_router(aimodel.router)
|
||||
api_router.include_router(terminology.router)
|
||||
api_router.include_router(datasource.router)
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
from fastapi import APIRouter
|
||||
from sqlmodel import select
|
||||
from apps.system.models.system_model import WorkspaceBase, WorkspaceEditor, WorkspaceModel
|
||||
from common.core.deps import SessionDep
|
||||
from common.utils.time import get_timestamp
|
||||
|
||||
router = APIRouter(tags=["system/workspace"], prefix="/system/workspace")
|
||||
|
||||
@router.get("", response_model=list[WorkspaceModel])
|
||||
async def query(session: SessionDep):
|
||||
return session.exec(select(WorkspaceModel).order_by(WorkspaceModel.create_time)).all()
|
||||
|
||||
@router.post("")
|
||||
async def add(session: SessionDep, creator: WorkspaceBase):
|
||||
db_model = WorkspaceModel.model_validate(creator)
|
||||
db_model.create_time = get_timestamp()
|
||||
session.add(db_model)
|
||||
session.commit()
|
||||
|
||||
@router.put("")
|
||||
async def update(session: SessionDep, editor: WorkspaceEditor):
|
||||
id = editor.id
|
||||
db_model = session.get(WorkspaceModel, id)
|
||||
if not db_model:
|
||||
raise ValueError(f"WorkspaceModel with id {id} not found")
|
||||
update_data = WorkspaceModel.model_validate(editor)
|
||||
db_model.sqlmodel_update(update_data)
|
||||
session.add(db_model)
|
||||
session.commit()
|
||||
|
||||
@router.get("/{id}", response_model=WorkspaceModel)
|
||||
async def get_one(session: SessionDep, id: int):
|
||||
db_model = session.get(WorkspaceModel, id)
|
||||
if not db_model:
|
||||
raise ValueError(f"WorkspaceModel with id {id} not found")
|
||||
return db_model
|
||||
|
||||
@router.delete("/{id}")
|
||||
async def delete(session: SessionDep, id: int):
|
||||
db_model = session.get(WorkspaceModel, id)
|
||||
if not db_model:
|
||||
raise ValueError(f"WorkspaceModel with id {id} not found")
|
||||
session.delete(db_model)
|
||||
session.commit()
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
from sqlmodel import BigInteger, Field, Text, SQLModel
|
||||
from common.core.models import SnowflakeBase
|
||||
from common.core.schemas import BaseCreatorDTO
|
||||
|
||||
|
||||
class AiModelBase:
|
||||
@@ -17,4 +18,17 @@ class AiModelDetail(SnowflakeBase, AiModelBase, table=True):
|
||||
protocol: int = Field(nullable=False, default = 1)
|
||||
config: str = Field(sa_type = Text())
|
||||
status: int = Field(nullable=False, default = 1)
|
||||
create_time: int = Field(default=0, sa_type=BigInteger())
|
||||
create_time: int = Field(default=0, sa_type=BigInteger())
|
||||
|
||||
|
||||
|
||||
|
||||
class WorkspaceBase(SQLModel):
|
||||
name: str = Field(max_length=255, nullable=False)
|
||||
|
||||
class WorkspaceEditor(WorkspaceBase, BaseCreatorDTO):
|
||||
pass
|
||||
|
||||
class WorkspaceModel(SnowflakeBase, WorkspaceBase, table=True):
|
||||
__tablename__ = "sys_workspace"
|
||||
create_time: int = Field(default=0, sa_type=BigInteger())
|
||||
Reference in New Issue
Block a user