This commit is contained in:
felinae98
2022-03-22 01:12:32 +08:00
parent 4ea680e8dc
commit 33bd938ad5
2 changed files with 28 additions and 4 deletions
+21
View File
@@ -3,8 +3,12 @@ from pathlib import Path
import nonebot import nonebot
from alembic import command from alembic import command
from alembic.config import Config from alembic.config import Config
from alembic.runtime.environment import EnvironmentContext
from alembic.script.base import ScriptDirectory
from nonebot_plugin_datastore import PluginData, create_session, db from nonebot_plugin_datastore import PluginData, create_session, db
from .db_model import Base
DATA = PluginData("bison") DATA = PluginData("bison")
@@ -16,3 +20,20 @@ async def upgrade_db():
) )
alembic_cfg.set_main_option("sqlalchemy.url", "") alembic_cfg.set_main_option("sqlalchemy.url", "")
command.upgrade(alembic_cfg, "head") command.upgrade(alembic_cfg, "head")
script = ScriptDirectory.from_config(alembic_cfg)
def upgrade(rev, context):
return script._upgrade_revs("head", rev)
with EnvironmentContext(
alembic_cfg,
script,
fn=upgrade,
as_sql=False,
starting_rev=None,
destination_rev="head",
tag=None,
target_metadata=Base.metadata,
):
script.run_env()
@@ -24,13 +24,13 @@ import nonebot
try: try:
nonebot.get_driver() nonebot.get_driver()
__as_plugin = True __as_plugin = True
target_metadata = None
except: except:
__as_plugin = False __as_plugin = False
nonebot.init() nonebot.init()
from nonebot_bison.config.db_model import Base
from nonebot_bison.config.db_model import Base target_metadata = Base.metadata
target_metadata = Base.metadata
# other values from the config, defined by the needs of env.py, # other values from the config, defined by the needs of env.py,
# can be acquired: # can be acquired:
@@ -63,7 +63,10 @@ def run_migrations_offline():
def do_run_migration(connection: Connection): def do_run_migration(connection: Connection):
context.configure(connection=connection, target_metadata=target_metadata) if __as_plugin:
context.configure(connection=connection)
else:
context.configure(connection=connection, target_metadata=target_metadata)
with context.begin_transaction(): with context.begin_transaction():
context.run_migrations() context.run_migrations()