From 6f8e0e02bb0423015540b904be9a6e557c5e8135 Mon Sep 17 00:00:00 2001 From: cspark Date: Wed, 17 Apr 2024 14:58:18 +0100 Subject: [PATCH] Implement postgresql database handling into backend and basic init handling code, also include dev database docker compose file --- .gitignore | 3 ++- docker-compose.yml | 28 ++++++++++++++++++++++++++++ main.py | 40 ++++++++++++++++++++++++++++++++++++++++ requirements.txt | 1 + 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 docker-compose.yml diff --git a/.gitignore b/.gitignore index 0e5ac79..1b86f22 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .venv -__pycache__ \ No newline at end of file +__pycache__ +postgres-data \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..2a7fce1 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,28 @@ +services: + + blorg-dev-db: + image: postgres:16-alpine + restart: always + volumes: + - ./postgres-data:/var/lib/postgresql/data + environment: + POSTGRES_USER: dev + POSTGRES_PASSWORD: dev + POSTGRES_DB: blorgdb + networks: + blorg-dev-db-network: + ipv4_address: 172.20.0.10 + deploy: + resources: + limits: + cpus: '0.10' + memory: 128M + +networks: + blorg-dev-db-network: + driver: bridge + ipam: + config: + - subnet: 172.20.0.0/16 + + diff --git a/main.py b/main.py index 89c9ced..88694fd 100644 --- a/main.py +++ b/main.py @@ -5,6 +5,46 @@ from fastapi.middleware.cors import CORSMiddleware from pydantic import BaseModel +import psycopg2 + +dbconn = psycopg2.connect(database="blorgdb", + host="172.20.0.10", + user="dev", + password="dev", + port="5432") + +dbcursor = dbconn.cursor() + +dbcursor.execute(""" +DO $$ +BEGIN + IF (EXISTS (SELECT * + FROM INFORMATION_SCHEMA.TABLES + WHERE TABLE_NAME = 'users')) + THEN + RAISE NOTICE 'Table does exist!'; + ELSE + RAISE NOTICE 'User Table does not exist! Creating table.'; + CREATE TABLE users ( + UserID int, + FirstName varchar(255), + LastName varchar(255), + PasswordHash varchar(255) + ); + END IF; +END; +$$""") + + +#print(dbcursor.fetchall()) + +for notice in dbconn.notices: + print("(SQL SERVER) " + notice) + +dbconn.commit() +dbcursor.close() +dbconn.close() + app = FastAPI() origins = [ diff --git a/requirements.txt b/requirements.txt index 52226e5..62b7f2c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,7 @@ click==8.1.7 fastapi==0.110.1 h11==0.14.0 idna==3.7 +psycopg2-binary==2.9.9 pydantic==2.7.0 pydantic_core==2.18.1 sniffio==1.3.1