import { Body, Controller, Delete, Get, Inject, Param, Post, Query, } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { AuthenticateCondition } from '../../authentication/authentication.decorator'; import { Permissions } from '../../authentication/permissions.enum'; import { CatalogService } from './catalog.service'; import { DadosferaLogger } from 'dadosfera-logs'; @ApiTags('Catalog') @Controller('catalog') @AuthenticateCondition((req, user) => { let action; switch (req.method) { case 'POST': action = 'CREATE'; break; case 'PUT': action = 'UPDATE'; break; default: action = req.method; } return user.permissions.includes(Permissions.CATALOG[action].seqid); }) export class CatalogController { logger: any; constructor( @Inject(DadosferaLogger) dadosferaLogger: DadosferaLogger, private catalogService: CatalogService, ) { this.logger = dadosferaLogger.logger; } @Get('all') async catalogAll(@Body() body) { this.logger.info(`/catalog - ON CATALOG ALL ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.catalogAll(body); return res; } @Get('data_apps') async dataAppsAll(@Body() body) { this.logger.info(`/catalog - ON FIND ALL DATA APPS ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.dataAppsAll(body); return res; } @Delete('data_apps/:id') async dataAppsOne(@Param() params, @Body() body) { this.logger.info(`/catalog - ON FIND ONE DATA APP ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const { id } = params; const res = await this.catalogService.dataAppsOne(id, body); return res; } @Get('dashboard-metabase') async getAllDashboardMetabase(@Body() body) { this.logger.info(`/catalog - ON GET ALL DASHBOARDS METABASE ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getAllDashboardMetabase(body); return res; } @Get('dashboard-metabase/:id') async getOneDashboardMetabase(@Body() body, @Param() params) { const { id } = params; this.logger.info(`/catalog - ON GET ONE DASHBOARD METABASE ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getOneDashboardMetabase(id, body); return res; } @Get('table-metadata') async getAllTableMetadata(@Body() body, @Query() query) { this.logger.info(`/catalog - ON GET ALL TABLES METADATA ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); if (!query) { const res = await this.catalogService.getAllTableMetadata(body); return res; } else { const res = await this.catalogService.getOneTableMetadata(body, query); return res; } } @Delete('table-metadata/:id') async deleteOneTableMetadata(@Param() params, @Body() body) { const { id } = params; this.logger.info(`/catalog - ON DELETE ONE TABLE METADATA ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.deleteOneTableMetadata(id, body); return res; } @Get('column-metadata') async getOneColumnMetadata(@Body() body, @Query() params) { this.logger.info(`/catalog - ON GET ONE COLUMN METADATA ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getOneColumnMetadata(body, params); return res; } @Delete('column-metadata/:id') async deleteOneColumnMetadata(@Param() params, @Body() body) { this.logger.info(`/catalog - ON DELETE ONE COLUMN METADATA ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const { id } = params; const res = await this.catalogService.deleteOneColumnMetadata(id, body); return res; } @Get('data-preview') async getOneDataPreview(@Body() body, @Query() params) { this.logger.info(`/catalog - ON GET ONE DATAPREVIEW ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getOneDataPreview(body, params); return res; } @Get('data-status') async getDataStatus(@Body() body) { this.logger.info(`/catalog - ON GET DATA STATUS ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getDataStatus(body); return res; } @Get('data-status') async createDataStatus(@Body() body) { this.logger.info(`/catalog - ON CREATE DATA STATUS ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.createDataStatus(body); return res; } @Get('data-description') async getDataDescription(@Body() body) { this.logger.info(`/catalog - ON GET DATA DESCRIPTION ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getDataDescription(body); return res; } @Post('data-description') async createDataDescription(@Body() body) { this.logger.info(`/catalog - ON CREATE DATA DESCRIPTION ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.createDataDescription(body); return res; } @Get('data-docs') async getDataDocs(@Body() body) { this.logger.info(`/catalog - ON GET DATA DOCS ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getDataDocs(body); return res; } @Post('data-docs') async createDataDocs(@Body() body) { this.logger.info(`/catalog - ON CREATE DATA DOCS ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.createDataDocs(body); return res; } @Get('data-rating') async getDataRating(@Body() body) { this.logger.info(`/catalog - ON GET DATA RATING ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getDataRating(body); return res; } @Post('data-rating') async createDataRating(@Body() body) { this.logger.info(`/catalog - ON GET DATA RATING ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.createDataRating(body); return res; } @Get('summary-rating/:id') async getSummaryRating() { this.logger.info(`/catalog - ON GET SUMMARY RATING ROUTE`); //const { id } = params; // //const res = await this.catalogService.getSummaryRating(id, body); return { avg_rating: 0, rating_count: 0, }; } @Get('data-comment') async getDataComment(@Body() body) { this.logger.info(`/catalog - ON GET DATA COMMENT ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getDataComment(body); return res; } @Post('data-comment') async createDataComment(@Body() body) { this.logger.info(`/catalog - ON GET DATA COMMENT ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.createDataComment(body); return res; } @Get('data-review') async getDataReview(@Body() body, @Query() params) { this.logger.info(`/catalog - ON GET DATA REVIEW ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getDataReview(body, params); return res; } @Post('tags') async createTags(@Body() body) { this.logger.info(`/catalog - ON CREATE TAG ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.createTags(body); return res; } @Get('tags') async findAllTags(@Body() body) { this.logger.info(`/catalog - ON FIND ALL TAGS ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.findAllTags(body); return res; } @Delete('tags/:id') async deleteTags(@Param() params, @Body() body) { this.logger.info(`/catalog - ON DELETE TAG ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const { id } = params; const res = await this.catalogService.deleteTags(id, body); return res; } @Post('table-tags') async createTableTags(@Body() body) { this.logger.info(`/catalog - ON CREATE TABLE TAG ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.createTableTags(body); return res; } @Get('table-tags') async getAllTableTags(@Body() body) { this.logger.info(`/catalog - ON GET ALL TABLE TAGS ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.findAllTableTags(body); return res; } @Delete('table-tags/:id') async deleteTableTags(@Param() params, @Body() body) { this.logger.info(`/catalog - ON CREATE TABLE TAGS ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const { id } = params; const res = await this.catalogService.deleteTableTags(id, body); return res; } @Get('table-rules') async getTableRules(@Body() body) { this.logger.info(`/catalog - ON GET TABLE RULES ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const res = await this.catalogService.getTableRules(body); return res; } @Delete('table-rules/:id') async deleteTableRules(@Param() params, @Body() body) { this.logger.info(`/catalog - ON DELETE TABLE RULES ROUTE`, { user: body.info.user_id, customer: body.info.customer, }); const { id } = params; const res = await this.catalogService.deleteTableRules(id, body); return res; } }