package main

import (
	"database/sql"
	"fmt"
	"net/url"

	"github.com/juju/errors"
	"github.com/pingcap/schrodinger-test/binlog/diff"
)

func checkData(tidb string, mysql string) error {
	src, err := createDB("root", "", tidb, 4000, "test")
	if err != nil {
		return errors.Trace(err)
	}
	defer src.Close()

	dst, err := createDB("root", "", mysql, 3306, "test")
	if err != nil {
		return errors.Trace(err)
	}
	defer dst.Close()

	d := diff.New(nil, src, dst)
	ok, err := d.Equal()
	if err != nil {
		return errors.Trace(err)
	}

	if !ok {
		return errors.New("not equals")
	}

	return nil
}

func createDB(user string, pass string, host string, port int, name string) (*sql.DB, error) {
	// just set to the same timezone so the timestamp field of mysql will return the same value
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&time_zone=%s", user, pass, host, port, name, url.QueryEscape("'+08:00'"))
	db, err := sql.Open("mysql", dsn)
	if err != nil {
		return nil, errors.Trace(err)
	}

	return db, nil
}
