diff --git a/Dockerfile b/Dockerfile index 805727f..23820d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,7 @@ ADD cmd/ cmd/ ADD data/ data/ ADD handlers/ handlers/ ADD models/ models/ +ADD responses/ responses/ ADD web/ web/ RUN CGO_ENABLED=0 go build -a -installsuffix cgo -o bottin . diff --git a/cmd/api.go b/cmd/api.go index 5c2ce60..1044c34 100644 --- a/cmd/api.go +++ b/cmd/api.go @@ -5,8 +5,8 @@ import ( "fmt" "log" - "git.agecem.com/agecem/bottin/v4/data" - "git.agecem.com/agecem/bottin/v4/handlers" + "git.agecem.com/agecem/bottin/data" + "git.agecem.com/agecem/bottin/handlers" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" "github.com/spf13/cobra" @@ -27,14 +27,6 @@ var apiCmd = &cobra.Command{ apiKey = viper.GetString("api.key") apiPort = viper.GetInt("api.port") - connection := data.PostgresConnection{ - User: viper.GetString("db.user"), - Password: viper.GetString("db.password"), - Host: viper.GetString("db.host"), - Database: viper.GetString("db.database"), - Port: viper.GetInt("db.port"), - } - e := echo.New() // Middlewares @@ -49,21 +41,21 @@ var apiCmd = &cobra.Command{ // Routes - e.GET("/v4/health/", handlers.GetHealth) + e.GET("/v5/health/", handlers.GetHealth) - e.POST("/v4/membres/", handlers.PostMembres) + e.POST("/v5/membres/", handlers.PostMembres) - e.GET("/v4/membres/:membre_id/", handlers.ReadMembre) + e.GET("/v5/membres/:membre_id/", handlers.ReadMembre) - e.PUT("/v4/membres/:membre_id/prefered_name/", handlers.PutMembrePreferedName) + e.PUT("/v5/membres/:membre_id/prefered_name/", handlers.PutMembrePreferedName) - e.POST("/v4/programmes/", handlers.PostProgrammes) + e.POST("/v5/programmes/", handlers.PostProgrammes) - e.POST("/v4/seed/", handlers.PostSeed) + e.POST("/v5/seed/", handlers.PostSeed) // Execution - client, err := data.NewDataClient(connection) + client, err := data.NewDataClientFromViper() if err != nil { log.Fatalf("Could not establish database connection.\n Error: %s\n", err) } diff --git a/cmd/web.go b/cmd/web.go index 08f6375..c773b56 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -8,9 +8,9 @@ import ( "io" "log" - "git.agecem.com/agecem/bottin/v4/data" - "git.agecem.com/agecem/bottin/v4/web" - "git.agecem.com/agecem/bottin/v4/web/webhandlers" + "git.agecem.com/agecem/bottin/data" + "git.agecem.com/agecem/bottin/web" + "git.agecem.com/agecem/bottin/web/webhandlers" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" "github.com/spf13/cobra" @@ -55,7 +55,7 @@ var webCmd = &cobra.Command{ apiClient := data.NewApiClient(webApiKey, webApiHost, webApiProtocol, webApiPort) - pingResult, err := apiClient.GetV4() + pingResult, err := apiClient.GetHealth() if err != nil { log.Fatal(err) } diff --git a/data/apiclient.go b/data/apiclient.go index 9fc1d5a..1eef66a 100644 --- a/data/apiclient.go +++ b/data/apiclient.go @@ -8,7 +8,8 @@ import ( "io/ioutil" "net/http" - "git.agecem.com/agecem/bottin/v4/models" + "git.agecem.com/agecem/bottin/models" + "git.agecem.com/agecem/bottin/responses" "github.com/spf13/viper" ) @@ -79,33 +80,31 @@ func (a *ApiClient) Call(method, route string, requestBody io.Reader, useKey boo return response, nil } -// GetV4 allows checking for API v4 server health -func (a *ApiClient) GetV4() (string, error) { - var getV4Response struct { - Message string `json:"message"` - } +// GetHealth allows checking for API server health +func (a *ApiClient) GetHealth() (string, error) { + var getHealthResponse responses.GetHealth - response, err := a.Call(http.MethodGet, "/v4", nil, true) + response, err := a.Call(http.MethodGet, "/v5/health", nil, true) if err != nil { - return getV4Response.Message, err + return getHealthResponse.Message, err } defer response.Body.Close() body, err := ioutil.ReadAll(response.Body) if err != nil { - return getV4Response.Message, err + return getHealthResponse.Message, err } - if err := json.Unmarshal(body, &getV4Response); err != nil { - return getV4Response.Message, err + if err := json.Unmarshal(body, &getHealthResponse); err != nil { + return getHealthResponse.Message, err } - if getV4Response.Message == "" { - return getV4Response.Message, errors.New("Could not confirm that API server is up, no response message") + if getHealthResponse.Message == "" { + return getHealthResponse.Message, errors.New("Could not confirm that API server is up, no response message") } - return getV4Response.Message, nil + return getHealthResponse.Message, nil } func (a *ApiClient) GetMembre(membreID string) (models.Membre, error) { @@ -125,7 +124,7 @@ func (a *ApiClient) GetMembre(membreID string) (models.Membre, error) { log.Println("ApiClient.GetMembre received membreID: ", membreID) */ - response, err := a.Call(http.MethodGet, fmt.Sprintf("/v4/membres/%s", membreID), nil, true) + response, err := a.Call(http.MethodGet, fmt.Sprintf("/v5/membres/%s", membreID), nil, true) if err != nil { return getMembreResponse.Data.Membre, err } diff --git a/data/data.go b/data/data.go index 9601792..5494cb1 100644 --- a/data/data.go +++ b/data/data.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "git.agecem.com/agecem/bottin/v4/models" + "git.agecem.com/agecem/bottin/models" _ "github.com/jackc/pgx/stdlib" "github.com/jmoiron/sqlx" "github.com/spf13/viper" diff --git a/go.mod b/go.mod index b6a59fc..5963afa 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module git.agecem.com/agecem/bottin/v4 +module git.agecem.com/agecem/bottin go 1.20 diff --git a/handlers/health.go b/handlers/health.go index 49d45b0..5292e56 100644 --- a/handlers/health.go +++ b/handlers/health.go @@ -4,17 +4,14 @@ import ( "fmt" "net/http" - "git.agecem.com/agecem/bottin/v4/data" + "git.agecem.com/agecem/bottin/data" + "git.agecem.com/agecem/bottin/responses" "github.com/labstack/echo/v4" ) -type GetHealthResponse struct { - Message string `json:"message"` -} - func GetHealth(c echo.Context) error { - response := GetHealthResponse{ - Message: "Bottin API v4 is ready", + response := responses.GetHealth{ + Message: "Bottin API v5 is ready", } dataClient, err := data.NewDataClientFromViper() diff --git a/handlers/insert.go b/handlers/insert.go index 629d6e7..38cad02 100644 --- a/handlers/insert.go +++ b/handlers/insert.go @@ -3,8 +3,8 @@ package handlers import ( "net/http" - "git.agecem.com/agecem/bottin/v4/data" - "git.agecem.com/agecem/bottin/v4/models" + "git.agecem.com/agecem/bottin/data" + "git.agecem.com/agecem/bottin/models" "github.com/labstack/echo/v4" "github.com/spf13/viper" ) diff --git a/handlers/read.go b/handlers/read.go index 8136e21..3932ec3 100644 --- a/handlers/read.go +++ b/handlers/read.go @@ -3,7 +3,7 @@ package handlers import ( "net/http" - "git.agecem.com/agecem/bottin/v4/data" + "git.agecem.com/agecem/bottin/data" "github.com/labstack/echo/v4" "github.com/spf13/viper" ) diff --git a/handlers/seed.go b/handlers/seed.go index 91d5037..237de09 100644 --- a/handlers/seed.go +++ b/handlers/seed.go @@ -3,7 +3,7 @@ package handlers import ( "net/http" - "git.agecem.com/agecem/bottin/v4/data" + "git.agecem.com/agecem/bottin/data" "github.com/labstack/echo/v4" "github.com/spf13/viper" ) diff --git a/handlers/update.go b/handlers/update.go index 8a8cf0a..6422f61 100644 --- a/handlers/update.go +++ b/handlers/update.go @@ -3,7 +3,7 @@ package handlers import ( "net/http" - "git.agecem.com/agecem/bottin/v4/data" + "git.agecem.com/agecem/bottin/data" "github.com/labstack/echo/v4" "github.com/spf13/viper" ) diff --git a/main.go b/main.go index 6ceb837..c6efc0b 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,6 @@ package main -import "git.agecem.com/agecem/bottin/v4/cmd" +import "git.agecem.com/agecem/bottin/cmd" func main() { cmd.Execute() diff --git a/responses/health.go b/responses/health.go new file mode 100644 index 0000000..6d5e663 --- /dev/null +++ b/responses/health.go @@ -0,0 +1,6 @@ +package responses + +// GetHealth is the response type for handlers.GetHealth +type GetHealth struct { + Message string `json:"message"` +} diff --git a/web/webhandlers/handlers.go b/web/webhandlers/handlers.go index 732d3e7..abfa955 100644 --- a/web/webhandlers/handlers.go +++ b/web/webhandlers/handlers.go @@ -4,7 +4,7 @@ import ( "fmt" "net/http" - "git.agecem.com/agecem/bottin/v4/data" + "git.agecem.com/agecem/bottin/data" "github.com/labstack/echo/v4" )