Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
ac112b3
renames env example
Adonariz May 24, 2026
4409670
adds cli script
Adonariz May 24, 2026
d8de39a
changes naming of variables
Adonariz May 24, 2026
9fdf4cb
removes booleanFromString helper
Adonariz May 24, 2026
ac03a95
renames favorite service methods
Adonariz May 24, 2026
9ff86b0
renames token payload type file
Adonariz May 24, 2026
66236dd
rollbacks create offer dto
Adonariz May 24, 2026
5d6ae42
updates workflow
Adonariz May 24, 2026
b4678c3
updates import command with rest config
Adonariz May 24, 2026
11b3a0a
updates workflow with new env
Adonariz May 24, 2026
a4f1363
removes unused type guards and helper
Adonariz May 24, 2026
ee54c7f
removes unused favorite service methods
Adonariz May 24, 2026
457fca8
updates favorite service
Adonariz May 24, 2026
39319be
removes logger from favorite service
Adonariz May 24, 2026
3ceb398
refactors tsv file reader for readability
Adonariz May 24, 2026
73bb6ac
moves register routes from constructor to method in controllers
Adonariz May 24, 2026
63c2b03
refactors tsv offer generator
Adonariz May 24, 2026
c52c663
refactors path transformer
Adonariz May 24, 2026
1c3828c
refactors parse token middleware
Adonariz May 24, 2026
3391561
adds token check for checkAuth
Adonariz May 24, 2026
810edc4
fixes http exception filter status code
Adonariz May 25, 2026
24a97e7
refactors adding favorite flag in offer service
Adonariz May 25, 2026
8398390
moves offer validation properties to constant
Adonariz May 25, 2026
528872d
moves comment validation properties to constant
Adonariz May 25, 2026
215943b
updates offer dto validation messages
Adonariz May 25, 2026
f38dd6f
moves user validation properties to constant
Adonariz May 25, 2026
5aa40f0
adds city check to findPremiumByCity
Adonariz May 25, 2026
0f758f6
adds sort to find offers
Adonariz May 25, 2026
39f2175
adds owner check to offer delete and update
Adonariz May 25, 2026
f0226a7
adds owner check to user update
Adonariz May 25, 2026
866f561
adds comments sort and limit
Adonariz May 25, 2026
a7257d4
fixes comments count in offers response
Adonariz May 25, 2026
3a684d3
adds constants to entities
Adonariz May 25, 2026
06ee93d
changes user path specification and comments path specification
Adonariz May 25, 2026
a0b8511
updates specification
Adonariz May 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .env-example → .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,7 @@ DB_PASSWORD=password
DB_NAME=six-cities-2
DB_PORT=27017
UPLOAD_DIRECTORY=upload
STATIC_DIRECTORY_PATH=static

JWT_SECRET=secret
DEFAULT_USER_PASSWORD = password
115 changes: 87 additions & 28 deletions Workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,69 +10,128 @@ npm install

Команда запустит процесс установки зависимостей проекта из **npm**.

### Сценарии
## Запуск проекта

В `package.json` предопределено несколько сценариев.
Ниже приведён рекомендуемый порядок локального запуска проекта.

#### Скомпилировать проект
### 1. Установить зависимости

Если зависимости ещё не установлены, выполните:

```bash
npm run compile
npm install
```

Создаст директорию `dist` и скомпилирует проект.
### 2. Подготовить файл `.env`

Приложение читает настройки из файла `.env`. Создайте его в корне проекта и укажите основные переменные окружения:

```env
PORT=3000
SALT=iamsalt
HOST=27.0.0.1
DB_HOST=localhost
DB_USER=admin
DB_PASSWORD=test
DB_PORT=27017
DB_NAME=six-cities-2
UPLOAD_DIRECTORY=upload
STATIC_DIRECTORY_PATH=static
JWT_SECRET=secret
```

#### Удалить скомпилированный проект
Назначение переменных:

