nonebot-bison/nonebot_bison/config/migrations/a5466912fad0_map_user.py
2024-12-17 10:52:21 +08:00

53 lines
1.5 KiB
Python

"""map user
Revision ID: a5466912fad0
Revises: 632b8086bc2b
Create Date: 2023-03-20 01:14:42.623789
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
# revision identifiers, used by Alembic.
revision = "a5466912fad0"
down_revision = "632b8086bc2b"
branch_labels = None
depends_on = None
def upgrade() -> None:
Base = automap_base()
Base.prepare(op.get_bind())
User = Base.classes.nonebot_bison_user
with Session(op.get_bind()) as sess:
users = sess.scalars(sa.select(User)).all()
for user in users:
if user.type == "group":
user.user_target = {"platform_type": "QQ Group", "group_id": user.uid}
elif user.type == "private":
user.user_target = {"platform_type": "QQ Private", "user_id": user.uid}
else:
sess.delete(user)
sess.add_all(users)
sess.commit()
def downgrade() -> None:
Base = automap_base()
Base.prepare(op.get_bind())
User = Base.classes.nonebot_bison_user
with Session(op.get_bind()) as sess:
users = sess.scalars(sa.select(User)).all()
for user in users:
if user.user_target["platform_type"] == "QQ Group":
user.uid = user.user_target["group_id"]
user.type = "group"
else:
user.uid = user.user_target["user_id"]
user.type = "private"
sess.add_all(users)
sess.commit()