package migrations

import (
	. "github.com/grafana/grafana/pkg/services/sqlstore/migrator"
)

func addQueryHistoryMigrations(mg *Migrator) {
	queryHistoryV1 := Table{
		Name: "query_history",
		Columns: []*Column{
			{Name: "id", Type: DB_BigInt, Nullable: false, IsPrimaryKey: true, IsAutoIncrement: true},
			{Name: "uid", Type: DB_NVarchar, Length: 40, Nullable: false},
			{Name: "org_id", Type: DB_BigInt, Nullable: false},
			{Name: "datasource_uid", Type: DB_NVarchar, Length: 40, Nullable: false},
			{Name: "created_by", Type: DB_Int, Nullable: false},
			{Name: "created_at", Type: DB_Int, Nullable: false},
			{Name: "comment", Type: DB_Text, Nullable: false},
			{Name: "queries", Type: DB_Text, Nullable: false},
		},
		Indices: []*Index{
			{Cols: []string{"org_id", "created_by", "datasource_uid"}},
		},
	}

	mg.AddMigration("create query_history table v1", NewAddTableMigration(queryHistoryV1))

	mg.AddMigration("add index query_history.org_id-created_by-datasource_uid", NewAddIndexMigration(queryHistoryV1, queryHistoryV1.Indices[0]))

	mg.AddMigration("alter table query_history alter column created_by type to bigint", NewRawSQLMigration("").
		Mysql("ALTER TABLE query_history MODIFY created_by BIGINT;").
		Postgres("ALTER TABLE query_history ALTER COLUMN created_by TYPE BIGINT;"))

	queryHistoryDetailsV1 := Table{
		Name: "query_history_details",
		Columns: []*Column{
			{Name: "id", Type: DB_BigInt, Nullable: false, IsPrimaryKey: true, IsAutoIncrement: true},
			{Name: "query_history_item_uid", Type: DB_NVarchar, Length: 40, Nullable: false},
			{Name: "datasource_uid", Type: DB_NVarchar, Length: 40, Nullable: false},
		},
	}
	mg.AddMigration("create query_history_details table v1", NewAddTableMigration(queryHistoryDetailsV1))
}
