Spaces:
Sleeping
Sleeping
| import { | |
| Controller, | |
| Get, | |
| Post, | |
| UseGuards, | |
| } from '@nestjs/common'; | |
| import { | |
| ApiTags, | |
| ApiBearerAuth, | |
| ApiOperation, | |
| ApiResponse, | |
| } from '@nestjs/swagger'; | |
| import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard'; | |
| import { RolesGuard } from '../../auth/guards/roles.guard'; | |
| import { Roles } from '../../../common/decorators/roles.decorator'; | |
| import { RoleName } from '../../auth/entities/role.entity'; | |
| import { DatabaseService } from '../services/database.service'; | |
| ('ποΈ Database') | |
| ('JWT-auth') | |
| ('api/database') | |
| (JwtAuthGuard, RolesGuard) | |
| export class DatabaseController { | |
| constructor(private readonly databaseService: DatabaseService) {} | |
| ('status') | |
| (RoleName.ADMIN, RoleName.IT_ADMIN) | |
| ({ | |
| summary: 'Get database status', | |
| description: | |
| 'Returns MySQL server uptime, connected threads, and version. ' + | |
| 'Access roles: ADMIN, IT_ADMIN. Uses: MySQL SHOW GLOBAL STATUS queries.', | |
| }) | |
| ({ status: 200, description: 'Database status returned' }) | |
| ({ status: 401, description: 'Unauthorized' }) | |
| ({ status: 403, description: 'Forbidden β insufficient role' }) | |
| async getStatus() { | |
| return this.databaseService.getStatus(); | |
| } | |
| ('tables') | |
| (RoleName.ADMIN, RoleName.IT_ADMIN) | |
| ({ | |
| summary: 'Get database table sizes', | |
| description: | |
| 'Returns information about all tables including row count, data size, index size. ' + | |
| 'Access roles: ADMIN, IT_ADMIN. Uses: `information_schema.TABLES`.', | |
| }) | |
| ({ status: 200, description: 'Table size information returned' }) | |
| ({ status: 401, description: 'Unauthorized' }) | |
| ({ status: 403, description: 'Forbidden β insufficient role' }) | |
| async getTables() { | |
| return this.databaseService.getTables(); | |
| } | |
| ('optimize') | |
| (RoleName.IT_ADMIN) | |
| ({ | |
| summary: 'Optimize all database tables', | |
| description: | |
| 'Runs OPTIMIZE TABLE on every table in the database to reclaim space and defragment. ' + | |
| 'Access roles: IT_ADMIN. Uses: MySQL OPTIMIZE TABLE command on all tables.', | |
| }) | |
| ({ status: 200, description: 'Optimization results returned' }) | |
| ({ status: 401, description: 'Unauthorized' }) | |
| ({ status: 403, description: 'Forbidden β insufficient role' }) | |
| async optimizeDatabase() { | |
| return this.databaseService.optimizeDatabase(); | |
| } | |
| } | |