Completed the Habit Model and added units + user_id foreign key.

Also we have some good test data.
This commit is contained in:
Yapollon 2024-01-16 10:58:25 +01:00
parent 9ef8f3f513
commit dff51be18f
6 changed files with 39 additions and 18 deletions

BIN
ER.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
UML.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -41,10 +41,10 @@ def get_user_by_email(email: str):
return user return user
def create_habit(name: str, times: int, note: str | None=None): def create_habit(name: str, user_id: int, times: int, unit: int, note: str | None=None):
now = datetime.now().isoformat() now = datetime.now().isoformat()
query = (f"INSERT INTO habits (name, note, times, created_at, updated_at) VALUES ('{name}', '{note}', " query = (f"INSERT INTO habits (user_id, name, note, times, unit, created_at, updated_at) VALUES ('{user_id}', "
f"'{times}', '{now}', '{now}');") f"'{name}', '{note}', '{times}', '{unit}', '{now}', '{now}');")
conn = con3() conn = con3()
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute(query) cursor.execute(query)
@ -53,16 +53,6 @@ def create_habit(name: str, times: int, note: str | None=None):
return cursor.lastrowid return cursor.lastrowid
def get_habits():
query = f"SELECT * FROM habits;"
conn = con3()
cursor = conn.cursor()
cursor.execute(query)
habits = cursor.fetchone()
conn.close()
return habits
def get_habit(id: int): def get_habit(id: int):
query = f"SELECT * FROM habits WHERE id = {id};" query = f"SELECT * FROM habits WHERE id = {id};"
conn = con3() conn = con3()
@ -71,3 +61,13 @@ def get_habit(id: int):
habits = cursor.fetchone() habits = cursor.fetchone()
conn.close() conn.close()
return habits return habits
def get_habits():
query = f"SELECT * FROM habits;"
conn = con3()
cursor = conn.cursor()
cursor.execute(query)
habits = cursor.fetchone()
conn.close()
return habits

View File

@ -0,0 +1 @@
DROP TABLE habits;

View File

@ -0,0 +1,12 @@
CREATE TABLE IF NOT EXISTS habits
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
name TEXT NOT NULL,
note TEXT,
times INTEGER NOT NULL,
unit INTEGER,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);

View File

@ -1,28 +1,36 @@
from dataclasses import dataclass from dataclasses import dataclass
from db.SQLiteClient import create_habit, get_habits, get_habit from db.SQLiteClient import create_habit, get_habits, get_habit
# Unit wird als Integers wie folgt gemessen:
# 0: Tag
# 1: Woche
# 2: Monal
# 3: Jahr
@dataclass @dataclass
class Habit: class Habit:
id: int id: int
user_id: int
name: str name: str
note: str note: str
times: int times: int
unit: int
@staticmethod @staticmethod
def create(name: str, times: int, note: str | None=None): def create(user_id: int, name: str, times: int, unit: int, note: str | None=None):
id = create_habit(name, note, times) id = create_habit(user_id, name, note, times, unit)
return Habit(id, name, note, times) return Habit(id, user_id, name, note, times, unit)
@staticmethod @staticmethod
def get(id: int): def get(id: int):
habit = get_habit(id) habit = get_habit(id)
return Habit(habit[0], habit[1], habit[2], habit[3]) if habit else None return Habit(habit[0], habit[1], habit[2], habit[3], habit[4], habit[5]) if habit else None
@staticmethod @staticmethod
def get_all(): def get_all():
raw_habits = get_habits() raw_habits = get_habits()
habits = [] habits = []
for habit in raw_habits: for habit in raw_habits:
habit = Habit(habit[0], habit[1], habit[2], habit[3]) habit = Habit(habit[0], habit[1], habit[2], habit[3], habit[4], habit[5])
habits.append(habit) habits.append(habit)
return habits if habits else None return habits if habits else None