mirror of
https://github.com/MrSedan/neuro-reply-website.git
synced 2026-01-14 20:49:42 +03:00
Add Admin module and entity
This commit is contained in:
11
backend/libs/database/admin.entity.ts
Normal file
11
backend/libs/database/admin.entity.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { Entity, PrimaryColumn } from 'typeorm';
|
||||
|
||||
@Entity()
|
||||
export class Admin {
|
||||
constructor(props?: Partial<Admin>) {
|
||||
Object.assign(this, props);
|
||||
}
|
||||
|
||||
@PrimaryColumn()
|
||||
public id!: string;
|
||||
}
|
||||
@@ -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 {}
|
||||
|
||||
@@ -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(<TypeOrmModuleOptions>config.database)],
|
||||
imports: [AdminModule, LibsModule, UserModule, TypeOrmModule.forRoot(<TypeOrmModuleOptions>config.database)],
|
||||
controllers: [],
|
||||
providers: [AppInitService],
|
||||
})
|
||||
|
||||
22
backend/src/modules/admin/admin.controller.ts
Normal file
22
backend/src/modules/admin/admin.controller.ts
Normal file
@@ -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);
|
||||
}
|
||||
}
|
||||
11
backend/src/modules/admin/admin.module.ts
Normal file
11
backend/src/modules/admin/admin.module.ts
Normal file
@@ -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 {}
|
||||
34
backend/src/modules/admin/admin.service.ts
Normal file
34
backend/src/modules/admin/admin.service.ts
Normal file
@@ -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<Admin>) {}
|
||||
|
||||
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 })}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<User>) {}
|
||||
constructor(
|
||||
@InjectRepository(User) private userRepository: Repository<User>,
|
||||
@InjectRepository(Admin) private adminRepository: Repository<Admin>,
|
||||
) {}
|
||||
|
||||
async onModuleInit() {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user