Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
4 changes: 4 additions & 0 deletions backend/app/generator/api/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
from fastapi import APIRouter

from backend.app.generator.api.v1.gen import router as gen_router
from backend.app.generator.api.v1.gen_business import router as gen_business_router
from backend.app.generator.api.v1.gen_model import router as gen_model_router

v1 = APIRouter()

v1.include_router(gen_business_router, prefix='/business', tags=['代码生成'])
v1.include_router(gen_model_router, prefix='/model', tags=['代码生成'])
v1.include_router(gen_router, prefix='/gen', tags=['代码生成'])
130 changes: 0 additions & 130 deletions backend/app/generator/api/v1/gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,145 +6,15 @@
from fastapi.responses import StreamingResponse

from backend.app.generator.conf import generator_settings
from backend.app.generator.schema.gen_business import (
CreateGenBusinessParam,
GetGenBusinessListDetails,
UpdateGenBusinessParam,
)
from backend.app.generator.schema.gen_model import CreateGenModelParam, GetGenModelListDetails, UpdateGenModelParam
from backend.app.generator.service.gen_business_service import gen_business_service
from backend.app.generator.service.gen_model_service import gen_model_service
from backend.app.generator.service.gen_service import gen_service
from backend.common.response.response_schema import ResponseModel, response_base
from backend.common.security.jwt import DependsJwtAuth
from backend.common.security.permission import RequestPermission
from backend.common.security.rbac import DependsRBAC
from backend.utils.serializers import select_as_dict, select_list_serialize

router = APIRouter()


@router.get('/businesses/all', summary='获取所有代码生成业务', dependencies=[DependsJwtAuth])
async def get_all_businesses() -> ResponseModel:
businesses = await gen_business_service.get_all()
data = select_list_serialize(businesses)
return response_base.success(data=data)


@router.get('/businesses/{pk}', summary='获取代码生成业务详情', dependencies=[DependsJwtAuth])
async def get_business(pk: Annotated[int, Path(...)]) -> ResponseModel:
business = await gen_business_service.get(pk=pk)
data = GetGenBusinessListDetails(**select_as_dict(business))
return response_base.success(data=data)


@router.get('/businesses/{pk}/models', summary='获取代码生成业务所有模型', dependencies=[DependsJwtAuth])
async def get_business_models(pk: Annotated[int, Path(...)]) -> ResponseModel:
models = await gen_model_service.get_by_business(business_id=pk)
data = select_list_serialize(models)
return response_base.success(data=data)


@router.post(
'/businesses',
summary='创建代码生成业务',
deprecated=True,
dependencies=[
Depends(RequestPermission('gen:code:business:add')),
DependsRBAC,
],
)
async def create_business(obj: CreateGenBusinessParam) -> ResponseModel:
await gen_business_service.create(obj=obj)
return response_base.success()


@router.put(
'/businesses/{pk}',
summary='更新代码生成业务',
dependencies=[
Depends(RequestPermission('gen:code:business:edit')),
DependsRBAC,
],
)
async def update_business(pk: Annotated[int, Path(...)], obj: UpdateGenBusinessParam) -> ResponseModel:
count = await gen_business_service.update(pk=pk, obj=obj)
if count > 0:
return response_base.success()
return response_base.fail()


@router.delete(
'/businesses/{pk}',
summary='删除代码生成业务',
dependencies=[
Depends(RequestPermission('gen:code:business:del')),
DependsRBAC,
],
)
async def delete_business(pk: Annotated[int, Path(...)]) -> ResponseModel:
count = await gen_business_service.delete(pk=pk)
if count > 0:
return response_base.success()
return response_base.fail()


@router.get('/models/types', summary='获取代码生成模型列类型', dependencies=[DependsJwtAuth])
async def get_model_types() -> ResponseModel:
model_types = await gen_model_service.get_types()
return response_base.success(data=model_types)


@router.get('/models/{pk}', summary='获取代码生成模型详情', dependencies=[DependsJwtAuth])
async def get_model(pk: Annotated[int, Path(...)]) -> ResponseModel:
model = await gen_model_service.get(pk=pk)
data = GetGenModelListDetails(**select_as_dict(model))
return response_base.success(data=data)


@router.post(
'/models',
summary='创建代码生成模型',
dependencies=[
Depends(RequestPermission('gen:code:model:add')),
DependsRBAC,
],
)
async def create_model(obj: CreateGenModelParam) -> ResponseModel:
await gen_model_service.create(obj=obj)
return response_base.success()


@router.put(
'/models/{pk}',
summary='更新代码生成模型',
dependencies=[
Depends(RequestPermission('gen:code:model:edit')),
DependsRBAC,
],
)
async def update_model(pk: Annotated[int, Path(...)], obj: UpdateGenModelParam) -> ResponseModel:
count = await gen_model_service.update(pk=pk, obj=obj)
if count > 0:
return response_base.success()
return response_base.fail()


@router.delete(
'/models/{pk}',
summary='删除代码生成模型',
dependencies=[
Depends(RequestPermission('gen:code:model:del')),
DependsRBAC,
],
)
async def delete_model(pk: Annotated[int, Path(...)]) -> ResponseModel:
count = await gen_model_service.delete(pk=pk)
if count > 0:
return response_base.success()
return response_base.fail()


