yukikase's picture
feat: 開催日・企画種別削除、サークル種別をcircleTypeに変更
ce36f11
Raw
History Blame Contribute Delete
4.09 kB
from typing import Literal
from pydantic import BaseModel
class Image(BaseModel):
"""画像情報を格納するデータクラス
- `filename`: 画像ファイル名
- `extension`: 画像拡張子
- `order`: 画像の表示順
- 0: primary
- 1 > 2 > ... : optional
"""
filename: str
extension: str
order: int
class Sns(BaseModel):
"""SNS情報を格納するデータクラス
- `service`: サービス名 (例: "X", "Instagram", "Youtube", etc.)
- `url`: URL
"""
service: str
url: str
class Project(BaseModel):
"""団体から提供された企画情報を格納するデータクラス。DBから取得したデータをこれに当てはめる。
- `projectId`: 企画ID (unique)
- `circleName`: 団体名
- `circleNameKana`: 団体名読み仮名
- `name`: 企画名
- `category`: 企画ジャンル
- `location`: 実施場所
- `areaCode`: エリアコード (T:工北, R:工南, S:理学, L:文法, D:人社・院棟, K:語らいの森, H:本部, E:教育, G:総合校舎)
- `description`: 企画内容
- `prSummary`: PRコメント
- `prDetail`: PRコメント(詳細ページ用)
- `remark`: 注意事項
- `images`: 画像情報
- `socialMedia`: 各種URL情報
"""
projectId: str
circleName: str
circleNameKana: str
name: str
category: Literal[
"パフォーマンス", "飲食", "物販", "展示", "参加型", "音楽", "その他"
]
location: str | None
areaCode: str | None
description: str | None
prSummary: str | None
prDetail: str | None
remark: str | None
images: list[Image]
socialMedia: list[Sns]
tags: list[str] | None
isArchived: bool
class ProjectSummary(BaseModel):
"""/api/projectsのレスポンス用データクラス。企画一覧に表示されるデータ。
- `projectId`: 企画ID (unique)
- `circleName`: 団体名
- `name`: 企画名
- `category`: 企画ジャンル
- `place`: 実施場所
- `areaCode`: エリアコード (T:工北, R:工南, S:理学, L:文法, D:人社・院棟, K:語らいの森, H:本部, E:教育, G:総合校舎)
- `description`: 企画内容
- `prSummary`: PRコメント
- `remark`: 注意事項
- `image`: 画像情報
"""
projectId: str
circleName: str
name: str
category: Literal[
"パフォーマンス", "飲食", "物販", "展示", "参加型", "音楽", "その他"
]
location: str | None
areaCode: str | None
description: str | None
prSummary: str | None
remark: str | None
image: Image | None
tags: list[str] | None
isArchived: bool
class ProjectDetail(BaseModel):
"""/api/details?projectId=xxxのレスポンス用データクラス。企画詳細ページに表示されるデータ。
- `projectId`: 企画ID (unique)
- `circleName`: 団体名
- `name`: 企画名
- `category`: 企画ジャンル
- `location`: 実施場所
- `areaCode`: エリアコード (T:工北, R:工南, S:理学, L:文法, D:人社・院棟, K:語らいの森, H:本部, E:教育, G:総合校舎)
- `description`: 企画内容
- `prSummary`: PRコメント
- `prDetail`: PRコメント(詳細ページ用)
- `remark`: 注意事項
- `images`: 画像情報
- `socialMedia`: 各種URL情報
"""
projectId: str
circleName: str
name: str
category: Literal[
"パフォーマンス", "飲食", "物販", "展示", "参加型", "音楽", "その他"
]
location: str | None
areaCode: str | None
description: str | None
prSummary: str | None
prDetail: str | None
remark: str | None
images: list[Image]
socialMedia: list[Sns]
tags: list[str] | None
isArchived: bool
class ProjectIds(BaseModel):
"""/api/searchのレスポンス用データクラス。
## example:
```
{
"projectIds": ["62000A", "62000B", "62000C"]
}
```
"""
projectIds: list[str]