add mysql support
This commit is contained in:
parent
4959f1987c
commit
d66ce5a026
1 changed files with 28 additions and 5 deletions
|
@ -32,14 +32,37 @@ class DBType(Enum):
|
||||||
|
|
||||||
|
|
||||||
class DBConfig(BaseModel):
|
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
|
@property
|
||||||
async def db_engine(self) -> Engine:
|
async def db_engine(self) -> Engine:
|
||||||
return create_engine(
|
if self.type is DBType.sqlite:
|
||||||
"sqlite:///./tmp/vpn.db",
|
# SQLite backend
|
||||||
connect_args={"check_same_thread": False},
|
return create_engine(
|
||||||
)
|
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):
|
class JWTConfig(BaseModel):
|
||||||
|
|
Loading…
Reference in a new issue