diff --git a/backend/app/config/.env.dev b/backend/app/config/.env.dev index 715f153b..64321d4e 100644 --- a/backend/app/config/.env.dev +++ b/backend/app/config/.env.dev @@ -26,88 +26,35 @@ DOCS_URL = "/docs" # Swagger UI路径 REDOC_URL = "/redoc" # ReDoc路径 ROOT_PATH = "/api/v1" # API路由前缀 -# JWT配置 -SECRET_KEY = "vgb0tnl9d58+6n-6h-ea&u^1#s0ccp!794=krylxcjq75vzps$" # JWT密钥 -ALGORITHM = "HS256" # JWT算法 -ACCESS_TOKEN_EXPIRE_MINUTES = 1440 # access_token过期时间(分钟) -REFRESH_TOKEN_EXPIRE_MINUTES = 10080 # refresh_token过期时间(分钟) -TOKEN_TYPE = "bearer" # token类型 -JWT_REDIS_EXPIRE_MINUTES = 30 # redis缓存过期时间(分钟) - - # 数据库配置 -DATABASE_ECHO = False # 是否显示SQL日志 -ECHO_POOL = False # 是否显示连接池日志 -POOL_SIZE = 20 # 连接池大小 -MAX_OVERFLOW = 10 # 最大溢出连接数 -POOL_TIMEOUT = 30 # 连接超时时间(秒) -POOL_RECYCLE = 1800 # 连接回收时间(秒) -POOL_PRE_PING = True # 是否开启连接预检 -FUTURE = True # 是否使用SQLAlchemy 2.0特性 -AUTOCOMMIT = False # 是否自动提交 -AUTOFETCH = False # 是否自动获取 -EXPIRE_ON_COMMIT = False # 是否在提交时过期 DB_DRIVER = "sqlite" # sqlite、mysql、postgresql # SQLite配置 SQLITE_DB_NAME = "dev_sql.db" -# Redis配置 -REDIS_ENABLE = True -REDIS_HOST = "localhost" -REDIS_PORT = 6379 -REDIS_DB = 1 - # MYSQL配置 -SQL_DB_ENABLE = True # 是否启用数据库 +MYSQL_HOST = "localhost" MYSQL_USER = "root" MYSQL_PASSWORD = 123456 -MYSQL_HOST = "localhost" MYSQL_PORT = 3306 MYSQL_DB_NAME = "fastapi_vue_admin" # PostgreSQL配置 +POSTGRESQL_HOST = "localhost" POSTGRESQL_USER = "postgres" POSTGRESQL_PASSWORD = 123456 -POSTGRESQL_HOST = "localhost" POSTGRESQL_PORT = 5432 POSTGRESQL_DB_NAME = "fastapi_vue_admin" +# Redis配置 +REDIS_HOST = "localhost" +REDIS_PORT = 6379 +REDIS_DB = 1 + # MongoDB配置 -MONGO_DB_ENABLE = True -MONGO_DB_NAME = "fastapi_vue_admin" MONGO_DB_HOST = "localhost" MONGO_DB_PORT = 27017 +MONGO_DB_NAME = "fastapi_vue_admin" # 日志配置 -BACKUPCOUNT = 10 # 日志文件备份数 -WHEN = 'MIDNIGHT' # 日志分割时间 -INTERVAL = 1 # 日志分割间隔 -ENCODING = 'utf-8' # 日志编码 -LOGGER_LEVEL = 'INFO' # 日志级别 -LOGGER_FORMAT = '%(asctime)s - %(levelname)s - [%(name)s:%(filename)s:%(funcName)s:%(lineno)d] %(message)s' # 日志格式 - -# 请求中间件配置 -OPERATION_LOG_RECORD = True # 是否记录操作日志 -OPERATION_RECORD_METHOD = ["POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"] # 需要记录的请求方法 -IGNORE_OPERATION_FUNCTION = ["get_captcha_for_login"] # 忽略记录的函数 - -# 跨域中间件配置 -CORS_ORIGIN_ENABLE = True # 是否启用跨域 -ALLOW_ORIGINS = ["*"] # 允许的域名列表 -ALLOW_METHODS = ["*"] # 允许的HTTP方法 -ALLOW_HEADERS = ["*"] # 允许的请求头 -ALLOW_CREDENTIALS = True # 是否允许携带cookie - -# Gzip压缩中间件配置 -GZIP_ENABLE = True # 是否启用Gzip -GZIP_MIN_SIZE = 1000 # 最小压缩大小(字节) -GZIP_COMPRESS_LEVEL = 9 # 压缩级别(1-9) - -# 验证码配置 -CAPTCHA_ENABLE = True # 是否启用验证码 -CAPTCHA_EXPIRE_SECONDS = 60 # 验证码过期时间(秒) -CAPTCHA_FONT_SIZE = 40 # 字体大小 - -# 上传配置 -MAX_FILE_SIZE = 10485760 # 最大文件大小10 * 1024 * 1024(10MB) +LOGGER_LEVEL = 'DEBUG' # 日志级别 diff --git a/backend/app/config/.env.prod b/backend/app/config/.env.prod index b6ae2c36..f4e757d4 100644 --- a/backend/app/config/.env.prod +++ b/backend/app/config/.env.prod @@ -7,7 +7,7 @@ ENVIRONMENT = "prod" # 服务器配置 SERVER_HOST = 'localhost' # 允许访问的IP地址 SERVER_PORT = 8000 # 服务端口 -RELOAD = True # 是否自动重启 +RELOAD = False # 是否自动重启 WORKERS = 1 # 启动进程数 FACTORY = True # 是否使用异步模式 LIMIT_CONCURRENCY = 1000 # 最大并发连接数 @@ -17,7 +17,7 @@ TIMEOUT_KEEP_ALIVE = 5 # 保持连接时间(秒) LIFESPAN = "on" # 生命周期模式 # 文档配置 -DEBUG = True # 调试模式 +DEBUG = False # 调试模式 TITLE = "🎉 Fastapi Vue Admin 🎉 -prod" # 文档标题 VERSION = '0.1.0' # 版本号 DESCRIPTION = "该项目是一个基于python的web服务框架,基于fastapi和sqlalchemy实现。" # 文档描述 @@ -26,88 +26,35 @@ DOCS_URL = "/docs" # Swagger UI路径 REDOC_URL = "/redoc" # ReDoc路径 ROOT_PATH = "/api/v1" # API路由前缀 -# JWT配置 -SECRET_KEY = "vgb0tnl9d58+6n-6h-ea&u^1#s0ccp!794=krylxcjq75vzps$" # JWT密钥 -ALGORITHM = "HS256" # JWT算法 -ACCESS_TOKEN_EXPIRE_MINUTES = 1440 # access_token过期时间(分钟) -REFRESH_TOKEN_EXPIRE_MINUTES = 10080 # refresh_token过期时间(分钟) -TOKEN_TYPE = "bearer" # token类型 -JWT_REDIS_EXPIRE_MINUTES = 30 # redis缓存过期时间(分钟) - - # 数据库配置 -DATABASE_ECHO = False # 是否显示SQL日志 -ECHO_POOL = False # 是否显示连接池日志 -POOL_SIZE = 20 # 连接池大小 -MAX_OVERFLOW = 10 # 最大溢出连接数 -POOL_TIMEOUT = 30 # 连接超时时间(秒) -POOL_RECYCLE = 1800 # 连接回收时间(秒) -POOL_PRE_PING = True # 是否开启连接预检 -FUTURE = True # 是否使用SQLAlchemy 2.0特性 -AUTOCOMMIT = False # 是否自动提交 -AUTOFETCH = False # 是否自动获取 -EXPIRE_ON_COMMIT = False # 是否在提交时过期 -DB_DRIVER = "sqlite" # sqlite、mysql、postgresql +DB_DRIVER = "mysql" # sqlite、mysql、postgresql # SQLite配置 SQLITE_DB_NAME = "dev_sql.db" -# Redis配置 -REDIS_ENABLE = True -REDIS_HOST = "localhost" -REDIS_PORT = 6379 -REDIS_DB = 1 - # MYSQL配置 -SQL_DB_ENABLE = True # 是否启用数据库 +MYSQL_HOST = "localhost" MYSQL_USER = "root" MYSQL_PASSWORD = 123456 -MYSQL_HOST = "localhost" MYSQL_PORT = 3306 MYSQL_DB_NAME = "fastapi_vue_admin" # PostgreSQL配置 +POSTGRESQL_HOST = "localhost" POSTGRESQL_USER = "postgres" POSTGRESQL_PASSWORD = 123456 -POSTGRESQL_HOST = "localhost" POSTGRESQL_PORT = 5432 POSTGRESQL_DB_NAME = "fastapi_vue_admin" +# Redis配置 +REDIS_HOST = "localhost" +REDIS_PORT = 6379 +REDIS_DB = 1 + # MongoDB配置 -MONGO_DB_ENABLE = True -MONGO_DB_NAME = "fastapi_vue_admin" MONGO_DB_HOST = "localhost" MONGO_DB_PORT = 27017 +MONGO_DB_NAME = "fastapi_vue_admin" # 日志配置 -BACKUPCOUNT = 10 # 日志文件备份数 -WHEN = 'MIDNIGHT' # 日志分割时间 -INTERVAL = 1 # 日志分割间隔 -ENCODING = 'utf-8' # 日志编码 LOGGER_LEVEL = 'INFO' # 日志级别 -LOGGER_FORMAT = '%(asctime)s - %(levelname)s - [%(name)s:%(filename)s:%(funcName)s:%(lineno)d] %(message)s' # 日志格式 - -# 请求中间件配置 -OPERATION_LOG_RECORD = True # 是否记录操作日志 -OPERATION_RECORD_METHOD = ["POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"] # 需要记录的请求方法 -IGNORE_OPERATION_FUNCTION = ["get_captcha_for_login"] # 忽略记录的函数 - -# 跨域中间件配置 -CORS_ORIGIN_ENABLE = True # 是否启用跨域 -ALLOW_ORIGINS = ["*"] # 允许的域名列表 -ALLOW_METHODS = ["*"] # 允许的HTTP方法 -ALLOW_HEADERS = ["*"] # 允许的请求头 -ALLOW_CREDENTIALS = True # 是否允许携带cookie - -# Gzip压缩中间件配置 -GZIP_ENABLE = True # 是否启用Gzip -GZIP_MIN_SIZE = 1000 # 最小压缩大小(字节) -GZIP_COMPRESS_LEVEL = 9 # 压缩级别(1-9) - -# 验证码配置 -CAPTCHA_ENABLE = True # 是否启用验证码 -CAPTCHA_EXPIRE_SECONDS = 60 # 验证码过期时间(秒) -CAPTCHA_FONT_SIZE = 40 # 字体大小 - -# 上传配置 -MAX_FILE_SIZE = 10485760 # 最大文件大小10 * 1024 * 1024(10MB) diff --git a/backend/app/config/.env.test b/backend/app/config/.env.test index ef649ce6..00d7a7d6 100644 --- a/backend/app/config/.env.test +++ b/backend/app/config/.env.test @@ -26,88 +26,35 @@ DOCS_URL = "/docs" # Swagger UI路径 REDOC_URL = "/redoc" # ReDoc路径 ROOT_PATH = "/api/v1" # API路由前缀 -# JWT配置 -SECRET_KEY = "vgb0tnl9d58+6n-6h-ea&u^1#s0ccp!794=krylxcjq75vzps$" # JWT密钥 -ALGORITHM = "HS256" # JWT算法 -ACCESS_TOKEN_EXPIRE_MINUTES = 1440 # access_token过期时间(分钟) -REFRESH_TOKEN_EXPIRE_MINUTES = 10080 # refresh_token过期时间(分钟) -TOKEN_TYPE = "bearer" # token类型 -JWT_REDIS_EXPIRE_MINUTES = 30 # redis缓存过期时间(分钟) - - # 数据库配置 -DATABASE_ECHO = False # 是否显示SQL日志 -ECHO_POOL = False # 是否显示连接池日志 -POOL_SIZE = 20 # 连接池大小 -MAX_OVERFLOW = 10 # 最大溢出连接数 -POOL_TIMEOUT = 30 # 连接超时时间(秒) -POOL_RECYCLE = 1800 # 连接回收时间(秒) -POOL_PRE_PING = True # 是否开启连接预检 -FUTURE = True # 是否使用SQLAlchemy 2.0特性 -AUTOCOMMIT = False # 是否自动提交 -AUTOFETCH = False # 是否自动获取 -EXPIRE_ON_COMMIT = False # 是否在提交时过期 DB_DRIVER = "sqlite" # sqlite、mysql、postgresql # SQLite配置 SQLITE_DB_NAME = "dev_sql.db" -# Redis配置 -REDIS_ENABLE = True -REDIS_HOST = "localhost" -REDIS_PORT = 6379 -REDIS_DB = 1 - # MYSQL配置 -SQL_DB_ENABLE = True # 是否启用数据库 +MYSQL_HOST = "localhost" MYSQL_USER = "root" MYSQL_PASSWORD = 123456 -MYSQL_HOST = "localhost" MYSQL_PORT = 3306 MYSQL_DB_NAME = "fastapi_vue_admin" # PostgreSQL配置 +POSTGRESQL_HOST = "localhost" POSTGRESQL_USER = "postgres" POSTGRESQL_PASSWORD = 123456 -POSTGRESQL_HOST = "localhost" POSTGRESQL_PORT = 5432 POSTGRESQL_DB_NAME = "fastapi_vue_admin" +# Redis配置 +REDIS_HOST = "localhost" +REDIS_PORT = 6379 +REDIS_DB = 1 + # MongoDB配置 -MONGO_DB_ENABLE = True -MONGO_DB_NAME = "fastapi_vue_admin" MONGO_DB_HOST = "localhost" +MONGO_DB_NAME = "fastapi_vue_admin" MONGO_DB_PORT = 27017 # 日志配置 -BACKUPCOUNT = 10 # 日志文件备份数 -WHEN = 'MIDNIGHT' # 日志分割时间 -INTERVAL = 1 # 日志分割间隔 -ENCODING = 'utf-8' # 日志编码 -LOGGER_LEVEL = 'INFO' # 日志级别 -LOGGER_FORMAT = '%(asctime)s - %(levelname)s - [%(name)s:%(filename)s:%(funcName)s:%(lineno)d] %(message)s' # 日志格式 - -# 请求中间件配置 -OPERATION_LOG_RECORD = True # 是否记录操作日志 -OPERATION_RECORD_METHOD = ["POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"] # 需要记录的请求方法 -IGNORE_OPERATION_FUNCTION = ["get_captcha_for_login"] # 忽略记录的函数 - -# 跨域中间件配置 -CORS_ORIGIN_ENABLE = True # 是否启用跨域 -ALLOW_ORIGINS = ["*"] # 允许的域名列表 -ALLOW_METHODS = ["*"] # 允许的HTTP方法 -ALLOW_HEADERS = ["*"] # 允许的请求头 -ALLOW_CREDENTIALS = True # 是否允许携带cookie - -# Gzip压缩中间件配置 -GZIP_ENABLE = True # 是否启用Gzip -GZIP_MIN_SIZE = 1000 # 最小压缩大小(字节) -GZIP_COMPRESS_LEVEL = 9 # 压缩级别(1-9) - -# 验证码配置 -CAPTCHA_ENABLE = True # 是否启用验证码 -CAPTCHA_EXPIRE_SECONDS = 60 # 验证码过期时间(秒) -CAPTCHA_FONT_SIZE = 40 # 字体大小 - -# 上传配置 -MAX_FILE_SIZE = 10485760 # 最大文件大小10 * 1024 * 1024(10MB) +LOGGER_LEVEL = 'DEBUG' # 日志级别 diff --git a/backend/app/config/setting.py b/backend/app/config/setting.py index 6cc7e213..9e5a22e9 100755 --- a/backend/app/config/setting.py +++ b/backend/app/config/setting.py @@ -5,7 +5,7 @@ from datetime import date from functools import lru_cache from pathlib import Path from typing import Any, ClassVar, Dict, List, Optional, Union, Literal -from pydantic import MongoDsn, RedisDsn +from pydantic import MongoDsn, PostgresDsn, RedisDsn, MySQLDsn from pydantic_settings import BaseSettings, SettingsConfigDict from uvicorn.config import LifespanType @@ -67,37 +67,38 @@ class Settings(BaseSettings): # ================================================= # # ******************** 跨域配置 ******************** # # ================================================= # - CORS_ORIGIN_ENABLE: bool # 是否启用跨域 - ALLOW_ORIGINS: List[str] # 允许的域名列表 - ALLOW_METHODS: List[str] # 允许的HTTP方法 - ALLOW_HEADERS: List[str] # 允许的请求头 - ALLOW_CREDENTIALS: bool # 是否允许携带cookie + CORS_ORIGIN_ENABLE: bool = True # 是否启用跨域 + ALLOW_ORIGINS: List[str] = ["*"] # 允许的域名列表 + ALLOW_METHODS: List[str] = ["*"] # 允许的HTTP方法 + ALLOW_HEADERS: List[str] = ["*"] # 允许的请求头 + ALLOW_CREDENTIALS: bool = True # 是否允许携带cookie # ================================================= # # ******************* 登录认证配置 ****************** # # ================================================= # - SECRET_KEY: str # JWT密钥 - ALGORITHM: str # JWT算法 - ACCESS_TOKEN_EXPIRE_MINUTES: int # access_token过期时间(分钟) - REFRESH_TOKEN_EXPIRE_MINUTES: int # refresh_token过期时间(分钟) - TOKEN_TYPE: str # token类型 - JWT_REDIS_EXPIRE_MINUTES: int # redis缓存过期时间(分钟) + SECRET_KEY: str = "vgb0tnl9d58+6n-6h-ea&u^1#s0ccp!794=krylxcjq75vzps$" # JWT密钥 + ALGORITHM: str = "HS256" # JWT算法 + ACCESS_TOKEN_EXPIRE_MINUTES: int = 1440 # access_token过期时间(分钟) + REFRESH_TOKEN_EXPIRE_MINUTES: int = 10080 # refresh_token过期时间(分钟) + TOKEN_TYPE: str = "bearer" # token类型 + JWT_REDIS_EXPIRE_MINUTES: int = 30 # redis缓存过期时间(分钟) # ================================================= # # ******************** 数据库配置 ******************* # # ================================================= # - SQL_DB_ENABLE: bool # 是否启用数据库 - DATABASE_ECHO: bool # 是否显示SQL日志 - ECHO_POOL: bool # 是否显示连接池日志 - POOL_SIZE: int # 连接池大小 - MAX_OVERFLOW: int # 最大溢出连接数 - POOL_TIMEOUT: int # 连接超时时间(秒) - POOL_RECYCLE: int # 连接回收时间(秒) - POOL_PRE_PING: bool # 是否开启连接预检 - FUTURE: bool # 是否使用SQLAlchemy 2.0特性 - AUTOCOMMIT: bool # 是否自动提交 - AUTOFETCH: bool # 是否自动获取 - EXPIRE_ON_COMMIT: bool # 是否在提交时过期 + SQL_DB_ENABLE: bool = True # 是否启用数据库 + DATABASE_ECHO: bool = False # 是否显示SQL日志 + ECHO_POOL: bool = False # 是否显示连接池日志 + POOL_SIZE: int = 20 # 连接池大小 + MAX_OVERFLOW: int = 10 # 最大溢出连接数 + POOL_TIMEOUT: int = 30 # 连接超时时间(秒) + POOL_RECYCLE: int = 1800 # 连接回收时间(秒) + POOL_PRE_PING: bool = True # 是否开启连接预检 + FUTURE: bool = True # 是否使用SQLAlchemy 2.0特性 + AUTOCOMMIT: bool = False # 是否自动提交 + AUTOFETCH: bool = False # 是否自动获取 + EXPIRE_ON_COMMIT: bool = False # 是否在提交时过期 + # SQLite数据库连接 DB_DRIVER: str SQLITE_DB_NAME: str @@ -119,7 +120,7 @@ class Settings(BaseSettings): # ================================================= # # ******************** MongoDB配置 ******************* # # ================================================= # - MONGO_DB_ENABLE: bool # 是否启用MongoDB + MONGO_DB_ENABLE: bool = True # 是否启用MongoDB MONGO_DB_HOST: str MONGO_DB_PORT: int MONGO_DB_NAME: str @@ -127,7 +128,7 @@ class Settings(BaseSettings): # ================================================= # # ******************** Redis配置 ******************* # # ================================================= # - REDIS_ENABLE: bool # 是否启用Redis + REDIS_ENABLE: bool = True # 是否启用Redis REDIS_HOST: str REDIS_PORT: int REDIS_DB: int @@ -135,32 +136,32 @@ class Settings(BaseSettings): # ================================================= # # ******************** 验证码配置 ******************* # # ================================================= # - CAPTCHA_ENABLE: bool # 是否启用验证码 - CAPTCHA_EXPIRE_SECONDS: int # 验证码过期时间(秒) - CAPTCHA_FONT_SIZE: int # 字体大小 + CAPTCHA_ENABLE: bool = True # 是否启用验证码 + CAPTCHA_EXPIRE_SECONDS: int = 60 # 验证码过期时间(秒) + CAPTCHA_FONT_SIZE: int = 40 # 字体大小 CAPTCHA_FONT_PATH: Path = 'static/assets/font/Arial.ttf' # 字体路径 # ================================================= # # ********************* 日志配置 ******************* # # ================================================= # + LOGGER_LEVEL: str # 日志级别 LOGGER_NAME: str = date.today().strftime(r'%Y-%m-%d.log') # 日志文件名 LOGGER_FILEPATH: Path = BASE_DIR.joinpath('logs', LOGGER_NAME) # 日志文件路径 - BACKUPCOUNT: int # 日志文件备份数 - WHEN: str # 日志分割时间 - INTERVAL: int # 日志分割间隔 - ENCODING: str # 日志编码 - LOGGER_LEVEL: str # 日志级别 - LOGGER_FORMAT: str # 日志格式 - OPERATION_LOG_RECORD: bool # 是否记录操作日志 - OPERATION_RECORD_METHOD: List[str] # 需要记录的请求方法 - IGNORE_OPERATION_FUNCTION: List[str] # 忽略记录的函数 + BACKUPCOUNT: int = 10 # 日志文件备份数 + WHEN: str = 'MIDNIGHT' # 日志分割时间 + INTERVAL: int = 1 # 日志分割间隔 + ENCODING: str = 'utf-8' # 日志编码 + LOGGER_FORMAT: str = '%(asctime)s - %(levelname)s - [%(name)s:%(filename)s:%(funcName)s:%(lineno)d] %(message)s' # 日志格式 + OPERATION_LOG_RECORD: bool = True # 是否记录操作日志 + OPERATION_RECORD_METHOD: List[str] = ["POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"] # 需要记录的请求方法 + IGNORE_OPERATION_FUNCTION: List[str] = ["get_captcha_for_login"] # 忽略记录的函数 # ================================================= # # ******************* Gzip压缩配置 ******************* # # ================================================= # - GZIP_ENABLE: bool # 是否启用Gzip - GZIP_MIN_SIZE: int # 最小压缩大小(字节) - GZIP_COMPRESS_LEVEL: int # 压缩级别(1-9) + GZIP_ENABLE: bool = True # 是否启用Gzip + GZIP_MIN_SIZE: int = 1000 # 最小压缩大小(字节) + GZIP_COMPRESS_LEVEL: int = 9 # 压缩级别(1-9) # ================================================= # # ***************** 演示模型配置 ***************** # @@ -198,7 +199,7 @@ class Settings(BaseSettings): # 视频 '.mp4', '.avi', '.rmvb' ] - MAX_FILE_SIZE: int # 最大文件大小(10MB) + MAX_FILE_SIZE: int = 10 * 1024 * 1024 # 最大文件大小(10MB) # ================================================= # # ***************** Swagger配置 ***************** # @@ -290,11 +291,14 @@ class Settings(BaseSettings): if self.DB_DRIVER not in supported_db_drivers: raise ValueError(f"数据库驱动不支持: {self.DB_DRIVER}, 请选择 {supported_db_drivers}") if self.DB_DRIVER == "sqlite": - return f"sqlite+aiosqlite:///{self.BASE_DIR.joinpath(self.SQLITE_DB_NAME)}?characterEncoding=UTF-8" + SQLITE_URI: str = f"sqlite+aiosqlite:///{self.BASE_DIR.joinpath(self.SQLITE_DB_NAME)}?characterEncoding=UTF-8" + return SQLITE_URI elif self.DB_DRIVER == "mysql": - return f"mysql+asyncmy://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}@{self.MYSQL_HOST}:{self.MYSQL_PORT}/{self.MYSQL_DB_NAME}?charset=utf8mb4" + MYSQL_URI: MySQLDsn = f"mysql+asyncmy://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}@{self.MYSQL_HOST}:{self.MYSQL_PORT}/{self.MYSQL_DB_NAME}?charset=utf8mb4" + return MYSQL_URI else: - return f"postgresql+asyncpg://{self.POSTGRESQL_USER}:{self.POSTGRESQL_PASSWORD}@{self.POSTGRESQL_HOST}:{self.POSTGRESQL_PORT}/{self.POSTGRESQL_DB_NAME}" + POSRGRES_URI: PostgresDsn = f"postgresql+asyncpg://{self.POSTGRESQL_USER}:{self.POSTGRESQL_PASSWORD}@{self.POSTGRESQL_HOST}:{self.POSTGRESQL_PORT}/{self.POSTGRESQL_DB_NAME}" + return POSRGRES_URI @property def get_redis_uri(self) -> RedisDsn: diff --git a/backend/dev_sql.db b/backend/dev_sql.db index 8a3e8567..0d70c8d5 100644 Binary files a/backend/dev_sql.db and b/backend/dev_sql.db differ