func ParseFilename()

in pkg/wal/filename.go [15:52]


func ParseFilename(path string) (database, table, schema, epoch string, err error) {
	if filepath.Ext(path) != ".wal" {
		err = ErrNotWALSegment
		return
	}

	fileName := filepath.Base(path)
	fields := strings.Split(fileName, "_")
	if len(fields) < 3 {
		err = ErrInvalidWALSegment
		return
	}

	if len(fields) == 3 {
		database = fields[0]
		table = fields[1]
		epoch = fields[2][:len(fields[2])-4]
		schema = ""

		if database == "" || table == "" || epoch == "" {
			err = ErrInvalidWALSegment
		}
		return
	} else if len(fields) == 4 {
		database = fields[0]
		table = fields[1]
		schema = fields[2]
		epoch = fields[3][:len(fields[3])-4]

		if database == "" || table == "" || schema == "" || epoch == "" {
			err = ErrInvalidWALSegment
		}

		return
	}
	err = ErrInvalidWALSegment
	return
}