moonstream/engineapi/alembic/versions/6b45cfe1799c_add_leaderboar...

93 wiersze
3.0 KiB
Python

"""Add leaderboard table add leaderboardscores
Revision ID: 6b45cfe1799c
Revises: 3f2ec6253b7e
Create Date: 2022-05-19 21:09:02.690868
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision = "6b45cfe1799c"
down_revision = "3f2ec6253b7e"
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table(
"leaderboards",
sa.Column("id", postgresql.UUID(as_uuid=True), nullable=False),
sa.Column("title", sa.VARCHAR(length=128), nullable=False),
sa.Column("description", sa.String(), nullable=True),
sa.Column(
"created_at",
sa.DateTime(timezone=True),
server_default=sa.text("TIMEZONE('utc', statement_timestamp())"),
nullable=False,
),
sa.Column(
"updated_at",
sa.DateTime(timezone=True),
server_default=sa.text("TIMEZONE('utc', statement_timestamp())"),
nullable=False,
),
sa.PrimaryKeyConstraint("id", name=op.f("pk_leaderboards")),
sa.UniqueConstraint("id", name=op.f("uq_leaderboards_id")),
)
op.create_table(
"leaderboard_scores",
sa.Column("id", postgresql.UUID(as_uuid=True), nullable=False),
sa.Column("leaderboard_id", postgresql.UUID(as_uuid=True), nullable=False),
sa.Column("address", sa.VARCHAR(length=256), nullable=False),
sa.Column("score", sa.BigInteger(), nullable=False),
sa.Column(
"points_data", postgresql.JSONB(astext_type=sa.Text()), nullable=True
),
sa.Column(
"created_at",
sa.DateTime(timezone=True),
server_default=sa.text("TIMEZONE('utc', statement_timestamp())"),
nullable=False,
),
sa.Column(
"updated_at",
sa.DateTime(timezone=True),
server_default=sa.text("TIMEZONE('utc', statement_timestamp())"),
nullable=False,
),
sa.ForeignKeyConstraint(
["leaderboard_id"],
["leaderboards.id"],
name=op.f("fk_leaderboard_scores_leaderboard_id_leaderboards"),
ondelete="CASCADE",
),
sa.PrimaryKeyConstraint("id", name=op.f("pk_leaderboard_scores")),
sa.UniqueConstraint("id", name=op.f("uq_leaderboard_scores_id")),
sa.UniqueConstraint(
"leaderboard_id",
"address",
name=op.f("uq_leaderboard_scores_leaderboard_id"),
),
)
op.create_index(
op.f("ix_leaderboard_scores_address"),
"leaderboard_scores",
["address"],
unique=False,
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_index(
op.f("ix_leaderboard_scores_address"), table_name="leaderboard_scores"
)
op.drop_table("leaderboard_scores")
op.drop_table("leaderboards")
# ### end Alembic commands ###