Skip to content

hardmet/memologio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

memologio

Описание

Цель проекта - создать сервис для поиска и редактора мемов. Это учебный проект для проб стиля разработки tagless-final совместно с функциональными библиотеками cats, cats-effect, tofu и др.

Проект представляет собой web-application, позволяющий добавлять, просматривать, удалять и редактировать мемы.

Основные модули платформы:

  • бэк-енд клиента для просмотра контента пользователями (реализован базовый кейс)
  • фронт-енд для бэк-енда (не реализован)
  • скраппер для сбора данных и наполнения хранилища мемов (не реализован)

Функции модуля бэк-енда клиента:

  • Базовый CRUD сценарий для сущности - пост, имеющий url, дату публикации - published, число лайков - likes:
    • Создание поста по url, published, likes - done
    • Редактирование любого поля поста по отдельности, либо все сразу - done
    • Удаление поста по id, всех постов - done
    • Чтение всех постов - done
    • Фильтрации при чтении постов из хранилища:
      • by published (date or datetime parameter) done
      • by id (string parameter) done
      • by pages with n on one page (int page-size, int page) pending
      • with likes below (int parameter) pending
      • with likes above (int parameter) pending

Stack:

  • Scala
  • cats
  • cats-effect
  • http4s
  • doobie (or skunk)
  • postgres(using docker image)
  • tofu-logging
  • derevo-pureconfig

Особенности в реализации

В данным проекте реализовано два коннектора к БД, один на основе doobie второй на основе skunk. skunk - библиотека для работы с БД postgres, реализованная в чистом функциональном стиле одним из создателей doobie. Сменить коннектор можно перезапустив приложение, заменив перед этим строчку в классе ApplicationBuilder:

override val dbConnector: DBConnector[F, UUID] = new DoobieConnector[F]()

на

import infrastructure.repository.skunk.SkunkConnector
override val dbConnector: DBConnector[F, UUID] = new SkunkConnector[F]()

Оба коннектора поддерживают все объявленные операции при обращении к БД.

Инструкции по тестированию

Инициализация БД:

  1. установить docker клиент
  2. развернуть образ с базой данных, командой docker-compose up -d из корня проекта
  3. подключиться к БД любым клиентом, используя строку подключения: jdbc:postgresql://localhost:54320/postgres username/password: example
  4. создать БД для нужд проекта командой в клиенте: create database memologio; commit;
  5. подключиться к БД memologio клиентом по адресу jdbc:postgresql://localhost:54320/memologio username/password: example и выполнить команды из скрипта src/main/resources/db_initialization.sql

Запустить приложение можно используя sbt выполнив sbt run

В качестве клиента для ручного тестирования в данный момент используется файл client.http в корне проекта. В нем описаны основные запросы к бэк-енду клиента для проверки работоспособности. С его помощью можно проверить работоспособность приложения.

Дальнейшее развитие функциональности бэк-енда клиента:

  • Добавить сущность пользователя, роли, модуль авторизации.
  • Добавить сущность теги. Осуществить связь многие ко многим к постам.
  • Возможность создавать свои мемы с помощью шаблонов, добавлять новые шаблоны. Сущность шаблон, связь многие к одному к пользователям.
  • Вывод трендов на основе лайков
  • Добавить модуль Скрапер мемов: сервис, позволяющий выкачивать из открытых источников мемы, парсить ленты новостей и сохранять в общее хранилище.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors