summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/main.py19
-rw-r--r--db/create_table.py8
-rw-r--r--db/drop_table.py8
-rw-r--r--db/up.py11
-rw-r--r--requirements.txt1
5 files changed, 42 insertions, 5 deletions
diff --git a/app/main.py b/app/main.py
index 9dc9b5b..b01c212 100644
--- a/app/main.py
+++ b/app/main.py
@@ -1,18 +1,27 @@
from flask import *
from tinydb import TinyDB
+import psycopg2
+import os
app = Flask(__name__)
+def conn():
+ return psycopg2.connect(os.environ.get("DATABASE_URL") or "dbname=questbook user=postgres")
+
+def table_to_dict(table):
+ return { "email": table[0], "name": table[1], "message": table[2] }
@app.route("/")
def home():
- posts = get_db().all()
+ cur = conn().cursor()
+ cur.execute("SELECT email, name, message FROM messages;")
+ posts = map(table_to_dict, cur.fetchall())
return render_template("home.html", posts = posts)
@app.route("/message", methods=["POST"])
def create_message():
form = request.form
- get_db().insert({ "name": form["name"], "email": form["email"], "message": form["message"]})
+ local_conn = conn()
+ cur = local_conn.cursor()
+ cur.execute("insert into messages (email, name, message)\n values (%s, %s, %s)", (form["email"], form["name"], form["message"]))
+ local_conn.commit()
return redirect("/")
-
-def get_db():
- return TinyDB("db.json").table("messages")
diff --git a/db/create_table.py b/db/create_table.py
new file mode 100644
index 0000000..168fb16
--- /dev/null
+++ b/db/create_table.py
@@ -0,0 +1,8 @@
+import psycopg2
+import os
+
+conn = psycopg2.connect(os.environ.get("DATABASE_URL") or "dbname=questbook user=postgres")
+conn.cursor().execute("create table messages (id int, email varchar(255), name varchar(255), message varchar(2048))")
+conn.commit()
+
+
diff --git a/db/drop_table.py b/db/drop_table.py
new file mode 100644
index 0000000..3b8d1ff
--- /dev/null
+++ b/db/drop_table.py
@@ -0,0 +1,8 @@
+import psycopg2
+import os
+
+conn = psycopg2.connect(os.environ.get("DATABASE_URL") or "dbname=questbook user=postgres")
+conn.cursor().execute("drop table messages")
+conn.commit()
+
+
diff --git a/db/up.py b/db/up.py
new file mode 100644
index 0000000..60700c8
--- /dev/null
+++ b/db/up.py
@@ -0,0 +1,11 @@
+import psycopg2
+from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
+import os
+
+conn = psycopg2.connect(os.environ.get("DATABASE_URL") or "user=postgres")
+conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
+conn.cursor().execute("create database \"questbook\";")
+conn.commit()
+conn.cursor().execute("create table messages (id int, email varchar(255), name varchar(255), message varchar(2048))")
+conn.commit()
+
diff --git a/requirements.txt b/requirements.txt
index 42549db..2459026 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,5 +4,6 @@ gunicorn==20.1.0
itsdangerous==2.0.1
Jinja2==3.0.1
MarkupSafe==2.0.1
+psycopg2-binary==2.9.1
tinydb==4.5.0
Werkzeug==2.0.1