From c53b37590a4b6031c95229bbdabc312f42934dfa Mon Sep 17 00:00:00 2001 From: Errormacr Date: Mon, 20 Nov 2023 11:45:25 +0300 Subject: [PATCH] Add Admin module and entity --- backend/libs/database/admin.entity.ts | 11 ++++++ backend/libs/libs.module.ts | 3 +- backend/src/app.module.ts | 3 +- backend/src/modules/admin/admin.controller.ts | 22 ++++++++++++ backend/src/modules/admin/admin.module.ts | 11 ++++++ backend/src/modules/admin/admin.service.ts | 34 +++++++++++++++++++ .../initialization/app.init.service.ts | 6 +++- 7 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 backend/libs/database/admin.entity.ts create mode 100644 backend/src/modules/admin/admin.controller.ts create mode 100644 backend/src/modules/admin/admin.module.ts create mode 100644 backend/src/modules/admin/admin.service.ts diff --git a/backend/libs/database/admin.entity.ts b/backend/libs/database/admin.entity.ts new file mode 100644 index 0000000..66a86f5 --- /dev/null +++ b/backend/libs/database/admin.entity.ts @@ -0,0 +1,11 @@ +import { Entity, PrimaryColumn } from 'typeorm'; + +@Entity() +export class Admin { + constructor(props?: Partial) { + Object.assign(this, props); + } + + @PrimaryColumn() + public id!: string; +} diff --git a/backend/libs/libs.module.ts b/backend/libs/libs.module.ts index 6761b66..db10c9c 100644 --- a/backend/libs/libs.module.ts +++ b/backend/libs/libs.module.ts @@ -1,8 +1,9 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { User } from './database/user.entity'; +import { Admin } from './database/admin.entity'; @Module({ - imports: [TypeOrmModule.forFeature([User])], + imports: [TypeOrmModule.forFeature([User, Admin])], exports: [TypeOrmModule], }) export class LibsModule {} diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 52a881e..8e1ff9d 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -4,9 +4,10 @@ import { config } from 'config'; import { LibsModule } from 'libs/libs.module'; import { AppInitService } from './modules/initialization/app.init.service'; import { UserModule } from './modules/user/user.module'; +import { AdminModule } from './modules/admin/admin.module'; @Module({ - imports: [LibsModule, UserModule, TypeOrmModule.forRoot(config.database)], + imports: [AdminModule, LibsModule, UserModule, TypeOrmModule.forRoot(config.database)], controllers: [], providers: [AppInitService], }) diff --git a/backend/src/modules/admin/admin.controller.ts b/backend/src/modules/admin/admin.controller.ts new file mode 100644 index 0000000..6b643e5 --- /dev/null +++ b/backend/src/modules/admin/admin.controller.ts @@ -0,0 +1,22 @@ +import { Controller, Get, Param } from '@nestjs/common'; +import { ApiOperation, ApiTags } from '@nestjs/swagger'; +import { AdminService } from './admin.service'; + +@ApiTags('Admin') +@Controller('Admin') +export class AdminController { + constructor(private adminService: AdminService) {} + + @ApiOperation({ + description: 'Get admins from db', + }) + @Get('get') + async getAdmin() { + return await this.adminService.getAdmins(); + } + @ApiOperation({ description: 'Check admin is or not' }) + @Get('is_admin/:id') + async isAdmin(@Param('id') id: string) { + return await this.adminService.checkIsAdmin(id); + } +} diff --git a/backend/src/modules/admin/admin.module.ts b/backend/src/modules/admin/admin.module.ts new file mode 100644 index 0000000..44faa1e --- /dev/null +++ b/backend/src/modules/admin/admin.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { LibsModule } from 'libs/libs.module'; +import { AdminController } from './admin.controller'; +import { AdminService } from './admin.service'; + +@Module({ + imports: [LibsModule], + controllers: [AdminController], + providers: [AdminService], +}) +export class AdminModule {} diff --git a/backend/src/modules/admin/admin.service.ts b/backend/src/modules/admin/admin.service.ts new file mode 100644 index 0000000..5001fb0 --- /dev/null +++ b/backend/src/modules/admin/admin.service.ts @@ -0,0 +1,34 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { Admin } from 'libs/database/admin.entity'; + +@Injectable() +export class AdminService { + private readonly logger: Logger = new Logger(AdminService.name); + constructor(@InjectRepository(Admin) private adminRepository: Repository) {} + + async getAdmins() { + try { + this.logger.debug(`[admin.getAdmins]`); + const admins = await this.adminRepository.find(); + return admins; + } catch (error) { + this.logger.log(`[getAdmin] ${JSON.stringify({ error })}`); + } + } + async checkIsAdmin(id: string) { + try { + this.logger.debug(`[admin.checkIsAdmin]`); + const admins = await this.adminRepository.findOne({ + where: { id: id }, + }); + if (!admins) { + return false; + } + return true; + } catch (error) { + this.logger.log(`[checkIsAdmin] ${JSON.stringify({ error })}`); + } + } +} diff --git a/backend/src/modules/initialization/app.init.service.ts b/backend/src/modules/initialization/app.init.service.ts index e22de72..8f7d27f 100644 --- a/backend/src/modules/initialization/app.init.service.ts +++ b/backend/src/modules/initialization/app.init.service.ts @@ -1,11 +1,15 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; +import { Admin } from 'libs/database/admin.entity'; import { User } from 'libs/database/user.entity'; import { Repository } from 'typeorm'; @Injectable() export class AppInitService implements OnModuleInit { - constructor(@InjectRepository(User) private userRepository: Repository) {} + constructor( + @InjectRepository(User) private userRepository: Repository, + @InjectRepository(Admin) private adminRepository: Repository, + ) {} async onModuleInit() {} }