From 6ae1765f409f4e430f367b7e02164e8298081252 Mon Sep 17 00:00:00 2001 From: iritmaximus Date: Sun, 5 Feb 2023 22:11:59 +0200 Subject: [PATCH] fix: implemented basic db test functions that interact with db --- compose-with-db.yml | 50 --------------------------------------- flaskr/__init__.py | 16 +------------ flaskr/database.py | 51 ++++++++++++++++++++++++++++++++++++++++ flaskr/db.py | 25 -------------------- flaskr/views.py | 22 +++++++++++++++++ flaskr/views/__init__.py | 0 flaskr/views/forum.py | 13 ---------- flaskr/views/general.py | 19 --------------- flaskr/views/users.py | 13 ---------- sql/initdb.sql | 26 ++++++++++---------- 10 files changed, 87 insertions(+), 148 deletions(-) delete mode 100644 compose-with-db.yml create mode 100644 flaskr/database.py delete mode 100644 flaskr/db.py create mode 100644 flaskr/views.py delete mode 100644 flaskr/views/__init__.py delete mode 100644 flaskr/views/forum.py delete mode 100644 flaskr/views/general.py delete mode 100644 flaskr/views/users.py diff --git a/compose-with-db.yml b/compose-with-db.yml deleted file mode 100644 index b9e791c..0000000 --- a/compose-with-db.yml +++ /dev/null @@ -1,50 +0,0 @@ -services: - flask: - # adding this ****ing little **** took at least 3 hours of debugging - # command: sh -c "gunicorn -w 4 flaskr:app -b 0.0.0.0:5000 --access-logfile '-' --error-logfile '-'" - build: - context: . - dockerfile: Dockerfile - ports: - - "5000:5000" - volumes: - - .:/app - env_file: .env - environment: - - POSTGRES_DB - - POSTGRES_USER - - POSTGRES_PASSWORD - - POSTGRES_URL - - ENVIRONMENT=production - depends_on: - db: - condition: service_healthy - - - - db: - image: postgres:bullseye - volumes: - - postgres_db:/var/lib/postgresql/data - env_file: .env - environment: - - POSTGRES_DB - - POSTGRES_USER - - POSTGRES_PASSWORD - restart: always - expose: - - 5432 - healthcheck: - test: sh -c "pg_isready -d ${POSTGRES_DB} -U ${POSTGRES_USER}" - interval: 3s - timeout: 2s - retries: 30 - - # adminer: - # image: adminer - # restart: always - # ports: - # - 8080:8080 - -volumes: - postgres_db: diff --git a/flaskr/__init__.py b/flaskr/__init__.py index 08ceba5..030eaed 100644 --- a/flaskr/__init__.py +++ b/flaskr/__init__.py @@ -1,22 +1,8 @@ from flask import Flask -from flask_sqlalchemy import SQLAlchemy -from os import getenv -import psycopg2 - -from flaskr.views import general -from flaskr.views import forum -from flaskr.views import users - from dotenv import load_dotenv load_dotenv() - app = Flask(__name__) -app.config["SQLALCHEMY_DATABASE_URI"] = str(getenv("POSTGRES_URL")) -db = SQLAlchemy(app) - -app.register_blueprint(general.mod) -app.register_blueprint(forum.mod) -app.register_blueprint(users.mod) +import flaskr.views diff --git a/flaskr/database.py b/flaskr/database.py new file mode 100644 index 0000000..fea49b1 --- /dev/null +++ b/flaskr/database.py @@ -0,0 +1,51 @@ +from os import getenv +from flaskr import app +from flask_sqlalchemy import SQLAlchemy +from random import randint + + +app.config["SQLALCHEMY_DATABASE_URI"] = getenv("POSTGRES_URL") +db = SQLAlchemy(app) + + +def create_db(): + print("Initializing the db...") + + sqllist = [ + "CREATE TABLE IF NOT EXISTS users (id int primary key, name varchar(80), password varchar(80));", + "CREATE TABLE IF NOT EXISTS games (id int primary key, name varchar(80));", + "CREATE TABLE IF NOT EXISTS courses (id int primary key, name varchar(80), game_id int references games(id));", + "CREATE TABLE IF NOT EXISTS standards (id int primary key, name varchar(50), tier varchar(3), points numeric, game_id int references games(id), course_id int references courses(id));", + "CREATE TABLE IF NOT EXISTS times (id int primary key, game_id int references games(id), course_id int references courses(id), timems varchar(80), date date);", + ] + + with app.app_context(): + for sql in sqllist: + db.session.execute(sql) + db.session.commit() + + print("Db initialization completed.") + return "Success" + + +def test_db(): + print("TESTING THE DB ***********************") + + with app.app_context(): + + sql = "DROP TABLE IF EXISTS test;" + db.session.execute(sql) + db.session.commit() + + sql = "CREATE TABLE IF NOT EXISTS test (id int primary key, greeting text);" + db.session.execute(sql) + db.session.commit() + + sql = f"INSERT INTO test (id, greeting) VALUES ({randint(1,100)}, 'hello');" + db.session.execute(sql) + db.session.commit() + + result = db.session.execute("SELECT * FROM test;").fetchall() + print(result) + + return "Working lol" diff --git a/flaskr/db.py b/flaskr/db.py deleted file mode 100644 index 77d683e..0000000 --- a/flaskr/db.py +++ /dev/null @@ -1,25 +0,0 @@ -import flaskr - - -def create_db(): - print("Initializing the db...") - - -def test_db(): - print("TESTING THE DB ***********************") - - with flaskr.app.app_context(): - - sql = "DROP TABLE IF EXISTS test" - flaskr.db.session.execute(sql) - - sql = "CREATE TABLE IF NOT EXISTS test (id int primary key, greeting text)" - flaskr.db.session.execute(sql) - - sql = "INSERT INTO test (id, greeting) VALUES (1, 'hello')" - flaskr.db.session.execute(sql) - - result = flaskr.db.session.execute("SELECT * FROM test").fetchall() - print(result) - - return "Working lol" diff --git a/flaskr/views.py b/flaskr/views.py new file mode 100644 index 0000000..0e6eb1f --- /dev/null +++ b/flaskr/views.py @@ -0,0 +1,22 @@ +from flaskr import app +from flaskr.database import db, test_db, create_db + + +@app.route("/") +def test_backend(): + return "This is the working backend" + + +@app.route("/db") +def test_db_route(): + return test_db() + + +@app.route("/login") +def login(): + return "Login to the site" + + +@app.route("/init") +def initialize_db(): + return create_db() diff --git a/flaskr/views/__init__.py b/flaskr/views/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/flaskr/views/forum.py b/flaskr/views/forum.py deleted file mode 100644 index 9b88fcd..0000000 --- a/flaskr/views/forum.py +++ /dev/null @@ -1,13 +0,0 @@ -from flask import Blueprint - -mod = Blueprint("forum", __name__) - - -@mod.route("/forum") -def show_forum(): - return "All of the forum things" - - -@mod.route("/forum/add") -def add_new_post(): - return "New member to the familytree" diff --git a/flaskr/views/general.py b/flaskr/views/general.py deleted file mode 100644 index 5218f5e..0000000 --- a/flaskr/views/general.py +++ /dev/null @@ -1,19 +0,0 @@ -from flask import Blueprint -from flaskr import db - -mod = Blueprint("general", __name__) - - -@mod.route("/") -def test_backend(): - return "This is the working backend" - - -@mod.route("/db") -def test_db_route(): - return db.test_db() - - -@mod.route("/login") -def login(): - return "Login to the site" diff --git a/flaskr/views/users.py b/flaskr/views/users.py deleted file mode 100644 index 25600fd..0000000 --- a/flaskr/views/users.py +++ /dev/null @@ -1,13 +0,0 @@ -from flask import Blueprint - -mod = Blueprint("users", __name__) - - -@mod.route("/users/") -def user(_id): - return "Account information" - - -@mod.route("/users/create") -def create_user(): - return "New user" diff --git a/sql/initdb.sql b/sql/initdb.sql index 2b7a326..57e7a18 100644 --- a/sql/initdb.sql +++ b/sql/initdb.sql @@ -1,33 +1,33 @@ -CREATE TABLE IF NOT EXIXST users ( +CREATE TABLE IF NOT EXISTS users ( id int primary key, name varchar(80), - password varchar(80), + password varchar(80) ); -CREATE TABLE IF NOT EXIST games ( +CREATE TABLE IF NOT EXISTS games ( + id int primary key, + name varchar(80) +); + +CREATE TABLE IF NOT EXISTS courses ( id int primary key, name varchar(80), + game_id int references games(id) ); -CREATE TABLE IF NOT EXIST courses ( - id int primary key, - name varchar(80), - game_id int references games(id), -); - -CREATE TABLE IF NOT EXIST standards ( +CREATE TABLE IF NOT EXISTS standards ( id int primary key, name varchar(50), tier varchar(3), points numeric, game_id int references games(id), - course_id int references courses(id), + course_id int references courses(id) ); -CREATE TABLE IF NOT EXIST times ( +CREATE TABLE IF NOT EXISTS times ( id int primary key, game_id int references games(id), course_id int references courses(id), timems varchar(80), - date date, + date date );