from backend.code.modules.database.database import DatabaseModule from datetime import datetime class SettlementRepository(): def __init__(self, repo: DatabaseModule): self.conn = repo.conn self.cursor = repo.cursor def FilterSettlements(self, filters: dict = None): params = list() sql = ''' SELECT * FROM settlements WHERE 1=1 ''' if filters is not None: if 'name' in filters: sql = sql + ' AND name LIKE ?' params.append(filters['name']) if 'address' in filters: sql = sql + ' AND address LIKE ?' params.append(filters['address']) if 'last_done_by' in filters: sql = sql + ' AND last_done_by LIKE ?' params.append(filters['last_done_by']) if 'last_done' in filters: sql = sql + ' AND last_done = ?' params.append(filters['last_done']) # print(sql) self.cursor.execute(sql, params) return self.cursor.fetchall() def SelectSettlementById(self, id: int): sql = ''' SELECT * FROM settlements WHERE id = ? AND active ''' self.cursor.execute(sql, [id]) return self.cursor.fetchone() def InsertSettlement(self, name: str, address: str, active: bool = True): sql = ''' INSERT INTO settlements(name, address, active) VALUES(?, ?, ?) ''' self.cursor.execute(sql, [name, address, active]) self.conn.commit() return self.cursor.lastrowid def UpdateSettlement(self, id: int, name: str, address: str, active: bool = True): sql = ''' UPDATE settlements set name = ?, address = ?, active = ? WHERE id = ? ''' self.cursor.execute(sql, [name, address, active, id]) self.conn.commit() return self.cursor.rowcount def RegisterSettlementDone(self, id: int, user_done: int, done_at: datetime = datetime.now()): sql = ''' UPDATE settlements SET last_done_by = ?, last_done = ? WHERE id = ? ''' self.cursor.execute(sql, [done_at, user_done, id]) self.conn.commit() return self.cursor.rowcount def DeleteSettlement(self, id: int): sql = ''' UPDATE settlements SET active = false WHERE id = ? ''' self.cursor.execute(sql, [id]) self.conn.commit() return self.cursor.rowcount