Giter Club home page Giter Club logo

weblifo's Introduction

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

weblifo's People

Contributors

evillord666 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.