HM-32. Пропатчить api под новый бекенд (#7)
This commit is contained in:
@ -45,7 +45,6 @@
|
||||
"array-bracket-spacing": ["error", "never"],
|
||||
"block-spacing": ["error", "never"],
|
||||
"brace-style": ["error", "1tbs", {"allowSingleLine": true}],
|
||||
"camelcase": "error",
|
||||
"capitalized-comments": ["error"],
|
||||
"comma-dangle": ["error", "only-multiline"],
|
||||
"comma-spacing": ["error", {"before": false, "after": true}],
|
||||
|
||||
@ -2,20 +2,45 @@ import {v4 as uuidv4} from 'uuid';
|
||||
|
||||
import StorageServiceApi from './StorageServiceAPI';
|
||||
|
||||
/**
|
||||
* @interface StoreListElement
|
||||
* @type {Object}
|
||||
* @property {string} _id - уникальный id элемента
|
||||
*/
|
||||
|
||||
/**
|
||||
* Класс создания api для списков данных
|
||||
*
|
||||
* @class StorageListApi
|
||||
* @param {string} key - уникальный ключ для api, который будет записан в сервисе
|
||||
* @param {string} description - описание api
|
||||
* @param {string} author - автор api
|
||||
* @param {string} service_name - имя сервиса, для которого используется api
|
||||
*/
|
||||
class StorageListApi {
|
||||
constructor (key) {
|
||||
constructor (key, description, author, service_name) {
|
||||
/**
|
||||
* Ключ api
|
||||
* @type {string}
|
||||
*/
|
||||
this.key = key;
|
||||
/**
|
||||
* @type {StorageServiceApi}
|
||||
*/
|
||||
this.api = new StorageServiceApi();
|
||||
this.api.create({key, description, author, service_name, value: []});
|
||||
/**
|
||||
* @type {Object}
|
||||
* @property {string} description - описание api
|
||||
* @property {string} author - автор api
|
||||
* @property {string} service_name - имя сервиса, для которого используется api
|
||||
*/
|
||||
this.metaInfo = {
|
||||
description, author, service_name
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Array<{_id: string}>} list - список элементов по которым осуществялется поиск
|
||||
* @param {StoreListElement[]} list - список элементов по которым осуществялется поиск
|
||||
* @param {string} _id - _id искомого элемента
|
||||
* @returns {number} - Возвращает индекс искомого эллемента по _id
|
||||
*/
|
||||
@ -24,15 +49,15 @@ class StorageListApi {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Array<{_id: string}>} list - новый список элементов
|
||||
* @returns {Promise<Array<{_id: string}>>} - возвращает обновленный список элементов
|
||||
* @param {StoreListElement[]} list - новый список элементов
|
||||
* @returns {Promise<Array<StoreListElement[]>} - возвращает обновленный список элементов
|
||||
*/
|
||||
_updateList = async (list) => {
|
||||
return await this.api.createOrUpdate(this.key, list);
|
||||
return await this.api.update(this.key, list);
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Promise<Array<{_id: string}>>} - возвращает все элементы списка
|
||||
* @returns {Promise<StoreListElement[]>} - возвращает все элементы списка
|
||||
*/
|
||||
request = async () => {
|
||||
const data = await this.api.find(this.key);
|
||||
@ -41,7 +66,7 @@ class StorageListApi {
|
||||
|
||||
/**
|
||||
* @param {string} _id - _id искомого элемента списка
|
||||
* @returns {Promise<{_id: string}>} - возвращает элемент списка или генерит ошибку
|
||||
* @returns {Promise<StoreListElement>} - возвращает элемент списка или генерит ошибку
|
||||
*/
|
||||
find = async (_id) => {
|
||||
const list = await this.request();
|
||||
@ -53,8 +78,8 @@ class StorageListApi {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {object} data - элемент списка
|
||||
* @returns {Promise<{_id: string}>} - Возвращает вновь созданный элемент с уникальным полем _id
|
||||
* @param {Object} data - элемент списка
|
||||
* @returns {Promise<StoreListElement>} - Возвращает вновь созданный элемент с уникальным полем _id
|
||||
*/
|
||||
create = async (data) => {
|
||||
const list = await this.request();
|
||||
@ -68,8 +93,8 @@ class StorageListApi {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {{_id: string}} data - элемент списка
|
||||
* @returns {Promise<{_id: string}>} - Возвращает обновленный элемент списка
|
||||
* @param {StoreListElement} data - элемент списка
|
||||
* @returns {Promise<StoreListElement>} - Возвращает обновленный элемент списка
|
||||
*/
|
||||
update = async (data) => {
|
||||
const list = await this.request();
|
||||
|
||||
@ -2,6 +2,16 @@ import axios from 'axios';
|
||||
|
||||
import {API_URL, ENDPOINT} from './consts';
|
||||
|
||||
/**
|
||||
* @interface Store
|
||||
* @type {Object}
|
||||
* @property {string} key - ключ апи
|
||||
* @property {unknown} value - любое значение апи
|
||||
* @property {string} description - описание апи
|
||||
* @property {string} service_name - имя сервиса в котором используется апи
|
||||
* @property {string} author - автор, который создал апи
|
||||
*/
|
||||
|
||||
/**
|
||||
* Класс для работы с store-service api
|
||||
* @class
|
||||
@ -10,8 +20,8 @@ class StorageServiceApi {
|
||||
URL = `${API_URL}${ENDPOINT}`;
|
||||
|
||||
/**
|
||||
* Запрос полного списка всех пар ключ-значение
|
||||
* @returns {Promise<Array<{key: string, value: unknown}>>} - Возвращает список всех пар ключ-значение
|
||||
* Запрос полного списка всех api
|
||||
* @returns {Promise<Store[]>} - Возвращает список всех api
|
||||
*/
|
||||
request = async () => {
|
||||
const {data} = await axios.get(this.URL);
|
||||
@ -19,9 +29,9 @@ class StorageServiceApi {
|
||||
}
|
||||
|
||||
/**
|
||||
* Запрос одной пары ключ-значение
|
||||
* Запрос api по ключу
|
||||
* @param {string} key - ключ хранилища в api
|
||||
* @returns {Promise<unknown>} - Возвращает значение по указанному ключу
|
||||
* @returns {Promise<Store>} - Возвращает api по указанному ключу
|
||||
*/
|
||||
find = async (key) => {
|
||||
const {data} = await axios.get(`${this.URL}/${key}`);
|
||||
@ -29,20 +39,29 @@ class StorageServiceApi {
|
||||
}
|
||||
|
||||
/**
|
||||
* Создание или обновление пары ключ-значение
|
||||
* @param {string} key - ключ хранилища в api
|
||||
* @param {unknown} value - значение, которое будет хранится под указанным ключом
|
||||
* @returns {Promise<unknown>} - возвращает вновь созданный элемент
|
||||
* Создание api
|
||||
* @param {Store} createData - объект создания api
|
||||
* @returns {Promise<Store>} - Возвращает вновь созданный элемент
|
||||
*/
|
||||
createOrUpdate = async (key, value) => {
|
||||
const {data} = await axios.post(this.URL, {key, value});
|
||||
create = async (createData) => {
|
||||
const {data} = await axios.post(this.URL, createData);
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаление пары ключ-значение
|
||||
* Обновление api
|
||||
* @param {Store} updateData - объект обновления api
|
||||
* @returns {Promise<Store>} - Возвращает обновленный элемент
|
||||
*/
|
||||
update = async (updateData) => {
|
||||
const {data} = await axios.put(this.URL, updateData);
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаление api по ключу
|
||||
* @param {string} key - ключ хранилища api
|
||||
* @returns {Promise<string>} - возвращает 'ok', если удаление было выполнено
|
||||
* @returns {Promise<Store>} - Возвращает удаленный элемент
|
||||
*/
|
||||
remove = async (key) => {
|
||||
const {data} = await axios.delete(`${this.URL}/${key}`);
|
||||
|
||||
42
store.http
Normal file
42
store.http
Normal file
@ -0,0 +1,42 @@
|
||||
// Запрос всех пар ключей апи
|
||||
GET http://vigdorov.ru:4001/store HTTP/1.1
|
||||
|
||||
###
|
||||
// Запрос апи по ключу
|
||||
GET http://vigdorov.ru:4001/store/testApi HTTP/1.1
|
||||
|
||||
###
|
||||
// Создание нового апи
|
||||
POST http://vigdorov.ru:4001/store HTTP/1.1
|
||||
content-type: application/json
|
||||
|
||||
{
|
||||
"key": "testApi",
|
||||
"value": {
|
||||
"name": "ivan",
|
||||
"age": 16
|
||||
},
|
||||
"description": "тестовое апи",
|
||||
"service_name": "test-api",
|
||||
"author": "vigdorov"
|
||||
}
|
||||
|
||||
###
|
||||
// Обновление существующего апи
|
||||
PUT http://vigdorov.ru:4001/store HTTP/1.1
|
||||
content-type: application/json
|
||||
|
||||
{
|
||||
"key": "testApi",
|
||||
"value": {
|
||||
"name": "ivan23",
|
||||
"age": 22
|
||||
},
|
||||
"description": "тестовое апи",
|
||||
"service_name": "test-api",
|
||||
"author": "vigdorov23422"
|
||||
}
|
||||
|
||||
###
|
||||
// Удаление апи
|
||||
DELETE http://vigdorov.ru:4001/store/testApi HTTP/1.1
|
||||
Reference in New Issue
Block a user