module
0.0.0-20240612165619-22e75e8cb46a
Repository: https://github.com/eequillibrium/posts.git
Documentation: pkg.go.dev
# README
Go application for post, comments and user storaging with GraphQL, postgresql
Запуск
Через compose:
- изменить host на postgres_db в config/config.yaml
- docker-compose up --build
Через cmd/main.go:
- изменить host на localhost в config/config.yaml
- cmd/main.go из папки posts
Если нужно запустить с INMEMORY хранилищем, то изменить в docker-compose.yml STORAGE_MODE=INMEMORY
Если нужно запустить с POSTGRES хранилищем, то изменить в docker-compose.yml STORAGE_MODE=POSTGRES
GraphQL playground на localhost:8080
Описание
Mutations:
- createComments: создает комментарии в бд и записывает в канал уведомление, которое приходит в Subscriptons notification(postId: Int!), из которого читает клиент, на чтение из канала дается 5 секунд
- createPost: создает пост
- createUser: создает юзера
Queries:
- posts: возвращает посты без подгрузки комментариев с offset-limit пагинацией
- post: подгружает(кеширует) в in-memory комментарии по postID и возвращает limit комментариев на каждом уровне
- paginationComment: возвращает limit комментариев верхнего уровня с любой вложенностью
Subscriptions: ⋅⋅notification: читает по postId: Int! из канала все приходящие
!для nested комментариев сделал запись в gqlgen.yml, чтобы он сгерерировал отдельный резолвер и читал из бд комменты с parent_id comment-а, который запрашивается