package schema

import (
	"bytes"
	"fmt"
	"math/rand"
)

const createTable = `
		CREATE TABLE if not exists sbtest%d (
  id bigint NOT NULL,
   k bigint NOT NULL DEFAULT '0',
   c char(30) NOT NULL DEFAULT '',
   pad char(20) NOT NULL DEFAULT '',
    PRIMARY KEY (id),
    KEY k_1 (k)
)
     ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
`

// GetCreateTableStatement returns the create-table sql of the table n
func GetCreateTableStatement(n int) string {
	return fmt.Sprintf(createTable, n)
}

func BuildInsertSql(tableN int, rowCount int) string {
	n := rand.Int63()
	var buf bytes.Buffer
	buf.WriteString(fmt.Sprintf("insert into sbtest%d (id, k, c, pad) values(%d, %d, 'abcdefghijklmnopsrstuvwxyzabcd', 'abcdefghijklmnopsrst')", tableN, n, n))

	for r := 1; r < rowCount; r++ {
		n = rand.Int63()
		buf.WriteString(fmt.Sprintf(",(%d, %d, 'abcdefghijklmnopsrstuvwxyzabcd', 'abcdefghijklmnopsrst')", n, n))
	}
	return buf.String()
}

func GetAddIndexStatement(n int) string {
	return fmt.Sprintf("alter table sbtest%d add index k2(k);", n)
}
