コード削除
メソッド
RESTメソッドを採用しています。
HTTPメソッド
DELETE: コード削除(論理削除)
命名規則
クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時のURIとJSON内のノードにはsnake_caseを使用します。
リクエストとレスポンス
ヘッダー
メタ情報はレスポンスボディではなく、HTTPヘッダーに設定されます。
リクエストヘッダー
AuthorizationContent-TypeAcceptAccept-language
レスポンスヘッダー
Content-Type
コード削除
URI
パスパラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| organization_id | number | 必須 | backend PostgreSQL organization ID |
| project_id | number | 必須 | backend PostgreSQL project ID |
| code_id | string | 必須 | コード UUID |
レスポンス
レスポンスはJSONです。
{
"id": "0192a3b4-c5d6-4e8f-9a0b-1c2d3e4f5a6b",
"projectId": 42,
"name": "Button",
"s3Key": "code/0192a3b4-c5d6-4e8f-9a0b-1c2d3e4f5a6b.png",
"sourceCode": "const Button = () => { ... }",
"cssCode": ".button { ... }",
"status": 1,
"createdAt": 1234567890000,
"updatedAt": 1234567899999,
"deletedAt": 1234567899999,
"createdBy": "user-id",
"updatedBy": "updater-id",
"deletedBy": "deleter-id"
}
レスポンスフィールド
| 名前 | 型 | 説明 |
|---|---|---|
| id | string | コード UUID |
| projectId | number | backend PostgreSQL project ID |
| name | string | コード名 |
| s3Key | string | プレビュー画像のS3キー |
| sourceCode | string | ソースコード |
| cssCode | string | null | CSSコード |
| status | number | 処理ステータス(0 処理中、1 完了、2 失敗) |
| createdAt | number | 作成日時(エポックミリ秒) |
| updatedAt | number | 更新日時(エポックミリ秒) |
| deletedAt | number | 削除日時(エポックミリ秒) |
| deletedBy | string | 削除者ID |
認証
認証はAmazon Cognitoから発行されるJSON Web Tokens (JWT)を使用して行われます。
例外処理
例外処理のステータスコードは以下の通りです。
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| 認証情報不足 | 401 | Unauthorized |
| 実行権限不足 | 403 | Forbidden |
| コード、プロジェクト、または組織が見つかりません | 404 | Not Found |
codebase index が processing (CODEBASE_INDEX_PROCESSING) |
409 | Conflict |
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- scope 付き code ID を抽出し、project write access を確認する。
- PostgreSQL transaction を開始し、project の dedicated
codebase_indexrow を lock する。status がprocessingの場合は409 CODEBASE_INDEX_PROCESSINGで write を拒否する。 - active code が project に属することを検証し、
deleted_at、deleted_by、updated_at、updated_byを設定して soft-delete する。 - 同じ transaction で
codebase_index.status = 'pending'にし、token、indexed_at、errorを clear して commit する。 - 削除した code 情報を返す。delete は 4 番目の Code Import task を publish しない。
詳細フローチャート
flowchart TD
Start([DELETE Request]) --> Route[Route Handler]
Route --> Auth[認証・パラメータ取得]
Auth --> Service[Service Layer]
Service --> AccessCheck[権限チェック]
AccessCheck --> HasAccess{Write権限?}
HasAccess -->|なし| Err404[404 Not Found]
HasAccess -->|あり| Transaction
Transaction[Transaction 開始] --> LockIndex[dedicated codebase_index row を lock]
LockIndex --> IsProcessing{status=processing?}
IsProcessing -->|Yes| Err409[409 CODEBASE_INDEX_PROCESSING]
IsProcessing -->|No| CheckExist[既存確認<br/>WHERE deletedAt IS NULL]
CheckExist --> Exists{存在?}
Exists -->|なし| Rollback[Rollback]
Exists -->|あり| SoftDelete
Rollback --> Err404
SoftDelete[code row を soft-delete<br/>audit field を更新] --> Invalidate[codebase_index を pending<br/>token/indexed_at/error を clear]
Invalidate --> Refetch[更新後レコード取得]
Refetch --> Commit[Commit]
Commit --> Success[200 OK]
特記事項
この endpoint は PostgreSQL で soft delete を行い、revision/history record は 作成しない。invalidate された project は、後続の明示的 codebase-index build が 完了するまで Design Import / Des2Code を実行できない。
build は active PostgreSQL row から authoritative manifest を作る。manifest は
削除済み code と関連 visual asset を除外し、replacement current bundle を activate
する前に、該当する project-scoped code / code_visual_evidence projection を削除する。
standalone の code-delete SQS task は存在しない。