Spaces:
Sleeping
Sleeping
| `app/repositories/query.sql`を,以下のように変更してください。 | |
| - 最終的に得られるカラムに「descriptionUpdates」「prSummaryUpdates」「prDetailUpdates」「remarkUpdates」を追加してください。 | |
| - 型:{ | |
| content: string, | |
| updateStatus: string | null, | |
| createdAt: DateTime | |
| }[] | |
| なお,本変更のゴールとしては,`app/repositories/projects_repository.py`内の`_transform_row`において,「***Updates」があり,なおかつstatus=APPROVEDとなっている最新のものが存在すればそれのcontentをdescription, prSummary, prDetail, remarkとし,存在しないならば従来のdescription, prSummary, prDetail, remarkを採用することを目指します。description, prSummary, prDetail, remarkは独立に採用を決定してください。要するに,テキストデータが更新される可能性があるので最新のものをピックアップしてください。 | |
| 実装に当たっては以下のprismaのモデルを参考にしてください。 | |
| ```prisma | |
| enum CPUpdateRequestStatus { | |
| DRAFT | |
| PENDING_REVIEW | |
| APPROVED | |
| REJECTED | |
| } | |
| // 企画に関するテキスト情報(サマリー、説明、PR文) | |
| model ProjectText { | |
| id String @id @default(dbgenerated("(UUID())")) | |
| circleProject CircleProject @relation(name: "circle_project_texts", fields: [circleProjectId], references: [id], onDelete: Cascade) | |
| circleProjectId String | |
| textType TextType // DESCRIPTION, PRSUMMARY, PRDETAIL, REMARK | |
| content String @db.Text // テキスト内容 | |
| updateRequest ProjectMaterialUpdateRequest? @relation("update_request_text") | |
| createdAt DateTime @default(now()) | |
| updatedAt DateTime @updatedAt @default(now()) | |
| } | |
| // 画像情報の管理 | |
| model Image { | |
| id String @id @default(dbgenerated("(UUID())")) | |
| filename String | |
| extension String | |
| createdAt DateTime @default(now()) | |
| updatedAt DateTime @updatedAt @default(now()) | |
| cproject CircleProject @relation(name: "cproject_image", fields: [cprojectId], references: [id]) | |
| cprojectId String | |
| order Int | |
| updateRequest ProjectMaterialUpdateRequest? @relation("update_request_image") | |
| } | |
| // SNSデータ | |
| model SnsData { | |
| id String @id @default(dbgenerated("(UUID())")) | |
| service String // SNSサービス名 (Twitter, Instagram, etc.) | |
| url String // ユーザー名/ハンドル | |
| label String? | |
| circleProject CircleProject @relation(name: "circle_project_sns", fields: [circleProjectId], references: [id], onDelete: Cascade) | |
| circleProjectId String | |
| updateRequest ProjectMaterialUpdateRequest? @relation("update_request_snsdata") | |
| createdAt DateTime @default(now()) | |
| updatedAt DateTime @updatedAt @default(now()) | |
| } | |
| model ProjectMaterialUpdateRequest { | |
| id String @id @default(dbgenerated("(UUID())")) | |
| targetType CPUpdateRequestType | |
| targetSns SnsData? @relation(name: "update_request_snsdata", fields: [targetSnsId], references: [id]) | |
| targetSnsId String? @unique | |
| targetText ProjectText? @relation(name: "update_request_text", fields: [targetTextId], references: [id]) | |
| targetTextId String? @unique | |
| targetImage Image? @relation(name: "update_request_image", fields: [targetImageId], references: [id]) | |
| targetImageId String? @unique | |
| status CPUpdateRequestStatus | |
| requester User @relation(name: "cp_update_requester", fields: [requesterId], references: [id]) | |
| requesterId String | |
| observer User? @relation(name: "cp_update_observer", fields: [observerId], references: [id]) | |
| observerId String? | |
| createdAt DateTime @default(now()) | |
| updatedAt DateTime @updatedAt @default(now()) | |
| } | |
| ``` | |
| # 修正 | |
| ## query.sqlの変更 | |
| 現状,最終的にSQLによって得られるカラムのうち,「description」「prSummary」「prDetail」「remark」ですが,これをProjectTextテーブルから取ってきています。現状のようにdescriptionカラムとdescriptionUpdatesカラムの2種類にするのではなく,ProjectTextテーブルとProjectMaterialUpdateRequestテーブルを左結合し,ProjectMaterialUpdateRequestに対応するエントリがない場合はupdateStatusをnullにしてSQLの結果としてください。つまり,descriptionカラムとdescriptionUpdatesカラムを統合し,descriptionUpdatesカラム1本にしてください。prSummary, prDetail, remarkでも同様です。 | |
| ## projects_repository.pyの変更 | |
| `app/repositories/projects_repository.py`内の`_transform_row`においては,以下の優先順位で採用してdescription, prSummary, ...としてください。 | |
| 1. updateStatus="APPROVED"のうち最新のもの | |
| 2. updateStatus=nullで最新のもの | |
| なお,方針としては,created_atの降順で並び替え,順に見ていき見つかれば採用すると良いでしょう。 |