Skip to content

Lifo (stack) with Web interface (REST API) and Postgres

License

Notifications You must be signed in to change notification settings

EvilLord666/WebLiFo

Repository files navigation

WebLiFo

Web-интерфейс (REST API) для управления LIFO (Last In First Out - стэк), написанный на go. WebLiFo REST API оперирует ресурсом lifo - /api/lifo

1. Основные характеристики объектов можели данных lifo и item

  • наименование (название стэка) - поле name (string);
  • описание (краткая характеристика) - поле description (string)
  • размер (глубина) lifo в ячейках - size;
  • элементы стека - item тип данных (т.е. то что находится в ячейке LIFO) - []byte

2. Ограничения

  • мы не задаем ограничения элементов стэка по размеру, т.е. элементами стэка могут быть слайсы байт произвольной длины (размера);
  • данные будут храниться в таблицах БД (Postgres), мы предполагаем, что данные будут небольшими (не более нескольких кБ), поэтому мы храним их напрмую в колонке БД, в случае если предполагается, что размер данных большой, необходимо использовать STREAM;
  • для обеспечения возможности добавления извлечения элементов из стэка без необходимости индексировать все элементы они будут храниться в виде односвязного списка т.е. у каждого item будет колонка previuos_item_id (у верхнего будет NULL), поэтому при извлечении/добавлении нового элемента в стэк потребуется отредактировать только 1 элемент из таблицы items.

3. Описание API для управления стэками

  • GET /api/lifo - возвращает коллекцию метаинформации (без items) стэков (без элементов)
  • GET /api/lifo/{id} - возвращает метаинформацию по стэку по идентификатору {id}
  • GET /api/lifo/{id}/items - возвращает стэк со всеми его элементами
  • POST /api/lifo - создает новый пустой стэк;
  • PUT /api/lifo/{id} - редактирует метаинформацию стэка;
  • DELETE /api/lifo/{id} - удаляет стэк со всеми его элементами;
  • POST /api/lifo/flush - выполняет очистку стэка (удаляет его элементы);
  • POST /api/lifo/{id}/push - добавляет элемент в стэк с идентификатором {id};
  • POST /api/lifo/{id}/pop - извлекает элемент из стэка с идентификатором {id}.

4. Запуск в docker-container

  1. Запуск с предварительной сборкой (пересборкой образов)
docker-compose up --build
  1. Удаление ранее собранных образов
docker-compose down

Доступ к Web API можно осуществить по flhtce: localhost:8765

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy