# Scénario: Détail d'un projet
name: projects_show
version: "1.0"
description: Retourne un projet avec ses tags et sous-projets

input:
  required:
    - id
  validation:
    id:
      type: int

steps:
  - id: get_project
    service: db
    action: query_one
    params:
      query: "SELECT * FROM projects WHERE id = ? AND user_id = ?"
      args: ["{{input.id}}", "{{auth.user_id}}"]
    on_error: abort
    error_message: "Projet non trouvé"
    error_status: 404

  - id: get_tags
    service: db
    action: query
    params:
      query: |
        SELECT t.id, t.name, t.color
        FROM tags t
        JOIN project_tags pt ON t.id = pt.tag_id
        WHERE pt.project_id = ?
      args: ["{{input.id}}"]

  - id: get_children
    service: db
    action: query
    params:
      query: |
        SELECT * FROM projects
        WHERE parent_id = ? AND user_id = ?
        ORDER BY position ASC, name ASC
      args: ["{{input.id}}", "{{auth.user_id}}"]

output:
  status: 200
  body:
    success: true
    data:
      id: "{{steps.get_project.result.id}}"
      name: "{{steps.get_project.result.name}}"
      description: "{{steps.get_project.result.description}}"
      parent_id: "{{steps.get_project.result.parent_id}}"
      position: "{{steps.get_project.result.position}}"
      created_at: "{{steps.get_project.result.created_at}}"
      tags: "{{steps.get_tags.result}}"
      children: "{{steps.get_children.result}}"
