backend + telegram: добавлено создание персонажа

This commit is contained in:
2022-11-19 01:31:35 +03:00
parent 2bc6931525
commit 194b5aaff1
11 changed files with 291 additions and 51 deletions

View File

@@ -0,0 +1,44 @@
"""empty message
Revision ID: 02142c549a8c
Revises: 07950b032eb7
Create Date: 2022-11-19 00:29:12.011840
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '02142c549a8c'
down_revision = '07950b032eb7'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('character_classes', schema=None) as batch_op:
batch_op.create_unique_constraint(None, ['name'])
with op.batch_alter_table('character_races', schema=None) as batch_op:
batch_op.create_unique_constraint(None, ['name'])
with op.batch_alter_table('characters', schema=None) as batch_op:
batch_op.create_unique_constraint(None, ['name'])
# ### 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_='unique')
with op.batch_alter_table('character_races', schema=None) as batch_op:
batch_op.drop_constraint(None, type_='unique')
with op.batch_alter_table('character_classes', schema=None) as batch_op:
batch_op.drop_constraint(None, type_='unique')
# ### end Alembic commands ###

View File

@@ -0,0 +1,36 @@
"""empty message
Revision ID: 07950b032eb7
Revises: 5aef83a8a42f
Create Date: 2022-11-18 23:40:33.130706
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import mysql
# revision identifiers, used by Alembic.
revision = '07950b032eb7'
down_revision = '5aef83a8a42f'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('characters', schema=None) as batch_op:
batch_op.alter_column('owner',
existing_type=mysql.INTEGER(),
nullable=True)
# ### 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.alter_column('owner',
existing_type=mysql.INTEGER(),
nullable=False)
# ### end Alembic commands ###

View File

@@ -18,17 +18,6 @@ class ItemAPI(MethodView):
item = self._get_item(id)
return item.to_dict()
def patch(self, id):
item = self._get_item(id)
errors = self.validator.validate(item, request.json)
if errors:
return jsonify(errors), 400
item.update_from_json(request.json)
db.session.commit()
return item.to_dict()
def delete(self, id):
item = self._get_item(id)
db.session.delete(item)
@@ -51,12 +40,15 @@ class ListAPI(MethodView):
def post(self):
item = self._get_item(request.json["id"])
data = request.json
if item:
return "Already exists!", 400
if data.get("id"):
item = self._get_item(data["id"])
db.session.add(self.model(**request.json))
if item:
return "Already exists!", 400
db.session.add(self.model(**data))
db.session.commit()
return "", 200

View File

@@ -11,6 +11,6 @@ main = Blueprint("main", __name__)
register_api(main, User, "users")
register_api(main, CharacterRace, "charachter-races")
register_api(main, CharacterClass, "charachter-classes")
register_api(main, Character, "character")
register_api(main, CharacterRace, "character_races")
register_api(main, CharacterClass, "character_classes")
register_api(main, Character, "characters")

View File

@@ -11,6 +11,8 @@ class User(db.Model, SerializerMixin):
__tablename__ = "users"
serialize_rules = ("-characters",)
id = db.Column(db.Integer, primary_key=True, autoincrement=False)
first_name = db.Column(db.String(255), nullable=True)
last_name = db.Column(db.String(255), nullable=True)
@@ -19,7 +21,7 @@ class User(db.Model, SerializerMixin):
db.DateTime, nullable=False, default=datetime.datetime.now()
)
is_admin = db.Column(db.Boolean, nullable=False, default=False)
character = db.relationship("Character", backref="user", lazy="dynamic")
characters = db.relationship("Character", backref="user", lazy="dynamic")
def __str__(self):
return f"{self.id}: {self.username}"
@@ -29,9 +31,11 @@ class CharacterRace(db.Model, SerializerMixin):
__tablename__ = "character_races"
serialize_rules = ("-characters",)
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), nullable=True)
character = db.relationship("Character", backref="race", lazy="dynamic")
name = db.Column(db.String(255), nullable=True, unique=True)
characters = db.relationship("Character", backref="race", lazy="dynamic")
def __str__(self):
return self.name
@@ -41,9 +45,11 @@ class CharacterClass(db.Model, SerializerMixin):
__tablename__ = "character_classes"
serialize_rules = ("-characters",)
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), nullable=True)
character = db.relationship("Character", backref="class", lazy="dynamic")
name = db.Column(db.String(255), nullable=True, unique=True)
characters = db.relationship("Character", backref="class", lazy="dynamic")
def __str__(self):
return self.name
@@ -59,7 +65,7 @@ class Character(db.Model, SerializerMixin):
db.ForeignKey("users.id"),
nullable=True,
)
name = db.Column(db.String(255), nullable=False)
name = db.Column(db.String(255), nullable=False, unique=True)
character_race = db.Column(
db.Integer,
db.ForeignKey("character_races.id"),