package coredb

import (
	"context"
	"fmt"
)

// Get scans one row into dest through adapters that support struct/scalar
// scanning.
func Get(ctx context.Context, queryer any, dest any, query string, args ...any) error {
	getter, ok := queryer.(Getter)
	if !ok {
		return fmt.Errorf("coredb getter is not supported by %T", queryer)
	}
	return getter.Get(ctx, dest, query, args...)
}

// Select scans rows into dest through adapters that support struct/slice
// scanning.
func Select(ctx context.Context, queryer any, dest any, query string, args ...any) error {
	selector, ok := queryer.(Selector)
	if !ok {
		return fmt.Errorf("coredb selector is not supported by %T", queryer)
	}
	return selector.Select(ctx, dest, query, args...)
}
