1
0
Fork 0
This repository has been archived on 2025-08-23. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
mareshq-backoffice-v2-api/internal/api/server.go
2024-05-04 18:21:45 +02:00

126 lines
3.8 KiB
Go

package api
import (
"database/sql"
"fmt"
"github.com/gofiber/fiber/v2"
"gitlab.mareshq.com/hq/backoffice/backoffice-api/internal/postgres"
"gitlab.mareshq.com/hq/backoffice/backoffice-api/pkg/training"
"go.uber.org/zap"
)
type APIServer struct {
logger *zap.SugaredLogger
trainingRepo *postgres.TrainingRepository
dateRepo *postgres.DateRepository
attendeeRepo *postgres.AttendeeRepository
}
func NewAPIServer(db *sql.DB, logger *zap.SugaredLogger) *APIServer {
return &APIServer{
logger: logger,
trainingRepo: postgres.NewTrainingRepository(db),
dateRepo: postgres.NewDateRepository(db),
attendeeRepo: postgres.NewAttendeeRepository(db),
}
}
func (s *APIServer) ListTrainings(c *fiber.Ctx) error {
all, err := s.trainingRepo.FindAll()
if err != nil {
s.logger.Error("ListTrainings", zap.Error(err))
c.JSON(ListTrainings500ApplicationProblemPlusJSONResponse{
Status: fiber.StatusInternalServerError,
Title: fmt.Sprintf("Internal server error: %s", "failed to list trainings"),
})
}
c.JSON(ListTrainings200JSONResponse{})
}
func (s *APIServer) CreateTraining(c *fiber.Ctx) error {
tr := &training.Training{}
if err := c.BodyParser(tr); err != nil {
s.logger.Error("CreateTraining", zap.Error(err))
c.JSON(CreateTraining400ApplicationProblemPlusJSONResponse{
Status: fiber.StatusBadRequest,
Title: fmt.Sprintf("Internal server error: %s", "failed to parse request body"),
})
}
if err := s.trainingRepo.Create(tr); err != nil {
s.logger.Error("CreateTraining", zap.Error(err))
c.JSON(CreateTraining500ApplicationProblemPlusJSONResponse{
Status: fiber.StatusInternalServerError,
Title: fmt.Sprintf("Internal server error: %s", "failed to save training"),
})
}
c.JSON(CreateTraining201JSONResponse{
Id: tr.ID,
Name: tr.Name,
Days: int32(tr.Days),
Price: tr.Price,
})
}
func (s *APIServer) UpdateTraining(c *fiber.Ctx) error {
s.logger.Info("UpdateTraining")
}
func (s *APIServer) DeleteTraining(c *fiber.Ctx, trainingID training.ID) error {
s.logger.Info("DeleteTraining")
}
func (s *APIServer) GetTraining(c *fiber.Ctx, trainingID training.ID) error {
s.logger.Info("GetTraining")
}
func (s *APIServer) ListTrainingDates(c *fiber.Ctx, trainingID training.ID) error {
s.logger.Info("ListTrainingDates")
}
func (s *APIServer) CreateTrainingDate(c *fiber.Ctx, trainingID training.ID) error {
s.logger.Info("CreateTrainingDate")
}
func (s *APIServer) UpdateTrainingDate(c *fiber.Ctx, trainingID training.ID, dateID training.DateID) error {
s.logger.Info("UpdateTrainingDate")
}
func (s *APIServer) DeleteTrainingDate(c *fiber.Ctx, trainingID training.ID, dateID training.DateID) error {
s.logger.Info("DeleteTrainingDate")
}
func (s *APIServer) ListUpcomingTrainingDates(c *fiber.Ctx, params ListUpcomingTrainingDatesParams) error {
s.logger.Info("ListUpcomingTrainingDates")
return nil
}
func (s *APIServer) ListTrainingDateAttendees(c *fiber.Ctx, trainingID training.ID, dateID training.DateID) error {
s.logger.Info("ListTrainingDateAttendees")
}
func (s *APIServer) CreateTrainingDateAttendee(c *fiber.Ctx, trainingID training.ID, dateID training.DateID) error {
s.logger.Info("CreateTrainingDateAttendee")
}
func (s *APIServer) DeleteTrainingDateAttendee(c *fiber.Ctx, trainingID training.ID, dateID training.DateID, attendeeID training.AttendeeID) error {
s.logger.Info("DeleteTrainingDateAttendee")
}
func (s *APIServer) CreateTrainingDateAttendeeFeedback(c *fiber.Ctx, trainingID training.ID, dateID training.DateID, attendeeID training.AttendeeID) error {
s.logger.Info("CreateTrainingDateAttendeeFeedback")
}
func (s *APIServer) ListTrainingDateFeedback(c *fiber.Ctx, trainingID training.ID, dateID training.DateID) error {
s.logger.Info("ListTrainingDateFeedback")
}
func (s *APIServer) ListTrainingFeedback(c *fiber.Ctx, trainingID training.ID) error {
s.logger.Info("ListTrainingFeedback")
}