Async API сервис для получения контента: жанры, персоны, фильмы.
- ETL (submodule)
- API
- Сервис, тесты: жанры, персоны
- Redis caching
- Сервис, тесты: поиск по фильмам
- Модели
- Nginx
- Скопировать файл ./.env.example в файл ./.env
- Заполнить .env своими данными
- через Makefile выполнить команды:
- make up
- make fill (потребуется несколько минут для загрузки дамп в ElasticSearch)
- make up - запуск
- make fill - заполнить данными elasticsearch
- make down - удалить созданные контейнеры
- make downv - удалить созданные контейнеры, включая volumes
- make test
http://localhost:80/api/openapi
Смотреть .env.example
https://github.com/likeinlife/Async_API_sprint_2/pull/14 https://github.com/likeinlife/Async_API_sprint_2/pull/13
https://github.com/likeinlife/Async_API_sprint_1/pull/17 https://github.com/likeinlife/Async_API_sprint_1/pull/16
ETL-процесс сделан в другом репозитории, т.к. это независимые сервисы. https://github.com/likeinlife/YA-ETL Дампы сделаны с помощью инструмента elasticsearch-dump: https://github.com/elasticsearch-dump/elasticsearch-dump
movie
{
id: uuid,
imdb_rating: float,
genre: {
id: uuid,
name: str
},
title: string,
description: string,
directors: [
{
id: uuid,
name: string
}
],
actors: [
{
id: uuid,
name: string
}
],
writers: [
{
id: uuid,
name: string
}
]
}
genre
{
id: uuid,
name: string,
description: string,
movies: [
{
id: uuid,
title: string,
imdb_rating: float
}
]
}
person
{
id: uuid,
name: string,
movies: [
{
id: uuid,
title: string,
imdb_rating: float,
roles: [string]
}
]
}