Skip to content

Commit 704e6ea

Browse files
committed
feat: 新增对PostgreSQL数据库的支持
1 parent b831992 commit 704e6ea

File tree

18 files changed

+1101
-93
lines changed

18 files changed

+1101
-93
lines changed

dash-fastapi-backend/.env.dev

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ JWT_REDIS_EXPIRE_MINUTES = 30
3030

3131

3232
# -------- 数据库配置 --------
33+
# 数据库类型,可选的有'mysql'、'postgresql',默认为'mysql'
34+
DB_TYPE = 'mysql'
3335
# 数据库主机
3436
DB_HOST = '127.0.0.1'
3537
# 数据库端口

dash-fastapi-backend/.env.prod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ JWT_REDIS_EXPIRE_MINUTES = 30
3030

3131

3232
# -------- 数据库配置 --------
33+
# 数据库类型,可选的有'mysql'、'postgresql',默认为'mysql'
34+
DB_TYPE = 'mysql'
3335
# 数据库主机
3436
DB_HOST = '127.0.0.1'
3537
# 数据库端口

dash-fastapi-backend/config/database.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
f'mysql+asyncmy://{DataBaseConfig.db_username}:{quote_plus(DataBaseConfig.db_password)}@'
1010
f'{DataBaseConfig.db_host}:{DataBaseConfig.db_port}/{DataBaseConfig.db_database}'
1111
)
12+
if DataBaseConfig.db_type == 'postgresql':
13+
ASYNC_SQLALCHEMY_DATABASE_URL = (
14+
f'postgresql+asyncpg://{DataBaseConfig.db_username}:{quote_plus(DataBaseConfig.db_password)}@'
15+
f'{DataBaseConfig.db_host}:{DataBaseConfig.db_port}/{DataBaseConfig.db_database}'
16+
)
1217

