From 23e4e22fa6be7863b6ed4f843015c5dc6a68981d Mon Sep 17 00:00:00 2001 From: CheezyGarlicBread Date: Mon, 25 Mar 2024 18:47:49 -0400 Subject: [PATCH 1/4] 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] From 8f3de19c6d491da51010776f5e49daa3c7abde0f Mon Sep 17 00:00:00 2001 From: CheezyGarlicBread Date: Mon, 25 Mar 2024 19:18:44 -0400 Subject: [PATCH 2/4] further changes to tags and filenames --- backend/models/resource_tag_model.py | 3 ++- backend/models/{user.model.py => user_model.py} | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) rename backend/models/{user.model.py => user_model.py} (95%) diff --git a/backend/models/resource_tag_model.py b/backend/models/resource_tag_model.py index 5275611..01aec83 100644 --- a/backend/models/resource_tag_model.py +++ b/backend/models/resource_tag_model.py @@ -4,9 +4,10 @@ from typing import List from datetime import datetime from typing import Optional from .tag_model import Tag +from .resource_model import Resource -class ResourceTag(BaseModel): +class ResourceTag(Resource, BaseModel): id: int | None = None resourceid: int | None = None tagid: Tag diff --git a/backend/models/user.model.py b/backend/models/user_model.py similarity index 95% rename from backend/models/user.model.py rename to backend/models/user_model.py index f4530a5..c881d54 100644 --- a/backend/models/user.model.py +++ b/backend/models/user_model.py @@ -7,7 +7,7 @@ from .enum_for_models import UserTypeEnum, ProgramTypeEnum class User(BaseModel): - id: int + id: int | None = None 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") From 90ce1e2ed15e008139038795acdad1960671e839 Mon Sep 17 00:00:00 2001 From: CheezyGarlicBread Date: Mon, 25 Mar 2024 19:31:57 -0400 Subject: [PATCH 3/4] changes to nature of both junction tag_models --- backend/models/resource_tag_model.py | 2 +- backend/models/service_tag_model.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/models/resource_tag_model.py b/backend/models/resource_tag_model.py index 01aec83..0a4adc5 100644 --- a/backend/models/resource_tag_model.py +++ b/backend/models/resource_tag_model.py @@ -10,4 +10,4 @@ from .resource_model import Resource class ResourceTag(Resource, BaseModel): id: int | None = None resourceid: int | None = None - tagid: Tag + tagid: List[Tag] diff --git a/backend/models/service_tag_model.py b/backend/models/service_tag_model.py index c8e2241..b9c07a9 100644 --- a/backend/models/service_tag_model.py +++ b/backend/models/service_tag_model.py @@ -16,4 +16,4 @@ from datetime import datetime class ServiceTag(Service, BaseModel): id: int | None = None serviceid: int | None = None - tagId: Tag + tagId: List[Tag] From 31d0d89a8ad4a0de0231dff479f8ae27a48116bd Mon Sep 17 00:00:00 2001 From: CheezyGarlicBread Date: Mon, 25 Mar 2024 20:07:55 -0400 Subject: [PATCH 4/4] Changes made thanks to blake reviews --- backend/models/resource_model.py | 1 + backend/models/tag_model.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/models/resource_model.py b/backend/models/resource_model.py index a31b4db..8601c41 100644 --- a/backend/models/resource_model.py +++ b/backend/models/resource_model.py @@ -4,6 +4,7 @@ from typing import List from datetime import datetime from typing import Optional from .enum_for_models import ProgramTypeEnum +from .resource_model import Resource class Resource(BaseModel): diff --git a/backend/models/tag_model.py b/backend/models/tag_model.py index 0e7518f..44dcb02 100644 --- a/backend/models/tag_model.py +++ b/backend/models/tag_model.py @@ -6,7 +6,7 @@ from typing import Optional class Tag(BaseModel): - id: int + id: int | None = None content: str = Field( ..., max_length=600, description="content associated with the tag" )