コンテンツにスキップ

コード削除

メソッド

RESTメソッドを採用しています。

HTTPメソッド

DELETE: コード削除(論理削除)

命名規則

クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時のURIとJSON内のノードにはsnake_caseを使用します。

リクエストとレスポンス

ヘッダー

メタ情報はレスポンスボディではなく、HTTPヘッダーに設定されます。

リクエストヘッダー

  • Authorization
  • Content-Type
  • Accept
  • Accept-language

レスポンスヘッダー

  • Content-Type

コード削除

URI

DELETE /v1/organizations/{organization_id}/projects/{project_id}/code/{code_id}

パスパラメータ

名前 型 必須 説明
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

処理フロー

  1. scope 付き code ID を抽出し、project write access を確認する。
  2. PostgreSQL transaction を開始し、project の dedicated codebase_index row を lock する。status が processing の場合は 409 CODEBASE_INDEX_PROCESSING で write を拒否する。
  3. active code が project に属することを検証し、deleted_at、deleted_by、updated_at、updated_by を設定して soft-delete する。
  4. 同じ transaction で codebase_index.status = 'pending' にし、token、indexed_at、error を clear して commit する。
  5. 削除した 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 は存在しない。