// Command seed inserts test tag codes TEST000001..TEST000025.
// Idempotent: already-existing codes are skipped.
package main

import (
	"context"
	"errors"
	"fmt"
	"os"

	"github.com/jackc/pgx/v5/pgconn"
	"github.com/jackc/pgx/v5/pgxpool"

	"wherewoof/frontend/internal/db"
)

const count = 25

func main() {
	dsn := os.Getenv("DATABASE_URL")
	if dsn == "" {
		fmt.Fprintln(os.Stderr, "error: DATABASE_URL not set")
		os.Exit(1)
	}

	ctx := context.Background()
	pool, err := pgxpool.New(ctx, dsn)
	if err != nil {
		fmt.Fprintln(os.Stderr, "connect:", err)
		os.Exit(1)
	}
	defer pool.Close()

	q := db.New(pool)
	for i := 1; i <= count; i++ {
		code := fmt.Sprintf("TEST%06d", i)
		if _, err := q.InsertTag(ctx, code); err != nil {
			var pgErr *pgconn.PgError
			if errors.As(err, &pgErr) && pgErr.Code == "23505" {
				fmt.Println("skip (exists)", code)
				continue
			}
			fmt.Fprintln(os.Stderr, "insert", code, ":", err)
			os.Exit(1)
		}
		fmt.Println("seeded", code)
	}
	fmt.Printf("done: %d test tags available\n", count)
}
