services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DEBUG: 1
    volumes:
      - wp_data:/var/www/html
      - ./submit-ninja-feedback.php:/var/www/html/wp-content/plugins/submit-ninja-feedback/submit-ninja-feedback.php
      - ./readme.txt:/var/www/html/wp-content/plugins/submit-ninja-feedback/readme.txt
      - ./assets:/var/www/html/wp-content/plugins/submit-ninja-feedback/assets
    depends_on:
      db:
        condition: service_healthy

  db:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
      MYSQL_ROOT_PASSWORD: rootpassword
    volumes:
      - db_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-prootpassword"]
      interval: 5s
      timeout: 5s
      retries: 10

  wp-cli:
    image: wordpress:cli
    user: "33:33"
    depends_on:
      wordpress:
        condition: service_started
      db:
        condition: service_healthy
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp_data:/var/www/html
    command: >
      sh -c "
      echo 'Waiting for WordPress to be ready...';
      sleep 15;
      wp core install --url='http://localhost:8080' --title='Submit Ninja Test Site' --admin_user=admin --admin_password=admin --admin_email=admin@example.com --skip-email;
      wp plugin activate submit-ninja-feedback;
      wp post create --post_type=post --post_title='Test Post One' --post_status=publish --post_content='This is test post 1 for widget targeting.';
      wp post create --post_type=post --post_title='Test Post Two' --post_status=publish --post_content='This is test post 2 for widget targeting.';
      wp post create --post_type=page --post_title='Test Page One' --post_status=publish --post_content='This is test page 1 for widget targeting.';
      wp post create --post_type=page --post_title='Test Page Two' --post_status=publish --post_content='This is test page 2 for widget targeting.';
      wp term create category 'Test Category';
      wp term create post_tag 'test-tag';
      wp option update submit_ninja_enabled 1;
      wp option update submit_ninja_form_code 'AbCdEf';
      echo '===== WordPress setup complete! =====';
      echo 'Admin: http://localhost:8080/wp-admin (admin/admin)';
      echo 'Front: http://localhost:8080';
      "

volumes:
  wp_data:
  db_data:
