From aa7c3eb23c31fa6051ee0caaebea47c8225d55a4 Mon Sep 17 00:00:00 2001 From: sanine Date: Sat, 29 Apr 2023 01:11:04 -0500 Subject: add endpoint.go --- db/endpoint.go | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 db/endpoint.go (limited to 'db/endpoint.go') 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 +} -- cgit v1.2.1