Skip to content

Commit fc34c98

Browse files
authored
Update the code generator to plugin (#578)
* Update the code generator to plugin * Fix get all tables return type
1 parent 1cc020e commit fc34c98

40 files changed

+211
-205
lines changed

backend/alembic/env.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
# import your new model here
2222
from backend.app.admin.model import * # noqa: F401
23-
from backend.app.generator.model import * # noqa: F401
23+
from backend.plugin.code_generator.model import * # noqa: F401
2424

2525
# import plugin model
2626
for cls in get_plugin_models():

backend/app/generator/model/__init__.py

Lines changed: 0 additions & 4 deletions
This file was deleted.

backend/app/router.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
from fastapi import APIRouter
44

55
from backend.app.admin.api.router import v1 as admin_v1
6-
from backend.app.generator.api.router import v1 as generator_v1
76
from backend.app.task.api.router import v1 as task_v1
87

98
router = APIRouter()
109

1110
router.include_router(admin_v1)
12-
router.include_router(generator_v1)
1311
router.include_router(task_v1)

backend/common/enums.py

Lines changed: 0 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -119,153 +119,3 @@ class FileType(StrEnum):
119119

120120
image = 'image'
121121
video = 'video'
122-
123-
124-
class GenModelMySQLColumnType(StrEnum):
125-
"""代码生成模型列类型(MySQL)"""
126-
127-
# Python 类型映射
128-
BIGINT = 'int'
129-
BigInteger = 'int' # BIGINT
130-
BINARY = 'bytes'
131-
BLOB = 'bytes'
132-
BOOLEAN = 'bool' # BOOL
133-
Boolean = 'bool' # BOOL
134-
CHAR = 'str'
135-
CLOB = 'str'
136-
DATE = 'date'
137-
Date = 'date' # DATE
138-
DATETIME = 'datetime'
139-
DateTime = 'datetime' # DATETIME
140-
DECIMAL = 'Decimal'
141-
DOUBLE = 'float'
142-
Double = 'float' # DOUBLE
143-
DOUBLE_PRECISION = 'float'
144-
Enum = 'Enum' # Enum()
145-
FLOAT = 'float'
146-
Float = 'float' # FLOAT
147-
INT = 'int' # INTEGER
148-
INTEGER = 'int'
149-
Integer = 'int' # INTEGER
150-
Interval = 'timedelta' # DATETIME
151-
JSON = 'dict'
152-
LargeBinary = 'bytes' # BLOB
153-
NCHAR = 'str'
154-
NUMERIC = 'Decimal'
155-
Numeric = 'Decimal' # NUMERIC
156-
NVARCHAR = 'str' # String
157-
PickleType = 'bytes' # BLOB
158-
REAL = 'float'
159-
SMALLINT = 'int'
160-
SmallInteger = 'int' # SMALLINT
161-
String = 'str' # String
162-
TEXT = 'str'
163-
Text = 'str' # TEXT
164-
TIME = 'time'
165-
Time = 'time' # TIME
166-
TIMESTAMP = 'datetime'
167-
Unicode = 'str' # String
168-
UnicodeText = 'str' # TEXT
169-
UUID = 'str | UUID'
170-
Uuid = 'str' # CHAR(32)
171-
VARBINARY = 'bytes'
172-
VARCHAR = 'str' # String
173-
174-
# sa.dialects.mysql 导入
175-
BIT = 'bool'
176-
ENUM = 'Enum'
177-
LONGBLOB = 'bytes'
178-
LONGTEXT = 'str'
179-
MEDIUMBLOB = 'bytes'
180-
MEDIUMINT = 'int'
181-
MEDIUMTEXT = 'str'
182-
SET = 'list[str]'
183-
TINYBLOB = 'bytes'
184-
TINYINT = 'int'
185-
TINYTEXT = 'str'
186-
YEAR = 'int'
187-
188-
189-
class GenModelPostgreSQLColumnType(StrEnum):
190-
"""代码生成模型列类型(PostgreSQL)"""
191-
192-
# Python 类型映射
193-
BIGINT = 'int'
194-
BigInteger = 'int' # BIGINT
195-
BINARY = 'bytes'
196-
BLOB = 'bytes'
197-
BOOLEAN = 'bool'
198-
Boolean = 'bool' # BOOLEAN
199-
CHAR = 'str'
200-
CLOB = 'str'
201-
DATE = 'date'
202-
Date = 'date' # DATE
203-
DATETIME = 'datetime'
204-
DateTime = 'datetime' # TIMESTAMP WITHOUT TIME ZONE
205-
DECIMAL = 'Decimal'
206-
DOUBLE = 'float'
207-
Double = 'float' # DOUBLE PRECISION
208-
DOUBLE_PRECISION = 'float' # DOUBLE PRECISION
209-
Enum = 'Enum' # Enum(name='enum')
210-
FLOAT = 'float'
211-
Float = 'float' # FLOAT
212-
INT = 'int' # INTEGER
213-
INTEGER = 'int'
214-
Integer = 'int' # INTEGER
215-
Interval = 'timedelta' # INTERVAL
216-
JSON = 'dict'
217-
LargeBinary = 'bytes' # BYTEA
218-
NCHAR = 'str'
219-
NUMERIC = 'Decimal'
220-
Numeric = 'Decimal' # NUMERIC
221-
NVARCHAR = 'str' # String
222-
PickleType = 'bytes' # BYTEA
223-
REAL = 'float'
224-
SMALLINT = 'int'
225-
SmallInteger = 'int' # SMALLINT
226-
String = 'str' # String
227-
TEXT = 'str'
228-
Text = 'str' # TEXT
229-
TIME = 'time' # TIME WITHOUT TIME ZONE
230-
Time = 'time' # TIME WITHOUT TIME ZONE
231-
TIMESTAMP = 'datetime' # TIMESTAMP WITHOUT TIME ZONE
232-
Unicode = 'str' # String
233-
UnicodeText = 'str' # TEXT
234-
UUID = 'str | UUID'
235-
Uuid = 'str'
236-
VARBINARY = 'bytes'
237-
VARCHAR = 'str' # String
238-
239-
# sa.dialects.postgresql 导入
240-
ARRAY = 'list'
241-
BIT = 'bool'
242-
BYTEA = 'bytes'
243-
CIDR = 'str'
244-
CITEXT = 'str'
245-
DATEMULTIRANGE = 'list[date]'
246-
DATERANGE = 'tuple[date, date]'
247-
DOMAIN = 'str'
248-
ENUM = 'Enum'
249-
HSTORE = 'dict'
250-
INET = 'str'
251-
INT4MULTIRANGE = 'list[int]'
252-
INT4RANGE = 'tuple[int, int]'
253-
INT8MULTIRANGE = 'list[int]'
254-
INT8RANGE = 'tuple[int, int]'
255-
INTERVAL = 'timedelta'
256-
JSONB = 'dict'
257-
JSONPATH = 'str'
258-
MACADDR = 'str'
259-
MACADDR8 = 'str'
260-
MONEY = 'Decimal'
261-
NUMMULTIRANGE = 'list[Decimal]'
262-
NUMRANGE = 'tuple[Decimal, Decimal]'
263-
OID = 'int'
264-
REGCLASS = 'str'
265-
REGCONFIG = 'str'
266-
TSMULTIRANGE = 'list[datetime]'
267-
TSQUERY = 'str'
268-
TSRANGE = 'tuple[datetime, datetime]'
269-
TSTZMULTIRANGE = 'list[datetime]'
270-
TSTZRANGE = 'tuple[datetime, datetime]'
271-
TSVECTOR = 'str'

backend/core/path_conf.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@
1717
# 上传文件目录
1818
UPLOAD_DIR = STATIC_DIR / 'upload'
1919

20-
# jinja2 模版文件路径
21-
JINJA2_TEMPLATE_DIR = BASE_PATH / 'templates' / 'generator'
22-
2320
# 插件目录
2421
PLUGIN_DIR = BASE_PATH / 'plugin'
2522

backend/app/generator/api/router.py renamed to backend/plugin/code_generator/api/router.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
# -*- coding: utf-8 -*-
33
from fastapi import APIRouter
44

5-
from backend.app.generator.api.v1.gen import router as gen_router
6-
from backend.app.generator.api.v1.gen_business import router as gen_business_router
7-
from backend.app.generator.api.v1.gen_model import router as gen_model_router
85
from backend.core.conf import settings
6+
from backend.plugin.code_generator.api.v1.gen import router as gen_router
7+
from backend.plugin.code_generator.api.v1.gen_business import router as gen_business_router
8+
from backend.plugin.code_generator.api.v1.gen_model import router as gen_model_router
99

1010
v1 = APIRouter(prefix=f'{settings.FASTAPI_API_V1_PATH}/gen', tags=['代码生成'])
1111

backend/app/generator/api/v1/gen.py renamed to backend/plugin/code_generator/api/v1/gen.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
from fastapi import APIRouter, Depends, Path, Query
66
from fastapi.responses import StreamingResponse
77

8-
from backend.app.generator.conf import generator_settings
9-
from backend.app.generator.schema.gen import ImportParam
10-
from backend.app.generator.service.gen_service import gen_service
118
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
129
from backend.common.security.jwt import DependsJwtAuth
1310
from backend.common.security.permission import RequestPermission
1411
from backend.common.security.rbac import DependsRBAC
12+
from backend.plugin.code_generator.conf import generator_settings
13+
from backend.plugin.code_generator.schema.gen import ImportParam
14+
from backend.plugin.code_generator.service.gen_service import gen_service
1515

1616
router = APIRouter()
1717

backend/app/generator/api/v1/gen_business.py renamed to backend/plugin/code_generator/api/v1/gen_business.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@
44

55
from fastapi import APIRouter, Depends, Path
66

7-
from backend.app.generator.schema.gen_business import (
8-
CreateGenBusinessParam,
9-
GetGenBusinessDetail,
10-
UpdateGenBusinessParam,
11-
)
12-
from backend.app.generator.schema.gen_model import GetGenModelDetail
13-
from backend.app.generator.service.gen_business_service import gen_business_service
14-
from backend.app.generator.service.gen_model_service import gen_model_service
157
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
168
from backend.common.security.jwt import DependsJwtAuth
179
from backend.common.security.permission import RequestPermission
1810
from backend.common.security.rbac import DependsRBAC
11+
from backend.plugin.code_generator.schema.gen_business import (
12+
CreateGenBusinessParam,
13+
GetGenBusinessDetail,
14+
UpdateGenBusinessParam,
15+
)
16+
from backend.plugin.code_generator.schema.gen_model import GetGenModelDetail
17+
from backend.plugin.code_generator.service.gen_business_service import gen_business_service
18+
from backend.plugin.code_generator.service.gen_model_service import gen_model_service
1919

2020
router = APIRouter()
2121

backend/app/generator/api/v1/gen_model.py renamed to backend/plugin/code_generator/api/v1/gen_model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44

55
from fastapi import APIRouter, Depends, Path
66

7-
from backend.app.generator.schema.gen_model import CreateGenModelParam, GetGenModelDetail, UpdateGenModelParam
8-
from backend.app.generator.service.gen_model_service import gen_model_service
97
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
108
from backend.common.security.jwt import DependsJwtAuth
119
from backend.common.security.permission import RequestPermission
1210
from backend.common.security.rbac import DependsRBAC
11+
from backend.plugin.code_generator.schema.gen_model import CreateGenModelParam, GetGenModelDetail, UpdateGenModelParam
12+
from backend.plugin.code_generator.service.gen_model_service import gen_model_service
1313

1414
router = APIRouter()
1515

File renamed without changes.

backend/app/generator/crud/crud_gen.py renamed to backend/plugin/code_generator/crud/crud_gen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class CRUDGen:
1212
"""代码生成 CRUD 类"""
1313

1414
@staticmethod
15-
async def get_all_tables(db: AsyncSession, table_schema: str) -> list[str]:
15+
async def get_all_tables(db: AsyncSession, table_schema: str) -> Sequence[str]:
1616
"""
1717
获取所有表名
1818

backend/app/generator/crud/crud_gen_business.py renamed to backend/plugin/code_generator/crud/crud_gen_business.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
from sqlalchemy.ext.asyncio import AsyncSession
66
from sqlalchemy_crud_plus import CRUDPlus
77

8-
from backend.app.generator.model import GenBusiness
9-
from backend.app.generator.schema.gen_business import CreateGenBusinessParam, UpdateGenBusinessParam
8+
from backend.plugin.code_generator.model import GenBusiness
9+
from backend.plugin.code_generator.schema.gen_business import CreateGenBusinessParam, UpdateGenBusinessParam
1010

1111

1212
class CRUDGenBusiness(CRUDPlus[GenBusiness]):

backend/app/generator/crud/crud_gen_model.py renamed to backend/plugin/code_generator/crud/crud_gen_model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
from sqlalchemy.ext.asyncio import AsyncSession
66
from sqlalchemy_crud_plus import CRUDPlus
77

8-
from backend.app.generator.model import GenModel
9-
from backend.app.generator.schema.gen_model import CreateGenModelParam, UpdateGenModelParam
8+
from backend.plugin.code_generator.model import GenModel
9+
from backend.plugin.code_generator.schema.gen_model import CreateGenModelParam, UpdateGenModelParam
1010

1111

1212
class CRUDGenModel(CRUDPlus[GenModel]):

0 commit comments

Comments
 (0)