diff options
author | sanine <sanine.not@pm.me> | 2023-04-29 01:11:04 -0500 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2023-04-29 01:11:04 -0500 |
commit | aa7c3eb23c31fa6051ee0caaebea47c8225d55a4 (patch) | |
tree | 273ab2e65e5f19107fb2773a4602cfa15118844a /db/endpoint.go | |
parent | bfdee97bec65746362fd432136eefbd60598f8bf (diff) |
add endpoint.go
Diffstat (limited to 'db/endpoint.go')
-rw-r--r-- | db/endpoint.go | 85 |
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 +} |