概要
| 項目 |
内容 |
| テーブル名 |
media |
| 説明 |
アップロードされたメディアファイル(画像・動画)と、AI が生成したサムネイル画像のメタデータを管理するテーブル。ファイル本体は S3 に保存し、その URL をこのテーブルで管理する |
| 主な用途 |
メディアのアップロード・一覧取得・サムネイルの参照 |
カラム定義
| カラム名 |
データ型 |
PK |
FK |
Unique |
Nullable |
デフォルト |
備考 |
| _id |
ObjectId |
◯ |
|
◯ |
|
|
DocumentDB自動採番 |
| name |
string |
|
|
◯ |
|
|
ユニークインデックスあり。S3 のオブジェクトキーにもなる |
| mime_type |
enum |
|
|
|
|
|
image: 画像 / video: 動画 |
| s3_url |
string |
|
|
|
|
|
S3 に保存した実体の URL。サムネイルは CloudFront 経由の URL を保存する |
| size |
int |
|
|
|
|
|
バイト数 |
| race_id |
string |
|
auto_racing:_id / bicycle_racing:_id / horse_racing:_id |
|
◯ |
|
サムネイルなどレース由来のメディアのみ設定。汎用アップロードは null |
| created_at |
number |
|
|
|
|
|
|
| updated_at |
number |
|
|
|
|
|
一覧取得のデフォルトは更新日時順にする |
| deleted_at |
number |
|
|
|
◯ |
|
|
サムネイルの命名規則
thumbnail_generation Lambda が生成したサムネイルは、name の一意性を利用して upsert する
(SQS 再配信などで再生成しても重複しない)。
| 対象 |
name |
S3 キー |
| 記事 |
thumbnail_{race_id}.jpg |
{racing_type}/thumbnail/{race_id}.jpg |
| ブログ |
thumbnail_blog_{blog_id}.jpg |
{racing_type}/thumbnail/blog_{blog_id}.jpg |
s3_url の扱い
| 経路 |
返す URL |
メディア API(GET /v1/medias 等) |
有効期限 1 時間の S3 署名付き URL を都度生成して返す |
| サムネイル(ブログ本文への埋め込み) |
CloudFront 経由の公開 URL(S3 バケットは非公開のため) |