This commit is contained in:
felinae98 2022-03-22 01:12:32 +08:00
parent 4ea680e8dc
commit 33bd938ad5
No known key found for this signature in database
GPG Key ID: 00C8B010587FF610
2 changed files with 28 additions and 4 deletions

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()

View File

@ -24,10 +24,10 @@ 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
@ -63,6 +63,9 @@ def run_migrations_offline():
def do_run_migration(connection: Connection): def do_run_migration(connection: Connection):
if __as_plugin:
context.configure(connection=connection)
else:
context.configure(connection=connection, target_metadata=target_metadata) context.configure(connection=connection, target_metadata=target_metadata)
with context.begin_transaction(): with context.begin_transaction():