59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
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,
|
|
)
|