package main

import (
	"fmt"
	"github.com/jmoiron/sqlx"
	_ "modernc.org/sqlite"
)

type MyNullTime struct {
	Time  interface{}
	Type  string
}

func (n *MyNullTime) Scan(value interface{}) error {
	n.Time = value
	n.Type = fmt.Sprintf("%T", value)
	return nil
}

func main() {
	db, err := sqlx.Connect("sqlite", "/home/newkirk/Documents/projects/web_projects/gophergate/data/backups/llm_proxy.db.20260303T205057Z")
	if err != nil {
		fmt.Println("connect err:", err)
		return
	}
	defer db.Close()

	// Test 1: Direct column scan type
	var d MyNullTime
	db.Get(&d, "SELECT last_used_at FROM client_tokens WHERE client_id = ? LIMIT 1", "sk-opencode")
	fmt.Printf("direct SELECT: GoType=%s value=%v\n", d.Type, d.Time)

	// Test 2: MAX aggregate scan type
	var m MyNullTime
	db.Get(&m, "SELECT MAX(last_used_at) FROM client_tokens WHERE client_id = ?", "sk-opencode")
	fmt.Printf("MAX SELECT:    GoType=%s value=%v\n", m.Type, m.Time)

	// Test 3: peek at the raw driver types
	row := db.QueryRow("SELECT last_used_at, MAX(last_used_at) FROM client_tokens WHERE client_id = ? LIMIT 1", "sk-opencode")
	var a, b interface{}
	row.Scan(&a, &b)
	fmt.Printf("\nRaw Scan:\n")
	fmt.Printf("  last_used_at:     type=%T val=%v\n", a, a)
	fmt.Printf("  MAX(last_used_at): type=%T val=%v\n", b, b)
}
