func()

in backend/plugins/dora/models/migrationscripts/20240223_add_dora_2023_benchmark.go [43:188]


func (u *adddoraBenchmark2023) Up(baseRes context.BasicRes) errors.Error {
	db := baseRes.GetDal()
	err := db.DropTables(&doraBenchmark{})
	if err != nil {
		return err
	}
	err = migrationhelper.AutoMigrateTables(
		baseRes,
		&doraBenchmarkBasic{},
	)
	if err != nil {
		return err
	}

	// 2021 benchmarks
	doraBenchmark2021DF := &doraBenchmarkBasic{
		Model: archived.Model{
			ID: 1,
		},
		Metric:     "Deployment frequency",
		Low:        "Fewer than once per six months(low)",
		Medium:     "Between once per month and once every 6 months(medium)",
		High:       "Between once per day and once per month(high)",
		Elite:      "On-demand(elite)",
		DoraReport: "2021",
	}
	err = db.Create(doraBenchmark2021DF)
	if err != nil {
		return errors.Convert(err)
	}

	doraBenchmark2021LTC := &doraBenchmarkBasic{
		Model: archived.Model{
			ID: 2,
		},
		Metric:     "Lead time for changes",
		Low:        "More than six months(low)",
		Medium:     "Between one week and six months(medium)",
		High:       "Less than one week(high)",
		Elite:      "Less than one hour(elite)",
		DoraReport: "2021",
	}
	err = db.Create(doraBenchmark2021LTC)
	if err != nil {
		return errors.Convert(err)
	}

	doraBenchmark2021CFR := &doraBenchmarkBasic{
		Model: archived.Model{
			ID: 3,
		},
		Metric:     "Change failure rate",
		Low:        "> 30%(low)",
		Medium:     "21%-30%(medium)",
		High:       "16%-20%(high)",
		Elite:      "0-15%(elite)",
		DoraReport: "2021",
	}
	err = db.Create(doraBenchmark2021CFR)
	if err != nil {
		return errors.Convert(err)
	}

	doraBenchmark2021TTS := &doraBenchmarkBasic{
		Model: archived.Model{
			ID: 4,
		},
		Metric:     "Time to restore service",
		Low:        "More than one week(low)",
		Medium:     "Between one day and one week(medium)",
		High:       "Less than one day(high)",
		Elite:      "Less than one hour(elite)",
		DoraReport: "2021",
	}
	err = db.Create(doraBenchmark2021TTS)
	if err != nil {
		return errors.Convert(err)
	}

	// 2023 benchmarks
	doraBenchmark2023DF := &doraBenchmarkBasic{
		Model: archived.Model{
			ID: 5,
		},
		Metric:     "Deployment frequency",
		Low:        "Fewer than once per month(low)",
		Medium:     "Between once per week and once per month(medium)",
		High:       "Between once per day and once per week(high)",
		Elite:      "On-demand(elite)",
		DoraReport: "2023",
	}
	err = db.Create(doraBenchmark2023DF)
	if err != nil {
		return errors.Convert(err)
	}

	doraBenchmark2023LTC := &doraBenchmarkBasic{
		Model: archived.Model{
			ID: 6,
		},
		Metric:     "Lead time for changes",
		Low:        "More than one month(low)",
		Medium:     "Between one week and one month(medium)",
		High:       "Between one day and one week(high)",
		Elite:      "Less than one day(elite)",
		DoraReport: "2023",
	}
	err = db.Create(doraBenchmark2023LTC)
	if err != nil {
		return errors.Convert(err)
	}

	doraBenchmark2023CFR := &doraBenchmarkBasic{
		Model: archived.Model{
			ID: 7,
		},
		Metric:     "Change failure rate",
		Low:        "> 15%(low)",
		Medium:     "10%-15%(medium)",
		High:       "5%-10%(high)",
		Elite:      "0-5%(elite)",
		DoraReport: "2023",
	}
	err = db.Create(doraBenchmark2023CFR)
	if err != nil {
		return errors.Convert(err)
	}

	doraBenchmark2023FDRT := &doraBenchmarkBasic{
		Model: archived.Model{
			ID: 8,
		},
		Metric:     "Failed deployment recovery time",
		Low:        "More than one week(low)",
		Medium:     "Between one day and one week(medium)",
		High:       "Less than one day(high)",
		Elite:      "Less than one hour(elite)",
		DoraReport: "2023",
	}
	err = db.Create(doraBenchmark2023FDRT)
	if err != nil {
		return errors.Convert(err)
	}

	return nil
}