From 23e4e22fa6be7863b6ed4f843015c5dc6a68981d Mon Sep 17 00:00:00 2001 From: CheezyGarlicBread Date: Mon, 25 Mar 2024 18:47:49 -0400 Subject: [PATCH] initial models commit --- backend/models/enum_for_models.py | 17 +++++++++++++++++ backend/models/resource_model.py | 15 +++++++++++++++ backend/models/resource_tag_model.py | 12 ++++++++++++ backend/models/service_model.py | 16 ++++++++++++++++ backend/models/service_tag_model.py | 19 +++++++++++++++++++ backend/models/tag_model.py | 13 +++++++++++++ backend/models/user.model.py | 17 +++++++++++++++++ 7 files changed, 109 insertions(+) create mode 100644 backend/models/enum_for_models.py create mode 100644 backend/models/resource_model.py create mode 100644 backend/models/resource_tag_model.py create mode 100644 backend/models/service_model.py create mode 100644 backend/models/service_tag_model.py create mode 100644 backend/models/tag_model.py create mode 100644 backend/models/user.model.py diff --git a/backend/models/enum_for_models.py b/backend/models/enum_for_models.py new file mode 100644 index 0000000..8e6cdfe --- /dev/null +++ b/backend/models/enum_for_models.py @@ -0,0 +1,17 @@ +from pydantic import BaseModel, Field +from enum import Enum +from typing import List +from datetime import datetime +from typing import Optional + + +class ProgramTypeEnum(str, Enum): + DOMESTIC = "DOMESTIC" + ECONOMIC = "ECONOMIC" + COMMUNITY = "COMMUNITY" + + +class UserTypeEnum(str, Enum): + ADMIN = "ADMIN" + EMPLOYEE = "EMPLOYEE" + VOLUNTEER = "VOLUNTEER" diff --git a/backend/models/resource_model.py b/backend/models/resource_model.py new file mode 100644 index 0000000..a31b4db --- /dev/null +++ b/backend/models/resource_model.py @@ -0,0 +1,15 @@ +from pydantic import BaseModel, Field +from enum import Enum +from typing import List +from datetime import datetime +from typing import Optional +from .enum_for_models import ProgramTypeEnum + + +class Resource(BaseModel): + id: int | None = None + name: str = Field(..., max_length=150, description="The name of the resource") + summary: str = Field(..., max_length=300, description="The summary of the resource") + link: str = Field(..., max_length=150, description="link to the resource") + programtype: ProgramTypeEnum + created_at: Optional[datetime] diff --git a/backend/models/resource_tag_model.py b/backend/models/resource_tag_model.py new file mode 100644 index 0000000..5275611 --- /dev/null +++ b/backend/models/resource_tag_model.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel, Field +from enum import Enum +from typing import List +from datetime import datetime +from typing import Optional +from .tag_model import Tag + + +class ResourceTag(BaseModel): + id: int | None = None + resourceid: int | None = None + tagid: Tag diff --git a/backend/models/service_model.py b/backend/models/service_model.py new file mode 100644 index 0000000..36c336b --- /dev/null +++ b/backend/models/service_model.py @@ -0,0 +1,16 @@ +from pydantic import BaseModel, Field +from enum import Enum +from typing import List +from datetime import datetime +from typing import Optional +from .enum_for_models import ProgramTypeEnum + + +class Service(BaseModel): + id: int | None = None + created_at: datetime | None = None + name: str + status: str + summary: str + requirements: List[str] + program: ProgramTypeEnum diff --git a/backend/models/service_tag_model.py b/backend/models/service_tag_model.py new file mode 100644 index 0000000..c8e2241 --- /dev/null +++ b/backend/models/service_tag_model.py @@ -0,0 +1,19 @@ +from pydantic import BaseModel, Field +from enum import Enum +from typing import List +from datetime import datetime +from typing import Optional + +from .enum_for_models import ProgramTypeEnum +from .enum_for_models import UserTypeEnum +from .service_model import Service + +from .tag_model import Tag +from pydantic import BaseModel +from datetime import datetime + + +class ServiceTag(Service, BaseModel): + id: int | None = None + serviceid: int | None = None + tagId: Tag diff --git a/backend/models/tag_model.py b/backend/models/tag_model.py new file mode 100644 index 0000000..0e7518f --- /dev/null +++ b/backend/models/tag_model.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel, Field +from enum import Enum +from typing import List +from datetime import datetime +from typing import Optional + + +class Tag(BaseModel): + id: int + content: str = Field( + ..., max_length=600, description="content associated with the tag" + ) + created_at: datetime | None = None diff --git a/backend/models/user.model.py b/backend/models/user.model.py new file mode 100644 index 0000000..f4530a5 --- /dev/null +++ b/backend/models/user.model.py @@ -0,0 +1,17 @@ +from pydantic import BaseModel, Field +from enum import Enum +from typing import List +from datetime import datetime +from typing import Optional +from .enum_for_models import UserTypeEnum, ProgramTypeEnum + + +class User(BaseModel): + id: int + username: str = Field(..., description="The username of the user") + email: str = Field(..., description="The e-mail of the user") + experience: int = Field(..., description="Years of Experience of the User") + group: str + programtype: List[ProgramTypeEnum] + usertype: UserTypeEnum + created_at: Optional[datetime]