diff --git a/apps/api/src/db/activities.py b/apps/api/src/db/activities.py index 95b6ecef..3db42b2a 100644 --- a/apps/api/src/db/activities.py +++ b/apps/api/src/db/activities.py @@ -1,5 +1,5 @@ from typing import Optional -from sqlalchemy import JSON, BigInteger, Column, ForeignKey +from sqlalchemy import JSON, Column, ForeignKey, Integer from sqlmodel import Field, SQLModel from enum import Enum @@ -38,12 +38,12 @@ class ActivityBase(SQLModel): class Activity(ActivityBase, table=True): id: Optional[int] = Field(default=None, primary_key=True) - org_id: int = Field(default=None, foreign_key="organization.id") + org_id: int = Field( + sa_column=Column(Integer, ForeignKey("organization.id", ondelete="CASCADE")) + ) course_id: int = Field( default=None, - sa_column=Column( - BigInteger, ForeignKey("course.id", ondelete="CASCADE") - ), + sa_column=Column(Integer, ForeignKey("course.id", ondelete="CASCADE")), ) activity_uuid: str = "" creation_date: str = "" diff --git a/apps/api/src/db/blocks.py b/apps/api/src/db/blocks.py index 59972a04..453429f7 100644 --- a/apps/api/src/db/blocks.py +++ b/apps/api/src/db/blocks.py @@ -21,7 +21,7 @@ class BlockBase(SQLModel): class Block(BlockBase, table=True): id: Optional[int] = Field(default=None, primary_key=True) content: dict = Field(default={}, sa_column=Column(JSON)) - org_id: int = Field(default=None, foreign_key="organization.id") + org_id: int = Field(sa_column= Column("org_id", ForeignKey("organization.id", ondelete="CASCADE"))) course_id: int = Field(sa_column= Column("course_id", ForeignKey("course.id", ondelete="CASCADE"))) chapter_id: int = Field(sa_column= Column("chapter_id", ForeignKey("chapter.id", ondelete="CASCADE"))) activity_id: int = Field(sa_column= Column("activity_id", ForeignKey("activity.id", ondelete="CASCADE"))) diff --git a/apps/api/src/db/collections.py b/apps/api/src/db/collections.py index 9b191c8d..fb0b1e94 100644 --- a/apps/api/src/db/collections.py +++ b/apps/api/src/db/collections.py @@ -1,4 +1,5 @@ from typing import Optional +from sqlalchemy import BigInteger, Column, ForeignKey from sqlmodel import Field, SQLModel @@ -10,7 +11,9 @@ class CollectionBase(SQLModel): class Collection(CollectionBase, table=True): id: Optional[int] = Field(default=None, primary_key=True) - org_id: int = Field(default=None, foreign_key="organization.id") + org_id: int = Field( + sa_column=Column(BigInteger, ForeignKey("organization.id", ondelete="CASCADE")) + ) collection_uuid: str = "" creation_date: str = "" update_date: str = "" diff --git a/apps/api/src/db/collections_courses.py b/apps/api/src/db/collections_courses.py index 6b30c2ee..4e0fc270 100644 --- a/apps/api/src/db/collections_courses.py +++ b/apps/api/src/db/collections_courses.py @@ -1,12 +1,12 @@ from typing import Optional -from sqlalchemy import BigInteger, Column, ForeignKey +from sqlalchemy import Column, ForeignKey, Integer from sqlmodel import Field, SQLModel class CollectionCourse(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) - collection_id: int = Field(sa_column=Column(BigInteger, ForeignKey("collection.id", ondelete="CASCADE"))) - course_id: int = Field(sa_column=Column(BigInteger, ForeignKey("course.id", ondelete="CASCADE"))) + collection_id: int = Field(sa_column=Column(Integer, ForeignKey("collection.id", ondelete="CASCADE"))) + course_id: int = Field(sa_column=Column(Integer, ForeignKey("course.id", ondelete="CASCADE"))) org_id: int = Field(default=None, foreign_key="organization.id") creation_date: str update_date: str diff --git a/apps/api/src/db/course_chapters.py b/apps/api/src/db/course_chapters.py index dec820c6..97e9d623 100644 --- a/apps/api/src/db/course_chapters.py +++ b/apps/api/src/db/course_chapters.py @@ -1,5 +1,5 @@ from typing import Optional -from sqlalchemy import BigInteger, Column, ForeignKey +from sqlalchemy import Column, ForeignKey, Integer from sqlmodel import Field, SQLModel @@ -7,10 +7,10 @@ class CourseChapter(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) order: int course_id: int = Field( - sa_column=Column(BigInteger, ForeignKey("course.id", ondelete="CASCADE")) + sa_column=Column(Integer, ForeignKey("course.id", ondelete="CASCADE")) ) chapter_id: int = Field( - sa_column=Column(BigInteger, ForeignKey("chapter.id", ondelete="CASCADE")) + sa_column=Column(Integer, ForeignKey("chapter.id", ondelete="CASCADE")) ) org_id: int = Field(default=None, foreign_key="organization.id") creation_date: str diff --git a/apps/api/src/db/courses.py b/apps/api/src/db/courses.py index 7623aa1f..31586d25 100644 --- a/apps/api/src/db/courses.py +++ b/apps/api/src/db/courses.py @@ -1,4 +1,5 @@ from typing import List, Optional +from sqlalchemy import Column, ForeignKey, Integer from sqlmodel import Field, SQLModel from src.db.users import UserRead from src.db.trails import TrailRead @@ -17,7 +18,9 @@ class CourseBase(SQLModel): class Course(CourseBase, table=True): id: Optional[int] = Field(default=None, primary_key=True) - org_id: int = Field(default=None, foreign_key="organization.id") + org_id: int = Field( + sa_column=Column(Integer, ForeignKey("organization.id", ondelete="CASCADE")) + ) course_uuid: str = "" creation_date: str = "" update_date: str = "" diff --git a/apps/api/src/db/resource_authors.py b/apps/api/src/db/resource_authors.py index 758a59c3..3f938397 100644 --- a/apps/api/src/db/resource_authors.py +++ b/apps/api/src/db/resource_authors.py @@ -1,5 +1,6 @@ from enum import Enum from typing import Optional +from sqlalchemy import Column, ForeignKey, Integer from sqlmodel import Field, SQLModel @@ -12,7 +13,9 @@ class ResourceAuthorshipEnum(str, Enum): class ResourceAuthor(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) resource_uuid: str - user_id: int = Field(default=None, foreign_key="user.id") + user_id: int = Field( + sa_column=Column(Integer, ForeignKey("user.id", ondelete="CASCADE")) + ) authorship: ResourceAuthorshipEnum = ResourceAuthorshipEnum.CREATOR creation_date: str = "" update_date: str = "" diff --git a/apps/api/src/db/roles.py b/apps/api/src/db/roles.py index 09ff4206..8ea66dbb 100644 --- a/apps/api/src/db/roles.py +++ b/apps/api/src/db/roles.py @@ -1,7 +1,7 @@ from enum import Enum from typing import Optional, Union from pydantic import BaseModel -from sqlalchemy import JSON, Column +from sqlalchemy import JSON, Column, ForeignKey, Integer from sqlmodel import Field, SQLModel @@ -45,7 +45,10 @@ class RoleBase(SQLModel): class Role(RoleBase, table=True): id: Optional[int] = Field(default=None, primary_key=True) - org_id: int = Field(default=None, foreign_key="organization.id") + org_id: Optional[int] = Field( + default=None, + sa_column=Column(Integer, ForeignKey("organization.id", ondelete="CASCADE")) + ) role_type: RoleTypeEnum = RoleTypeEnum.TYPE_GLOBAL role_uuid: str = "" creation_date: str = "" diff --git a/apps/api/src/db/trail_runs.py b/apps/api/src/db/trail_runs.py index 26bfec8f..c2308162 100644 --- a/apps/api/src/db/trail_runs.py +++ b/apps/api/src/db/trail_runs.py @@ -1,6 +1,6 @@ from typing import Optional from pydantic import BaseModel -from sqlalchemy import JSON, Column +from sqlalchemy import JSON, Column, ForeignKey, Integer from sqlmodel import Field, SQLModel from enum import Enum @@ -23,10 +23,18 @@ class TrailRun(SQLModel, table=True): data: dict = Field(default={}, sa_column=Column(JSON)) status: StatusEnum = StatusEnum.STATUS_IN_PROGRESS # foreign keys - trail_id: int = Field(default=None, foreign_key="trail.id") - course_id: int = Field(default=None, foreign_key="course.id") - org_id: int = Field(default=None, foreign_key="organization.id") - user_id: int = Field(default=None, foreign_key="user.id") + trail_id: int = Field( + sa_column=Column(Integer, ForeignKey("trail.id", ondelete="CASCADE")) + ) + course_id: int = Field( + sa_column=Column(Integer, ForeignKey("course.id", ondelete="CASCADE")) + ) + org_id: int = Field( + sa_column=Column(Integer, ForeignKey("organization.id", ondelete="CASCADE")) + ) + user_id: int = Field( + sa_column=Column(Integer, ForeignKey("user.id", ondelete="CASCADE")) + ) # timestamps creation_date: str update_date: str diff --git a/apps/api/src/db/trail_steps.py b/apps/api/src/db/trail_steps.py index af13c95d..b11d148a 100644 --- a/apps/api/src/db/trail_steps.py +++ b/apps/api/src/db/trail_steps.py @@ -1,7 +1,7 @@ from enum import Enum from typing import Optional from sqlmodel import Field, SQLModel -from sqlalchemy import BigInteger, ForeignKey, JSON, Column +from sqlalchemy import ForeignKey, JSON, Column, Integer class TrailStepTypeEnum(str, Enum): @@ -18,13 +18,23 @@ class TrailStep(SQLModel, table=True): data: dict = Field(default={}, sa_column=Column(JSON)) # foreign keys trailrun_id: int = Field( - sa_column=Column(BigInteger, ForeignKey("trailrun.id", ondelete="CASCADE")) + sa_column=Column(Integer, ForeignKey("trailrun.id", ondelete="CASCADE")) + ) + trail_id: int = Field( + sa_column=Column(Integer, ForeignKey("trail.id", ondelete="CASCADE")) + ) + activity_id: int = Field( + sa_column=Column(Integer, ForeignKey("activity.id", ondelete="CASCADE")) + ) + course_id: int = Field( + sa_column=Column(Integer, ForeignKey("course.id", ondelete="CASCADE")) + ) + org_id: int = Field( + sa_column=Column(Integer, ForeignKey("organization.id", ondelete="CASCADE")) + ) + user_id: int = Field( + sa_column=Column(Integer, ForeignKey("user.id", ondelete="CASCADE")) ) - trail_id: int = Field(default=None, foreign_key="trail.id") - activity_id: int = Field(default=None, foreign_key="activity.id") - course_id: int = Field(default=None, foreign_key="course.id") - org_id: int = Field(default=None, foreign_key="organization.id") - user_id: int = Field(default=None, foreign_key="user.id") # timestamps creation_date: str update_date: str diff --git a/apps/api/src/db/trails.py b/apps/api/src/db/trails.py index e29f241f..950388d6 100644 --- a/apps/api/src/db/trails.py +++ b/apps/api/src/db/trails.py @@ -1,5 +1,6 @@ from typing import Optional from pydantic import BaseModel +from sqlalchemy import Column, ForeignKey, Integer from sqlmodel import Field, SQLModel from src.db.trail_runs import TrailRunRead @@ -24,8 +25,12 @@ class TrailCreate(TrailBase): class TrailRead(BaseModel): id: Optional[int] = Field(default=None, primary_key=True) trail_uuid: Optional[str] - org_id: int = Field(default=None, foreign_key="organization.id") - user_id: int = Field(default=None, foreign_key="user.id") + org_id: int = Field( + sa_column=Column(Integer, ForeignKey("organization.id", ondelete="CASCADE")) + ) + user_id: int = Field( + sa_column=Column(Integer, ForeignKey("user.id", ondelete="CASCADE")) + ) creation_date: Optional[str] update_date: Optional[str] runs: list[TrailRunRead] diff --git a/apps/api/src/db/user_organizations.py b/apps/api/src/db/user_organizations.py index c842d41c..4ce1c8cc 100644 --- a/apps/api/src/db/user_organizations.py +++ b/apps/api/src/db/user_organizations.py @@ -1,5 +1,5 @@ from typing import Optional -from sqlalchemy import BigInteger, Column, ForeignKey +from sqlalchemy import Column, ForeignKey, Integer from sqlmodel import Field, SQLModel @@ -7,7 +7,7 @@ class UserOrganization(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) user_id: int = Field(default=None, foreign_key="user.id") org_id: int = Field( - sa_column=Column(BigInteger, ForeignKey("organization.id", ondelete="CASCADE")) + sa_column=Column(Integer, ForeignKey("organization.id", ondelete="CASCADE")) ) role_id: int = Field(default=None, foreign_key="role.id") creation_date: str