Skip to content

REST API интерфейс приложения Заметок. 1) Clean Architecture, MVC. 2) Инъекция зависимостей. 3) Валидация орфографических ошибок с помощью внешнего API Yandex Speller. 4) Авторизация, Аутентификация с помощью JWT токена. 5) Middleware для валидации cookies. 6) Docker, Трейсинг Jaeger. 7) Индексы, пагинация, gracefull shutdown 8) Rate limiter

Notifications You must be signed in to change notification settings

Rryowa/kod-trainee

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Заметки: NoteService - internal/service/note.go

1) AddNote -
    Валидирует заголовок и текст заметки с помощью Yandex Speller.
    Достает информацию о пользователе из Context
    Затем добавляет заметку в базу в соответствии с информацией о пользователе.
    Использует интерфейс Storage для взаимодействия с бд.
    
2) GetNotes -
    Достает информацию о пользователе из Context        
    Выводит список заметок пользователя постранично и отсортированный по дате.
    Последние доабвленные являются первыми выведенными.
    
    Использует интерфейс Storage для взаимодействия с бд.

Авторизация: UserService - internal/service/user.go

1) SingUp -
    Создает юзера.
2) LogIn -
    Проверяет юзера и создает куки
    Использует SessionService
    Который создает jwt токен и записывает его в куки.
3) LogOut -
    Удаляет куки
    Использует SessionService
    Который создает такой же куки но с пустым value.

Аутентификация: Middleware - internal/middleware

Без валидного JWT токена в куки не получится ничего сделать.
Использует SessionService - internal/service/session.go.
Который достает JWT токен из куки и проверяет его.
Затем записывает данные пользователя из JWT токена в Context

База данных: PostgreSQL

Взаимодействие с базой осуществляется с помощью pgx.Pool
Есть hash индексы для быстрого нахождения юзера по username и индекс по user_id

Трейсинг - http://localhost:16686/ service - kod

About

REST API интерфейс приложения Заметок. 1) Clean Architecture, MVC. 2) Инъекция зависимостей. 3) Валидация орфографических ошибок с помощью внешнего API Yandex Speller. 4) Авторизация, Аутентификация с помощью JWT токена. 5) Middleware для валидации cookies. 6) Docker, Трейсинг Jaeger. 7) Индексы, пагинация, gracefull shutdown 8) Rate limiter

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published