// foreach_control — 輸出第一個元素，Cypher Executor 負責迭代
//
//go:build tinygo

package main

import (
	"encoding/json"
	"io"
	"os"
)

type Input struct {
	Items   []json.RawMessage `json:"items"`
	ItemKey string            `json:"item_key"`
}

func main() {
	raw, err := io.ReadAll(os.Stdin)
	if err != nil {
		writeError("failed to read stdin: " + err.Error())
		return
	}
	var input Input
	if err := json.Unmarshal(raw, &input); err != nil {
		writeError("invalid input JSON: " + err.Error())
		return
	}
	if len(input.Items) == 0 {
		writeError("items 不能為空")
		return
	}

	itemKey := input.ItemKey
	if itemKey == "" {
		itemKey = "item"
	}

	out, _ := json.Marshal(map[string]interface{}{
		"success": true,
		"data": map[string]interface{}{
			"items":         input.Items,
			"count":         len(input.Items),
			"current_index": 0,
			"current_item":  input.Items[0],
			"item_key":      itemKey,
		},
	})
	os.Stdout.Write(out)
}

func writeError(msg string) {
	out, _ := json.Marshal(map[string]interface{}{"success": false, "error": msg})
	os.Stdout.Write(out)
}
