from datetime import datetime import hashlib import sqlite3 def con3(): conn = sqlite3.connect('db/db.sqlite') return conn ### User.py ### def create_user(name: str, email: str, password: str): password = hashlib.sha256(password.encode()).hexdigest() now = datetime.now().isoformat() query = (f"INSERT INTO users (name, email, password, created_at, updated_at) VALUES ('{name}', '{email}', " f"'{password}', '{now}', '{now}');") conn = con3() cursor = conn.cursor() cursor.execute(query) conn.commit() conn.close() return cursor.lastrowid def get_user(id: int): query = f"SELECT * FROM users WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) user = cursor.fetchone() conn.close() return user def get_user_by_email(email: str): query = f"SELECT * FROM users WHERE email = '{email}';" conn = con3() cursor = conn.cursor() cursor.execute(query) user = cursor.fetchone() conn.close() return user def update_user(id: int, name: str, email: str, password: str): query = f"UPDATE users SET name = {name}, email = {email}, password = {password} WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) user = cursor.fetchone() conn.close() return cursor.lastrowid def delete_user(id: int): query = f"DELETE FROM habits WHERE user_id = {id};" query2 = f"DELETE FROM users WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) cursor.execute(query2) conn.commit() conn.close() return cursor.lastrowid ### Habit.py ### def create_habit(user_id: int, name: str, times: int, unit: int, slot: int, note: str | None=None): now = datetime.now().isoformat() query = (f"INSERT INTO habits (user_id, name, note, times, unit, slot, created_at, updated_at) VALUES ('{user_id}', " f"'{name}', '{note}', '{times}', '{unit}', '{slot}', '{now}', '{now}');") conn = con3() cursor = conn.cursor() cursor.execute(query) conn.commit() conn.close() return cursor.lastrowid def get_habit(id: int): query = f"SELECT * FROM habits WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) habit = cursor.fetchone() conn.close() return habit def get_habits(user_id: int): query = f"SELECT * FROM habits WHERE user_id = {user_id};" conn = con3() cursor = conn.cursor() cursor.execute(query) habits = cursor.fetchall() conn.close() return habits def get_next_slot(user_id: int): query = f"SELECT slot FROM habits WHERE user_id = {user_id} ORDER BY slot DESC LIMIT 1;" conn = con3() cursor = conn.cursor() cursor.execute(query) slot = cursor.fetchone() conn.close() return slot[0] + 1 if slot else 0 def get_slots(user_id: int): query = f"SELECT id, slot FROM habits WHERE user_id = {user_id} ORDER BY slot;" conn = con3() cursor = conn.cursor() cursor.execute(query) slots = cursor.fetchall() conn.close() return slots def update_habit(id: int, name: str, note: str, times: int, unit: int): query = f"UPDATE habits SET name = {name}, note = {note}, times = {times}, unit = {unit} WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) conn.close() return cursor.lastrowid def update_slot(id: int, slot: int): query = f"UPDATE habits SET slot = {slot} WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) conn.close() return cursor.lastrowid def delete_habit(id: int): query = f"DELETE FROM habits WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) conn.commit() conn.close() ### HabitTrackings.py ### def create_habitTrackings(habit_id: int, times: int): now = datetime.now().isoformat() query = ( f"INSERT INTO habit_trackings (habit_id, times, created_at) VALUES ('{habit_id}', '{times}','{now}');") conn = con3() cursor = conn.cursor() cursor.execute(query) conn.commit() conn.close() return cursor.lastrowid def get_habitTrackings(id: int): query = f"SELECT * FROM habit_trackings WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) habit_tracking = cursor.fetchone() conn.close() return habit_tracking def get_habitTrackings_by_habit_id(habit_id: int): query = f"SELECT * FROM habit_trackings WHERE habit_id = {habit_id};" conn = con3() cursor = conn.cursor() cursor.execute(query) habit_trackings = cursor.fetchall() conn.close() return habit_trackings def delete_habitTrackings(id: int): query = f"DELETE FROM habit_trackings WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) conn.commit() conn.close()