from sqlmodel import inspect from app.database import ( add_to_database, delete_from_database_where, get_from_database, get_from_database_where, get_from_database_where_id, update_database_where, ) from app.models.project import Project def get_all(): return get_from_database(Project) def get_by_id(project_id: int): return get_from_database_where_id(Project, project_id) def get_with_parent(project_id: int | None): return get_from_database_where( Project, Project.id, # type: ignore (Type correct on runtime) project_id, ) def create(project: Project): add_to_database(project) return project def update( project_id: int, update_attribute: str, new_value: int | str | None, ): if update_attribute not in inspect(Project).attrs: raise ValueError(f"Invalid attribute: {update_attribute}") attribute = getattr(Project, update_attribute) return update_database_where( Project, Project.id, # type: ignore (Type correct on runtime) project_id, attribute, new_value, ) def delete(project_id: int): return delete_from_database_where( Project, Project.id, # type: ignore (Type correct on runtime) project_id, )