diff --git a/layer3domain_attr.go b/layer3domain_attr.go index 41e7607..9b24cc3 100644 --- a/layer3domain_attr.go +++ b/layer3domain_attr.go @@ -1,6 +1,7 @@ package main import ( + "encoding/json" "fmt" "dim/query" @@ -43,3 +44,32 @@ func layer3DomainSetAttr(c *Context, req Request, res *Response) error { } return nil } + +func layer3DomainGetAttr(c *Context, req Request, res *Response) error { + name := "" + if err := req.ParseAtLeast(1, &name); err != nil { + res.AddMessage(LevelError, "could not parse name: %s", err) + return nil + } + if name == "" { + res.AddMessage(LevelError, "empt name was provided") + return nil + } + + result := json.RawMessage{} + selClause := query.FieldsToJSON("l", map[string]string{ + "name": "name", + "modified_by": "l.modified_by", + "modified_at": "l.modified_at", + "created_by": "l.created_by", + "created_at": "l.created_at", + }) + queryStr := fmt.Sprintf(`select %s from layer3domains l where name = $1`, selClause) + err := c.tx.QueryRow(queryStr, name).Scan(&result) + if err != nil { + res.AddMessage(LevelError, "could not return result") + return fmt.Errorf("could not get layer3domain '%s': %s - query: %s", name, err, queryStr) + } + res.Result = result + return nil +} diff --git a/main.go b/main.go index 62681f2..0a057e9 100644 --- a/main.go +++ b/main.go @@ -66,6 +66,7 @@ func main() { } s.Register("layer3domain_create", layer3DomainCreate) s.Register("layer3domain_list", layer3DomainList) + s.Register("layer3domain_get_attr", layer3DomainGetAttr) s.Register("layer3domain_set_attr", layer3DomainSetAttr) s.Register("ipblock_create", ipblockCreate) s.Register("zone_create", zoneCreate)