diff --git a/.gitignore b/.gitignore index c9fd099..5567198 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ src/constants.py +assets/db_schema.sql diff --git a/src/Pipfile b/src/Pipfile index 607073a..fb832c8 100644 --- a/src/Pipfile +++ b/src/Pipfile @@ -11,6 +11,7 @@ flask = "*" pymysql = "*" flask-praetorian = "*" flask-sqlalchemy = "*" +flask-migrate = "*" [requires] python_version = "3.8" diff --git a/src/Pipfile.lock b/src/Pipfile.lock index c0a6b29..6288644 100644 --- a/src/Pipfile.lock +++ b/src/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "5bee56bdc672b4d2c8c3450c852221d2dbe8b5d15840a0fafa5643c87b03ce3a" + "sha256": "4328be3ab2dfc7cdc0c6dfc8ff03702be800ff524133228b149ca368e1d29bfe" }, "pipfile-spec": 6, "requires": { @@ -16,6 +16,12 @@ ] }, "default": { + "alembic": { + "hashes": [ + "sha256:035ab00497217628bf5d0be82d664d8713ab13d37b630084da8e1f98facf4dbf" + ], + "version": "==1.4.2" + }, "blinker": { "hashes": [ "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6" @@ -64,6 +70,14 @@ ], "version": "==0.9.1" }, + "flask-migrate": { + "hashes": [ + "sha256:4dc4a5cce8cbbb06b8dc963fd86cf8136bd7d875aabe2d840302ea739b243732", + "sha256:a69d508c2e09d289f6e55a417b3b8c7bfe70e640f53d2d9deb0d056a384f37ee" + ], + "index": "pypi", + "version": "==2.5.3" + }, "flask-praetorian": { "hashes": [ "sha256:107086455f57935432700dab2611aecdaf3825421196cf6c8e812700e43b37a3", @@ -101,6 +115,13 @@ ], "version": "==2.11.1" }, + "mako": { + "hashes": [ + "sha256:3139c5d64aa5d175dbafb95027057128b5fbd05a40c53999f3905ceb53366d9d", + "sha256:8e8b53c71c7e59f3de716b6832c4e401d903af574f6962edbbbf6ecc2a5fe6c9" + ], + "version": "==1.1.2" + }, "markupsafe": { "hashes": [ "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", @@ -199,6 +220,14 @@ ], "version": "==2.8.1" }, + "python-editor": { + "hashes": [ + "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d", + "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b", + "sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8" + ], + "version": "==1.0.4" + }, "pytz": { "hashes": [ "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d", diff --git a/src/app/__init__.py b/src/app/__init__.py index 0ff7bf4..59127e7 100644 --- a/src/app/__init__.py +++ b/src/app/__init__.py @@ -1,9 +1,11 @@ from flask import Flask from config import Config from flask_sqlalchemy import SQLAlchemy +from flask_migrate import Migrate app = Flask(__name__) app.config.from_object(Config) db = SQLAlchemy(app) +migrate = Migrate(app, db) -from app import routes +from app import routes, models diff --git a/src/app/routes.py b/src/app/routes.py index 41ae7f1..0ab9232 100644 --- a/src/app/routes.py +++ b/src/app/routes.py @@ -5,7 +5,7 @@ from app import app @app.route("/users", methods=["POST"]) -def create_user(self): +def create_user(): data = request.get_json() register_user(data) send_otp(data["mobile"]) diff --git a/src/config.py b/src/config.py index e8aa69d..a97fa73 100644 --- a/src/config.py +++ b/src/config.py @@ -1,7 +1,7 @@ -from constants import CONNECTION_URI +from constants import connection_uri class Config(object): - SQLALCHEMY_DATABASE_URI = CONNECTION_URI + SQLALCHEMY_DATABASE_URI = connection_uri SQLALCHEMY_TRACK_MODIFICATIONS = False SECRET_KEY = "trolaso" diff --git a/src/database/models.py b/src/database/models.py new file mode 100644 index 0000000..9d069bd --- /dev/null +++ b/src/database/models.py @@ -0,0 +1,430 @@ +from app import db + + +class Users(db.Model): + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + social_id = db.Column(db.Text) + type = db.Column(db.Integer) + full_name = db.Column(db.String(255), index=True, unique=True) + email = db.Column(db.String(255), index=True, unique=True) + password = db.Column(db.String(255)) + gender = db.Column(db.Integer) + mobile = db.Column(db.String(255)) + user_image = db.Column(db.String(255)) + city_id = db.Column(db.Integer) + user_type = db.Column(db.Integer) + otp = db.Column(db.String(255)) + otp_valid_time = db.Column(db.Date) + access_key = db.Column(db.Text) + lang_type = db.Column(db.Integer) + badge = db.Column(db.Integer) + status = db.Column(db.Integer) + admin_status = db.Column(db.Integer) + device_id = db.Column(db.Text) + device_type = db.Column(db.Integer) + created = db.Column(db.TIMESTAMP, nullable=False, server_default=db.func.now()) + + def __init__( + self, + id, + social_id, + type, + full_name, + email, + password, + gender, + mobile, + user_image, + city_id, + user_type, + otp, + otp_valid_time, + access_key, + lang_type, + badge, + status, + admin_status, + device_id, + device_type, + created, + ): + self.id = id + self.social_id = social_id + self.type = type + self.full_name = full_name + self.email = email + self.password = password + self.gender = gender + self.mobile = mobile + self.user_image = user_image + self.city_id = city_id + self.user_type = user_type + self.otp = otp + self.otp_valid_time = otp_valid_time + self.access_key = access_key + self.lang_type = lang_type + self.badge = badge + self.status = status + self.admin_status = admin_status + self.device_id = device_id + self.device_type = device_type + self.created = created + + +class Cities(db.Model): + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + name = db.Column(db.String(255)) + image = db.Column(db.String(255)) + status = db.Column(db.mysql.ENUM("1", "0")) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + updated = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__(self, name, image, status, created, updated): + self.name = name + self.image = image + self.status = status + self.created = created + self.updated = updated + + +class Games(db.Model): + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + name = db.Column(db.String(255)) + image = db.Column(db.String(255)) + date_time = db.Column(db.DateTime) + price = db.Column(db.String(100)) + description = db.Column(db.Text) + user_id = db.Column(db.Integer) + gender = db.Column(db.mysql.ENUM("1", "2", "3")) + city_id = db.Column(db.Integer) + venue_id = db.Column(db.Integer) + sports_id = db.Column(db.Integer) + no_of_player = db.Column(db.Integer) + min_player = db.Column(db.Integer) + already_player = db.Column(db.Integer) + no_of_already_player = db.Column(db.Integer) + payment_mode = db.Column(db.Integer) + card_id = db.Column(db.Integer) + status = db.Column(db.Integer, server_default=1) + game_status = db.Column(db.Integer, server_default=0) + cancel_status = db.Column(db.Integer) + cancel_date = db.Column(db.DateTime) + noti_status = db.Column(db.Integer, server_default=0) + conduct_status = db.Column(db.Integer, server_default=1) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + updated = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, + id, + name, + image, + date_time, + price, + description, + user_id, + gender, + city_id, + venue_id, + sports_id, + no_of_player, + min_player, + already_player, + no_of_already_player, + payment_mode, + card_id, + created, + updated, + ): + self.id = id + self.name = name + self.image = image + self.date_time = date_time + self.price = price + self.description = description + self.user_id = user_id + self.gender = gender + self.city_id = city_id + self.venue_id = venue_id + self.sports_id = sports_id + self.no_of_player = no_of_player + self.no_of_already_player = no_of_already_player + self.payment_mode = payment_mode + self.card_id = card_id + self.created = created + self.updated = updated + + +class Payments(db.Model): + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + user_id = db.Column(db.Integer) + game_id = db.Column(db.Integer) + amount = db.Column(db.Integer) + token = db.Column(db.String(100)) + charge_id = db.Column(db.String(200)) + transfer_id = db.Column(db.String(200)) + transaction_id = db.Column(db.String(200)) + account_no = db.Column(db.String(200)) + description = db.Column(db.Text) + pay_mode = db.Column(db.Integer) + status = db.Column(db.Integer) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + modified = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, + id, + user_id, + game_id, + amount, + token, + charge_id, + transfer_id, + transaction_id, + account_no, + description, + pay_mode, + status, + created, + modified, + ): + self.id = id + self.user_id = user_id + self.game_id = game_id + self.amount = amount + self.token = token + self.charge_id = charge_id + self.transfer_id = transfer_id + self.transaction_id = transaction_id + self.account_no = account_no + self.description = description + self.pay_mode = pay_mode + self.status = status + self.created = created + self.modified = modified + + +class Player_Availabilities: + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + game_id = db.Column(db.Integer) + player_id = db.Column(db.Integer) + status = db.Column(db.Integer) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + modified = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, id, game_id, player_id, status, created, modified, + ): + self.id = id + self.game_id = game_id + self.player_id = player_id + self.status = status + self.created = created + self.modified = modified + + +class Player_Cancel_Games: + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + player_id = db.Column(db.Integer) + game_id = db.Column(db.Integer) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + modified = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, id, player_id, game_id, created, modified, + ): + self.id = id + self.player_id = player_id + self.game_id = game_id + self.created = created + self.modified = modified + + +class Purchase_Games: + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + game_id = db.Column(db.Integer) + user_id = db.Column(db.Integer) + pay_mode = db.Column(db.Integer) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + modified = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, id, game_id, user_id, pay_mode, created, modified, + ): + self.id = id + self.game_id = game_id + self.user_id = user_id + self.pay_mode = pay_mode + self.created = created + self.modified = modified + + +class Sports: + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + name = db.Column(db.String(255)) + spanish_name = db.Column(db.String(100)) + status = db.Column(db.Integer) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + modified = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, id, name, spanish_name, status, created, modified, + ): + self.id = id + self.name = name + self.spanish_name = spanish_name + self.status = status + self.created = created + self.modified = modified + + +class Teams: + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + user_id = db.Column(db.Integer) + team_id = db.Column(db.mysql.ENUM("1", "2")) + game_id = db.Column(db.Integer) + status = db.Column(db.Integer) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + modified = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, id, game_id, user_id, team_id, status, created, modified, + ): + self.id = id + self.game_id = game_id + self.user_id = user_id + self.team_id = team_id + self.status = status + self.created = created + self.modified = modified + + +class User_Ratings: + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + game_id = db.Column(db.Integer) + user_id = db.Column(db.Integer) + player_id = db.Column(db.mysql.ENUM("1", "2")) + rating = db.Column(db.String(100)) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + modified = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + user_type = db.Column(db.Integer) + + def __init__( + self, id, game_id, user_id, player_id, rating, created, modified, user_type + ): + self.id = id + self.game_id = game_id + self.user_id = user_id + self.player_id = player_id + self.rating = rating + self.created = created + self.modified = modified + self.user_type = user_type + + +class Venue_Images: + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + venue_id = db.Column(db.Integer) + user_id = db.Column(db.Integer) + image = db.Column(db.String(255)) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + modified = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, id, venue_id, user_id, image, created, modified, + ): + self.id = id + self.venue_id = venue_id + self.user_id = user_id + self.image = image + self.created = created + self.modified = modified + + +class Venues: + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + user_id = db.Column(db.Integer) + address = db.Column(db.Text) + latitude = db.Column(db.String(100)) + longitude = db.Column(db.String(100)) + name = db.Column(db.String(100)) + sports_id = db.Column(db.Integer) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + modified = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, + id, + user_id, + address, + latitude, + longitude, + name, + sports_id, + created, + modified, + ): + self.id = id + self.user_id = user_id + self.address = address + self.latitude = latitude + self.longitude = longitude + self.name = name + self.sports_id = sports_id + self.created = created + self.modified = modified + + +class View_News: + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + news_id = db.Column(db.Integer) + user_id = db.Column(db.Integer) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + modified = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, id, news_id, user_id, created, modified, + ): + self.id = id + self.news_id = news_id + self.user_id = user_id + self.created = created + self.modified = modified + + +class Web_Bookings: + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + name = db.Column(db.String(255)) + email = db.Column(db.String(255)) + contact = db.Column(db.String(100)) + message = db.Column(db.Text) + game = db.Column(db.String(255)) + city = db.Column(db.String(100)) + created = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) + updated = db.Column(db.DateTime, nullable=False, onupdate=db.func.now()) + + def __init__( + self, + id, + user_id, + address, + name, + email, + contact, + message, + game, + city, + created, + updated, + ): + self.id = id + self.user_id = user_id + self.address = address + self.name = name + self.email = email + self.contact = contact + self.message = message + self.game = game + self.city = city + self.created = created + self.updated = updated