MCPcopy Index your code
hub / github.com/foxcpp/maddy / Configure

Method Configure

internal/table/sql_table.go:59–147  ·  view source on GitHub ↗
(inlineArgs []string, cfg *config.Map)

Source from the content-addressed store, hash-verified

57}
58
59func (s *SQLTable) Configure(inlineArgs []string, cfg *config.Map) error {
60 var (
61 driver string
62 dsnParts []string
63 tableName string
64 keyColumn string
65 valueColumn string
66 )
67 cfg.String("driver", false, true, "", &driver)
68 cfg.StringList("dsn", false, true, nil, &dsnParts)
69 cfg.String("table_name", false, true, "", &tableName)
70 cfg.String("key_column", false, false, "key", &keyColumn)
71 cfg.String("value_column", false, false, "value", &valueColumn)
72 if _, err := cfg.Process(); err != nil {
73 return err
74 }
75
76 // sql_table module literally wraps the sql_query module by generating a
77 // configuration block for it.
78
79 var (
80 useNamedArgs string
81
82 lookupQuery string
83 addQuery string
84 listQuery string
85 setQuery string
86 delQuery string
87 )
88 if driver == "sqlite3" {
89 useNamedArgs = "yes"
90 lookupQuery = fmt.Sprintf("SELECT %s FROM %s WHERE %s = :key", valueColumn, tableName, keyColumn)
91 addQuery = fmt.Sprintf("INSERT INTO %s(%s, %s) VALUES(:key, :value)", tableName, keyColumn, valueColumn)
92 listQuery = fmt.Sprintf("SELECT %s from %s", keyColumn, tableName)
93 setQuery = fmt.Sprintf("UPDATE %s SET %s = :value WHERE %s = :key", tableName, valueColumn, keyColumn)
94 delQuery = fmt.Sprintf("DELETE FROM %s WHERE %s = :key", tableName, keyColumn)
95 } else {
96 useNamedArgs = "no"
97 lookupQuery = fmt.Sprintf("SELECT %s FROM %s WHERE %s = $1", valueColumn, tableName, keyColumn)
98 addQuery = fmt.Sprintf("INSERT INTO %s(%s, %s) VALUES($1, $2)", tableName, keyColumn, valueColumn)
99 listQuery = fmt.Sprintf("SELECT %s from %s", keyColumn, tableName)
100 setQuery = fmt.Sprintf("UPDATE %s SET %s = $2 WHERE %s = $1", tableName, valueColumn, keyColumn)
101 delQuery = fmt.Sprintf("DELETE FROM %s WHERE %s = $1", tableName, keyColumn)
102 }
103
104 return s.wrapped.Configure(nil, config.NewMap(cfg.Globals, config.Node{
105 Children: []config.Node{
106 {
107 Name: "driver",
108 Args: []string{driver},
109 },
110 {
111 Name: "dsn",
112 Args: dsnParts,
113 },
114 {
115 Name: "named_args",
116 Args: []string{useNamedArgs},

Callers

nothing calls this directly

Calls 5

NewMapFunction · 0.92
StringListMethod · 0.80
ProcessMethod · 0.80
ConfigureMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected