From e2f17743b720444503d26b0998414f1f2fd4f5b8 Mon Sep 17 00:00:00 2001 From: coolneng Date: Mon, 26 Oct 2020 17:05:04 +0100 Subject: [PATCH] Add foreign keys to database --- database/models.py | 28 ++++------ .../versions/e443e876bf33_add_foreign_keys.py | 52 +++++++++++++++++++ 2 files changed, 61 insertions(+), 19 deletions(-) create mode 100644 migrations/versions/e443e876bf33_add_foreign_keys.py diff --git a/database/models.py b/database/models.py index 2fc0054..de9a27c 100644 --- a/database/models.py +++ b/database/models.py @@ -140,9 +140,9 @@ class Teams(Base): __tablename__ = "teams" id = Column(Integer, primary_key=True, autoincrement=True) - user_id = Column(Integer, ForeignKey("users_id")) + user_id = Column(Integer, ForeignKey("users.id")) team_id = Column(Enum("1", "2")) - game_id = Column(Integer, ForeignKey("games_id")) + game_id = Column(Integer, ForeignKey("games.id")) status = Column(Integer) created = Column(DateTime, nullable=False, server_default=func.now()) updated = Column(DateTime, nullable=True, onupdate=func.now()) @@ -152,9 +152,9 @@ class UserRatings(Base): __tablename__ = "user_ratings" id = Column(Integer, primary_key=True, autoincrement=True) - game_id = Column(Integer, ForeignKey("games_id")) - user_id = Column(Integer, ForeignKey("users_id")) - player_id = Column(Integer, ForeignKey("users_id")) + game_id = Column(Integer, ForeignKey("games.id")) + user_id = Column(Integer, ForeignKey("users.id")) + player_id = Column(Integer, ForeignKey("users.id")) rating = Column(String(100), nullable=False) created = Column(DateTime, nullable=False, server_default=func.now()) updated = Column(DateTime, nullable=True, onupdate=func.now()) @@ -165,8 +165,8 @@ class VenueImages(Base): __tablename__ = "venue_images" id = Column(Integer, primary_key=True, autoincrement=True) - venue_id = Column(Integer, ForeignKey("venues_id")) - user_id = Column(Integer, ForeignKey("users_id")) + venue_id = Column(Integer, ForeignKey("venues.id")) + user_id = Column(Integer, ForeignKey("users.id")) image = Column(String(255)) created = Column(DateTime, nullable=False, server_default=func.now()) updated = Column(DateTime, nullable=True, onupdate=func.now()) @@ -176,22 +176,12 @@ class Venues(Base): __tablename__ = "venues" id = Column(Integer, primary_key=True, autoincrement=True) - user_id = Column(Integer, ForeignKey("users_id")) + user_id = Column(Integer, ForeignKey("users.id")) address = Column(Text, nullable=False) latitude = Column(String(100)) longitude = Column(String(100)) name = Column(String(100), nullable=False) - sports_id = Column(Integer, ForeignKey("sports_id")) - created = Column(DateTime, nullable=False, server_default=func.now()) - updated = Column(DateTime, nullable=True, onupdate=func.now()) - - -class ViewNews(Base): - __tablename__ = "view_news" - - id = Column(Integer, primary_key=True, autoincrement=True) - news_id = Column(Integer) - user_id = Column(Integer, ForeignKey("users_id")) + sports_id = Column(Integer, ForeignKey("sports.id")) created = Column(DateTime, nullable=False, server_default=func.now()) updated = Column(DateTime, nullable=True, onupdate=func.now()) diff --git a/migrations/versions/e443e876bf33_add_foreign_keys.py b/migrations/versions/e443e876bf33_add_foreign_keys.py new file mode 100644 index 0000000..4c18430 --- /dev/null +++ b/migrations/versions/e443e876bf33_add_foreign_keys.py @@ -0,0 +1,52 @@ +"""add foreign keys + +Revision ID: e443e876bf33 +Revises: f8ef6bad794a +Create Date: 2020-10-26 14:37:21.156557 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = "e443e876bf33" +down_revision = "f8ef6bad794a" +branch_labels = None +depends_on = None + + +def upgrade(): + tables = { + "games": ["user_id", "city_id", "venue_id", "sports_id"], + "payments": ["user_id", "game_id"], + "player_availabilities": ["game_id", "player_id"], + "player_cancel_games": ["game_id", "player_id"], + "purchase_games": ["game_id", "user_id"], + "teams": ["game_id", "user_id"], + "users": ["city_id"], + "user_ratings": ["game_id", "user_id", "player_id"], + "venues": ["user_id", "sports_id"], + "venue_images": ["venue_id", "user_id"], + } + referent_tables = { + "user_id": "users", + "city_id": "cities", + "venue_id": "venues", + "sports_id": "sports", + "game_id": "games", + "player_id": "users", + } + for table, field in tables.items(): + for item in field: + with op.batch_alter_table(table) as batch_op: + batch_op.create_foreign_key( + constraint_name="fk_{}".format(item), + referent_table=referent_tables[item], + local_cols=[item], + remote_cols=["id"], + ) + + +def downgrade(): + pass