Files
settlements-admin/backend/code/modules/settlements/repository.py
T
2026-11-05 08:28:15 +00:00

87 lines
2.5 KiB
Python

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