From 1645e52a8ef62c15529f6af82867a78aabf92649 Mon Sep 17 00:00:00 2001
From: Bjarke Madsen <bjarke@nordu.net>
Date: Tue, 17 Jan 2023 12:15:39 +0100
Subject: [PATCH] Change to postgresql 12

---
 compendium_v2/alembic.ini                   |  2 +-
 compendium_v2/db/__init__.py                |  6 ++---
 compendium_v2/migrations/migration_utils.py |  4 +--
 config-example.json                         |  2 +-
 docker-compose.yml                          | 30 ++++++++++-----------
 requirements.txt                            |  2 +-
 setup.py                                    |  2 +-
 7 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/compendium_v2/alembic.ini b/compendium_v2/alembic.ini
index 734a7c31..2145863b 100644
--- a/compendium_v2/alembic.ini
+++ b/compendium_v2/alembic.ini
@@ -7,4 +7,4 @@
 script_location = migrations
 # script_location = cachedb_migrations
 # change this to run migrations from the command line
-sqlalchemy.url = mysql+pymysql://compendium:compendium321@localhost/compendium
+sqlalchemy.url = postgresql://compendium:compendium321@localhost:65000/compendium
diff --git a/compendium_v2/db/__init__.py b/compendium_v2/db/__init__.py
index e913621d..2a07293a 100644
--- a/compendium_v2/db/__init__.py
+++ b/compendium_v2/db/__init__.py
@@ -31,9 +31,9 @@ def session_scope(
         session.close()
 
 
-def mysql_dsn(db_username, db_password, db_hostname, db_name, port=3306):
-    return (f'mysql+pymysql://{db_username}:{db_password}'
-            f'@{db_hostname}:{port}/{db_name}?charset=utf8mb4')
+def postgresql_dsn(db_username, db_password, db_hostname, db_name, port=5432):
+    return (f'postgresql://{db_username}:{db_password}'
+            f'@{db_hostname}:{port}/{db_name}')
 
 
 def init_db_model(dsn):
diff --git a/compendium_v2/migrations/migration_utils.py b/compendium_v2/migrations/migration_utils.py
index c2af5cde..3b29b540 100644
--- a/compendium_v2/migrations/migration_utils.py
+++ b/compendium_v2/migrations/migration_utils.py
@@ -29,9 +29,9 @@ def upgrade(dsn, migrations_directory=DEFAULT_MIGRATIONS_DIRECTORY):
 
 if __name__ == "__main__":
     logging.basicConfig(level=logging.DEBUG)
-    upgrade(db.mysql_dsn(
+    upgrade(db.postgresql_dsn(
         db_username='compendium',
         db_password='compendium321',
         db_hostname='localhost',
         db_name='compendium',
-        port=3306))
+        port=65000))
diff --git a/config-example.json b/config-example.json
index d168df44..4f04692c 100644
--- a/config-example.json
+++ b/config-example.json
@@ -1,3 +1,3 @@
 {
-  "SQLALCHEMY_DATABASE_URI": "mysql+pymysql://compendium:compendium321@localhost/compendium"
+  "SQLALCHEMY_DATABASE_URI": "postgresql://compendium:compendium321@localhost:65000/compendium"
 }
diff --git a/docker-compose.yml b/docker-compose.yml
index de0a388a..8ac10f23 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,17 +1,15 @@
+version: '3.1'
+
 services:
-  mysql:
-    restart: unless-stopped
-    container_name: mysql-compendium
-    environment:
-      MYSQL_ALLOW_EMPTY_PASSWORD: "no"
-      MYSQL_DATABASE: compendium
-      MYSQL_PASSWORD: compendium321
-      MYSQL_ROOT_PASSWORD: compendium321
-      MYSQL_USER: compendium
-    volumes:
-      - ./build/mysql_logs:/var/log/
-      - ./build/mysql_data:/var/lib/mysql/
-    image: mysql:8
-    command: mysqld --general-log=1 --general-log-file=/var/log/mysql.log
-    ports:
-      - 3306:3306
+  postgres:
+      image: postgres:12
+      environment:
+        POSTGRES_DB: compendium
+        POSTGRES_USER: compendium
+        POSTGRES_PASSWORD: compendium321
+      restart: unless-stopped
+      hostname: postgres
+      ports:
+          - "65000:5432"
+      volumes:
+          - ./build/db:/var/lib/postgresql
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
index 378dff7a..704282cf 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,7 +2,7 @@ alembic
 jsonschema
 flask
 flask-cors
-PyMySQL
+psycopg2-binary
 cryptography
 SQLAlchemy
 pytest
diff --git a/setup.py b/setup.py
index d8ca4882..250b9be0 100644
--- a/setup.py
+++ b/setup.py
@@ -15,7 +15,7 @@ setup(
         'flask-cors',
         'SQLAlchemy',
         'alembic',
-        'PyMySQL',
+        'psycopg2-binary',
         'cryptography',
     ],
     include_package_data=True,
-- 
GitLab