#!/bin/bash

set -e

DIRECTUS_URL="${DIRECTUS_URL:-http://localhost:8055}"
ADMIN_EMAIL="${ADMIN_EMAIL:-admin@deusens.com}"
ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin1234!}"

echo "Applying events page content schema to $DIRECTUS_URL"

TOKEN=$(curl -sf -X POST "$DIRECTUS_URL/auth/login" \
  -H "Content-Type: application/json" \
  -d "{\"email\":\"$ADMIN_EMAIL\",\"password\":\"$ADMIN_PASSWORD\"}" \
  | grep -o '"access_token":"[^"]*"' | head -1 | cut -d'"' -f4)

if [ -z "$TOKEN" ]; then
  echo "Authentication failed"
  exit 1
fi

create_collection() {
  local PAYLOAD="$1"
  curl -s -o /dev/null -w "%{http_code}" \
    -X POST "$DIRECTUS_URL/collections" \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d "$PAYLOAD" | grep -Eq "200|201|400|409"
}

add_field() {
  local COLLECTION="$1"
  local PAYLOAD="$2"
  curl -s -o /dev/null -w "%{http_code}" \
    -X POST "$DIRECTUS_URL/fields/$COLLECTION" \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d "$PAYLOAD" | grep -Eq "200|201|400|409"
}

create_collection '{
  "collection": "events_page_content",
  "meta": {
    "singleton": true,
    "icon": "event",
    "color": "#7A4738",
    "note": "Contenido singleton pagina Events"
  },
  "schema": {},
  "fields": [
    {
      "field": "id",
      "type": "integer",
      "schema": { "is_primary_key": true, "has_auto_increment": true },
      "meta": { "hidden": true, "readonly": true }
    }
  ]
}'

add_field "events_page_content" '{"field":"enabled","type":"boolean","schema":{"default_value":true},"meta":{"interface":"boolean"}}'
add_field "events_page_content" '{"field":"show_event_pois_in_poi_list","type":"boolean","schema":{"default_value":false},"meta":{"interface":"boolean"}}'
add_field "events_page_content" '{"field":"min_events_for_dedicated_page","type":"integer","schema":{"default_value":2},"meta":{"interface":"input"}}'
add_field "events_page_content" '{"field":"title","type":"json","meta":{"interface":"input-code"}}'
add_field "events_page_content" '{"field":"intro","type":"json","meta":{"interface":"input-code"}}'
add_field "events_page_content" '{"field":"featured_event_slugs","type":"json","meta":{"interface":"input-code"}}'
add_field "events_page_content" '{"field":"focus_title","type":"json","meta":{"interface":"input-code"}}'
add_field "events_page_content" '{"field":"focus_intro","type":"json","meta":{"interface":"input-code"}}'
add_field "events_page_content" '{"field":"focus_event_slugs","type":"json","meta":{"interface":"input-code"}}'
add_field "events_page_content" '{"field":"focus_events_per_page","type":"integer","schema":{"default_value":6},"meta":{"interface":"input"}}'

echo "events_page_content schema ensured"
