import sqlite3 from datetime import datetime class User: def __init__(self, connection : sqlite3.Connection, id = None, username = None, firstname = None, lastname = None, address = None, zipcode = None, city_id = None, email = None, phone = None, password = None, role = None): self.connection = connection self.id = id self.username = username self.firstname = firstname self.lastname = lastname self.address = address self.zipcode = zipcode self.city_id = city_id self.email = email self.phone = phone self.password = password self.role = role def load_by_id(self): cur = self.connection.cursor() row = cur.execute("SELECT * FROM users WHERE id = ?", (self.id,)).fetchone() if row == None: return False self._set_row_values(row) cur.close() return True def load_by_username(self): cur = self.connection.cursor() row = cur.execute("SELECT * FROM users WHERE username = ?", (self.username,)).fetchone() if row == None: return False self._set_row_values(row) cur.close() return True def save(self): cur = self.connection.cursor() current_date = datetime.now().strftime("%d/%m/%Y %H:%M:%S") cur.execute(""" INSERT INTO users (id, username, firstname, lastname, address, zipcode, city_id, email, phone, password, role, created) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, (self.id, self.username, self.firstname, self.lastname, self.address, self.zipcode, self.city_id, self.email, self.phone, self.password, self.role, current_date)) self.connection.commit() cur.close() return True def update(self): cur = self.connection.cursor() cur.execute(""" UPDATE users SET username = ?, firstname = ?, lastname = ?, address = ?, zipcode = ?, city_id = ?, email = ?, phone = ?, password = ?, role = ? WHERE id = ? """, (self.username, self.firstname, self.lastname, self.address, self.zipcode, self.city_id, self.email, self.phone, self.password, self.role, self.id)) self.connection.commit() cur.close() return True def delete(self): cur = self.connection.cursor() cur.execute("""DELETE FROM users WHERE id = ?""", (self.id)) self.connection.commit() cur.close() return True def _set_row_values(self, row): self.id = row[0] self.username = row[1] self.firstname = row[2] self.lastname = row[3] self.address = row[4] self.zipcode = row[5] self.city_id = row[6] self.email = row[7] self.phone = row[8] self.password = row[9] self.role = row[10] self.created = row[11] return self