1) AddNote -
Валидирует заголовок и текст заметки с помощью Yandex Speller.
Достает информацию о пользователе из Context
Затем добавляет заметку в базу в соответствии с информацией о пользователе.
Использует интерфейс Storage для взаимодействия с бд.
2) GetNotes -
Достает информацию о пользователе из Context
Выводит список заметок пользователя постранично и отсортированный по дате.
Последние доабвленные являются первыми выведенными.
Использует интерфейс Storage для взаимодействия с бд.
1) SingUp -
Создает юзера.
2) LogIn -
Проверяет юзера и создает куки
Использует SessionService
Который создает jwt токен и записывает его в куки.
3) LogOut -
Удаляет куки
Использует SessionService
Который создает такой же куки но с пустым value.
Без валидного JWT токена в куки не получится ничего сделать.
Использует SessionService - internal/service/session.go.
Который достает JWT токен из куки и проверяет его.
Затем записывает данные пользователя из JWT токена в Context
Взаимодействие с базой осуществляется с помощью pgx.Pool
Есть hash индексы для быстрого нахождения юзера по username и индекс по user_id