package mock

import (
	"time"

	"github.com/tidbcloud/pov-service/internal/common/constant"
	"github.com/tidbcloud/pov-service/internal/model"
)

var mockedScripts = []model.Script{
	{
		// script for sysbench
		ID:         1,
		TemplateID: 1,
		ScriptSpec: model.ScriptSpec{
			Name:          "Simulate Peak Traffic",
			Description:   "This simulation models a sudden surge in user connections and demonstrates how your database's automatic scaling adjusts its Request Capacity Unit(RCU).",
			TotalDuration: 12 * time.Minute,
			Phases: []model.ScriptPhase{
				&model.ScriptProceedPhase{
					Name:        "Init Simulation Status",
					Description: "Connection(50), RU(130000 - 130000)",
				},
				&model.ScriptMutatePhase{
					Name:        "Traffic Rising",
					Description: "Connection(50->200)",
					Mutations: []model.ScriptMutation{
						{
							Param:   constant.MaxConnectionNumber,
							ToValue: "200",
						},
					},
					Message:       "Simulate peak traffic by increasing the number of connections.",
					StartDuration: 0,
				},
				&model.ScriptProceedPhase{
					Name:        "Hit RU Capacity Limit",
					Description: "Current Max RU(130000)",
				},
				&model.ScriptMutatePhase{
					Name: "Scale Up the capacity",
					Mutations: []model.ScriptMutation{
						{
							Param:   constant.MinRU,
							ToValue: "130000",
						},
						{
							Param:   constant.MaxRU,
							ToValue: "400000",
						},
					},
					Description:   "Max RU Capacity(150000->400000)",
					Message:       "Increate Max RCU to deal with peak traffic.",
					StartDuration: 7 * time.Minute,
				},
				&model.ScriptProceedPhase{
					Name:        "Peak Traffic",
					Description: "Max Connection(200)",
				},
				&model.ScriptMutatePhase{
					Name: "Traffic Dropping",
					Mutations: []model.ScriptMutation{
						{
							Param:   constant.MaxConnectionNumber,
							ToValue: "50",
						},
					},
					Description:   "Connection(200->50)",
					StartDuration: 10 * time.Minute,
				},
			},
		},
	},
	{
		// script for gaming saas no index dataset
		ID:         2,
		TemplateID: 2,
		ScriptSpec: model.ScriptSpec{
			Name:          "Simulate Add Index",
			Description:   "",
			TotalDuration: 7 * time.Minute,
			Phases: []model.ScriptPhase{
				&model.ScriptMutatePhase{
					Name:        "Add Index",
					Description: "Add index for dh_vip_info",
					Mutations: []model.ScriptMutation{
						{
							Param:   constant.SQLStatement,
							ToValue: "ALTER TABLE `game_1`.`dh_vip_info` ADD INDEX udx_useridx(useridx);",
						},
					},
					Message:       "Simulate peak traffic by increasing the number of connections.",
					StartDuration: 0,
				},
				&model.ScriptProceedPhase{
					Name:        "RU Drop",
					Description: "",
				},
				&model.ScriptMutatePhase{
					Name: "Drop Index",
					Mutations: []model.ScriptMutation{
						{
							Param:   constant.SQLStatement,
							ToValue: "ALTER TABLE `game_1`.`dh_vip_info` DROP INDEX IF EXISTS udx_useridx;",
						},
					},
					Description:   "Max RU Capacity(150000->400000)",
					Message:       "Increate Max RCU to deal with peak traffic.",
					StartDuration: 5 * time.Minute,
				},
				&model.ScriptProceedPhase{
					Name:        "RU Increase",
					Description: "",
				},
			},
		},
	},
}