```bash
npm run clean
```
- `PORT` - порт, на котором будет запущен REST API.
- `SALT` - соль для хеширования паролей.
- `HOST` - хост приложения.
- `DB_HOST`, `DB_USER`, `DB_PASSWORD`, `DB_PORT`, `DB_NAME` - параметры подключения к MongoDB.
- `UPLOAD_DIRECTORY` - директория для загружаемых файлов.
- `STATIC_DIRECTORY_PATH` - директория со статическими файлами.
- `JWT_SECRET` - секрет для подписи JWT.
- `DEFAULT_USER_PASSWORD` - пароль по умолчанию для создания новых пользователей при выполнении импорта.

### 3. Запустить MongoDB

Удаляет директорию `dist`. Используется перед компиляцией.
Перед стартом приложения убедитесь, что сервер MongoDB запущен и доступен по параметрам из `.env`. Если база не будет доступна, REST API не сможет завершить инициализацию.

#### Собрать проект
### 4. Собрать проект

```bash
npm run build
```

Выполняет сборку проекта: удаляет ранее скомпилированный проект и компилирует заново.

#### Проверить линтером
### 5. Запустить REST API

Для обычного запуска используйте:

```bash
npm run lint
npm start
```

Запуск проверки проекта статическим анализатором кода **ESLint**.
Команда выполнит сборку и запустит сервер из `dist/main.rest.js`.

Линтер проверяет файлы только внутри директории `src`.
### 6. Запустить проект в режиме разработки

**Обратите внимание**, при запуске данной команды, ошибки выводятся в терминал.

#### Запустить ts-модуль без компиляции
Во время разработки удобнее использовать:

```bash
npm run ts -- <Путь к модулю с ts-кодом>
npm run start:dev
```

Пакет `ts-node` позволяет выполнить TS-код в Node.js без предварительной компиляции. Используется только на этапе разработки.
Этот сценарий также пересобирает проект перед запуском, а затем поднимает сервер через `nodemon` и выводит форматированные логи через `pino-pretty`.

### 7. При необходимости поднять мок-сервер

#### Запустить проект
Если нужен локальный источник тестовых данных, выполните:

```bash
npm start
npm run mock:server
```

В процессе запуска проекта будет выполнен процесс «Сборки проекта» и запуска результирующего кода.
После этого `json-server` поднимет мок-сервер на порту `3123`.

#### Запустить моковый сервер
## Сценарии

```bash
npm run mock:server
```
В `package.json` предопределены следующие сценарии:

### `npm start`

Собирает проект и запускает REST API из `dist/main.rest.js`. Основной сценарий для локального запуска приложения.

### `npm run start:dev`

Собирает проект и запускает REST API в режиме разработки через `nodemon`. Подходит для разработки, когда важно автоматически перезапускать сервер и видеть читаемые логи.

### `npm run build`

Полная сборка проекта: сначала удаляет старую директорию `dist`, затем компилирует TypeScript-код заново.

### `npm run lint`

Проверяет код в директории `src` линтером **ESLint**. Используется после изменений и перед сдачей проекта, чтобы убедиться, что код соответствует правилам.

### `npm run compile`

Компилирует TypeScript в JavaScript по конфигурации из `tsconfig.json`. Удобно использовать, если очистка `dist` не требуется.

### `npm run clean`

Удаляет директорию `dist` с результатом предыдущей сборки. Обычно используется как подготовительный шаг перед новой компиляцией.

### `npm run ts -- <путь-к-файлу>`

Запускает TypeScript-файл напрямую через `ts-node` без предварительной сборки. Полезно для отладки отдельных модулей и запуска служебных скриптов во время разработки.

### `npm run cli -- <аргументы>`

Собирает проект и запускает CLI-приложение из `dist/main.cli.js`. Используется для работы с консольными командами проекта.

### `npm run mock:server`

Используется для работы команды `--generate` для генерации тестовых данных.
Запускает `json-server` на порту `3123` с данными из `mocks/mock-server-data.json`. Используется для работы команды `--generate` для генерации тестовых данных.

## Структура проекта

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"compile": "tsc -p tsconfig.json",
"clean": "rimraf dist",
"ts": "node --loader ts-node/esm",
"cli": "npm run build && node ./dist/main.cli.js",
"mock:server": "json-server ./mocks/mock-server-data.json --port 3123"
},
"devDependencies": {
Expand Down
Loading
Loading