Spaces:
Sleeping
Sleeping
| 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] | |