From 885becf0e87f2d052f26b39e53b7202accf5f14f Mon Sep 17 00:00:00 2001 From: derlole <122916573+derlole@users.noreply.github.com> Date: Wed, 14 May 2025 21:52:01 +0000 Subject: [PATCH] User as OOP for project requirements --- concept/user.py | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 concept/user.py diff --git a/concept/user.py b/concept/user.py new file mode 100644 index 0000000..69a66e5 --- /dev/null +++ b/concept/user.py @@ -0,0 +1,66 @@ +import sqlite3 +import os + +class User: + def __init__(self, user_id, name, email): + self._user_id = user_id + self._name = name + self._email = email + self._db_path = os.path.join("..", "db", "user.db") + self._init_db() + + # Getter + def get_id(self): + return self._user_id + + def get_name(self): + return self._name + + def get_email(self): + return self._email + + # Setter + def set_name(self, name): + self._name = name + self._update_db() + + def set_email(self, email): + self._email = email + self._update_db() + + def _init_db(self): + """Create the database and table if it doesn't exist""" + with sqlite3.connect(self._db_path) as conn: + c = conn.cursor() + c.execute(''' + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL, + email TEXT NOT NULL + ) + ''') + conn.commit() + self._save_to_db() + + def _save_to_db(self): + """Insert or update the user in the DB""" + with sqlite3.connect(self._db_path) as conn: + c = conn.cursor() + c.execute("SELECT id FROM users WHERE id = ?", (self._user_id,)) + if c.fetchone(): + # update + c.execute('UPDATE users SET name = ?, email = ? WHERE id = ?', + (self._name, self._email, self._user_id)) + else: + # insert + c.execute('INSERT INTO users (id, name, email) VALUES (?, ?, ?)', + (self._user_id, self._name, self._email)) + conn.commit() + + def _update_db(self): + """Update the user's data in the DB""" + with sqlite3.connect(self._db_path) as conn: + c = conn.cursor() + c.execute('UPDATE users SET name = ?, email = ? WHERE id = ?', + (self._name, self._email, self._user_id)) + conn.commit() \ No newline at end of file