add layer3domain show API call

This adds the API call to return all fields for a single layer3domain.
This should serve as a nice basis for other parts to be implemented.

All fields are put together into a single json document, merged together
with the other attributes of the table and then returned to the
requester.
This commit is contained in:
Gibheer 2021-05-07 21:23:49 +02:00
parent e9135c9c10
commit c22873990b
2 changed files with 31 additions and 0 deletions

View File

@ -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
}

View File

@ -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)