feat: add login endpoint

This commit is contained in:
2026-02-23 22:40:17 +00:00
parent 29a4e5bb22
commit 3165bf1aa9
3 changed files with 77 additions and 19 deletions

View File

@@ -1,5 +1,6 @@
import os
import psycopg2
from psycopg2.extras import RealDictCursor
class PostgresConnector:
@@ -18,19 +19,34 @@ class PostgresConnector:
self.connection.autocommit = False
def execute(self, query, params=None, fetch=False):
with self.connection.cursor() as cursor:
with self.connection.cursor(cursor_factory=RealDictCursor) as cursor:
cursor.execute(query, params)
if fetch:
return cursor.fetchall()
self.connection.commit()
def executemany(self, query, param_list):
with self.connection.cursor() as cursor:
with self.connection.cursor(cursor_factory=RealDictCursor) as cursor:
cursor.executemany(query, param_list)
self.connection.commit()
def save_user(self, username, email, password_hash):
query = """
INSERT INTO users (username, email, password_hash)
VALUES (%s, %s, %s)
"""
self.execute(query, (username, email, password_hash))
def get_user_by_username(self, username) -> dict:
query = "SELECT id, username, email, password_hash FROM users WHERE username = %s"
result = self.execute(query, (username,), fetch=True)
return result[0] if result else None
def get_user_by_email(self, email) -> dict:
query = "SELECT id, username, email, password_hash FROM users WHERE email = %s"
result = self.execute(query, (email,), fetch=True)
return result[0] if result else None
def close(self):
if self.connection:
self.connection.close()