Files
2026-11-05 08:28:15 +00:00

76 lines
2.2 KiB
Python

from backend.code.modules.database.database import DatabaseModule
class UserRepository():
def __init__(self, repo: DatabaseModule):
self.conn = repo.conn
self.cursor = repo.cursor
def FilterUsers(self, filters: dict = None):
params = list()
sql = '''
SELECT u.*, a.username, a.locked, a.active
FROM users u
LEFT JOIN user_accounts a ON a.user_id = u.id
WHERE 1=1
'''
if filters is not None:
if 'name' in filters:
sql = sql + " AND u.name LIKE ?"
params.append(filters['name'])
if 'surnames' in filters:
sql = sql + " AND u.surnames LIKE ?"
params.append(filters['surnames'])
if 'email' in filters:
sql = sql + " AND u.email LIKE ?"
params.append(filters['email'])
if 'username' in filters:
sql = sql + " AND a.username LIKE ?"
params.append(filters['username'])
# print(sql)
self.cursor.execute(sql, params)
return self.cursor.fetchall()
def SelectUserById(self, id: int):
sql = '''
SELECT u.*, a.username, a.locked, a.active
FROM users u
LEFT JOIN user_accounts a ON a.user_id = u.id
WHERE u.id = ?
'''
self.cursor.execute(sql, [id])
return self.cursor.fetchone()
def InsertUser(self, name: str, surnames: str, email: str):
sql = '''
INSERT INTO users(name, surnames, email)
VALUES(?, ?, ?)
'''
self.cursor.execute(sql, [name, surnames, email])
self.conn.commit()
return self.cursor.lastrowid
def UpdateUser(self, id: int, name: str, surnames: str, email: str):
sql = '''
UPDATE users
SET name = ?, surnames = ?, email = ?
WHERE id = ?
'''
self.cursor.execute(sql, [name, surnames, email, id])
self.conn.commit()
return self.cursor.rowcount
def DeleteUser(self, id: int):
sql = '''
DELETE FROM users
WHERE id = ?
'''
self.cursor.execute(sql, [id])
self.conn.commit()
return self.cursor.rowcount