1
2
3
4
5
6
7
8
9
10
11
12
13 package kivik
14
15 import (
16 "context"
17
18 "github.com/go-kivik/kivik/v4/driver"
19 )
20
21
22 type Config map[string]ConfigSection
23
24
25 type ConfigSection map[string]string
26
27
28
29
30 func (c *Client) Config(ctx context.Context, node string) (Config, error) {
31 endQuery, err := c.startQuery()
32 if err != nil {
33 return nil, err
34 }
35 defer endQuery()
36 if configer, ok := c.driverClient.(driver.Configer); ok {
37 driverCf, err := configer.Config(ctx, node)
38 if err != nil {
39 return nil, err
40 }
41 cf := Config{}
42 for k, v := range driverCf {
43 cf[k] = ConfigSection(v)
44 }
45 return cf, nil
46 }
47 return nil, errConfigNotImplemented
48 }
49
50
51
52
53 func (c *Client) ConfigSection(ctx context.Context, node, section string) (ConfigSection, error) {
54 endQuery, err := c.startQuery()
55 if err != nil {
56 return nil, err
57 }
58 defer endQuery()
59 if configer, ok := c.driverClient.(driver.Configer); ok {
60 sec, err := configer.ConfigSection(ctx, node, section)
61 return ConfigSection(sec), err
62 }
63 return nil, errConfigNotImplemented
64 }
65
66
67
68
69 func (c *Client) ConfigValue(ctx context.Context, node, section, key string) (string, error) {
70 endQuery, err := c.startQuery()
71 if err != nil {
72 return "", err
73 }
74 defer endQuery()
75 if configer, ok := c.driverClient.(driver.Configer); ok {
76 return configer.ConfigValue(ctx, node, section, key)
77 }
78 return "", errConfigNotImplemented
79 }
80
81
82
83
84
85 func (c *Client) SetConfigValue(ctx context.Context, node, section, key, value string) (string, error) {
86 endQuery, err := c.startQuery()
87 if err != nil {
88 return "", err
89 }
90 defer endQuery()
91 if configer, ok := c.driverClient.(driver.Configer); ok {
92 return configer.SetConfigValue(ctx, node, section, key, value)
93 }
94 return "", errConfigNotImplemented
95 }
96
97
98
99
100
101 func (c *Client) DeleteConfigKey(ctx context.Context, node, section, key string) (string, error) {
102 endQuery, err := c.startQuery()
103 if err != nil {
104 return "", err
105 }
106 defer endQuery()
107 if configer, ok := c.driverClient.(driver.Configer); ok {
108 return configer.DeleteConfigKey(ctx, node, section, key)
109 }
110 return "", errConfigNotImplemented
111 }
112
View as plain text