package workload

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

// /workload --tps 60000 --row-count 50000000 --database-host 127.0.0.1 --database-port 4000 --table-count 50 --thread 60 --database-user root --database-db-name workload

type CdcBoundaryOption struct {
	Command    CommandType
	TableCount int
	Tps        int
	RowCount   int64
	Thread     int
	DBName     string
	Duration   time.Duration
}

func (o *CdcBoundaryOption) Parse(dbURL *url.URL) *CMD {
	var (
		cmd    = fmt.Sprintf("/workload --tps=%d --row-count=%d  --table-count=%d --thread=%d ", o.Tps, o.RowCount, o.TableCount, o.Thread)
		params []string
	)

	params = append(params, "--database-host="+dbURL.Hostname())
	params = append(params, "--database-port="+dbURL.Port())
	params = append(params, "--database-user=root")

	cmd = cmd + strings.Join(params, " ")
	timeout := o.Duration + time.Minute*10
	return NewCMD(cmd, timeout)
}

func (o *CdcBoundaryOption) SetCommand(command CommandType) {
	o.Command = command
}

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