summaryrefslogtreecommitdiff
path: root/db/endpoint.go
diff options
context:
space:
mode:
Diffstat (limited to 'db/endpoint.go')
-rw-r--r--db/endpoint.go85
1 files changed, 85 insertions, 0 deletions
diff --git a/db/endpoint.go b/db/endpoint.go
new file mode 100644
index 0000000..f22d77b
--- /dev/null
+++ b/db/endpoint.go
@@ -0,0 +1,85 @@
+package db
+
+func (p *Phlox) CreateEndpoint(name, path, address string) (Endpoint, error) {
+ var id int
+ row := p.db.QueryRow("select max(endpointid) from endpoints;")
+ err := row.Scan(&id)
+ if err != nil {
+ return Endpoint{}, err
+ }
+ id += 1
+
+ _, err = p.db.Exec(
+ "insert into endpoints values (?, ?, ?, ?)",
+ id, name, path, address,
+ )
+ if err != nil {
+ return Endpoint{}, err
+ }
+
+ endpoint := Endpoint{
+ Id: id,
+ Name: name,
+ Path: path,
+ Address: address,
+ }
+
+ return endpoint, nil
+}
+
+
+func (p *Phlox) DeleteEndpoint(endpoint Endpoint) error {
+ _, err := p.db.Exec("delete from endpoints where endpointid = ?;", endpoint.Id)
+ return err
+}
+
+
+func extractEndpoint(s Scanner) (Endpoint, error) {
+ var endpoint Endpoint
+ err := s.Scan(
+ &endpoint.Id,
+ &endpoint.Name,
+ &endpoint.Path,
+ &endpoint.Address,
+ )
+ return endpoint, err
+}
+
+
+func queryEndpoint(p *Phlox, query, param string) (Endpoint, error) {
+ row := p.db.QueryRow(query, param)
+ endpoint, err := extractEndpoint(row)
+ return endpoint, err
+}
+
+func (p *Phlox) GetEndpointByName(name string) (Endpoint, error) {
+ return queryEndpoint(p, "select * from endpoints where name = ?;", name)
+}
+
+func (p *Phlox) GetEndpointByPath(path string) (Endpoint, error) {
+ return queryEndpoint(p, "select * from endpoints where path = ?;", path)
+}
+
+func (p *Phlox) GetEndpointByAddress(address string) (Endpoint, error) {
+ return queryEndpoint(p, "select * from endpoints where address = ?;", address)
+}
+
+
+func (p *Phlox) AllEndpoints() ([]Endpoint, error) {
+ endpoints := make([]Endpoint, 0)
+ rows, err := p.db.Query("select * from endpoints;")
+ if err != nil {
+ return endpoints, err
+ }
+ defer rows.Close()
+
+ for rows.Next() {
+ endpoint, err := extractEndpoint(rows)
+ if err != nil {
+ return endpoints, err
+ }
+ endpoints = append(endpoints, endpoint)
+ }
+
+ return endpoints, nil
+}