1
0
Fork 0

feat(training): add Description field

This commit is contained in:
Vojtěch Mareš 2024-05-05 09:47:50 +02:00
parent bda8bb9e85
commit d55276886b
Signed by: vojtech.mares
GPG key ID: C6827B976F17240D
5 changed files with 76 additions and 58 deletions

View file

@ -161,9 +161,12 @@ components:
format: int8
minimum: 1
maximum: 5
description:
type: string
required:
- name
- days
- description
Training:
allOf:

View file

@ -33,8 +33,9 @@ type ListTrainingsResponse = []Training
// NewTraining defines model for NewTraining.
type NewTraining struct {
Days int8 `json:"days"`
Name string `json:"name"`
Days int8 `json:"days"`
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.
@ -57,9 +58,10 @@ type ProblemDetails struct {
// Training defines model for Training.
type Training struct {
Days int8 `json:"days"`
Id TrainingID `json:"id"`
Name string `json:"name"`
Days int8 `json:"days"`
Description string `json:"description"`
Id TrainingID `json:"id"`
Name string `json:"name"`
}
// 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
var swaggerSpec = []string{
"H4sIAAAAAAAC/9RXwXLbNhN+FQz+/1ZalJtkkuGpad0mmkkTN3F6cX2AwCUJhwRgYClbo+GT9NR3ad+r",
"A0CkSIl25EYZxyfLILD77beLD7srylWllQSJliYrqplhFSAY/9+ZYUIKmc9O3H8pWG6ERqEkTbpvZHZC",
"IyrckmZY0IhKVgFNKG4OR9TAVS0MpDRBU0NELS+gYs7q/w1kNKH/izdA4vDVxj3/TdM4K1YracGDm0kE",
"I1n5szHKuAWuJIJE95NpXQrOHNRYGzUvofru0jrcqz1dn4ZTJ4BMlDa4HxLQ+ifgATQRnckFK0U6k7rG",
"h0PlMRDhQGygvVX4i6pl+lCw3iokmQPQQmraGvC5/MkAQ2jT/R6uarAemzZKg0ERUp6ypf+bKVMxpAkV",
"El/QiFbsRlR1RZNnEa2EDL+PI4pLDWEX5OB5CLW5ar9YNELmNNRWW6HnYVcU3F10ZtT8Ejg6K9twQ1V6",
"LsvyXUaT87v5egvX7WHaRKsdB9txi/SeN2U1CEek9KK5aCL6CvDxgX4jbIfa9mELhMru68OlbY2YGcOW",
"/lL0Ivpma23rbu3o8AcfKMGCIeHMGAGWYAEkDQeIygiT4dYRId3v12dnp6SV0gn5AEAKRG2TOE4ZMjSM",
"fwIzEYDZRJk8ThWPC6zK2GT8+Yvpc5IpQyplgAgZ2BFKTv6QNNqm0EPYhfySFHXF5JEBlrJ5CQRudMmk",
"t0OsBi4ywQkqgoWwRHFeGwOSg4vFhbYWqQmNtrl1D5FFJjmMef34fkYMZBCMecZEChJF1pLWOb+fU4sM",
"65HcnBUQ2A4bCFcpkBwkGIaQkvnSW1ZG5EISC2YBxpO7d9y9akOBJezBta2ripnllk3iDI7GFhb+C5mf",
"Mb11D/zXNoyO0qgtol5mx25J/x5/23I27Kk6dalrke5wFNGbo1wdrRfbhmpy1u+suh1HotLKhFfTNWIJ",
"zQWWbD6pmAFbXE24quLiKl7meWqYFWWsP+Uxdhw0Ef2o08f0DG/DfRwvWuNVKlNtF8a4pxgqr5VUsOqH",
"hbpE4IVPnEvbpqn+XV3i33/ygvzKDPzzF41obdypVsCvr68nO6ebiJaCw5qbtaVTo7QRgMwse/JBnV37",
"+jfy8nRGI7oAY8OFn06OJ1O3UWmQTAua0Cd+KfLV5vmJF8ddPfmFHHxojkMv7rOUJsP3nG419d9Pp3d0",
"p/frSscbh5Hm9CUphUWviB2uJqLPApYxFx3meDiF+LY2COw6UsLKsmc2osgcN+d0Q4FTBa3sCFXDPnM9",
"RoHFH1W6PBhN4713M7yMbmprdnJ1/NVA3J6sbu7k/kjqMvV0v0xtT2eHyHEAThiRcN3l+ZY0N9HwisSr",
"zYzchDe2BITdOjjx67066I/pt4jcZstAlS52kvj0jtk+AFpz/PTzTA3HzEPwG0InrOPWdU3+4Ru/SKOS",
"05t7Dkze4dRqbDYb1SrsTTQPlJRXgPtnRNcjGRk+3V+elMPL4ngvtJcsTr8aiD1ksfZHvlAWH6iuQrj7",
"lpY/64emUDNDQt4ozkqSwgJKpSuQuB6wBi1TEsel21coi8mT6XTqy2ntbNviu7aCLWFzVePgWV93VRt8",
"zUXzbwAAAP//yp+J/10VAAA=",
"H4sIAAAAAAAC/9xYwXLbNhD9FQzaW2lRbpJJhqemdZtoJk3cxOnF9QEClyQcEoCBpWyNhl/SU/+l/a8O",
"AJEiJdqRG2Xc5GSaBHbfvl087GpFuaq0kiDR0mRFNTOsAgTj/zszTEgh89mJ+y8Fy43QKJSkSfeNzE5o",
"RIV7pRkWNKKSVUATipvNETVwVQsDKU3Q1BBRywuomLP6rYGMJvSbeAMkDl9t3PPfNI2zYrWSFjy4mUQw",
"kpU/G6OMe8GVRJDoHpnWpeDMQY21UfMSqu8urcO92tP1adh1AshEaYP7IQGtfwIeQBPRmVywUqQzqWt8",
"OFQeAxEOxAbaa4W/qFqmDwXrtUKSOQAtpKatAZ/LnwwwhDbdb+GqBuuxaaM0GBQh5Slb+r+ZMhVDmlAh",
"8RmNaMVuRFVXNHkS0UrI8HwcUVxqCKsgB8/DANWqXWDRCJm776F2dz40/Qo+D6uiAGdo86JzquaXwNHZ",
"3A4u1LBnvizfZDQ5v5vd13DdbqZNtNpxsM2SSO95rlaD4ERKL5qLJqIvAL880K+E7VDbPmyBUNl9fbi0",
"rREzY9jSH6FeRF9JZW6d2x2Nf+dpIVgwJJwZI8ASLICkYQNRGWEynGgipHt+eXZ2SlqZnpB3AKRA1DaJ",
"45QhQ8P4BzATAZhNlMnjVPG4wKqMTcafPps+JZkypFIGiJCBS6Hk5A9Jo23CPYRdyM9JUVdMHhlgKZuX",
"QOBGl0x6O8Rq4CITnKAiWAhLFOe1MSA5uFhcaGsBnNBoNwVCWmSSw5jX929nxEAGwZhnTKQgUWQtaZ3z",
"+zm1yLAeyc1ZAYHtsIBwlQLJQYJhCCmZL71lZUQuJLFgFmA8uXvH3atNFFjCHlzbuqqYWW7ZJM7gaGzh",
"xX8h8yOmt06F/9qG0VEatUXUy+zYKemf+v+3+A37tU6L6lqkOxxF9OYoV0frl22zNjnrd23diiNRaWXC",
"jeyavITmAks2n1TMgC2uJlxVcXEVL/M8NcyKMtYf8hg7DpqIvtfp13vFbwf3ZdyWjde0TLX9IOM+IVB5",
"ZaWCVT8s1CUCL3yaXZI37f3v6hL//pMX5Fdm4J+/aERr43a1cn99fT3Z2d1EtBQc1tysLZ0apY0AZGbZ",
"Exvq7NqXv5HnpzMa0QUYG+RhOjmeTN1CpUEyLWhCH/lXka9Nz0+8OO6qz7/IwYfmOPRXwSylybBXoFvj",
"xffT6R198v364/GmZKRNfk5KYdHrZ4erieiTgGXMRYc5Hs5DvsEOcryOlLCy7JmNKDLHzTndUOA0RCs7",
"QtWwh10PdGDxR5UuD0bT+BTQDI+mmx+bnVwdfzYQtyerm4C535K6TD3eL1Pbc+IhchyAE0YkXHd5viXN",
"TTQ8IvFqM6034UYuAWG3Dk78+14d9H8wuEXkNksGqnSxk8THd/zKEACtOX78caaGA+8h+A2hE9Zx63os",
"f02OH6RRyenNVAcm73BqNTb3jWoV9qalB0rKC8D9M6LrkYwMr+5PT8rhZXG8c9pLFqefDcQeslj7LZ8o",
"iw9UVyHcfUvL7/UjVqiZISGvFGclSWEBpdIVSFyPY4OWKYnj0q0rlMXk0XQ69eW0drZt8U1bwZawuapx",
"cK2vu6oNvuai+TcAAP//9nxvI+cVAAA=",
}
// GetSwagger returns the content of the embedded swagger specification file

View file

@ -31,9 +31,10 @@ func (h *APIHandlers) ListTrainings(ctx context.Context, req ListTrainingsReques
data := make([]Training, len(trainings))
for idx, training := range trainings {
data[idx] = Training{
Id: training.ID,
Name: training.Name,
Days: training.Days,
Id: training.ID,
Name: training.Name,
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) {
t := training.Training{
Name: req.Body.Name,
Days: req.Body.Days,
Name: req.Body.Name,
Days: req.Body.Days,
Description: req.Body.Description,
}
err := h.trainingRepository.Create(&t)
@ -57,9 +59,10 @@ func (h *APIHandlers) CreateTraining(ctx context.Context, req CreateTrainingRequ
}
return CreateTraining201JSONResponse{
Id: t.ID,
Name: t.Name,
Days: t.Days,
Id: t.ID,
Name: t.Name,
Days: t.Days,
Description: t.Description,
}, nil
}
@ -101,17 +104,19 @@ func (h *APIHandlers) GetTraining(ctx context.Context, req GetTrainingRequestObj
}
return GetTraining200JSONResponse{
Id: t.ID,
Name: t.Name,
Days: t.Days,
Id: t.ID,
Name: t.Name,
Days: t.Days,
Description: t.Description,
}, nil
}
func (h *APIHandlers) UpdateTraining(ctx context.Context, req UpdateTrainingRequestObject) (UpdateTrainingResponseObject, error) {
t := training.Training{
ID: req.TrainingID,
Name: req.Body.Name,
Days: req.Body.Days,
ID: req.TrainingID,
Name: req.Body.Name,
Days: req.Body.Days,
Description: req.Body.Description,
}
err := h.trainingRepository.Update(&t)
@ -125,8 +130,9 @@ func (h *APIHandlers) UpdateTraining(ctx context.Context, req UpdateTrainingRequ
}
return UpdateTraining200JSONResponse{
Id: t.ID,
Name: t.Name,
Days: t.Days,
Id: t.ID,
Name: t.Name,
Days: t.Days,
Description: t.Description,
}, nil
}

View file

@ -11,7 +11,8 @@ func NewTrainingID() TrainingID {
}
type Training struct {
ID TrainingID
Name string
Days int8
ID TrainingID
Name string
Days int8
Description string
}

View file

@ -18,28 +18,34 @@ func NewInMemoryTrainingRepository() *InMemoryTrainingRepository {
}
repo.Create(&Training{
Name: "Kubernetes",
Days: 2,
Name: "Kubernetes",
Days: 2,
Description: "",
})
repo.Create(&Training{
Name: "Terraform",
Days: 1,
Name: "Terraform",
Days: 1,
Description: "",
})
repo.Create(&Training{
Name: "RKE2",
Days: 1,
Name: "RKE2",
Days: 1,
Description: "",
})
repo.Create(&Training{
Name: "GitHub Actions",
Days: 1,
Name: "GitHub Actions",
Days: 1,
Description: "",
})
repo.Create(&Training{
Name: "GitLab CI",
Days: 1,
Name: "GitLab CI",
Days: 1,
Description: "",
})
repo.Create(&Training{
Name: "Prometheus",
Days: 2,
Name: "Prometheus",
Days: 2,
Description: "",
})
return repo