feat(router,service): list projects endpoint

This commit is contained in:
Guz
2025-03-17 09:13:55 -03:00
parent 99a76dcad3
commit c6d99690ed
2 changed files with 52 additions and 0 deletions

View File

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

View File

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