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..8601c41 --- /dev/null +++ b/backend/models/resource_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 +from .resource_model import Resource + + +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..0a4adc5 --- /dev/null +++ b/backend/models/resource_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 +from .tag_model import Tag +from .resource_model import Resource + + +class ResourceTag(Resource, BaseModel): + id: int | None = None + resourceid: int | None = None + tagid: List[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..b9c07a9 --- /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: List[Tag] diff --git a/backend/models/tag_model.py b/backend/models/tag_model.py new file mode 100644 index 0000000..44dcb02 --- /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 | None = None + 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..c881d54 --- /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 | 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") + group: str + programtype: List[ProgramTypeEnum] + usertype: UserTypeEnum + created_at: Optional[datetime]