feat(training): add Description field
This commit is contained in:
parent
bda8bb9e85
commit
d55276886b
5 changed files with 76 additions and 58 deletions
|
|
@ -161,9 +161,12 @@ components:
|
||||||
format: int8
|
format: int8
|
||||||
minimum: 1
|
minimum: 1
|
||||||
maximum: 5
|
maximum: 5
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
- days
|
- days
|
||||||
|
- description
|
||||||
|
|
||||||
Training:
|
Training:
|
||||||
allOf:
|
allOf:
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,9 @@ type ListTrainingsResponse = []Training
|
||||||
|
|
||||||
// NewTraining defines model for NewTraining.
|
// NewTraining defines model for NewTraining.
|
||||||
type NewTraining struct {
|
type NewTraining struct {
|
||||||
Days int8 `json:"days"`
|
Days int8 `json:"days"`
|
||||||
Name string `json:"name"`
|
Description string `json:"description"`
|
||||||
|
Name string `json:"name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProblemDetails Schema that carries the details of an error in an HTTP response. See https://datatracker.ietf.org/doc/html/rfc7807 for more information.
|
// ProblemDetails Schema that carries the details of an error in an HTTP response. See https://datatracker.ietf.org/doc/html/rfc7807 for more information.
|
||||||
|
|
@ -57,9 +58,10 @@ type ProblemDetails struct {
|
||||||
|
|
||||||
// Training defines model for Training.
|
// Training defines model for Training.
|
||||||
type Training struct {
|
type Training struct {
|
||||||
Days int8 `json:"days"`
|
Days int8 `json:"days"`
|
||||||
Id TrainingID `json:"id"`
|
Description string `json:"description"`
|
||||||
Name string `json:"name"`
|
Id TrainingID `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TrainingID defines model for TrainingID.
|
// TrainingID defines model for TrainingID.
|
||||||
|
|
@ -583,27 +585,27 @@ func (sh *strictHandler) UpdateTraining(ctx *fiber.Ctx, trainingID TrainingID) e
|
||||||
// Base64 encoded, gzipped, json marshaled Swagger object
|
// Base64 encoded, gzipped, json marshaled Swagger object
|
||||||
var swaggerSpec = []string{
|
var swaggerSpec = []string{
|
||||||
|
|
||||||
"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",
|
||||||
"zUXzbwAAAP//yp+J/10VAAA=",
|
"cK2vu6oNvuai+TcAAP//9nxvI+cVAAA=",
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSwagger returns the content of the embedded swagger specification file
|
// GetSwagger returns the content of the embedded swagger specification file
|
||||||
|
|
|
||||||
|
|
@ -31,9 +31,10 @@ func (h *APIHandlers) ListTrainings(ctx context.Context, req ListTrainingsReques
|
||||||
data := make([]Training, len(trainings))
|
data := make([]Training, len(trainings))
|
||||||
for idx, training := range trainings {
|
for idx, training := range trainings {
|
||||||
data[idx] = Training{
|
data[idx] = Training{
|
||||||
Id: training.ID,
|
Id: training.ID,
|
||||||
Name: training.Name,
|
Name: training.Name,
|
||||||
Days: training.Days,
|
Days: training.Days,
|
||||||
|
Description: training.Description,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -42,8 +43,9 @@ func (h *APIHandlers) ListTrainings(ctx context.Context, req ListTrainingsReques
|
||||||
|
|
||||||
func (h *APIHandlers) CreateTraining(ctx context.Context, req CreateTrainingRequestObject) (CreateTrainingResponseObject, error) {
|
func (h *APIHandlers) CreateTraining(ctx context.Context, req CreateTrainingRequestObject) (CreateTrainingResponseObject, error) {
|
||||||
t := training.Training{
|
t := training.Training{
|
||||||
Name: req.Body.Name,
|
Name: req.Body.Name,
|
||||||
Days: req.Body.Days,
|
Days: req.Body.Days,
|
||||||
|
Description: req.Body.Description,
|
||||||
}
|
}
|
||||||
|
|
||||||
err := h.trainingRepository.Create(&t)
|
err := h.trainingRepository.Create(&t)
|
||||||
|
|
@ -57,9 +59,10 @@ func (h *APIHandlers) CreateTraining(ctx context.Context, req CreateTrainingRequ
|
||||||
}
|
}
|
||||||
|
|
||||||
return CreateTraining201JSONResponse{
|
return CreateTraining201JSONResponse{
|
||||||
Id: t.ID,
|
Id: t.ID,
|
||||||
Name: t.Name,
|
Name: t.Name,
|
||||||
Days: t.Days,
|
Days: t.Days,
|
||||||
|
Description: t.Description,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -101,17 +104,19 @@ func (h *APIHandlers) GetTraining(ctx context.Context, req GetTrainingRequestObj
|
||||||
}
|
}
|
||||||
|
|
||||||
return GetTraining200JSONResponse{
|
return GetTraining200JSONResponse{
|
||||||
Id: t.ID,
|
Id: t.ID,
|
||||||
Name: t.Name,
|
Name: t.Name,
|
||||||
Days: t.Days,
|
Days: t.Days,
|
||||||
|
Description: t.Description,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *APIHandlers) UpdateTraining(ctx context.Context, req UpdateTrainingRequestObject) (UpdateTrainingResponseObject, error) {
|
func (h *APIHandlers) UpdateTraining(ctx context.Context, req UpdateTrainingRequestObject) (UpdateTrainingResponseObject, error) {
|
||||||
t := training.Training{
|
t := training.Training{
|
||||||
ID: req.TrainingID,
|
ID: req.TrainingID,
|
||||||
Name: req.Body.Name,
|
Name: req.Body.Name,
|
||||||
Days: req.Body.Days,
|
Days: req.Body.Days,
|
||||||
|
Description: req.Body.Description,
|
||||||
}
|
}
|
||||||
|
|
||||||
err := h.trainingRepository.Update(&t)
|
err := h.trainingRepository.Update(&t)
|
||||||
|
|
@ -125,8 +130,9 @@ func (h *APIHandlers) UpdateTraining(ctx context.Context, req UpdateTrainingRequ
|
||||||
}
|
}
|
||||||
|
|
||||||
return UpdateTraining200JSONResponse{
|
return UpdateTraining200JSONResponse{
|
||||||
Id: t.ID,
|
Id: t.ID,
|
||||||
Name: t.Name,
|
Name: t.Name,
|
||||||
Days: t.Days,
|
Days: t.Days,
|
||||||
|
Description: t.Description,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,8 @@ func NewTrainingID() TrainingID {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Training struct {
|
type Training struct {
|
||||||
ID TrainingID
|
ID TrainingID
|
||||||
Name string
|
Name string
|
||||||
Days int8
|
Days int8
|
||||||
|
Description string
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,28 +18,34 @@ func NewInMemoryTrainingRepository() *InMemoryTrainingRepository {
|
||||||
}
|
}
|
||||||
|
|
||||||
repo.Create(&Training{
|
repo.Create(&Training{
|
||||||
Name: "Kubernetes",
|
Name: "Kubernetes",
|
||||||
Days: 2,
|
Days: 2,
|
||||||
|
Description: "",
|
||||||
})
|
})
|
||||||
repo.Create(&Training{
|
repo.Create(&Training{
|
||||||
Name: "Terraform",
|
Name: "Terraform",
|
||||||
Days: 1,
|
Days: 1,
|
||||||
|
Description: "",
|
||||||
})
|
})
|
||||||
repo.Create(&Training{
|
repo.Create(&Training{
|
||||||
Name: "RKE2",
|
Name: "RKE2",
|
||||||
Days: 1,
|
Days: 1,
|
||||||
|
Description: "",
|
||||||
})
|
})
|
||||||
repo.Create(&Training{
|
repo.Create(&Training{
|
||||||
Name: "GitHub Actions",
|
Name: "GitHub Actions",
|
||||||
Days: 1,
|
Days: 1,
|
||||||
|
Description: "",
|
||||||
})
|
})
|
||||||
repo.Create(&Training{
|
repo.Create(&Training{
|
||||||
Name: "GitLab CI",
|
Name: "GitLab CI",
|
||||||
Days: 1,
|
Days: 1,
|
||||||
|
Description: "",
|
||||||
})
|
})
|
||||||
repo.Create(&Training{
|
repo.Create(&Training{
|
||||||
Name: "Prometheus",
|
Name: "Prometheus",
|
||||||
Days: 2,
|
Days: 2,
|
||||||
|
Description: "",
|
||||||
})
|
})
|
||||||
|
|
||||||
return repo
|
return repo
|
||||||
|
|
|
||||||
Reference in a new issue