An open API service indexing awesome lists of open source software.

https://github.com/candygoose/server_with_ci


https://github.com/candygoose/server_with_ci

Last synced: 5 months ago
JSON representation

Awesome Lists containing this project

README

          

В этом задании вы должны будете написать небольшой сервис и настроить в нем ci+cd.

#### Требования

1) Нужно написать CRUD (аббревиатура от Create Read Update Delete) приложение: небольшое хранилище заметок(требования к нему - ниже)
2) Написать тесты на ваше приложение(требуемое покрытие - 20%)
3) Настроить CI/CD

В конце я буду проверять:

* Ваше приложение доступно из интернета
* Приложение работает согласно требованиям
* У вас есть CI, он работает корректно
* В CI настроены 3 джобы: build (проверяет что ваш код билдится), test (гоняет по вашему коду тесты и проверяет, что они успешно проходят), lint (гоняет линтеры по вашему коду)
* По умолчанию в golangci-lint использовано 10 линтеров.
Создайте свой конфигурационный файл, и включите помимо 10 дефолтных,
еще 15 наиболее полезных на ваш взгляд линтеров (полный список линтеров тут )
* При мерже/пуше в мастер должна срабатывать 4ая джоба: deploy, которая будет раскладывать ваше приложение на сервер

#### Требования к приложению

Здесь требования к вашему приложению, что вы будете деплоить на сервер.
Приложение небольшое и несложное, основная задача дз будет именно в ci/cd.
Хранить данные можно в памяти.

Оперировать нужно сущностью Note с полями:

* ID - число, инкрементальный ID
* Text - строка, текст заметки
* CreatedAt - время создания(изменяется только бекендом, с клиента не передаем)
* UpdatedAt - время последнего обновления(изменяется только бекендом, с клиента не передаем)

Ваше приложение должно принимать и отвечать в только в json формате. Также оно должно удовлетворять следующей апишке:

* GET /note/{id} - получить Note по id
* POST /note - создать Note
* PUT /note/{id} - изменить Note по id
* DELETE /note/{id} - удаляем Note по id
* GET /note - получить список Note, запрос должен уметь обрабатывать query-параметр: order_by("id","text","created_at","updated_at"), который указывает, что перед отдачей список нужно отсортировать по такому-то полю