package eventstore

import (
	"context"
	"net/http"

	"github.com/caos/logging"
	"golang.org/x/text/language"

	"github.com/caos/zitadel/internal/i18n"
	"github.com/caos/zitadel/internal/query"

	"github.com/caos/zitadel/internal/iam/model"
)

type IAMRepository struct {
	IAMID    string
	LoginDir http.FileSystem

	IAMV2QuerySide *query.Queries
	supportedLangs []language.Tag
}

func (repo *IAMRepository) Languages(ctx context.Context) ([]language.Tag, error) {
	if len(repo.supportedLangs) == 0 {
		langs, err := i18n.SupportedLanguages(repo.LoginDir)
		if err != nil {
			logging.Log("ADMIN-tiMWs").WithError(err).Debug("unable to parse language")
			return nil, err
		}
		repo.supportedLangs = langs
	}
	return repo.supportedLangs, nil
}

func (repo *IAMRepository) GetIAM(ctx context.Context) (*model.IAM, error) {
	return repo.IAMV2QuerySide.IAMByID(ctx, repo.IAMID)
}