From 4e33f4cda33a7d9774fb6d455beb120f03f0fa1b Mon Sep 17 00:00:00 2001 From: Oleg Semashko <159064740+Olegsuus@users.noreply.github.com> Date: Tue, 18 Jun 2024 21:16:28 +0300 Subject: [PATCH] Update README.md added README.md --- README.md | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8037796..e1e70b2 100644 --- a/README.md +++ b/README.md @@ -1 +1,89 @@ -# news-api \ No newline at end of file +Написать json REST сервер с двумя ручками: + +POST /edit/:Id - изменение новости по Id +GET /list - список новостей +БД - mysql (можно и postgres, мы перешли на него). + +В качестве сервера использовать fiber. Для работы с базой reform. + +Соединение с базой должно использовать connection pool. Все настройки через переменные окружения и/или viper. + +БД: + +-- +-- Структура таблицы `News` +-- + +CREATE TABLE `News` ( + `Id` bigint NOT NULL, + `Title` tinytext NOT NULL, + `Content` longtext NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `NewsCategories` +-- + +CREATE TABLE `NewsCategories` ( + `NewsId` bigint NOT NULL, + `CategoryId` bigint NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +-- +-- Индексы сохранённых таблиц +-- + +-- +-- Индексы таблицы `News` +-- +ALTER TABLE `News` + ADD PRIMARY KEY (`Id`); + +-- +-- Индексы таблицы `NewsCategories` +-- +ALTER TABLE `NewsCategories` + ADD PRIMARY KEY (`NewsId`,`CategoryId`); + +-- +-- AUTO_INCREMENT для сохранённых таблиц +-- + +-- +-- AUTO_INCREMENT для таблицы `News` +-- +ALTER TABLE `News` + MODIFY `Id` bigint NOT NULL AUTO_INCREMENT; +Т.е. легко видеть, что связка новостей и категорий идёт в отдельной таблице. + +Формат входных данных для первой ручки: + +{ + "Id": 64, + "Title": "Lorem ipsum", + "Content": "Dolor sit amet foo", + "Categories": [1,2,3] +} +При этом, если какое-то из полей не задано - это поле не должно быть обновлено. + +Формат данных на выходе list: + +{ + "Success": true, + "News": [ + { + "Id": 64, + "Title": "Lorem ipsum", + "Content": "Dolor sit amet foo", + "Categories": [1,2,3] + }, + { + "Id": 1, + "Title": "first", + "Content": "tratata", + "Categories": [1] + } + ] +}