backend: добавлена модель дуэлей

This commit is contained in:
2022-11-20 11:45:27 +03:00
parent ce934affe3
commit 9c989350ec
3 changed files with 91 additions and 12 deletions

View File

@@ -0,0 +1,32 @@
"""empty message
Revision ID: 1da93403ba52
Revises: aa81b5d5ae0f
Create Date: 2022-11-20 11:44:37.737612
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '1da93403ba52'
down_revision = 'aa81b5d5ae0f'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('duels', schema=None) as batch_op:
batch_op.add_column(sa.Column('created_on', sa.DateTime(), nullable=False))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('duels', schema=None) as batch_op:
batch_op.drop_column('created_on')
# ### end Alembic commands ###

View File

@@ -1,8 +1,8 @@
"""empty message
Revision ID: c3b392fdf575
Revision ID: aa81b5d5ae0f
Revises:
Create Date: 2022-11-20 00:31:12.952336
Create Date: 2022-11-20 11:42:42.864173
"""
from alembic import op
@@ -10,7 +10,7 @@ import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'c3b392fdf575'
revision = 'aa81b5d5ae0f'
down_revision = None
branch_labels = None
depends_on = None
@@ -40,6 +40,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('name')
)
op.create_table('duels',
sa.Column('id', sa.Integer(), nullable=False),
sa.PrimaryKeyConstraint('id')
)
op.create_table('users',
sa.Column('id', sa.BigInteger(), autoincrement=False, nullable=False),
sa.Column('chat_id', sa.BigInteger(), nullable=False),
@@ -53,29 +57,40 @@ def upgrade():
)
op.create_table('characters',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('owner', sa.BigInteger(), nullable=True),
sa.Column('owner_id', sa.BigInteger(), nullable=True),
sa.Column('name', sa.String(length=255), nullable=False),
sa.Column('character_race', sa.Integer(), nullable=False),
sa.Column('character_class', sa.Integer(), nullable=False),
sa.Column('character_race_id', sa.Integer(), nullable=False),
sa.Column('character_class_id', sa.Integer(), nullable=False),
sa.Column('created_on', sa.DateTime(), nullable=False),
sa.Column('endurance_base', sa.Integer(), nullable=False),
sa.Column('strength_base', sa.Integer(), nullable=False),
sa.Column('agility_base', sa.Integer(), nullable=False),
sa.Column('defence_base', sa.Integer(), nullable=False),
sa.Column('wisdom_base', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['character_class'], ['character_classes.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['character_race'], ['character_races.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['owner'], ['users.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['character_class_id'], ['character_classes.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['character_race_id'], ['character_races.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['owner_id'], ['users.id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('name')
)
op.create_table('duels_participants',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('participant_id', sa.Integer(), nullable=True),
sa.Column('turn_order', sa.Integer(), nullable=False),
sa.Column('duel_id', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['duel_id'], ['duels.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['participant_id'], ['characters.id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id')
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('duels_participants')
op.drop_table('characters')
op.drop_table('users')
op.drop_table('duels')
op.drop_table('character_races')
op.drop_table('character_classes')
# ### end Alembic commands ###

View File

@@ -73,17 +73,17 @@ class Character(db.Model, SerializerMixin):
serialize_rules = ("-user", "-race", "-class")
id = db.Column(db.Integer, primary_key=True)
owner = db.Column(
owner_id = db.Column(
db.BigInteger,
db.ForeignKey("users.id", ondelete="CASCADE"),
)
name = db.Column(db.String(255), nullable=False, unique=True)
character_race = db.Column(
character_race_id = db.Column(
db.Integer,
db.ForeignKey("character_races.id", ondelete="CASCADE"),
nullable=False,
)
character_class = db.Column(
character_class_id = db.Column(
db.Integer,
db.ForeignKey("character_classes.id", ondelete="CASCADE"),
nullable=False,
@@ -148,3 +148,35 @@ class Character(db.Model, SerializerMixin):
"defence_chance": defence_chance,
"dodge_chance": dodge_chance,
}
class DuelParticipants(db.Model, SerializerMixin):
__tablename__ = "duels_participants"
id = db.Column(db.Integer, primary_key=True)
participant_id = db.Column(
db.Integer,
db.ForeignKey("characters.id", ondelete="CASCADE"),
)
turn_order = db.Column(db.Integer, nullable=False)
duel_id = db.Column(
db.Integer,
db.ForeignKey("duels.id", ondelete="CASCADE"),
)
class Duel(db.Model, SerializerMixin):
__tablename__ = "duels"
id = db.Column(db.Integer, primary_key=True)
created_on = db.Column(
db.DateTime, nullable=False, default=datetime.datetime.now()
)
participants = db.relationship(
"DuelParticipants", backref="duel", lazy="dynamic"
)
def __str__(self):
return self.name