package service

import (
	"context"
	"dataservices/commons/apikeygenerator"
	"dataservices/internal/entity"
	"dataservices/internal/repository"

	"github.com/tidbcloud/tiinf/errs"
)

func GetDataAPIAccess(ctx context.Context, apiKey string) (*entity.DataAPIAccess, error) {
	decryptApiKey, err := apikeygenerator.Decrypt(apiKey)
	if err != nil {
		return nil, errs.NewNotFound("decrypt api key failed", err)
	}
	apiKeyInfo, apiKeyErr := repository.GetApiKeyByKey(decryptApiKey)
	if apiKeyErr != nil {
		return nil, errs.NewNotFound("GetApiKeyByKey failed", err)

	}
	appInfo, appErr := repository.GetDataApp(apiKeyInfo.DataAppId)
	if appErr != nil {
		return nil, errs.NewNotFound("GetDataApp failed", err)
	}
	res := entity.DataAPIAccess{ApiKey: apiKeyInfo, App: appInfo}
	return &res, nil
}