@router.get('/tables', summary='获取数据库表', dependencies=[DependsRBAC])
async def get_all_tables(table_schema: Annotated[str, Query(..., description='数据库名')] = 'fba') -> ResponseModel:
data = await gen_service.get_tables(table_schema=table_schema)
Expand Down
85 changes: 85 additions & 0 deletions backend/app/generator/api/v1/gen_business.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from typing import Annotated

from fastapi import APIRouter, Depends, Path

from backend.app.generator.schema.gen_business import (
CreateGenBusinessParam,
GetGenBusinessListDetails,
UpdateGenBusinessParam,
)
from backend.app.generator.service.gen_business_service import gen_business_service
from backend.app.generator.service.gen_model_service import gen_model_service
from backend.common.response.response_schema import ResponseModel, response_base
from backend.common.security.jwt import DependsJwtAuth
from backend.common.security.permission import RequestPermission
from backend.common.security.rbac import DependsRBAC
from backend.utils.serializers import select_as_dict, select_list_serialize

router = APIRouter()


@router.get('/all', summary='获取所有代码生成业务', dependencies=[DependsJwtAuth])
async def get_all_businesses() -> ResponseModel:
businesses = await gen_business_service.get_all()
data = select_list_serialize(businesses)
return response_base.success(data=data)


@router.get('/{pk}', summary='获取代码生成业务详情', dependencies=[DependsJwtAuth])
async def get_business(pk: Annotated[int, Path(...)]) -> ResponseModel:
business = await gen_business_service.get(pk=pk)
data = GetGenBusinessListDetails(**select_as_dict(business))
return response_base.success(data=data)


@router.get('/{pk}/models', summary='获取代码生成业务所有模型', dependencies=[DependsJwtAuth])
async def get_business_models(pk: Annotated[int, Path(...)]) -> ResponseModel:
models = await gen_model_service.get_by_business(business_id=pk)
data = select_list_serialize(models)
return response_base.success(data=data)


@router.post(
'',
summary='创建代码生成业务',
deprecated=True,
dependencies=[
Depends(RequestPermission('gen:code:business:add')),
DependsRBAC,
],
)
async def create_business(obj: CreateGenBusinessParam) -> ResponseModel:
await gen_business_service.create(obj=obj)
return response_base.success()


@router.put(
'/{pk}',
summary='更新代码生成业务',
dependencies=[
Depends(RequestPermission('gen:code:business:edit')),
DependsRBAC,
],
)
async def update_business(pk: Annotated[int, Path(...)], obj: UpdateGenBusinessParam) -> ResponseModel:
count = await gen_business_service.update(pk=pk, obj=obj)
if count > 0:
return response_base.success()
return response_base.fail()


@router.delete(
'/{pk}',
summary='删除代码生成业务',
dependencies=[
Depends(RequestPermission('gen:code:business:del')),
DependsRBAC,
],
)
async def delete_business(pk: Annotated[int, Path(...)]) -> ResponseModel:
count = await gen_business_service.delete(pk=pk)
if count > 0:
return response_base.success()
return response_base.fail()
71 changes: 71 additions & 0 deletions backend/app/generator/api/v1/gen_model.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from typing import Annotated

from fastapi import APIRouter, Depends, Path

from backend.app.generator.schema.gen_model import CreateGenModelParam, GetGenModelListDetails, UpdateGenModelParam
from backend.app.generator.service.gen_model_service import gen_model_service
from backend.common.response.response_schema import ResponseModel, response_base
from backend.common.security.jwt import DependsJwtAuth
from backend.common.security.permission import RequestPermission
from backend.common.security.rbac import DependsRBAC
from backend.utils.serializers import select_as_dict

router = APIRouter()


@router.get('/types', summary='获取代码生成模型列类型', dependencies=[DependsJwtAuth])
async def get_model_types() -> ResponseModel:
model_types = await gen_model_service.get_types()
return response_base.success(data=model_types)


@router.get('/{pk}', summary='获取代码生成模型详情', dependencies=[DependsJwtAuth])
async def get_model(pk: Annotated[int, Path(...)]) -> ResponseModel:
model = await gen_model_service.get(pk=pk)
data = GetGenModelListDetails(**select_as_dict(model))
return response_base.success(data=data)


@router.post(
'',
summary='创建代码生成模型',
dependencies=[
Depends(RequestPermission('gen:code:model:add')),
DependsRBAC,
],
)
async def create_model(obj: CreateGenModelParam) -> ResponseModel:
await gen_model_service.create(obj=obj)
return response_base.success()


@router.put(
'/{pk}',
summary='更新代码生成模型',
dependencies=[
Depends(RequestPermission('gen:code:model:edit')),
DependsRBAC,
],
)
async def update_model(pk: Annotated[int, Path(...)], obj: UpdateGenModelParam) -> ResponseModel:
count = await gen_model_service.update(pk=pk, obj=obj)
if count > 0:
return response_base.success()
return response_base.fail()


@router.delete(
'/{pk}',
summary='删除代码生成模型',
dependencies=[
Depends(RequestPermission('gen:code:model:del')),
DependsRBAC,
],
)
async def delete_model(pk: Annotated[int, Path(...)]) -> ResponseModel:
count = await gen_model_service.delete(pk=pk)
if count > 0:
return response_base.success()
return response_base.fail()