package loader

import (
	"context"
	"fmt"

	"github.com/creasty/defaults"
)

type ConfigurationSourceDefault[T any] struct {
}

func NewConfigurationSourceDefault[T any]() *ConfigurationSourceDefault[T] {
	return &ConfigurationSourceDefault[T]{}
}

func (s *ConfigurationSourceDefault[T]) Load(_ context.Context, _ *T) (*T, error) {
	conf := new(T)
	if err := defaults.Set(conf); err != nil {
		return nil, fmt.Errorf("failed to set default config: %w", err)
	}

	return conf, nil
}
