package serverruntime

import (
	"database/sql"
	"fmt"

	"github.com/nexuscrm/shared/pkg/constants"
)

// VerifySessionControlSchemaReadiness checks the durable session verifier during setup.
func VerifySessionControlSchemaReadiness(rawDB *sql.DB) error {
	if rawDB == nil {
		return fmt.Errorf("session-control schema readiness: database is not configured")
	}
	var count int
	if err := rawDB.QueryRow(
		"SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND LOWER(TABLE_NAME) = LOWER(?) AND LOWER(COLUMN_NAME) = LOWER(?)",
		constants.TableSession,
		constants.FieldSysSession_ControlProofHash,
	).Scan(&count); err != nil {
		return fmt.Errorf("session-control schema readiness: verify %s.%s: %w", constants.TableSession, constants.FieldSysSession_ControlProofHash, err)
	}
	if count != 1 {
		return fmt.Errorf("session-control schema readiness: missing %s.%s; run 'go run ./cmd/setup apply' before serving", constants.TableSession, constants.FieldSysSession_ControlProofHash)
	}
	return nil
}
