From 2f9aded4ddb42f8c854ff9664d063fe7dc152d73 Mon Sep 17 00:00:00 2001 From: CMHopeSunshine <277073121@qq.com> Date: Tue, 19 Sep 2023 14:56:53 +0800 Subject: [PATCH] :sparkles: expose some properties of `Database` --- cherry/database/engine.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/cherry/database/engine.py b/cherry/database/engine.py index a85f6c2..3ba74be 100644 --- a/cherry/database/engine.py +++ b/cherry/database/engine.py @@ -31,6 +31,14 @@ def __init__(self, url: Union[str, URL], echo: bool = False) -> None: self._metadata = MetaData() self._url = url + @property + def metadata(self): + return self._metadata + + @property + def engine(self): + return self._engine + async def create_all(self): async with self._engine.begin() as conn: await conn.run_sync(self._metadata.create_all) @@ -40,15 +48,18 @@ async def drop_all(self): await conn.run_sync(self._metadata.drop_all) async def init(self): - for model in self._models.values(): - model._generate_sqlalchemy_column() - model._generate_sqlalchemy_table(self._metadata) + self.init_all_model() if self._url.drivername.startswith("sqlite"): self._set_sqlite() await self.create_all() + def init_all_model(self): + for model in self._models.values(): + model._generate_sqlalchemy_column() + model._generate_sqlalchemy_table(self._metadata) + async def dispose(self): await self._engine.dispose() @@ -56,20 +67,10 @@ def add_model(self, model: Type["Model"]): self._models[model.__meta__.tablename] = model model.__meta__.database = self - async def execute( - self, - *arg, - **kwargs, - ): - async with self._engine.connect() as conn: - result = await conn.execute(*arg, **kwargs) - await conn.commit() - return result - async def __aenter__(self) -> AsyncConnection: - if self._connect is None: - self._connect = self._engine.connect() async with self._lock: + if self._connect is None: + self._connect = self._engine.connect() self._counter += 1 if self._counter == 1: await self._connect.start()