mirror of
https://github.com/fastapi-practices/fastapi-best-architecture.git
synced 2026-09-21 13:12:24 +00:00
Update the code generator to plugin (#578)
* Update the code generator to plugin * Fix get all tables return type
This commit is contained in:
@@ -20,7 +20,7 @@ from backend.plugin.tools import get_plugin_models
|
||||
|
||||
# import your new model here
|
||||
from backend.app.admin.model import * # noqa: F401
|
||||
from backend.app.generator.model import * # noqa: F401
|
||||
from backend.plugin.code_generator.model import * # noqa: F401
|
||||
|
||||
# import plugin model
|
||||
for cls in get_plugin_models():
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
from backend.app.generator.model.gen_business import GenBusiness
|
||||
from backend.app.generator.model.gen_model import GenModel
|
||||
@@ -3,11 +3,9 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
from backend.app.admin.api.router import v1 as admin_v1
|
||||
from backend.app.generator.api.router import v1 as generator_v1
|
||||
from backend.app.task.api.router import v1 as task_v1
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
router.include_router(admin_v1)
|
||||
router.include_router(generator_v1)
|
||||
router.include_router(task_v1)
|
||||
|
||||
@@ -119,153 +119,3 @@ class FileType(StrEnum):
|
||||
|
||||
image = 'image'
|
||||
video = 'video'
|
||||
|
||||
|
||||
class GenModelMySQLColumnType(StrEnum):
|
||||
"""代码生成模型列类型(MySQL)"""
|
||||
|
||||
# Python 类型映射
|
||||
BIGINT = 'int'
|
||||
BigInteger = 'int' # BIGINT
|
||||
BINARY = 'bytes'
|
||||
BLOB = 'bytes'
|
||||
BOOLEAN = 'bool' # BOOL
|
||||
Boolean = 'bool' # BOOL
|
||||
CHAR = 'str'
|
||||
CLOB = 'str'
|
||||
DATE = 'date'
|
||||
Date = 'date' # DATE
|
||||
DATETIME = 'datetime'
|
||||
DateTime = 'datetime' # DATETIME
|
||||
DECIMAL = 'Decimal'
|
||||
DOUBLE = 'float'
|
||||
Double = 'float' # DOUBLE
|
||||
DOUBLE_PRECISION = 'float'
|
||||
Enum = 'Enum' # Enum()
|
||||
FLOAT = 'float'
|
||||
Float = 'float' # FLOAT
|
||||
INT = 'int' # INTEGER
|
||||
INTEGER = 'int'
|
||||
Integer = 'int' # INTEGER
|
||||
Interval = 'timedelta' # DATETIME
|
||||
JSON = 'dict'
|
||||
LargeBinary = 'bytes' # BLOB
|
||||
NCHAR = 'str'
|
||||
NUMERIC = 'Decimal'
|
||||
Numeric = 'Decimal' # NUMERIC
|
||||
NVARCHAR = 'str' # String
|
||||
PickleType = 'bytes' # BLOB
|
||||
REAL = 'float'
|
||||
SMALLINT = 'int'
|
||||
SmallInteger = 'int' # SMALLINT
|
||||
String = 'str' # String
|
||||
TEXT = 'str'
|
||||
Text = 'str' # TEXT
|
||||
TIME = 'time'
|
||||
Time = 'time' # TIME
|
||||
TIMESTAMP = 'datetime'
|
||||
Unicode = 'str' # String
|
||||
UnicodeText = 'str' # TEXT
|
||||
UUID = 'str | UUID'
|
||||
Uuid = 'str' # CHAR(32)
|
||||
VARBINARY = 'bytes'
|
||||
VARCHAR = 'str' # String
|
||||
|
||||
# sa.dialects.mysql 导入
|
||||
BIT = 'bool'
|
||||
ENUM = 'Enum'
|
||||
LONGBLOB = 'bytes'
|
||||
LONGTEXT = 'str'
|
||||
MEDIUMBLOB = 'bytes'
|
||||
MEDIUMINT = 'int'
|
||||
MEDIUMTEXT = 'str'
|
||||
SET = 'list[str]'
|
||||
TINYBLOB = 'bytes'
|
||||
TINYINT = 'int'
|
||||
TINYTEXT = 'str'
|
||||
YEAR = 'int'
|
||||
|
||||
|
||||
class GenModelPostgreSQLColumnType(StrEnum):
|
||||
"""代码生成模型列类型(PostgreSQL)"""
|
||||
|
||||
# Python 类型映射
|
||||
BIGINT = 'int'
|
||||
BigInteger = 'int' # BIGINT
|
||||
BINARY = 'bytes'
|
||||
BLOB = 'bytes'
|
||||
BOOLEAN = 'bool'
|
||||
Boolean = 'bool' # BOOLEAN
|
||||
CHAR = 'str'
|
||||
CLOB = 'str'
|
||||
DATE = 'date'
|
||||
Date = 'date' # DATE
|
||||
DATETIME = 'datetime'
|
||||
DateTime = 'datetime' # TIMESTAMP WITHOUT TIME ZONE
|
||||
DECIMAL = 'Decimal'
|
||||
DOUBLE = 'float'
|
||||
Double = 'float' # DOUBLE PRECISION
|
||||
DOUBLE_PRECISION = 'float' # DOUBLE PRECISION
|
||||
Enum = 'Enum' # Enum(name='enum')
|
||||
FLOAT = 'float'
|
||||
Float = 'float' # FLOAT
|
||||
INT = 'int' # INTEGER
|
||||
INTEGER = 'int'
|
||||
Integer = 'int' # INTEGER
|
||||
Interval = 'timedelta' # INTERVAL
|
||||
JSON = 'dict'
|
||||
LargeBinary = 'bytes' # BYTEA
|
||||
NCHAR = 'str'
|
||||
NUMERIC = 'Decimal'
|
||||
Numeric = 'Decimal' # NUMERIC
|
||||
NVARCHAR = 'str' # String
|
||||
PickleType = 'bytes' # BYTEA
|
||||
REAL = 'float'
|
||||
SMALLINT = 'int'
|
||||
SmallInteger = 'int' # SMALLINT
|
||||
String = 'str' # String
|
||||
TEXT = 'str'
|
||||
Text = 'str' # TEXT
|
||||
TIME = 'time' # TIME WITHOUT TIME ZONE
|
||||
Time = 'time' # TIME WITHOUT TIME ZONE
|
||||
TIMESTAMP = 'datetime' # TIMESTAMP WITHOUT TIME ZONE
|
||||
Unicode = 'str' # String
|
||||
UnicodeText = 'str' # TEXT
|
||||
UUID = 'str | UUID'
|
||||
Uuid = 'str'
|
||||
VARBINARY = 'bytes'
|
||||
VARCHAR = 'str' # String
|
||||
|
||||
# sa.dialects.postgresql 导入
|
||||
ARRAY = 'list'
|
||||
BIT = 'bool'
|
||||
BYTEA = 'bytes'
|
||||
CIDR = 'str'
|
||||
CITEXT = 'str'
|
||||
DATEMULTIRANGE = 'list[date]'
|
||||
DATERANGE = 'tuple[date, date]'
|
||||
DOMAIN = 'str'
|
||||
ENUM = 'Enum'
|
||||
HSTORE = 'dict'
|
||||
INET = 'str'
|
||||
INT4MULTIRANGE = 'list[int]'
|
||||
INT4RANGE = 'tuple[int, int]'
|
||||
INT8MULTIRANGE = 'list[int]'
|
||||
INT8RANGE = 'tuple[int, int]'
|
||||
INTERVAL = 'timedelta'
|
||||
JSONB = 'dict'
|
||||
JSONPATH = 'str'
|
||||
MACADDR = 'str'
|
||||
MACADDR8 = 'str'
|
||||
MONEY = 'Decimal'
|
||||
NUMMULTIRANGE = 'list[Decimal]'
|
||||
NUMRANGE = 'tuple[Decimal, Decimal]'
|
||||
OID = 'int'
|
||||
REGCLASS = 'str'
|
||||
REGCONFIG = 'str'
|
||||
TSMULTIRANGE = 'list[datetime]'
|
||||
TSQUERY = 'str'
|
||||
TSRANGE = 'tuple[datetime, datetime]'
|
||||
TSTZMULTIRANGE = 'list[datetime]'
|
||||
TSTZRANGE = 'tuple[datetime, datetime]'
|
||||
TSVECTOR = 'str'
|
||||
|
||||
@@ -17,9 +17,6 @@ STATIC_DIR = BASE_PATH / 'static'
|
||||
# 上传文件目录
|
||||
UPLOAD_DIR = STATIC_DIR / 'upload'
|
||||
|
||||
# jinja2 模版文件路径
|
||||
JINJA2_TEMPLATE_DIR = BASE_PATH / 'templates' / 'generator'
|
||||
|
||||
# 插件目录
|
||||
PLUGIN_DIR = BASE_PATH / 'plugin'
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
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
|
||||
from backend.core.conf import settings
|
||||
from backend.plugin.code_generator.api.v1.gen import router as gen_router
|
||||
from backend.plugin.code_generator.api.v1.gen_business import router as gen_business_router
|
||||
from backend.plugin.code_generator.api.v1.gen_model import router as gen_model_router
|
||||
|
||||
v1 = APIRouter(prefix=f'{settings.FASTAPI_API_V1_PATH}/gen', tags=['代码生成'])
|
||||
|
||||
@@ -5,13 +5,13 @@ from typing import Annotated
|
||||
from fastapi import APIRouter, Depends, Path, Query
|
||||
from fastapi.responses import StreamingResponse
|
||||
|
||||
from backend.app.generator.conf import generator_settings
|
||||
from backend.app.generator.schema.gen import ImportParam
|
||||
from backend.app.generator.service.gen_service import gen_service
|
||||
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, 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.plugin.code_generator.conf import generator_settings
|
||||
from backend.plugin.code_generator.schema.gen import ImportParam
|
||||
from backend.plugin.code_generator.service.gen_service import gen_service
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
+8
-8
@@ -4,18 +4,18 @@ from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Depends, Path
|
||||
|
||||
from backend.app.generator.schema.gen_business import (
|
||||
CreateGenBusinessParam,
|
||||
GetGenBusinessDetail,
|
||||
UpdateGenBusinessParam,
|
||||
)
|
||||
from backend.app.generator.schema.gen_model import GetGenModelDetail
|
||||
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, ResponseSchemaModel, 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.plugin.code_generator.schema.gen_business import (
|
||||
CreateGenBusinessParam,
|
||||
GetGenBusinessDetail,
|
||||
UpdateGenBusinessParam,
|
||||
)
|
||||
from backend.plugin.code_generator.schema.gen_model import GetGenModelDetail
|
||||
from backend.plugin.code_generator.service.gen_business_service import gen_business_service
|
||||
from backend.plugin.code_generator.service.gen_model_service import gen_model_service
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
+2
-2
@@ -4,12 +4,12 @@ from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Depends, Path
|
||||
|
||||
from backend.app.generator.schema.gen_model import CreateGenModelParam, GetGenModelDetail, UpdateGenModelParam
|
||||
from backend.app.generator.service.gen_model_service import gen_model_service
|
||||
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, 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.plugin.code_generator.schema.gen_model import CreateGenModelParam, GetGenModelDetail, UpdateGenModelParam
|
||||
from backend.plugin.code_generator.service.gen_model_service import gen_model_service
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ class CRUDGen:
|
||||
"""代码生成 CRUD 类"""
|
||||
|
||||
@staticmethod
|
||||
async def get_all_tables(db: AsyncSession, table_schema: str) -> list[str]:
|
||||
async def get_all_tables(db: AsyncSession, table_schema: str) -> Sequence[str]:
|
||||
"""
|
||||
获取所有表名
|
||||
|
||||
+2
-2
@@ -5,8 +5,8 @@ from typing import Sequence
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy_crud_plus import CRUDPlus
|
||||
|
||||
from backend.app.generator.model import GenBusiness
|
||||
from backend.app.generator.schema.gen_business import CreateGenBusinessParam, UpdateGenBusinessParam
|
||||
from backend.plugin.code_generator.model import GenBusiness
|
||||
from backend.plugin.code_generator.schema.gen_business import CreateGenBusinessParam, UpdateGenBusinessParam
|
||||
|
||||
|
||||
class CRUDGenBusiness(CRUDPlus[GenBusiness]):
|
||||
+2
-2
@@ -5,8 +5,8 @@ from typing import Sequence
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy_crud_plus import CRUDPlus
|
||||
|
||||
from backend.app.generator.model import GenModel
|
||||
from backend.app.generator.schema.gen_model import CreateGenModelParam, UpdateGenModelParam
|
||||
from backend.plugin.code_generator.model import GenModel
|
||||
from backend.plugin.code_generator.schema.gen_model import CreateGenModelParam, UpdateGenModelParam
|
||||
|
||||
|
||||
class CRUDGenModel(CRUDPlus[GenModel]):
|
||||
@@ -0,0 +1,153 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
from backend.common.enums import StrEnum
|
||||
|
||||
|
||||
class GenModelMySQLColumnType(StrEnum):
|
||||
"""代码生成模型列类型(MySQL)"""
|
||||
|
||||
# Python 类型映射
|
||||
BIGINT = 'int'
|
||||
BigInteger = 'int' # BIGINT
|
||||
BINARY = 'bytes'
|
||||
BLOB = 'bytes'
|
||||
BOOLEAN = 'bool' # BOOL
|
||||
Boolean = 'bool' # BOOL
|
||||
CHAR = 'str'
|
||||
CLOB = 'str'
|
||||
DATE = 'date'
|
||||
Date = 'date' # DATE
|
||||
DATETIME = 'datetime'
|
||||
DateTime = 'datetime' # DATETIME
|
||||
DECIMAL = 'Decimal'
|
||||
DOUBLE = 'float'
|
||||
Double = 'float' # DOUBLE
|
||||
DOUBLE_PRECISION = 'float'
|
||||
Enum = 'Enum' # Enum()
|
||||
FLOAT = 'float'
|
||||
Float = 'float' # FLOAT
|
||||
INT = 'int' # INTEGER
|
||||
INTEGER = 'int'
|
||||
Integer = 'int' # INTEGER
|
||||
Interval = 'timedelta' # DATETIME
|
||||
JSON = 'dict'
|
||||
LargeBinary = 'bytes' # BLOB
|
||||
NCHAR = 'str'
|
||||
NUMERIC = 'Decimal'
|
||||
Numeric = 'Decimal' # NUMERIC
|
||||
NVARCHAR = 'str' # String
|
||||
PickleType = 'bytes' # BLOB
|
||||
REAL = 'float'
|
||||
SMALLINT = 'int'
|
||||
SmallInteger = 'int' # SMALLINT
|
||||
String = 'str' # String
|
||||
TEXT = 'str'
|
||||
Text = 'str' # TEXT
|
||||
TIME = 'time'
|
||||
Time = 'time' # TIME
|
||||
TIMESTAMP = 'datetime'
|
||||
Unicode = 'str' # String
|
||||
UnicodeText = 'str' # TEXT
|
||||
UUID = 'str | UUID'
|
||||
Uuid = 'str' # CHAR(32)
|
||||
VARBINARY = 'bytes'
|
||||
VARCHAR = 'str' # String
|
||||
|
||||
# sa.dialects.mysql 导入
|
||||
BIT = 'bool'
|
||||
ENUM = 'Enum'
|
||||
LONGBLOB = 'bytes'
|
||||
LONGTEXT = 'str'
|
||||
MEDIUMBLOB = 'bytes'
|
||||
MEDIUMINT = 'int'
|
||||
MEDIUMTEXT = 'str'
|
||||
SET = 'list[str]'
|
||||
TINYBLOB = 'bytes'
|
||||
TINYINT = 'int'
|
||||
TINYTEXT = 'str'
|
||||
YEAR = 'int'
|
||||
|
||||
|
||||
class GenModelPostgreSQLColumnType(StrEnum):
|
||||
"""代码生成模型列类型(PostgreSQL)"""
|
||||
|
||||
# Python 类型映射
|
||||
BIGINT = 'int'
|
||||
BigInteger = 'int' # BIGINT
|
||||
BINARY = 'bytes'
|
||||
BLOB = 'bytes'
|
||||
BOOLEAN = 'bool'
|
||||
Boolean = 'bool' # BOOLEAN
|
||||
CHAR = 'str'
|
||||
CLOB = 'str'
|
||||
DATE = 'date'
|
||||
Date = 'date' # DATE
|
||||
DATETIME = 'datetime'
|
||||
DateTime = 'datetime' # TIMESTAMP WITHOUT TIME ZONE
|
||||
DECIMAL = 'Decimal'
|
||||
DOUBLE = 'float'
|
||||
Double = 'float' # DOUBLE PRECISION
|
||||
DOUBLE_PRECISION = 'float' # DOUBLE PRECISION
|
||||
Enum = 'Enum' # Enum(name='enum')
|
||||
FLOAT = 'float'
|
||||
Float = 'float' # FLOAT
|
||||
INT = 'int' # INTEGER
|
||||
INTEGER = 'int'
|
||||
Integer = 'int' # INTEGER
|
||||
Interval = 'timedelta' # INTERVAL
|
||||
JSON = 'dict'
|
||||
LargeBinary = 'bytes' # BYTEA
|
||||
NCHAR = 'str'
|
||||
NUMERIC = 'Decimal'
|
||||
Numeric = 'Decimal' # NUMERIC
|
||||
NVARCHAR = 'str' # String
|
||||
PickleType = 'bytes' # BYTEA
|
||||
REAL = 'float'
|
||||
SMALLINT = 'int'
|
||||
SmallInteger = 'int' # SMALLINT
|
||||
String = 'str' # String
|
||||
TEXT = 'str'
|
||||
Text = 'str' # TEXT
|
||||
TIME = 'time' # TIME WITHOUT TIME ZONE
|
||||
Time = 'time' # TIME WITHOUT TIME ZONE
|
||||
TIMESTAMP = 'datetime' # TIMESTAMP WITHOUT TIME ZONE
|
||||
Unicode = 'str' # String
|
||||
UnicodeText = 'str' # TEXT
|
||||
UUID = 'str | UUID'
|
||||
Uuid = 'str'
|
||||
VARBINARY = 'bytes'
|
||||
VARCHAR = 'str' # String
|
||||
|
||||
# sa.dialects.postgresql 导入
|
||||
ARRAY = 'list'
|
||||
BIT = 'bool'
|
||||
BYTEA = 'bytes'
|
||||
CIDR = 'str'
|
||||
CITEXT = 'str'
|
||||
DATEMULTIRANGE = 'list[date]'
|
||||
DATERANGE = 'tuple[date, date]'
|
||||
DOMAIN = 'str'
|
||||
ENUM = 'Enum'
|
||||
HSTORE = 'dict'
|
||||
INET = 'str'
|
||||
INT4MULTIRANGE = 'list[int]'
|
||||
INT4RANGE = 'tuple[int, int]'
|
||||
INT8MULTIRANGE = 'list[int]'
|
||||
INT8RANGE = 'tuple[int, int]'
|
||||
INTERVAL = 'timedelta'
|
||||
JSONB = 'dict'
|
||||
JSONPATH = 'str'
|
||||
MACADDR = 'str'
|
||||
MACADDR8 = 'str'
|
||||
MONEY = 'Decimal'
|
||||
NUMMULTIRANGE = 'list[Decimal]'
|
||||
NUMRANGE = 'tuple[Decimal, Decimal]'
|
||||
OID = 'int'
|
||||
REGCLASS = 'str'
|
||||
REGCONFIG = 'str'
|
||||
TSMULTIRANGE = 'list[datetime]'
|
||||
TSQUERY = 'str'
|
||||
TSRANGE = 'tuple[datetime, datetime]'
|
||||
TSTZMULTIRANGE = 'list[datetime]'
|
||||
TSTZRANGE = 'tuple[datetime, datetime]'
|
||||
TSVECTOR = 'str'
|
||||
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
from backend.plugin.code_generator.model.gen_business import GenBusiness
|
||||
from backend.plugin.code_generator.model.gen_model import GenModel
|
||||
+1
-1
@@ -10,7 +10,7 @@ from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
from backend.common.model import Base, id_key
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from backend.app.generator.model import GenModel
|
||||
from backend.plugin.code_generator.model import GenModel
|
||||
|
||||
|
||||
class GenBusiness(Base):
|
||||
+1
-1
@@ -10,7 +10,7 @@ from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
from backend.common.model import DataClassBase, id_key
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from backend.app.generator.model import GenBusiness
|
||||
from backend.plugin.code_generator.model import GenBusiness
|
||||
|
||||
|
||||
class GenModel(DataClassBase):
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
from backend.core.path_conf import PLUGIN_DIR
|
||||
|
||||
# jinja2 模版文件路径
|
||||
JINJA2_TEMPLATE_DIR = PLUGIN_DIR / 'code_generator' / 'templates'
|
||||
@@ -0,0 +1,2 @@
|
||||
[app]
|
||||
router = ['v1']
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
from pydantic import ConfigDict, Field, field_validator
|
||||
|
||||
from backend.common.schema import SchemaBase
|
||||
from backend.utils.generator.type_conversion import sql_type_to_sqlalchemy
|
||||
from backend.plugin.code_generator.utils.type_conversion import sql_type_to_sqlalchemy
|
||||
|
||||
|
||||
class GenModelSchemaBase(SchemaBase):
|
||||
+3
-3
@@ -2,11 +2,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from typing import Sequence
|
||||
|
||||
from backend.app.generator.crud.crud_gen_business import gen_business_dao
|
||||
from backend.app.generator.model import GenBusiness
|
||||
from backend.app.generator.schema.gen_business import CreateGenBusinessParam, UpdateGenBusinessParam
|
||||
from backend.common.exception import errors
|
||||
from backend.database.db import async_db_session
|
||||
from backend.plugin.code_generator.crud.crud_gen_business import gen_business_dao
|
||||
from backend.plugin.code_generator.model import GenBusiness
|
||||
from backend.plugin.code_generator.schema.gen_business import CreateGenBusinessParam, UpdateGenBusinessParam
|
||||
|
||||
|
||||
class GenBusinessService:
|
||||
+5
-5
@@ -2,13 +2,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from typing import Sequence
|
||||
|
||||
from backend.app.generator.crud.crud_gen_model import gen_model_dao
|
||||
from backend.app.generator.model import GenModel
|
||||
from backend.app.generator.schema.gen_model import CreateGenModelParam, UpdateGenModelParam
|
||||
from backend.common.enums import GenModelMySQLColumnType
|
||||
from backend.common.exception import errors
|
||||
from backend.database.db import async_db_session
|
||||
from backend.utils.generator.type_conversion import sql_type_to_pydantic
|
||||
from backend.plugin.code_generator.crud.crud_gen_model import gen_model_dao
|
||||
from backend.plugin.code_generator.enums import GenModelMySQLColumnType
|
||||
from backend.plugin.code_generator.model import GenModel
|
||||
from backend.plugin.code_generator.schema.gen_model import CreateGenModelParam, UpdateGenModelParam
|
||||
from backend.plugin.code_generator.utils.type_conversion import sql_type_to_pydantic
|
||||
|
||||
|
||||
class GenModelService:
|
||||
+10
-10
@@ -10,19 +10,19 @@ import aiofiles
|
||||
|
||||
from pydantic.alias_generators import to_pascal
|
||||
|
||||
from backend.app.generator.crud.crud_gen import gen_dao
|
||||
from backend.app.generator.crud.crud_gen_business import gen_business_dao
|
||||
from backend.app.generator.crud.crud_gen_model import gen_model_dao
|
||||
from backend.app.generator.model import GenBusiness
|
||||
from backend.app.generator.schema.gen import ImportParam
|
||||
from backend.app.generator.schema.gen_business import CreateGenBusinessParam
|
||||
from backend.app.generator.schema.gen_model import CreateGenModelParam
|
||||
from backend.app.generator.service.gen_model_service import gen_model_service
|
||||
from backend.common.exception import errors
|
||||
from backend.core.path_conf import BASE_PATH
|
||||
from backend.database.db import async_db_session
|
||||
from backend.utils.generator.gen_template import gen_template
|
||||
from backend.utils.generator.type_conversion import sql_type_to_pydantic
|
||||
from backend.plugin.code_generator.crud.crud_gen import gen_dao
|
||||
from backend.plugin.code_generator.crud.crud_gen_business import gen_business_dao
|
||||
from backend.plugin.code_generator.crud.crud_gen_model import gen_model_dao
|
||||
from backend.plugin.code_generator.model import GenBusiness
|
||||
from backend.plugin.code_generator.schema.gen import ImportParam
|
||||
from backend.plugin.code_generator.schema.gen_business import CreateGenBusinessParam
|
||||
from backend.plugin.code_generator.schema.gen_model import CreateGenModelParam
|
||||
from backend.plugin.code_generator.service.gen_model_service import gen_model_service
|
||||
from backend.plugin.code_generator.utils.gen_template import gen_template
|
||||
from backend.plugin.code_generator.utils.type_conversion import sql_type_to_pydantic
|
||||
|
||||
|
||||
class GenService:
|
||||
+2
-2
@@ -5,9 +5,9 @@ from typing import Sequence
|
||||
from jinja2 import Environment, FileSystemLoader, Template, select_autoescape
|
||||
from pydantic.alias_generators import to_pascal, to_snake
|
||||
|
||||
from backend.app.generator.model import GenBusiness, GenModel
|
||||
from backend.core.conf import settings
|
||||
from backend.core.path_conf import JINJA2_TEMPLATE_DIR
|
||||
from backend.plugin.code_generator.model import GenBusiness, GenModel
|
||||
from backend.plugin.code_generator.path_conf import JINJA2_TEMPLATE_DIR
|
||||
|
||||
|
||||
class GenTemplate:
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
from backend.common.enums import GenModelMySQLColumnType, GenModelPostgreSQLColumnType
|
||||
from backend.core.conf import settings
|
||||
from backend.plugin.code_generator.enums import GenModelMySQLColumnType, GenModelPostgreSQLColumnType
|
||||
|
||||
|
||||
def sql_type_to_sqlalchemy(typing: str) -> str:
|
||||
Reference in New Issue
Block a user