-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmetadata.go
62 lines (56 loc) · 1.95 KB
/
metadata.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package bigtable
import (
"fmt"
"github.com/kubemq-io/kubemq-targets/types"
)
type metadata struct {
tableName string
columnFamily string
method string
rowKeyPrefix string
readColumnName string
}
var methodsMap = map[string]string{
"write": "write",
"write_batch": "write_batch",
"get_row": "get_row",
"get_all_rows": "get_all_rows",
"delete_row": "delete_row",
"get_tables": "get_tables",
"create_table": "create_table",
"delete_table": "delete_table",
"create_column_family": "create_column_family",
"get_all_rows_by_column": "get_all_rows_by_column",
}
func parseMetadata(meta types.Metadata) (metadata, error) {
m := metadata{}
var err error
m.method, err = meta.ParseStringMap("method", methodsMap)
if err != nil {
return metadata{}, meta.GetValidMethodTypes(methodsMap)
}
if m.method != "get_tables" {
m.tableName, err = meta.MustParseString("table_name")
if err != nil {
return metadata{}, fmt.Errorf("table_name is required for method:%s , error parsing table_name, %w", m.method, err)
}
}
if m.method == "write" || m.method == "write_batch" || m.method == "create_column_family" {
m.columnFamily, err = meta.MustParseString("column_family")
if err != nil {
return metadata{}, fmt.Errorf("column_family is required for method:%s ,error parsing column_family, %w", m.method, err)
}
} else if m.method == "delete_row" || m.method == "get_row" {
m.rowKeyPrefix, err = meta.MustParseString("row_key_prefix")
if err != nil {
return metadata{}, fmt.Errorf("row_key_prefix is required for method:%s ,error parsing row_key_prefix, %w", m.method, err)
}
}
if m.method == "get_all_rows_by_column" {
m.readColumnName, err = meta.MustParseString("column_name")
if err != nil {
return metadata{}, fmt.Errorf("column_name is required for method:%s , error parsing column_name, %w", m.method, err)
}
}
return m, nil
}