core/README.md

66 lines
2.7 KiB
Markdown
Raw Normal View History

2024-01-26 10:28:49 +00:00
## Техстек
2021-08-20 23:17:15 +00:00
2022-11-22 05:18:48 +00:00
- sqlalchemy
2021-08-20 23:17:15 +00:00
- redis
- ariadne
- starlette
2024-01-26 10:28:49 +00:00
- granian
2021-08-20 23:17:15 +00:00
2024-03-13 20:02:41 +00:00
## Локальная разработка
2021-08-20 23:17:15 +00:00
2024-01-26 10:28:49 +00:00
Подготовьте зависимости
2021-08-20 23:17:15 +00:00
2024-01-26 10:28:49 +00:00
osx:
2021-08-20 23:17:15 +00:00
```
2022-12-03 09:50:18 +00:00
brew install redis nginx postgres
2021-08-20 23:17:15 +00:00
brew services start redis
```
2024-01-26 10:28:49 +00:00
debian/ubuntu:
2022-05-31 07:03:50 +00:00
```
2022-08-09 10:17:31 +00:00
apt install redis nginx
2021-08-20 23:17:15 +00:00
```
2024-01-26 10:28:49 +00:00
Затем запустите postgres, redis и наш API-сервер:
2023-11-27 08:12:42 +00:00
```shell
mkdir .venv
python3.12 -m venv .venv
poetry env use .venv/bin/python3.12
poetry update
2024-01-29 02:56:28 +00:00
poetry run server.py
2022-06-14 05:41:40 +00:00
```
2024-08-09 06:37:06 +00:00
### Полезные команды
```shell
poetry run ruff check . --fix --select I # линтер и сортировка импортов
poetry run ruff format . --line-length=120 # форматирование кода
```
2024-01-26 10:28:49 +00:00
## Подключенные сервисы
2021-08-20 23:17:15 +00:00
2024-01-27 08:45:29 +00:00
Для межсерверной коммуникации используются отдельные логики, папка `services/*` содержит адаптеры для использования базы данных, `redis`, кеширование и клиенты для запросов GraphQL.
2021-08-20 23:17:15 +00:00
2024-01-26 10:28:49 +00:00
### auth.py
2022-05-31 12:19:05 +00:00
2024-01-27 08:45:29 +00:00
Задайте переменную окружения `WEBHOOK_SECRET` чтобы принимать запросы по адресу `/new-author` от [сервера авторизации](https://dev.discours.io/devstack/authorizer). Событие ожидается при создании нового пользователя. Для авторизованных запросов и мутаций фронтенд добавляет к запросу токен авторизации в заголовок `Authorization`.
2022-11-27 08:19:38 +00:00
2024-01-26 10:28:49 +00:00
### viewed.py
2022-11-27 08:19:38 +00:00
2024-01-28 13:26:40 +00:00
Задайте переменные окружения `GOOGLE_KEYFILE_PATH` и `GOOGLE_PROPERTY_ID` для получения данных из [Google Analytics](https://developers.google.com/analytics?hl=ru).
2023-10-15 18:27:44 +00:00
2024-01-26 10:28:49 +00:00
### search.py
2023-11-22 16:38:39 +00:00
2024-01-29 02:17:47 +00:00
Позволяет получать результаты пользовательских поисковых запросов в кешируемом виде от ElasticSearch с оценкой `score`, объединенные с запросами к базе данных, запрашиваем через GraphQL API `load_shouts_search`. Требует установка `ELASTIC_HOST`, `ELASTIC_PORT`, `ELASTIC_USER` и `ELASTIC_PASSWORD`.
2023-11-22 16:38:39 +00:00
2024-01-26 10:28:49 +00:00
### notify.py
2023-11-22 16:38:39 +00:00
2024-01-27 08:36:03 +00:00
Отправка уведомлений по Redis PubSub каналам, согласно структуре данных, за которую отвечает [сервис уведомлений](https://dev.discours.io/discours.io/notifier)
2023-11-22 16:38:39 +00:00
2024-01-26 10:28:49 +00:00
### unread.py
2023-11-22 16:38:39 +00:00
2024-01-27 08:45:29 +00:00
Счетчик непрочитанных сообщений получается через Redis-запрос к данным [сервиса сообщений](https://dev.discours.io/discours.io/inbox).