package gtid import ( "strings" ) func Add(gtidDesc0, gtidDesc1 string) (string, error) { gtid, err := Parse(gtidDesc0 + "," + gtidDesc1) if nil != err { return "", err } return gtid.String(), nil } func Sub(gtidDesc0, gtidDesc1 string) (string, error) { if strings.TrimSpace(gtidDesc0) == "" { return "", nil } gtid, err := parse(gtidDesc0) if err != nil { return "", err } if strings.TrimSpace(gtidDesc1) == "" { return gtid.String(), nil } err = gtid.sub(gtidDesc1) if err != nil { return "", err } return gtid.String(), nil } func Contain(gtidDesc0, gtidDesc1 string) (bool, error) { if strings.TrimSpace(gtidDesc0) == "" { if strings.TrimSpace(gtidDesc1) == "" { return true, nil } return false, nil } gtid, err := parse(gtidDesc0) if err != nil { return false, err } return gtid.Contain(gtidDesc1) } func Overlap(gtidDesc0, gtidDesc1 string) (bool, error) { if strings.TrimSpace(gtidDesc0) == "" { if strings.TrimSpace(gtidDesc1) == "" { return true, nil } return false, nil } gtid, err := parse(gtidDesc0) if err != nil { return false, err } return gtid.Overlap(gtidDesc1) } func Equal(gtidDesc0, gtidDesc1 string) (bool, error) { if strings.TrimSpace(gtidDesc0) == "" { if strings.TrimSpace(gtidDesc1) == "" { return true, nil } return false, nil } gtid, err := parse(gtidDesc0) if err != nil { return false, err } return gtid.Equal(gtidDesc1) } func EventCount(gtidDesc string) (uint64, error) { gtid, err := Parse(gtidDesc) if err != nil { return 0, err } return gtid.EventCount(), nil } func EventList(gtidDesc string) ([]string, error) { gtid, err := Parse(gtidDesc) if err != nil { return nil, err } return gtid.EventList(), nil } func Uniform(gtidDesc string) (string, error) { gtid, err := Parse(gtidDesc) if err != nil { return gtidDesc, err } return gtid.String(), nil }