chat-page-server/database.py
2025-05-24 09:23:37 -05:00

106 lines
3.6 KiB
Python

import config, psycopg2
def tupleDictionaryFactory(columns, row):
columns = [desc[0] for desc in columns]
return dict(zip(columns, row))
def create_messages():
database_config = config.config()
with psycopg2.connect(**database_config) as conn:
try:
with conn.cursor() as cur:
with open('sql/CREATE/messages.sql') as file:
sql = file.read()
cur.execute(sql)
except (Exception, psycopg2.DatabaseError) as error:
print(error)
conn.rollback()
return None
def create_channels():
database_config = config.config()
with psycopg2.connect(**database_config) as conn:
try:
with conn.cursor() as cur:
with open('sql/CREATE/channels.sql') as file:
sql = file.read()
cur.execute(sql)
except (Exception, psycopg2.DatabaseError) as error:
print(error)
conn.rollback()
return None
def get_channel(id):
database_config = config.config()
with psycopg2.connect(**database_config) as conn:
try:
with conn.cursor() as cur:
sql = f"SELECT * FROM channels WHERE id=%s;"
cur.execute(sql, (id,))
rows = cur.fetchone()
if rows:
rows = tupleDictionaryFactory(cur.description, rows)
return rows
return {}
except (Exception, psycopg2.DatabaseError) as error:
print(error)
conn.rollback()
return {}
def insert_message(payload):
database_config = config.config()
with psycopg2.connect(**database_config) as conn:
try:
with conn.cursor() as cur:
with open('sql/INSERT/messages.sql') as file:
sql = file.read()
cur.execute(sql, payload)
rows = cur.fetchone()
if rows:
rows = tupleDictionaryFactory(cur.description, rows)
return rows
return {}
except (Exception, psycopg2.DatabaseError) as error:
print(error)
conn.rollback()
return {}
def select_message(id):
database_config = config.config()
with psycopg2.connect(**database_config) as conn:
try:
with conn.cursor() as cur:
with open('sql/SELECT/messages.sql') as file:
sql = file.read()
cur.execute(sql, (id, ))
rows = cur.fetchone()
if rows:
rows = tupleDictionaryFactory(cur.description, rows)
return rows
return {}
except (Exception, psycopg2.DatabaseError) as error:
print(error)
conn.rollback()
return {}
def select_messages(payload):
database_config = config.config()
with psycopg2.connect(**database_config) as conn:
try:
with conn.cursor() as cur:
with open('sql/SELECT/messagesByChannel.sql') as file:
sql = file.read()
cur.execute(sql, payload)
rows = cur.fetchall()
if rows:
rows = [tupleDictionaryFactory(cur.description, row) for row in rows]
return rows
return []
except (Exception, psycopg2.DatabaseError) as error:
print(error)
conn.rollback()
return []