feat(router,service): list projects endpoint
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
@@ -20,6 +21,11 @@ func (router *router) projects(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
if r.Method == http.MethodGet {
|
||||
router.listProjects(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
router.createProject(w, r)
|
||||
}
|
||||
|
||||
@@ -84,3 +90,30 @@ func (router *router) getProject(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func (router *router) listProjects(w http.ResponseWriter, r *http.Request) {
|
||||
router.assert.NotNil(w)
|
||||
router.assert.NotNil(r)
|
||||
router.assert.NotNil(router.service)
|
||||
router.assert.NotNil(router.templates)
|
||||
|
||||
ps, err := router.service.ListProjects()
|
||||
if err != nil {
|
||||
exception.InternalServerError(err).ServeHTTP(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
b, err := json.Marshal(ps)
|
||||
if err != nil {
|
||||
exception.InternalServerError(err).ServeHTTP(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Add("Content-Type", "application/json")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
_, err = w.Write(b)
|
||||
if err != nil {
|
||||
exception.InternalServerError(err).ServeHTTP(w, r)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,3 +113,22 @@ func (s *Service) GetProject(id string) (Project, error) {
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
func (s *Service) ListProjects() ([]Project, error) {
|
||||
s.assert.NotNil(s.db)
|
||||
|
||||
ps, err := s.db.ListProjects()
|
||||
if err != nil {
|
||||
return []Project{}, err
|
||||
}
|
||||
|
||||
p := make([]Project, len(ps))
|
||||
for i := range p {
|
||||
p[i] = Project{
|
||||
ID: ps[i].ID,
|
||||
Title: ps[i].Title,
|
||||
}
|
||||
}
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user