package configmigrate

import (
	"context"

	"github.com/AdguardTeam/golibs/errors"
)

// migrateTo15 performs the following changes:
//
//	# BEFORE:
//	'schema_version': 14
//	'dns':
//	  # …
//	  'querylog_enabled': true
//	  'querylog_file_enabled': true
//	  'querylog_interval': '2160h'
//	  'querylog_size_memory': 1000
//	'querylog':
//	  # …
//	# …
//
//	# AFTER:
//	'schema_version': 15
//	'dns':
//	  # …
//	'querylog':
//	  'enabled': true
//	  'file_enabled': true
//	  'interval': '2160h'
//	  'size_memory': 1000
//	  'ignored': []
//	  # …
//	# …
func (m *Migrator) migrateTo15(_ context.Context, diskConf yobj) (err error) {
	diskConf["schema_version"] = 15

	dns, ok, err := fieldVal[yobj](diskConf, "dns")
	if !ok {
		return err
	}

	qlog := map[string]any{
		"ignored":      yarr{},
		"enabled":      true,
		"file_enabled": true,
		"interval":     "2160h",
		"size_memory":  1000,
	}
	diskConf["querylog"] = qlog

	return errors.Join(
		moveVal[bool](dns, qlog, "querylog_enabled", "enabled"),
		moveVal[bool](dns, qlog, "querylog_file_enabled", "file_enabled"),
		moveVal[any](dns, qlog, "querylog_interval", "interval"),
		moveVal[int](dns, qlog, "querylog_size_memory", "size_memory"),
	)
}
