backend: добавили состояния персонажей

This commit is contained in:
Leonid-Murzinov
2022-11-20 12:29:24 +03:00
parent 9c989350ec
commit 55f3cc7eff
5 changed files with 92 additions and 3 deletions

View File

@@ -0,0 +1,41 @@
"""empty message
Revision ID: 4ab34de53087
Revises: 1da93403ba52
Create Date: 2022-11-20 12:22:55.594622
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '4ab34de53087'
down_revision = '1da93403ba52'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('character_states',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=255), nullable=False),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('name')
)
with op.batch_alter_table('characters', schema=None) as batch_op:
batch_op.add_column(sa.Column('state_id', sa.Integer(), nullable=False))
batch_op.create_foreign_key(None, 'character_states', ['state_id'], ['id'], ondelete='CASCADE')
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('characters', schema=None) as batch_op:
batch_op.drop_constraint(None, type_='foreignkey')
batch_op.drop_column('state_id')
op.drop_table('character_states')
# ### end Alembic commands ###

View File

@@ -62,5 +62,18 @@
"wisdom_koef": 1.5 "wisdom_koef": 1.5
} }
] ]
},
{
"table_name": "character_states",
"records": [
{
"id": 1,
"name": "Default"
},
{
"id": 2,
"name": "Duel"
}
]
} }
] ]

View File

@@ -8,8 +8,12 @@ from textsouls.models import User
from textsouls.models import CharacterRace from textsouls.models import CharacterRace
from textsouls.models import CharacterClass from textsouls.models import CharacterClass
from textsouls.models import CharacterState
from textsouls.models import Character from textsouls.models import Character
from textsouls.models import DuelParticipants
from textsouls.models import Duel
ts_admin = Blueprint("ts_admin", __name__) ts_admin = Blueprint("ts_admin", __name__)
@@ -30,4 +34,8 @@ admin.add_view(AdminView(User, db.session))
admin.add_view(CommonView(CharacterRace, db.session)) admin.add_view(CommonView(CharacterRace, db.session))
admin.add_view(CommonView(CharacterClass, db.session)) admin.add_view(CommonView(CharacterClass, db.session))
admin.add_view(CommonView(CharacterState, db.session))
admin.add_view(CommonView(Character, db.session)) admin.add_view(CommonView(Character, db.session))
admin.add_view(CommonView(DuelParticipants, db.session))
admin.add_view(CommonView(Duel, db.session))

View File

@@ -5,12 +5,21 @@ from textsouls.models import User
from textsouls.models import CharacterRace from textsouls.models import CharacterRace
from textsouls.models import CharacterClass from textsouls.models import CharacterClass
from textsouls.models import CharacterState
from textsouls.models import Character from textsouls.models import Character
from textsouls.models import DuelParticipants
from textsouls.models import Duel
main = Blueprint("main", __name__) main = Blueprint("main", __name__)
register_api(main, User, "users") register_api(main, User, "users")
register_api(main, CharacterRace, "character_races") register_api(main, CharacterRace, "character_races")
register_api(main, CharacterClass, "character_classes") register_api(main, CharacterClass, "character_classes")
register_api(main, CharacterState, "character_states")
register_api(main, Character, "characters", "owner") register_api(main, Character, "characters", "owner")
register_api(main, DuelParticipants, "duels_participants")
register_api(main, Duel, "duels")

View File

@@ -66,6 +66,18 @@ class CharacterClass(db.Model, SerializerMixin):
return self.name return self.name
class CharacterState(db.Model, SerializerMixin):
__tablename__ = "character_states"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), nullable=False, unique=True)
characters = db.relationship("Character", backref="state", lazy="dynamic")
def __str__(self):
return self.name
class Character(db.Model, SerializerMixin): class Character(db.Model, SerializerMixin):
__tablename__ = "characters" __tablename__ = "characters"
@@ -96,6 +108,12 @@ class Character(db.Model, SerializerMixin):
agility_base = db.Column(db.Integer(), nullable=False, unique=False) agility_base = db.Column(db.Integer(), nullable=False, unique=False)
defence_base = db.Column(db.Integer(), nullable=False, unique=False) defence_base = db.Column(db.Integer(), nullable=False, unique=False)
wisdom_base = db.Column(db.Integer(), nullable=False, unique=False) wisdom_base = db.Column(db.Integer(), nullable=False, unique=False)
state_id = db.Column(
db.Integer,
db.ForeignKey("character_states.id", ondelete="CASCADE"),
nullable=False,
default=1,
)
def __init__(self, **kwargs): def __init__(self, **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
@@ -165,6 +183,9 @@ class DuelParticipants(db.Model, SerializerMixin):
db.ForeignKey("duels.id", ondelete="CASCADE"), db.ForeignKey("duels.id", ondelete="CASCADE"),
) )
def __str__(self):
return self.duel_id, self.participant_id
class Duel(db.Model, SerializerMixin): class Duel(db.Model, SerializerMixin):
@@ -177,6 +198,3 @@ class Duel(db.Model, SerializerMixin):
participants = db.relationship( participants = db.relationship(
"DuelParticipants", backref="duel", lazy="dynamic" "DuelParticipants", backref="duel", lazy="dynamic"
) )
def __str__(self):
return self.name