/
viktorphp
/
back-socket
Обзор
Документация
Войти
/
viktorphp
/
back-socket
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/controllers/ancestors/user-tree.controller.ts
54 строки
2 KB
Иванов Виктор Евгеньевич
[feat-tree]: добавить функционал для построения дерева предков
13 апр 2026, 21:34
13 апр 2026, 21:34
52b3f3d
Код
Авторство
О чём код?
import { Controller, Get, Param, Query, UseGuards, HttpStatus, ParseIntPipe, DefaultValuePipe, } from '@nestjs/common'; import { SessionGuard } from 'src/auth/session.guard'; import { AncestorTreeService } from 'src/services/ancestors/ancestor-tree.service'; @Controller('users') @UseGuards(SessionGuard) export class UserTreeController { constructor(private readonly treeService: AncestorTreeService) {} /** * GET /users/:userId/tree?depth=3 * Строит дерево предков с точки зрения конкретного пользователя. * Центром дерева является узел Ancestor, привязанный к userId. */ @Get(':userId/tree') async getUserTree( @Param('userId') userId: string, @Query('depth', new DefaultValuePipe(3), ParseIntPipe) depth: number, ) { const tree = await this.treeService.buildUserTree(userId, depth); return { status: HttpStatus.OK, tree }; } /** * GET /users/:userId/tree/flat * Возвращает плоский список всех предков в дереве пользователя. * Полезно для поиска по своему дереву или для отображения списком. */ @Get(':userId/tree/flat') async getUserTreeFlat(@Param('userId') userId: string) { const ancestors = await this.treeService.getUserTreeFlat(userId); return { status: HttpStatus.OK, ancestors }; } /** * GET /users/:userId/tree/free * Возвращает предков пользователя без каких-либо связей (нет отца, матери, детей, братьев/сестёр). * Используется для панели "свободных карточек" — их можно перетащить на дерево. */ @Get(':userId/tree/free') async getUserFreeAncestors(@Param('userId') userId: string) { const ancestors = await this.treeService.getUserFreeAncestors(userId); return { status: HttpStatus.OK, ancestors }; } }