package mastersettings

import "context"

type Service interface {
	Create(ctx context.Context, row *MasterSettings) error
	Update(ctx context.Context, row *MasterSettings) error
	Delete(ctx context.Context, id []byte, deletedBy []byte) error
	GetByID(ctx context.Context, id []byte) (*MasterSettings, error)
	List(ctx context.Context, filter, sort string, limit, offset int) ([]MasterSettings, int64, error)
	UpsertMicrosoftEntraConfig(ctx context.Context, input MicrosoftEntraConfigInput, actor []byte) (*MicrosoftEntraConfigView, error)
	GetMicrosoftEntraConfig(ctx context.Context) (*MicrosoftEntraConfigView, error)
}

type MicrosoftEntraConfigInput struct {
	TenantID     string
	ClientID     string
	ClientSecret string
	RedirectURL  string
	Authority    string
	Scopes       string
}

type MicrosoftEntraConfigView struct {
	TenantID           string
	ClientID           string
	ClientSecretMasked string
	RedirectURL        string
	Authority          string
	Scopes             string
}
