diff --git a/api/v1/openapi.yaml b/api/v1/openapi.yaml index 1c6ec06..748d4e4 100644 --- a/api/v1/openapi.yaml +++ b/api/v1/openapi.yaml @@ -161,9 +161,12 @@ components: format: int8 minimum: 1 maximum: 5 + description: + type: string required: - name - days + - description Training: allOf: diff --git a/internal/server/api.gen.go b/internal/server/api.gen.go index c997474..1404ccf 100644 --- a/internal/server/api.gen.go +++ b/internal/server/api.gen.go @@ -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 diff --git a/internal/server/api.go b/internal/server/api.go index f3de9fc..ebd953e 100644 --- a/internal/server/api.go +++ b/internal/server/api.go @@ -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 } diff --git a/pkg/training/model.go b/pkg/training/model.go index 8f8ab0f..17f82fc 100644 --- a/pkg/training/model.go +++ b/pkg/training/model.go @@ -11,7 +11,8 @@ func NewTrainingID() TrainingID { } type Training struct { - ID TrainingID - Name string - Days int8 + ID TrainingID + Name string + Days int8 + Description string } diff --git a/pkg/training/repository.go b/pkg/training/repository.go index 6171f8d..af3136c 100644 --- a/pkg/training/repository.go +++ b/pkg/training/repository.go @@ -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