mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2026-05-09 18:27:56 +08:00
🗃️ add user_target column
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
import datetime
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
from nonebot_plugin_datastore import get_plugin_data
|
||||
from nonebot_plugin_saa.utils import PlatformTarget
|
||||
from sqlalchemy import JSON, ForeignKey, String, UniqueConstraint
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
@@ -17,6 +19,7 @@ class User(Model):
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
type: Mapped[str] = mapped_column(String(20))
|
||||
uid: Mapped[int]
|
||||
user_target: Mapped[Optional[dict]] = mapped_column(JSON, nullable=True)
|
||||
|
||||
subscribes: Mapped[list["Subscribe"]] = relationship(back_populates="user")
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
"""add user_target
|
||||
|
||||
Revision ID: 632b8086bc2b
|
||||
Revises: aceef470d69c
|
||||
Create Date: 2023-03-20 00:39:30.199915
|
||||
|
||||
"""
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = "632b8086bc2b"
|
||||
down_revision = "aceef470d69c"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table("nonebot_bison_user", schema=None) as batch_op:
|
||||
batch_op.add_column(sa.Column("user_target", sa.JSON(), nullable=True))
|
||||
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table("nonebot_bison_user", schema=None) as batch_op:
|
||||
batch_op.drop_column("user_target")
|
||||
|
||||
# ### end Alembic commands ###
|
||||
@@ -0,0 +1,51 @@
|
||||
"""map user
|
||||
|
||||
Revision ID: a5466912fad0
|
||||
Revises: 632b8086bc2b
|
||||
Create Date: 2023-03-20 01:14:42.623789
|
||||
|
||||
"""
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
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()
|
||||
Reference in New Issue
Block a user