From 90aae3b78a949f80a7ef12fed9602d61bbe7e6be Mon Sep 17 00:00:00 2001 From: H4CK3R-01 Date: Sun, 13 Mar 2022 20:43:24 +0100 Subject: [PATCH] Added sqlalchemy, models, ... --- webservice/app.py | 33 ++++++++++++++++++++++++++++++++- webservice/config.py | 21 +++++++++++++++++++++ webservice/db.py | 3 +++ webservice/models.py | 34 ++++++++++++++++++++++++++++++++++ webservice/requirements.txt | 4 +++- 5 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 webservice/config.py create mode 100644 webservice/db.py create mode 100644 webservice/models.py diff --git a/webservice/app.py b/webservice/app.py index 4b059ec..f3830d8 100644 --- a/webservice/app.py +++ b/webservice/app.py @@ -1,4 +1,8 @@ -from flask import Flask +from flask import Flask, jsonify +from dotenv import load_dotenv +from db import db + +from models import User app = Flask(__name__) @@ -8,5 +12,32 @@ def hello_world(): return 'Hello World!' +@app.route('/users') +def users(): + res = [] + for i in User.query.all(): + res.append(i.to_dict(show='*')) + + return jsonify(res) + +ded +def create_app(): + load_dotenv() + + # Create Flask app load app.config + application = Flask(__name__) + application.config.from_object("config.ConfigClass") + + application.app_context().push() + + db.init_app(application) + + return application + + +app = create_app() + +# Start development web server if __name__ == '__main__': app.run() + diff --git a/webservice/config.py b/webservice/config.py new file mode 100644 index 0000000..070af07 --- /dev/null +++ b/webservice/config.py @@ -0,0 +1,21 @@ +import os + +from dotenv import load_dotenv + +load_dotenv() + + +class ConfigClass(object): + """ Flask application config """ + + # Flask settings + SECRET_KEY = os.getenv('SECRET_KEY') + + # Flask-SQLAlchemy settings + SQLALCHEMY_DATABASE_URI = "mysql+pymysql://" + \ + os.getenv('MYSQL_USER') + ":" + \ + os.getenv('MYSQL_PASSWORD') + "@" + \ + os.getenv('MYSQL_HOST') + ":" + \ + (os.getenv("MYSQL_PORT") or str(3306)) + "/" + \ + os.getenv('MYSQL_DATABASE') + SQLALCHEMY_TRACK_MODIFICATIONS = False # Avoids SQLAlchemy warning diff --git a/webservice/db.py b/webservice/db.py new file mode 100644 index 0000000..f0b13d6 --- /dev/null +++ b/webservice/db.py @@ -0,0 +1,3 @@ +from flask_sqlalchemy import SQLAlchemy + +db = SQLAlchemy() diff --git a/webservice/models.py b/webservice/models.py new file mode 100644 index 0000000..964e5d1 --- /dev/null +++ b/webservice/models.py @@ -0,0 +1,34 @@ +from db import db + + +class User(db.Model): + __tablename__ = 'users' + username = db.Column('username', db.String(255), nullable=False, unique=True, primary_key=True) + password = db.Column('password', db.String(255), nullable=False, server_default='') + user_id = db.Column('user_id', db.Integer(), nullable=False, server_default='') + telegram_name = db.Column('telegram_name', db.String(255), nullable=True, server_default='') + admin = db.Column('admin', db.Boolean(), server_default="false") + + +class Transaction(db.Model): + __tablename__ = 'transactions' + t_id = db.Column('t_id', db.Integer(), nullable=False, unique=True, primary_key=True) + username = db.Column('username', db.Integer(), db.ForeignKey('user.user_id', ondelete='CASCADE')) + symbol = db.Column('symbol', db.String(255), unique=True) + time = db.Column('time', db.DateTime()) + count = db.Column('count', db.Integer()) + price = db.Column('price', db.Float()) + + +class Keyword(db.Model): + __tablename__ = 'keywords' + s_id = db.Column('s_id', db.Integer(), nullable=False, unique=True, primary_key=True) + username = db.Column('username', db.Integer(), db.ForeignKey('user.user_id', ondelete='CASCADE')) + keyword = db.Column('keyword', db.String(255)) + + +class Share(db.Model): + __tablename__ = 'shares' + a_id = db.Column('a_id', db.Integer(), nullable=False, unique=True, primary_key=True) + username = db.Column('username', db.Integer(), db.ForeignKey('user.user_id', ondelete='CASCADE')) + symbol = db.Column('symbol', db.String(255)) diff --git a/webservice/requirements.txt b/webservice/requirements.txt index 011c512..f4be31b 100644 --- a/webservice/requirements.txt +++ b/webservice/requirements.txt @@ -1,4 +1,6 @@ Flask~=2.0.3 python-dotenv==0.19.2 requests==2.27.1 -uwsgi==2.0.20 \ No newline at end of file +uwsgi==2.0.20 +Flask_SQLAlchemy==2.5.1 +python-dotenv==0.19.2 \ No newline at end of file