Victor Lacasse-Beaudoin
e847f693e0
- ajouter et tester InsertMembres - ajouter sql/views.sql - ajouter view `membres_for_display` -> concat names ou prefered name - rendre plusieurs champs NOT NULL dans schema
131 lines
3.6 KiB
Go
131 lines
3.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"codeberg.org/vlbeaudoin/pave/v2"
|
|
"codeberg.org/vlbeaudoin/voki/v3"
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
func addRoutes(e *echo.Echo, db *PostgresClient) error {
|
|
_ = db
|
|
|
|
apiPath := "/api"
|
|
apiGroup := e.Group(apiPath)
|
|
p := pave.New()
|
|
if err := pave.EchoRegister[HealthGETRequest](
|
|
apiGroup,
|
|
&p,
|
|
apiPath,
|
|
http.MethodGet,
|
|
"/health/",
|
|
"Get API server health",
|
|
"HealthGET", func(c echo.Context) error {
|
|
var request, response = HealthGETRequest{}, HealthGETResponse{}
|
|
if !request.Complete() {
|
|
var response voki.ResponseBadRequest
|
|
response.Message = "Incomplete HealthGET request received"
|
|
return c.JSON(response.StatusCode(), response)
|
|
}
|
|
if err := response.SetStatusCode(http.StatusOK); err != nil {
|
|
var response voki.ResponseInternalServerError
|
|
response.Message = fmt.Sprintf("handler: %s", err)
|
|
return c.JSON(response.StatusCode(), response)
|
|
}
|
|
|
|
response.Message = "ok"
|
|
return c.JSON(response.StatusCode(), response)
|
|
|
|
}); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := pave.EchoRegister[ProgrammesPOSTRequest](
|
|
apiGroup,
|
|
&p,
|
|
apiPath,
|
|
http.MethodPost,
|
|
"/programmes/",
|
|
"Insert programmes",
|
|
"ProgrammesPOST", func(c echo.Context) error {
|
|
var request, response = ProgrammesPOSTRequest{}, ProgrammesPOSTResponse{}
|
|
|
|
if err := c.Bind(&request.Data); err != nil {
|
|
var response voki.ResponseBadRequest
|
|
response.Message = fmt.Sprintf("parse request body: %s", err)
|
|
return c.JSON(response.StatusCode(), response)
|
|
}
|
|
|
|
if !request.Complete() {
|
|
var response voki.ResponseBadRequest
|
|
response.Message = "Incomplete ProgrammesPOST request received"
|
|
return c.JSON(response.StatusCode(), response)
|
|
}
|
|
|
|
amountInserted, err := db.InsertProgrammes(request.Data.Programmes...)
|
|
if err != nil {
|
|
var response voki.ResponseBadRequest
|
|
response.Message = fmt.Sprintf("db: %s", err)
|
|
return c.JSON(response.StatusCode(), response)
|
|
}
|
|
response.Data.ProgrammesInserted = amountInserted
|
|
|
|
if err := response.SetStatusCode(http.StatusOK); err != nil {
|
|
var response voki.ResponseInternalServerError
|
|
response.Message = fmt.Sprintf("handler: %s", err)
|
|
return c.JSON(response.StatusCode(), response)
|
|
}
|
|
|
|
response.Message = "ok"
|
|
return c.JSON(response.StatusCode(), response)
|
|
|
|
}); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := pave.EchoRegister[MembresPOSTRequest](
|
|
apiGroup,
|
|
&p,
|
|
apiPath,
|
|
http.MethodPost,
|
|
"/membres/",
|
|
"Insert membres",
|
|
"MembresPOST", func(c echo.Context) error {
|
|
var request, response = MembresPOSTRequest{}, MembresPOSTResponse{}
|
|
|
|
if err := c.Bind(&request.Data); err != nil {
|
|
var response voki.ResponseBadRequest
|
|
response.Message = fmt.Sprintf("parse request body: %s", err)
|
|
return c.JSON(response.StatusCode(), response)
|
|
}
|
|
|
|
if !request.Complete() {
|
|
var response voki.ResponseBadRequest
|
|
response.Message = "Incomplete MembresPOST request received"
|
|
return c.JSON(response.StatusCode(), response)
|
|
}
|
|
|
|
amountInserted, err := db.InsertMembres(request.Data.Membres...)
|
|
if err != nil {
|
|
var response voki.ResponseBadRequest
|
|
response.Message = fmt.Sprintf("db: %s", err)
|
|
return c.JSON(response.StatusCode(), response)
|
|
}
|
|
response.Data.MembresInserted = amountInserted
|
|
|
|
if err := response.SetStatusCode(http.StatusOK); err != nil {
|
|
var response voki.ResponseInternalServerError
|
|
response.Message = fmt.Sprintf("handler: %s", err)
|
|
return c.JSON(response.StatusCode(), response)
|
|
}
|
|
|
|
response.Message = "ok"
|
|
return c.JSON(response.StatusCode(), response)
|
|
|
|
}); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|