Add Admin module and entity

This commit is contained in:
Errormacr
2023-11-20 11:45:25 +03:00
parent f424d6ffe6
commit c53b37590a
7 changed files with 87 additions and 3 deletions

View 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;
}

View File

@@ -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 {}

View File

@@ -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],
})

View 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);
}
}

View 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 {}

View 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 })}`);
}
}
}

View File

@@ -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() {}
}