From 072f4c9c70f729cbc8ac50e3b4be080ab7c77684 Mon Sep 17 00:00:00 2001 From: Wu Clan Date: Fri, 15 Nov 2024 16:36:13 +0800 Subject: [PATCH] Updated code generator API file structure --- backend/app/generator/api/router.py | 4 + backend/app/generator/api/v1/gen.py | 130 ------------------- backend/app/generator/api/v1/gen_business.py | 85 ++++++++++++ backend/app/generator/api/v1/gen_model.py | 71 ++++++++++ 4 files changed, 160 insertions(+), 130 deletions(-) create mode 100644 backend/app/generator/api/v1/gen_business.py create mode 100644 backend/app/generator/api/v1/gen_model.py diff --git a/backend/app/generator/api/router.py b/backend/app/generator/api/router.py index f5837532..bee65490 100644 --- a/backend/app/generator/api/router.py +++ b/backend/app/generator/api/router.py @@ -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=['代码生成']) diff --git a/backend/app/generator/api/v1/gen.py b/backend/app/generator/api/v1/gen.py index d3830bea..ac93b3e6 100644 --- a/backend/app/generator/api/v1/gen.py +++ b/backend/app/generator/api/v1/gen.py @@ -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) diff --git a/backend/app/generator/api/v1/gen_business.py b/backend/app/generator/api/v1/gen_business.py new file mode 100644 index 00000000..07506075 --- /dev/null +++ b/backend/app/generator/api/v1/gen_business.py @@ -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() diff --git a/backend/app/generator/api/v1/gen_model.py b/backend/app/generator/api/v1/gen_model.py new file mode 100644 index 00000000..db778661 --- /dev/null +++ b/backend/app/generator/api/v1/gen_model.py @@ -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()