# Copyright (C) 2024 Manuel Bustillo

# frozen_string_literal: true

module Swagger
  module Schema
    USER = {
      id: { type: :string, format: :uuid },
      email: { type: :string, format: :email },
      created_at: SwaggerResponseHelper::TIMESTAMP,
      updated_at: SwaggerResponseHelper::TIMESTAMP
    }.freeze

    ID = { # rubocop:disable Style/MutableConstant -- rswag modifies in: :path parameters
      name: 'id',
      in: :path,
      type: :string,
      format: :uuid
    }

    GROUP = {
      name: { type: :string },
      icon: { type: :string, example: 'pi pi-crown', description: 'The CSS classes used by the icon' },
      parent_id: { type: :string, format: :uuid },
      color: { type: :string, pattern: '^#(?:[0-9a-fA-F]{3}){1,2}$' }
    }.freeze

    EXPENSE = {
      name: { type: :string },
      amount: { type: :number, minimum: 0 },
      pricing_type: { type: :string, enum: Expense.pricing_types.keys }
    }.freeze

    SLUG = { # rubocop:disable Style/MutableConstant -- rswag modifies in: :path parameters
      name: 'slug',
      in: :path,
      type: :string,
      pattern: Wedding::SLUG_REGEX,
      example: :default,
      description: 'Wedding slug'
    }

    CAPTCHA = {
      captcha: {
        type: :object,
        required: %i[id answer],
        properties: {
          id: { type: :string, format: :uuid },
          answer: { type: :string }
        }
      }
    }.freeze
  end
end