package domain

import (
	"encoding/json"
	"fmt"
)

const CollectionNameSettings = "settings"

type Settings struct {
	Meta
	Name    string `json:"name" db:"name"`
	Content string `json:"content" db:"content"`
}

// Deprecated: v0.4.x 将废弃
type NotifyTemplatesSettingsContent struct {
	NotifyTemplates []struct {
		Subject string `json:"subject"`
		Message string `json:"message"`
	} `json:"notifyTemplates"`
}

// Deprecated: v0.4.x 将废弃
type NotifyChannelsSettingsContent map[string]map[string]any

// Deprecated: v0.4.x 将废弃
func (s *Settings) GetNotifyChannelConfig(channel string) (map[string]any, error) {
	conf := &NotifyChannelsSettingsContent{}
	if err := json.Unmarshal([]byte(s.Content), conf); err != nil {
		return nil, err
	}

	v, ok := (*conf)[channel]
	if !ok {
		return nil, fmt.Errorf("channel \"%s\" not found", channel)
	}

	return v, nil
}

type PersistenceSettingsContent struct {
	WorkflowRunsMaxDaysRetention        int `json:"workflowRunsMaxDaysRetention"`
	ExpiredCertificatesMaxDaysRetention int `json:"expiredCertificatesMaxDaysRetention"`
}