From 21167f7a6b7cd2dfb5123df3f227436a43c4ab0a Mon Sep 17 00:00:00 2001
From: pmoharana-cmd <pmoharana032474@gmail.com>
Date: Sun, 20 Oct 2024 14:14:03 -0400
Subject: [PATCH] Update entities and models for resource/service tagging

---
 backend/entities/resource_entity.py     |  1 +
 backend/entities/resource_tag_entity.py | 16 +++++++++-------
 backend/entities/tag_entity.py          | 24 ++++++++++++------------
 backend/models/resource_model.py        |  2 ++
 backend/models/resource_tag_model.py    | 14 ++++----------
 5 files changed, 28 insertions(+), 29 deletions(-)

diff --git a/backend/entities/resource_entity.py b/backend/entities/resource_entity.py
index 299decb..82f6d32 100644
--- a/backend/entities/resource_entity.py
+++ b/backend/entities/resource_entity.py
@@ -64,4 +64,5 @@ class ResourceEntity(EntityBase):
             summary=self.summary,
             link=self.link,
             program=self.program,
+            tags=[tag.tag.to_model() for tag in self.resourceTags],
         )
diff --git a/backend/entities/resource_tag_entity.py b/backend/entities/resource_tag_entity.py
index e6d863b..c48f6e9 100644
--- a/backend/entities/resource_tag_entity.py
+++ b/backend/entities/resource_tag_entity.py
@@ -15,6 +15,8 @@ from datetime import datetime
 # Import self for to model
 from typing import Self
 
+from ..models import ResourceTag
+
 
 class ResourceTagEntity(EntityBase):
 
@@ -30,13 +32,13 @@ class ResourceTagEntity(EntityBase):
     resource: Mapped["ResourceEntity"] = relationship(back_populates="resourceTags")
     tag: Mapped["TagEntity"] = relationship(back_populates="resourceTags")
 
-    # @classmethod
-    # def from_model (cls, model: resource_tag_model) -> Self:
-    #     return cls (
-    #         id = model.id,
-    #         resourceId = model.resourceId,
-    #         tagId = model.tagId,
-    #     )
+    @classmethod
+    def from_model(cls, model: ResourceTag) -> Self:
+        return cls(
+            id=model.id,
+            resourceId=model.resource_id,
+            tagId=model.tag_id,
+        )
 
     # def to_model (self) -> resource_tag_model:
     #     return user_model(
diff --git a/backend/entities/tag_entity.py b/backend/entities/tag_entity.py
index 0d1548b..11e3410 100644
--- a/backend/entities/tag_entity.py
+++ b/backend/entities/tag_entity.py
@@ -16,22 +16,25 @@ from ..models.tag_model import Tag
 
 from typing import Self
 
+
 class TagEntity(EntityBase):
 
-    #set table name
+    # set table name
     __tablename__ = "tag"
 
-    #set fields
+    # set fields
     id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
     created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.now)
     content: Mapped[str] = mapped_column(String(100), nullable=False)
 
-    #relationships
-    resourceTags: Mapped[list["ResourceTagEntity"]] = relationship(back_populates="tag", cascade="all,delete")
-    serviceTags: Mapped[list["ServiceTagEntity"]] = relationship(back_populates="tag", cascade="all,delete")
+    # relationships
+    resourceTags: Mapped[list["ResourceTagEntity"]] = relationship(
+        back_populates="tag", cascade="all,delete"
+    )
+    serviceTags: Mapped[list["ServiceTagEntity"]] = relationship(
+        back_populates="tag", cascade="all,delete"
+    )
 
-  
-    
     @classmethod
     def from_model(cls, model: Tag) -> Self:
         """
@@ -42,10 +45,10 @@ class TagEntity(EntityBase):
         Returns:
             self: The entity
         """
-            
+
         return cls(
             id=model.id,
-            content=model.id,
+            content=model.content,
         )
 
     def to_model(self) -> Tag:
@@ -60,6 +63,3 @@ class TagEntity(EntityBase):
             id=self.id,
             content=self.content,
         )
-
-
-
diff --git a/backend/models/resource_model.py b/backend/models/resource_model.py
index 8c9fde0..f12f31e 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 .tag_model import Tag
 
 
 class Resource(BaseModel):
@@ -13,3 +14,4 @@ class Resource(BaseModel):
     link: str = Field(..., max_length=150, description="link to the resource")
     program: ProgramTypeEnum
     created_at: Optional[datetime]
+    tags: List[Tag] = []
diff --git a/backend/models/resource_tag_model.py b/backend/models/resource_tag_model.py
index 0a4adc5..fff69fd 100644
--- a/backend/models/resource_tag_model.py
+++ b/backend/models/resource_tag_model.py
@@ -1,13 +1,7 @@
-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
+from pydantic import BaseModel
 
 
-class ResourceTag(Resource, BaseModel):
+class ResourceTag(BaseModel):
     id: int | None = None
-    resourceid: int | None = None
-    tagid: List[Tag]
+    tag_id: int
+    resource_id: int