from datetime import datetime from flask_login import UserMixin from db.SQLiteClient import create_user, get_user, get_user_by_email, get_habits, delete_user, update_user, \ get_habitLists from models.Habit import Habit from models.HabitList import HabitList class User(UserMixin): def __init__(self, id: int, name: str, email: str, password: str | None = None): self.id = id self.name = name self.email = email self.password = password @staticmethod def create(name: str, email: str, password: str): id = create_user(name, email, password) return User(id, name, email) @staticmethod def get(id: int): user = get_user(id) return User(user[0], user[1], user[2], user[3]) if user else None @staticmethod def get_by_email(email: str): user = get_user_by_email(email) return User(user[0], user[1], user[2], user[3]) if user else None def update(self): update_user(self.id, self.name, self.email, self.password if self.password else None) def delete(self): delete_user(self.id) # def get_habits(self): # raw_habits = get_habits(self.id) # habits = [] # for habit in raw_habits: # habit = Habit(habit[0], habit[1], habit[2], habit[3], habit[4], habit[5], habit[6]) # habits.append(habit) # return habits def get_habitLists(self): raw_habitLists = get_habitLists(self.id) habitLists = [] for habitList in raw_habitLists: habitList = HabitList(habitList[0], habitList[1], habitList[2], habitList[3], datetime.strptime(habitList[4], "%Y-%m-%dT%H:%M:%S.%f"), datetime.strptime(habitList[5], "%Y-%m-%dT%H:%M:%S.%f")) habitLists.append(habitList) return habitLists