Merge pull request 'Added /version endpoint' (#37) from dev into main
This commit was merged in pull request #37.
This commit is contained in:
+5
-2
@@ -136,8 +136,11 @@ func setupLogging() {
|
||||
|
||||
func makeServer(db *sql.DB, cfg *config.Config) *http.Server {
|
||||
routerConfig := router.Config{
|
||||
Database: db,
|
||||
JWTSecret: cfg.JWTSecret,
|
||||
Database: db,
|
||||
JWTSecret: cfg.JWTSecret,
|
||||
ServiceVersion: Version,
|
||||
ServiceCommit: Commit,
|
||||
ServiceBuildTime: BuildTime,
|
||||
}
|
||||
mux := router.NewMux(routerConfig)
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/robindittmar/dttmr-api/internal/api/response"
|
||||
)
|
||||
|
||||
type VersionResponse struct {
|
||||
Version string `json:"version"`
|
||||
Commit string `json:"commit"`
|
||||
BuildTime string `json:"buildTime"`
|
||||
}
|
||||
|
||||
// VersionHandler handles the version route
|
||||
//
|
||||
// @Summary Service version
|
||||
// @Description Reports the version of the API
|
||||
// @Tags Version
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Success 200 {object} VersionResponse
|
||||
// @Router /version [get]
|
||||
func VersionHandler(version string, commit string, buildTime string) func(http.ResponseWriter, *http.Request) {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
response.JSON(r.Context(), w, http.StatusOK, VersionResponse{
|
||||
Version: version,
|
||||
Commit: commit,
|
||||
BuildTime: buildTime,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -11,8 +11,11 @@ import (
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Database *sql.DB
|
||||
JWTSecret string
|
||||
Database *sql.DB
|
||||
JWTSecret string
|
||||
ServiceVersion string
|
||||
ServiceCommit string
|
||||
ServiceBuildTime string
|
||||
}
|
||||
|
||||
func NewMux(cfg Config) http.Handler {
|
||||
@@ -22,7 +25,7 @@ func NewMux(cfg Config) http.Handler {
|
||||
inviteService := domain.NewInviteService(store.Invite)
|
||||
userService := domain.NewUserService(store.User)
|
||||
registrationService := domain.NewRegistrationService(store, userService, inviteService)
|
||||
listService := domain.NewListService(store.List)
|
||||
listService := domain.NewListService(store, store.List)
|
||||
|
||||
authHandler := handler.NewAuthHandler(authService)
|
||||
inviteHandler := handler.NewInviteHandler(inviteService)
|
||||
@@ -32,6 +35,8 @@ func NewMux(cfg Config) http.Handler {
|
||||
protected := middleware.WithJWT(authService)
|
||||
|
||||
apiMux := http.NewServeMux()
|
||||
apiMux.HandleFunc("GET /version", handler.VersionHandler(
|
||||
cfg.ServiceVersion, cfg.ServiceCommit, cfg.ServiceBuildTime))
|
||||
apiMux.HandleFunc("GET /health", handler.HealthHandler)
|
||||
|
||||
// Auth
|
||||
|
||||
+17
-7
@@ -49,11 +49,12 @@ type ListRepository interface {
|
||||
}
|
||||
|
||||
type ListService struct {
|
||||
tx Transactor
|
||||
repo ListRepository
|
||||
}
|
||||
|
||||
func NewListService(r ListRepository) *ListService {
|
||||
return &ListService{repo: r}
|
||||
func NewListService(tx Transactor, r ListRepository) *ListService {
|
||||
return &ListService{tx: tx, repo: r}
|
||||
}
|
||||
|
||||
func (s *ListService) CreateList(ctx context.Context, authUserID string, name string) (*List, error) {
|
||||
@@ -61,12 +62,21 @@ func (s *ListService) CreateList(ctx context.Context, authUserID string, name st
|
||||
return nil, ErrListNameMissing
|
||||
}
|
||||
|
||||
list, err := s.repo.CreateList(ctx, name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var list *List
|
||||
err := s.tx.WithinTx(ctx, func(ctx context.Context) error {
|
||||
l, err := s.repo.CreateList(ctx, name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = s.repo.AddUserToList(ctx, list.ID, authUserID)
|
||||
err = s.repo.AddUserToList(ctx, l.ID, authUserID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
list = l
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user