1318
async_engine = create_async_engine(
1419
ASYNC_SQLALCHEMY_DATABASE_URL,

dash-fastapi-backend/config/env.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from dotenv import load_dotenv
55
from functools import lru_cache
66
from pydantic_settings import BaseSettings
7+
from typing import Literal
78

89

910
class AppSettings(BaseSettings):
@@ -38,6 +39,7 @@ class DataBaseSettings(BaseSettings):
3839
数据库配置
3940
"""
4041

42+
db_type: Literal['mysql', 'postgresql'] = 'mysql'
4143
db_host: str = '127.0.0.1'
4244
db_port: int = 3306
4345
db_username: str = 'root'

dash-fastapi-backend/config/get_scheduler.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ def __find_recent_workday(cls, day: int):
8282
f'mysql+pymysql://{DataBaseConfig.db_username}:{quote_plus(DataBaseConfig.db_password)}@'
8383
f'{DataBaseConfig.db_host}:{DataBaseConfig.db_port}/{DataBaseConfig.db_database}'
8484
)
85+
if DataBaseConfig.db_type == 'postgresql':
86+
SQLALCHEMY_DATABASE_URL = (
87+
f'postgresql+psycopg2://{DataBaseConfig.db_username}:{quote_plus(DataBaseConfig.db_password)}@'
88+
f'{DataBaseConfig.db_host}:{DataBaseConfig.db_port}/{DataBaseConfig.db_database}'
89+
)
8590
engine = create_engine(
8691
SQLALCHEMY_DATABASE_URL,
8792
echo=DataBaseConfig.db_echo,

dash-fastapi-backend/module_admin/controller/user_controller.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from datetime import datetime
33
from fastapi import APIRouter, Depends, File, Form, Query, Request, UploadFile
44
from sqlalchemy.ext.asyncio import AsyncSession
5-
from typing import Optional, Union
5+
from typing import Literal, Optional, Union
66
from pydantic_validation_decorator import ValidateFields
77
from config.get_db import get_db
88
from config.env import UploadConfig
@@ -220,7 +220,7 @@ async def query_detail_system_user_profile(
220220
)
221221
async def query_detail_system_user(
222222
request: Request,
223-
user_id: Optional[Union[int, str]] = '',
223+
user_id: Optional[Union[int, Literal['']]] = '',
224224
query_db: AsyncSession = Depends(get_db),
225225
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
226226
data_scope_sql: str = Depends(GetDataScope('SysUser')),

dash-fastapi-backend/module_admin/entity/do/config_do.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ class SysConfig(Base):
1919
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
2020
update_by = Column(String(64), nullable=True, default='', comment='更新者')
2121
update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
22-
remark = Column(String(500), nullable=True, default='', comment='备注')
22+
remark = Column(String(500), nullable=True, default=None, comment='备注')

dash-fastapi-backend/module_admin/entity/do/dept_do.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ class SysDept(Base):
1818
leader = Column(String(20), nullable=True, default=None, comment='负责人')
1919
phone = Column(String(11), nullable=True, default=None, comment='联系电话')
2020
email = Column(String(50), nullable=True, default=None, comment='邮箱')
21-
status = Column(String(1), nullable=True, default=0, comment='部门状态(0正常 1停用)')
22-
del_flag = Column(String(1), nullable=True, default=0, comment='删除标志(0代表存在 2代表删除)')
21+
status = Column(String(1), nullable=True, default='0', comment='部门状态(0正常 1停用)')
22+
del_flag = Column(String(1), nullable=True, default='0', comment='删除标志(0代表存在 2代表删除)')
2323
create_by = Column(String(64), nullable=True, default='', comment='创建者')
2424
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
2525
update_by = Column(String(64), nullable=True, default='', comment='更新者')

dash-fastapi-backend/module_admin/entity/do/dict_do.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class SysDictType(Base):
1818
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
1919
update_by = Column(String(64), nullable=True, default='', comment='更新者')
2020
update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
21-
remark = Column(String(500), nullable=True, default='', comment='备注')
21+
remark = Column(String(500), nullable=True, default=None, comment='备注')
2222

2323
__table_args__ = (UniqueConstraint('dict_type', name='uq_sys_dict_type_dict_type'),)
2424

@@ -35,12 +35,12 @@ class SysDictData(Base):
3535
dict_label = Column(String(100), nullable=True, default='', comment='字典标签')
3636
dict_value = Column(String(100), nullable=True, default='', comment='字典键值')
3737
dict_type = Column(String(100), nullable=True, default='', comment='字典类型')
38-
css_class = Column(String(100), nullable=True, default='', comment='样式属性(其他样式扩展)')
39-
list_class = Column(String(100), nullable=True, default='', comment='表格回显样式')
38+
css_class = Column(String(100), nullable=True, default=None, comment='样式属性(其他样式扩展)')
39+
list_class = Column(String(100), nullable=True, default=None, comment='表格回显样式')
4040
is_default = Column(String(1), nullable=True, default='N', comment='是否默认(Y是 N否)')
4141
status = Column(String(1), nullable=True, default='0', comment='状态(0正常 1停用)')
4242
create_by = Column(String(64), nullable=True, default='', comment='创建者')
4343
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
4444
update_by = Column(String(64), nullable=True, default='', comment='更新者')
4545
update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
46-
remark = Column(String(500), nullable=True, default='', comment='备注')
46+
remark = Column(String(500), nullable=True, default=None, comment='备注')

dash-fastapi-backend/module_admin/entity/do/job_do.py

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,26 @@ class SysJob(Base):
1111
__tablename__ = 'sys_job'
1212

1313
job_id = Column(Integer, primary_key=True, autoincrement=True, comment='任务ID')
14-
job_name = Column(String(64, collation='utf8_general_ci'), nullable=False, comment='任务名称')
15-
job_group = Column(String(64, collation='utf8_general_ci'), nullable=False, default='default', comment='任务组名')
16-
job_executor = Column(
17-
String(64, collation='utf8_general_ci'), nullable=False, default='default', comment='任务执行器'
18-
)
19-
invoke_target = Column(String(500, collation='utf8_general_ci'), nullable=False, comment='调用目标字符串')
20-
job_args = Column(String(255, collation='utf8_general_ci'), nullable=True, comment='位置参数')
21-
job_kwargs = Column(String(255, collation='utf8_general_ci'), nullable=True, comment='关键字参数')
22-
cron_expression = Column(
23-
String(255, collation='utf8_general_ci'), nullable=True, default='', comment='cron执行表达式'
24-
)
14+
job_name = Column(String(64), nullable=True, default='', comment='任务名称')
15+
job_group = Column(String(64), nullable=True, default='default', comment='任务组名')
16+
job_executor = Column(String(64), nullable=True, default='default', comment='任务执行器')
17+
invoke_target = Column(String(500), nullable=False, comment='调用目标字符串')
18+
job_args = Column(String(255), nullable=True, default='', comment='位置参数')
19+
job_kwargs = Column(String(255), nullable=True, default='', comment='关键字参数')
20+
cron_expression = Column(String(255), nullable=True, default='', comment='cron执行表达式')
2521
misfire_policy = Column(
26-
String(20, collation='utf8_general_ci'),
22+
String(20),
2723
nullable=True,
2824
default='3',
2925
comment='计划执行错误策略(1立即执行 2执行一次 3放弃执行)',
3026
)
31-
concurrent = Column(
32-
String(1, collation='utf8_general_ci'), nullable=True, default='1', comment='是否并发执行(0允许 1禁止)'
33-
)
34-
status = Column(String(1, collation='utf8_general_ci'), nullable=True, default='0', comment='状态(0正常 1暂停)')
35-
create_by = Column(String(64, collation='utf8_general_ci'), nullable=True, default='', comment='创建者')
27+
concurrent = Column(String(1), nullable=True, default='1', comment='是否并发执行(0允许 1禁止)')
28+
status = Column(String(1), nullable=True, default='0', comment='状态(0正常 1暂停)')
29+
create_by = Column(String(64), nullable=True, default='', comment='创建者')
3630
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
37-
update_by = Column(String(64, collation='utf8_general_ci'), nullable=True, default='', comment='更新者')
31+
update_by = Column(String(64), nullable=True, default='', comment='更新者')
3832
update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
39-
remark = Column(String(500, collation='utf8_general_ci'), nullable=True, default='', comment='备注信息')
33+
remark = Column(String(500), nullable=True, default='', comment='备注信息')
4034

4135

4236
class SysJobLog(Base):
@@ -47,18 +41,14 @@ class SysJobLog(Base):
4741
__tablename__ = 'sys_job_log'
4842

4943
job_log_id = Column(Integer, primary_key=True, autoincrement=True, comment='任务日志ID')
50-
job_name = Column(String(64, collation='utf8_general_ci'), nullable=False, comment='任务名称')
51-
job_group = Column(String(64, collation='utf8_general_ci'), nullable=False, comment='任务组名')
52-
job_executor = Column(
53-
String(64, collation='utf8_general_ci'), nullable=False, default='default', comment='任务执行器'
54-
)
55-
invoke_target = Column(String(500, collation='utf8_general_ci'), nullable=False, comment='调用目标字符串')
56-
job_args = Column(String(255, collation='utf8_general_ci'), nullable=True, comment='位置参数')
57-
job_kwargs = Column(String(255, collation='utf8_general_ci'), nullable=True, comment='关键字参数')
58-
job_trigger = Column(String(255, collation='utf8_general_ci'), nullable=True, comment='任务触发器')
59-
job_message = Column(String(500, collation='utf8_general_ci'), nullable=True, default='', comment='日志信息')
60-
status = Column(
61-
String(1, collation='utf8_general_ci'), nullable=True, default='0', comment='执行状态(0正常 1失败)'
62-
)
63-
exception_info = Column(String(2000, collation='utf8_general_ci'), nullable=True, default='', comment='异常信息')
44+
job_name = Column(String(64), nullable=False, comment='任务名称')
45+
job_group = Column(String(64), nullable=False, comment='任务组名')
46+
job_executor = Column(String(64), nullable=False, comment='任务执行器')
47+
invoke_target = Column(String(500), nullable=False, comment='调用目标字符串')
48+
job_args = Column(String(255), nullable=True, default='', comment='位置参数')
49+
job_kwargs = Column(String(255), nullable=True, default='', comment='关键字参数')
50+
job_trigger = Column(String(255), nullable=True, default='', comment='任务触发器')
51+
job_message = Column(String(500), nullable=True, default='', comment='日志信息')
52+
status = Column(String(1), nullable=True, default='0', comment='执行状态(0正常 1失败)')
53+
exception_info = Column(String(2000), nullable=True, default='', comment='异常信息')
6454
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')

0 commit comments

Comments
 (0)