mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
feat: init activities
This commit is contained in:
parent
ee07f49139
commit
727f17ba7c
9 changed files with 358 additions and 370 deletions
|
|
@ -1,55 +1,69 @@
|
|||
from typing import Literal, Optional
|
||||
from click import Option
|
||||
from sqlalchemy import JSON, Column
|
||||
from sqlmodel import Field, Session, SQLModel, create_engine, select
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class ActivityTypeEnum(str, Enum):
|
||||
VIDEO = "VIDEO"
|
||||
DOCUMENT = "DOCUMENT"
|
||||
DYNAMIC = "DYNAMIC"
|
||||
ASSESSMENT = "ASSESSMENT"
|
||||
CUSTOM = "CUSTOM"
|
||||
TYPE_VIDEO = "TYPE_VIDEO"
|
||||
TYPE_DOCUMENT = "TYPE_DOCUMENT"
|
||||
TYPE_DYNAMIC = "TYPE_DYNAMIC"
|
||||
TYPE_ASSESSMENT = "TYPE_ASSESSMENT"
|
||||
TYPE_CUSTOM = "TYPE_CUSTOM"
|
||||
|
||||
|
||||
class ActivitySubTypeEnum(str, Enum):
|
||||
# Dynamic
|
||||
DYNAMIC_PAGE = "DYNAMIC_PAGE"
|
||||
SUBTYPE_DYNAMIC_PAGE = "SUBTYPE_DYNAMIC_PAGE"
|
||||
# Video
|
||||
VIDEO_YOUTUBE = "VIDEO_YOUTUBE"
|
||||
VIDEO_HOSTED = "VIDEO_HOSTED"
|
||||
SUBTYPE_VIDEO_YOUTUBE = "SUBTYPE_VIDEO_YOUTUBE"
|
||||
SUBTYPE_VIDEO_HOSTED = "SUBTYPE_VIDEO_HOSTED"
|
||||
# Document
|
||||
DOCUMENT_PDF = "DOCUMENT_PDF"
|
||||
DOCUMENT_DOC = "DOCUMENT_GDOC"
|
||||
SUBTYPE_DOCUMENT_PDF = "SUBTYPE_DOCUMENT_PDF"
|
||||
SUBTYPE_DOCUMENT_DOC = "SUBTYPE_DOCUMENT_DOC"
|
||||
# Assessment
|
||||
ASSESSMENT_QUIZ = "ASSESSMENT_QUIZ"
|
||||
SUBTYPE_ASSESSMENT_QUIZ = "SUBTYPE_ASSESSMENT_QUIZ"
|
||||
# Custom
|
||||
CUSTOM = "CUSTOM"
|
||||
SUBTYPE_CUSTOM = "SUBTYPE_CUSTOM"
|
||||
|
||||
|
||||
class ActivityBase(SQLModel):
|
||||
name: str
|
||||
activity_type: ActivityTypeEnum = ActivityTypeEnum.CUSTOM
|
||||
activity_sub_type: ActivitySubTypeEnum = ActivitySubTypeEnum.CUSTOM
|
||||
slug: str
|
||||
activity_type: ActivityTypeEnum = ActivityTypeEnum.TYPE_CUSTOM
|
||||
activity_sub_type: ActivitySubTypeEnum = ActivitySubTypeEnum.SUBTYPE_CUSTOM
|
||||
content: dict = Field(default={}, sa_column=Column(JSON))
|
||||
published_version: int
|
||||
version: int
|
||||
org_id: int = Field(default=None, foreign_key="organization.id")
|
||||
course_id: int = Field(default=None, foreign_key="course.id")
|
||||
|
||||
|
||||
class Activity(ActivityBase, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
activity_uuid: str
|
||||
creation_date: str
|
||||
update_date: str
|
||||
org_id: int = Field(default=None, foreign_key="organization.id")
|
||||
activity_uuid: str = ""
|
||||
creation_date: str = ""
|
||||
update_date: str = ""
|
||||
|
||||
|
||||
class ActivityCreate(ActivityBase):
|
||||
order: int
|
||||
org_id: int = Field(default=None, foreign_key="organization.id")
|
||||
course_id: int = Field(default=None, foreign_key="course.id")
|
||||
chapter_id : int
|
||||
pass
|
||||
|
||||
|
||||
class ActivityUpdate(ActivityBase):
|
||||
activity_id: int
|
||||
name: Optional[str]
|
||||
activity_type: Optional[ActivityTypeEnum]
|
||||
activity_sub_type: Optional[ActivitySubTypeEnum]
|
||||
content: dict = Field(default={}, sa_column=Column(JSON))
|
||||
published_version: Optional[int]
|
||||
version: Optional[int]
|
||||
|
||||
|
||||
class ActivityRead(ActivityBase):
|
||||
id: int
|
||||
activity_uuid: str
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue