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