package workload

import (
	"fmt"
	"net/url"
	"strconv"
	"strings"
	"time"
)

type BigTxnOption struct {
	TxnNumber  int // statement number in one txn
	StmtNumber int // value number in one statement
	DBName     string
	Thread     int
	Duration   time.Duration
}

func (o *BigTxnOption) Parse(dbURL *url.URL) *CMD {
	var params []string
	if o.TxnNumber != 0 {
		params = append(params, "-tn="+strconv.Itoa(o.TxnNumber))
	}
	if o.StmtNumber != 0 {
		params = append(params, "-sn="+strconv.Itoa(o.StmtNumber))
	}
	if o.Thread != 0 {
		params = append(params, "-thread="+strconv.Itoa(o.Thread))
	}
	params = append(params, fmt.Sprintf("-db='root:@tcp(%s)/%s'", dbURL.Host, o.DBName))
	params = append(params, "-t="+o.Duration.String())
	cmd := "./bigtx " + strings.Join(params, " ")
	timeout := o.Duration + time.Minute*10
	return NewCMD(cmd, timeout)
}

func (o *BigTxnOption) SetCommand(command CommandType) {
	return
}

func (o *BigTxnOption) GetTableNames() []string {
	return nil
}
