Для локального запуска приложения нужен Docker.
Если приложение ранее запускалось и в докере остались images и volumes, можно запустить команду make cleandocker
, чтобы все это удалить, или удалить вручную, используя приложение Dcoker.
Чтобы запустить приложение, нужно:
- сбилдить приложение
yarn build:development
илиyarn watch
. Во втором случае, дальнейшие шаги нужно предпринимать в новом окне терминала. - развернуть приложение в контейнерах
docker compose up
.
Архитектура приложения состоит из трех основных слоев:
- Routes - определяет какие сервисные функции вызывать для каких эндпоинтов. Имеет доступ к сервисам.
- Services - содержит основную бизнес логику. Принимает данные от слоя Routes, обрабатывает их и возвращает новые данные в тот же слой. Имеет доступ к другим сервисам и репозиториям.
- Repositories - обеспечивает доступ к хранимым данным. На выходе оперирует исключительно объектами. Имеет доступ только к другим репозиториям.
Маршруты находятся в папке ./routes. Для добавления маршрута (маршрутов), надо создать модуль, который возвращает массив объектов релизующих IRouteOptions
. Для получения такого обхекта надо создать экземпляр класса Route, задать настройки, используя цепочку вызовов, в конце которой вызвать метод build
:
import { Route } from "../core/Route";
export default [
new Route()
.path('/users')
.method('get')
.useAuth(true)
.permission('admin')
.argsConverter((req, res) => ({ req }))
.handler((req) => {
// . . .
})
.build(),
// . . .
]
Для доступа к сервисам внутри хендлера надо использовать второй параметр, содержащий контекст хендлера. В контексте, также, содержится информация о пользователе, полученная при аутентификации:
new Route()
// . . .
.handler((args, context) => {
const { services, user } = context;
})
.build(),
// . . .