mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
fix: use onCascade for foreignkeys
This commit is contained in:
parent
925276dc7a
commit
4245e61df8
12 changed files with 68 additions and 33 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from sqlalchemy import JSON, BigInteger, Column, ForeignKey
|
from sqlalchemy import JSON, Column, ForeignKey, Integer
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
|
|
@ -38,12 +38,12 @@ class ActivityBase(SQLModel):
|
||||||
|
|
||||||
class Activity(ActivityBase, table=True):
|
class Activity(ActivityBase, table=True):
|
||||||
id: Optional[int] = Field(default=None, primary_key=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(
|
course_id: int = Field(
|
||||||
default=None,
|
default=None,
|
||||||
sa_column=Column(
|
sa_column=Column(Integer, ForeignKey("course.id", ondelete="CASCADE")),
|
||||||
BigInteger, ForeignKey("course.id", ondelete="CASCADE")
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
activity_uuid: str = ""
|
activity_uuid: str = ""
|
||||||
creation_date: str = ""
|
creation_date: str = ""
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ class BlockBase(SQLModel):
|
||||||
class Block(BlockBase, table=True):
|
class Block(BlockBase, table=True):
|
||||||
id: Optional[int] = Field(default=None, primary_key=True)
|
id: Optional[int] = Field(default=None, primary_key=True)
|
||||||
content: dict = Field(default={}, sa_column=Column(JSON))
|
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")))
|
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")))
|
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")))
|
activity_id: int = Field(sa_column= Column("activity_id", ForeignKey("activity.id", ondelete="CASCADE")))
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
from sqlalchemy import BigInteger, Column, ForeignKey
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -10,7 +11,9 @@ class CollectionBase(SQLModel):
|
||||||
|
|
||||||
class Collection(CollectionBase, table=True):
|
class Collection(CollectionBase, table=True):
|
||||||
id: Optional[int] = Field(default=None, primary_key=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 = ""
|
collection_uuid: str = ""
|
||||||
creation_date: str = ""
|
creation_date: str = ""
|
||||||
update_date: str = ""
|
update_date: str = ""
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from sqlalchemy import BigInteger, Column, ForeignKey
|
from sqlalchemy import Column, ForeignKey, Integer
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
|
|
||||||
|
|
||||||
class CollectionCourse(SQLModel, table=True):
|
class CollectionCourse(SQLModel, table=True):
|
||||||
id: Optional[int] = Field(default=None, primary_key=True)
|
id: Optional[int] = Field(default=None, primary_key=True)
|
||||||
collection_id: int = Field(sa_column=Column(BigInteger, ForeignKey("collection.id", ondelete="CASCADE")))
|
collection_id: int = Field(sa_column=Column(Integer, ForeignKey("collection.id", ondelete="CASCADE")))
|
||||||
course_id: int = Field(sa_column=Column(BigInteger, ForeignKey("course.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")
|
org_id: int = Field(default=None, foreign_key="organization.id")
|
||||||
creation_date: str
|
creation_date: str
|
||||||
update_date: str
|
update_date: str
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from sqlalchemy import BigInteger, Column, ForeignKey
|
from sqlalchemy import Column, ForeignKey, Integer
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -7,10 +7,10 @@ class CourseChapter(SQLModel, table=True):
|
||||||
id: Optional[int] = Field(default=None, primary_key=True)
|
id: Optional[int] = Field(default=None, primary_key=True)
|
||||||
order: int
|
order: int
|
||||||
course_id: int = Field(
|
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(
|
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")
|
org_id: int = Field(default=None, foreign_key="organization.id")
|
||||||
creation_date: str
|
creation_date: str
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
|
from sqlalchemy import Column, ForeignKey, Integer
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
from src.db.users import UserRead
|
from src.db.users import UserRead
|
||||||
from src.db.trails import TrailRead
|
from src.db.trails import TrailRead
|
||||||
|
|
@ -17,7 +18,9 @@ class CourseBase(SQLModel):
|
||||||
|
|
||||||
class Course(CourseBase, table=True):
|
class Course(CourseBase, table=True):
|
||||||
id: Optional[int] = Field(default=None, primary_key=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 = ""
|
course_uuid: str = ""
|
||||||
creation_date: str = ""
|
creation_date: str = ""
|
||||||
update_date: str = ""
|
update_date: str = ""
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
from sqlalchemy import Column, ForeignKey, Integer
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -12,7 +13,9 @@ class ResourceAuthorshipEnum(str, Enum):
|
||||||
class ResourceAuthor(SQLModel, table=True):
|
class ResourceAuthor(SQLModel, table=True):
|
||||||
id: Optional[int] = Field(default=None, primary_key=True)
|
id: Optional[int] = Field(default=None, primary_key=True)
|
||||||
resource_uuid: str
|
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
|
authorship: ResourceAuthorshipEnum = ResourceAuthorshipEnum.CREATOR
|
||||||
creation_date: str = ""
|
creation_date: str = ""
|
||||||
update_date: str = ""
|
update_date: str = ""
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Optional, Union
|
from typing import Optional, Union
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from sqlalchemy import JSON, Column
|
from sqlalchemy import JSON, Column, ForeignKey, Integer
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -45,7 +45,10 @@ class RoleBase(SQLModel):
|
||||||
|
|
||||||
class Role(RoleBase, table=True):
|
class Role(RoleBase, table=True):
|
||||||
id: Optional[int] = Field(default=None, primary_key=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_type: RoleTypeEnum = RoleTypeEnum.TYPE_GLOBAL
|
||||||
role_uuid: str = ""
|
role_uuid: str = ""
|
||||||
creation_date: str = ""
|
creation_date: str = ""
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from sqlalchemy import JSON, Column
|
from sqlalchemy import JSON, Column, ForeignKey, Integer
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
|
|
@ -23,10 +23,18 @@ class TrailRun(SQLModel, table=True):
|
||||||
data: dict = Field(default={}, sa_column=Column(JSON))
|
data: dict = Field(default={}, sa_column=Column(JSON))
|
||||||
status: StatusEnum = StatusEnum.STATUS_IN_PROGRESS
|
status: StatusEnum = StatusEnum.STATUS_IN_PROGRESS
|
||||||
# foreign keys
|
# foreign keys
|
||||||
trail_id: int = Field(default=None, foreign_key="trail.id")
|
trail_id: int = Field(
|
||||||
course_id: int = Field(default=None, foreign_key="course.id")
|
sa_column=Column(Integer, ForeignKey("trail.id", ondelete="CASCADE"))
|
||||||
org_id: int = Field(default=None, foreign_key="organization.id")
|
)
|
||||||
user_id: int = Field(default=None, foreign_key="user.id")
|
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
|
# timestamps
|
||||||
creation_date: str
|
creation_date: str
|
||||||
update_date: str
|
update_date: str
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
from sqlalchemy import BigInteger, ForeignKey, JSON, Column
|
from sqlalchemy import ForeignKey, JSON, Column, Integer
|
||||||
|
|
||||||
|
|
||||||
class TrailStepTypeEnum(str, Enum):
|
class TrailStepTypeEnum(str, Enum):
|
||||||
|
|
@ -18,13 +18,23 @@ class TrailStep(SQLModel, table=True):
|
||||||
data: dict = Field(default={}, sa_column=Column(JSON))
|
data: dict = Field(default={}, sa_column=Column(JSON))
|
||||||
# foreign keys
|
# foreign keys
|
||||||
trailrun_id: int = Field(
|
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
|
# timestamps
|
||||||
creation_date: str
|
creation_date: str
|
||||||
update_date: str
|
update_date: str
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
from sqlalchemy import Column, ForeignKey, Integer
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
from src.db.trail_runs import TrailRunRead
|
from src.db.trail_runs import TrailRunRead
|
||||||
|
|
||||||
|
|
@ -24,8 +25,12 @@ class TrailCreate(TrailBase):
|
||||||
class TrailRead(BaseModel):
|
class TrailRead(BaseModel):
|
||||||
id: Optional[int] = Field(default=None, primary_key=True)
|
id: Optional[int] = Field(default=None, primary_key=True)
|
||||||
trail_uuid: Optional[str]
|
trail_uuid: Optional[str]
|
||||||
org_id: int = Field(default=None, foreign_key="organization.id")
|
org_id: int = Field(
|
||||||
user_id: int = Field(default=None, foreign_key="user.id")
|
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]
|
creation_date: Optional[str]
|
||||||
update_date: Optional[str]
|
update_date: Optional[str]
|
||||||
runs: list[TrailRunRead]
|
runs: list[TrailRunRead]
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from sqlalchemy import BigInteger, Column, ForeignKey
|
from sqlalchemy import Column, ForeignKey, Integer
|
||||||
from sqlmodel import Field, SQLModel
|
from sqlmodel import Field, SQLModel
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -7,7 +7,7 @@ class UserOrganization(SQLModel, table=True):
|
||||||
id: Optional[int] = Field(default=None, primary_key=True)
|
id: Optional[int] = Field(default=None, primary_key=True)
|
||||||
user_id: int = Field(default=None, foreign_key="user.id")
|
user_id: int = Field(default=None, foreign_key="user.id")
|
||||||
org_id: int = Field(
|
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")
|
role_id: int = Field(default=None, foreign_key="role.id")
|
||||||
creation_date: str
|
creation_date: str
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue