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

Method Configure

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

Source from the content-addressed store, hash-verified

65}
66
67func (s *SQL) Configure(inlineArgs []string, cfg *config.Map) error {
68 var (
69 driver string
70 initQueries []string
71 dsnParts []string
72 lookupQuery string
73
74 addQuery string
75 listQuery string
76 removeQuery string
77 setQuery string
78 )
79 cfg.StringList("init", false, false, nil, &initQueries)
80 cfg.String("driver", false, true, "", &driver)
81 cfg.StringList("dsn", false, true, nil, &dsnParts)
82 cfg.Bool("named_args", false, false, &s.namedArgs)
83
84 cfg.String("lookup", false, true, "", &lookupQuery)
85
86 cfg.String("add", false, false, "", &addQuery)
87 cfg.String("list", false, false, "", &listQuery)
88 cfg.String("del", false, false, "", &removeQuery)
89 cfg.String("set", false, false, "", &setQuery)
90 if _, err := cfg.Process(); err != nil {
91 return err
92 }
93
94 if driver == "postgres" && s.namedArgs {
95 return config.NodeErr(cfg.Block, "PostgreSQL driver does not support named_args")
96 }
97 driver = sqliteprovider.MapDriverName(driver)
98
99 db, err := sql.Open(driver, strings.Join(dsnParts, " "))
100 if err != nil {
101 return config.NodeErr(cfg.Block, "failed to open db: %v", err)
102 }
103 s.db = db
104 s.prepare = func() error {
105 for _, init := range initQueries {
106 if _, err := db.Exec(init); err != nil {
107 return config.NodeErr(cfg.Block, "init query failed: %v", err)
108 }
109 }
110
111 s.lookup, err = db.Prepare(lookupQuery)
112 if err != nil {
113 return fmt.Errorf("failed to prepare lookup query: %v", err)
114 }
115 if addQuery != "" {
116 s.add, err = db.Prepare(addQuery)
117 if err != nil {
118 return fmt.Errorf("failed to prepare add query: %v", err)
119 }
120 }
121 if listQuery != "" {
122 s.list, err = db.Prepare(listQuery)
123 if err != nil {
124 return config.NodeErr(cfg.Block, "failed to prepare list query: %v", err)

Callers

nothing calls this directly

Calls 6

NodeErrFunction · 0.92
StringListMethod · 0.80
BoolMethod · 0.80
ProcessMethod · 0.80
OpenMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected