add mysql support
This commit is contained in:
parent
4959f1987c
commit
d66ce5a026
1 changed files with 28 additions and 5 deletions
|
@ -32,15 +32,38 @@ class DBType(Enum):
|
|||
|
||||
|
||||
class DBConfig(BaseModel):
|
||||
db_type: DBType = DBType.sqlite
|
||||
type: DBType = DBType.sqlite
|
||||
user: str | None = None
|
||||
password: str | None = None
|
||||
host: str | None = None
|
||||
database: str | None = "./tmp/vpn.db"
|
||||
|
||||
mysql_driver: str = "pymysql"
|
||||
mysql_args: list[str] = ["charset=utf8mb4"]
|
||||
|
||||
@property
|
||||
async def db_engine(self) -> Engine:
|
||||
if self.type is DBType.sqlite:
|
||||
# SQLite backend
|
||||
return create_engine(
|
||||
"sqlite:///./tmp/vpn.db",
|
||||
f"sqlite:///{self.database}",
|
||||
connect_args={"check_same_thread": False},
|
||||
)
|
||||
|
||||
elif self.type is DBType.mysql:
|
||||
# MySQL backend
|
||||
if self.mysql_args:
|
||||
args_str = "?" + "&".join(self.mysql_args)
|
||||
else:
|
||||
args_str = ""
|
||||
|
||||
return create_engine(
|
||||
f"mysql+{self.mysql_driver}://"
|
||||
f"{self.user}:{self.password}@{self.host}"
|
||||
f"/{self.database}{args_str}",
|
||||
pool_recycle=3600,
|
||||
)
|
||||
|
||||
|
||||
class JWTConfig(BaseModel):
|
||||
secret: str | None = None
|
||||
|
|
Loading…
Reference in a new issue