Template
refactor : add concept module
This commit is contained in:
+1
-1
Submodule events updated: fc3f0e1677...1473c5c132
+1
-1
@@ -9,12 +9,12 @@ import { Game } from './games/entities/game.entity';
|
||||
import { Topic } from './word/entities/topic.entity';
|
||||
import { Word } from './word/entities/word.entity';
|
||||
import { Player } from './games/entities/player.entity';
|
||||
import { Concept } from './games/entities/concept.entity';
|
||||
import { ConceptInTurn } from './games/entities/concept_in_turn.entity';
|
||||
import { ConfigService } from '@nestjs/config';
|
||||
import { WordModule } from './word/words.module';
|
||||
import { Message } from './games/entities/message.entity';
|
||||
import { LobbyModule } from './lobby/lobby.module';
|
||||
import { Concept } from './concept/entities/concept.entity';
|
||||
|
||||
const configService = new ConfigService();
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
|
||||
import { UsersModule } from 'src/users/users.module';
|
||||
import { Concept } from './entities/concept.entity';
|
||||
|
||||
@Module({
|
||||
imports: [UsersModule, TypeOrmModule.forFeature([Concept])],
|
||||
})
|
||||
export class ConceptModule {}
|
||||
@@ -0,0 +1,68 @@
|
||||
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { Concept } from './entities/concept.entity';
|
||||
import {
|
||||
ConceptDeleteEvent,
|
||||
ConceptCreateEvent,
|
||||
ConceptEnableEvent,
|
||||
ConceptDisableEvent,
|
||||
} from 'events/concept.events';
|
||||
|
||||
@Injectable()
|
||||
export class WordService {
|
||||
sse_prefix = 'sse.concept';
|
||||
constructor(
|
||||
@InjectRepository(Concept) private conceptRepository: Repository<Concept>,
|
||||
private eventEmitter: EventEmitter2,
|
||||
) {}
|
||||
|
||||
async getById(id: number) {
|
||||
return await this.conceptRepository.findOneBy({ id });
|
||||
}
|
||||
|
||||
async delete(concept: Concept) {
|
||||
const conceptId = concept.id;
|
||||
await this.conceptRepository.remove(concept);
|
||||
this.eventEmitter.emit(this.sse_prefix, new ConceptDeleteEvent(conceptId));
|
||||
}
|
||||
|
||||
async create(value: string, image: string) {
|
||||
const concept = this.conceptRepository.create();
|
||||
concept.value = value;
|
||||
try {
|
||||
await this.conceptRepository.save(concept);
|
||||
this.eventEmitter.emit(this.sse_prefix, new ConceptCreateEvent(concept));
|
||||
return concept;
|
||||
} catch {
|
||||
throw new HttpException('Concept already exists', HttpStatus.CONFLICT);
|
||||
}
|
||||
}
|
||||
|
||||
async listActive() {
|
||||
const words = await this.conceptRepository.findBy({ enabled: true });
|
||||
return words;
|
||||
}
|
||||
|
||||
async list() {
|
||||
const words = await this.conceptRepository.find();
|
||||
return words;
|
||||
}
|
||||
|
||||
async enable(concept: Concept) {
|
||||
concept.enabled = true;
|
||||
await this.conceptRepository.save(concept);
|
||||
this.eventEmitter.emit(this.sse_prefix, new ConceptEnableEvent(concept.id));
|
||||
}
|
||||
|
||||
async disable(concept: Concept) {
|
||||
concept.enabled = false;
|
||||
await this.conceptRepository.save(concept);
|
||||
this.eventEmitter.emit(
|
||||
this.sse_prefix,
|
||||
new ConceptDisableEvent(concept.id),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { Column, Entity, PrimaryGeneratedColumn, Unique } from 'typeorm';
|
||||
|
||||
@Entity()
|
||||
@Unique(['value'])
|
||||
export class Concept {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column()
|
||||
value: string;
|
||||
|
||||
@Column({ default: false })
|
||||
enabled: boolean;
|
||||
}
|
||||
@@ -20,9 +20,10 @@ import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { GameService } from '../services/games.service';
|
||||
import { ConfigService } from '@nestjs/config';
|
||||
import { SessionData } from 'express-session';
|
||||
import { WordResponseDTO } from 'events/dto/wordresponse.dto';
|
||||
// import { WordResponseDTO } from 'events/dto/wordresponse.dto';
|
||||
import { WordRecieveDTO } from 'src/word/dto/wordrecieve.dto';
|
||||
import { LobbyService } from 'src/lobby/lobby.service';
|
||||
import { WordResponseDTO } from 'events/dto/wordresponse.dto';
|
||||
|
||||
@ApiTags('game')
|
||||
@Controller('games/:id')
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
import {
|
||||
Column,
|
||||
Entity,
|
||||
JoinTable,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
OneToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
Unique,
|
||||
} from 'typeorm';
|
||||
import { Player } from './player.entity';
|
||||
|
||||
@Entity()
|
||||
@Unique(['value'])
|
||||
export class Concept {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column()
|
||||
value: string;
|
||||
}
|
||||
@@ -1,15 +1,6 @@
|
||||
import {
|
||||
Column,
|
||||
Entity,
|
||||
JoinTable,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
OneToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
Unique,
|
||||
} from 'typeorm';
|
||||
import { Concept } from './concept.entity';
|
||||
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
||||
import { Game } from './game.entity';
|
||||
import { Concept } from 'src/concept/entities/concept.entity';
|
||||
|
||||
@Entity()
|
||||
export class ConceptInTurn {
|
||||
|
||||
@@ -3,9 +3,7 @@ import {
|
||||
Entity,
|
||||
JoinColumn,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
PrimaryGeneratedColumn,
|
||||
Unique,
|
||||
} from 'typeorm';
|
||||
import { Player } from './player.entity';
|
||||
|
||||
|
||||
@@ -3,12 +3,8 @@ import {
|
||||
Column,
|
||||
Entity,
|
||||
JoinColumn,
|
||||
JoinTable,
|
||||
ManyToMany,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
PrimaryGeneratedColumn,
|
||||
Unique,
|
||||
} from 'typeorm';
|
||||
import { Game } from './game.entity';
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { Player } from '../entities/player.entity';
|
||||
import { User } from 'src/users/entities/user.entity';
|
||||
|
||||
import { WordService } from 'src/word/services/word.service';
|
||||
import {
|
||||
GameEndTurnEvent,
|
||||
GameMessageDeleteEvent,
|
||||
@@ -21,6 +20,7 @@ import {
|
||||
} from 'events/game.events';
|
||||
import random from 'random';
|
||||
import { Message } from '../entities/message.entity';
|
||||
import { WordService } from 'src/word/word.service';
|
||||
|
||||
@Injectable()
|
||||
export class GameService {
|
||||
|
||||
@@ -5,7 +5,6 @@ import {
|
||||
Param,
|
||||
Delete,
|
||||
UseGuards,
|
||||
Session,
|
||||
HttpException,
|
||||
HttpStatus,
|
||||
Sse,
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { Module, forwardRef } from '@nestjs/common';
|
||||
import { UsersModule } from 'src/users/users.module';
|
||||
import { WordModule } from 'src/word/words.module';
|
||||
import { LobbyController } from './lobby.controller';
|
||||
import { LobbyService } from './lobby.service';
|
||||
import { GamesModule } from 'src/games/games.module';
|
||||
|
||||
@@ -3,11 +3,11 @@ import { LobbyService } from './lobby.service';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { EventEmitterModule } from '@nestjs/event-emitter';
|
||||
import { User } from 'src/users/entities/user.entity';
|
||||
import { Concept } from '../games/entities/concept.entity';
|
||||
import { ConceptInTurn } from '../games/entities/concept_in_turn.entity';
|
||||
import { Game } from '../games/entities/game.entity';
|
||||
import { Player } from '../games/entities/player.entity';
|
||||
import { GameService } from '../games/services/games.service';
|
||||
import { Concept } from 'src/concept/entities/concept.entity';
|
||||
|
||||
describe('LobbyService', () => {
|
||||
let service: LobbyService;
|
||||
|
||||
@@ -7,7 +7,6 @@ import {
|
||||
HttpStatus,
|
||||
Redirect,
|
||||
Param,
|
||||
ParseIntPipe,
|
||||
UseGuards,
|
||||
} from '@nestjs/common';
|
||||
import { UsersService } from './users.service';
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
Injectable,
|
||||
PipeTransform,
|
||||
} from '@nestjs/common';
|
||||
import { WordService } from '../services/word.service';
|
||||
import { WordService } from '../word.service';
|
||||
|
||||
@Injectable()
|
||||
export class WordPipe implements PipeTransform {
|
||||
|
||||
@@ -13,17 +13,17 @@ import {
|
||||
UseGuards,
|
||||
} from '@nestjs/common';
|
||||
|
||||
import { WordService } from '../services/word.service';
|
||||
import { ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||
import { AuthGuard } from 'src/users/guards/auth.guard';
|
||||
import { WordResponseDTO } from '../../../events/dto/wordresponse.dto';
|
||||
import { WordRecieveDTO } from '../dto/wordrecieve.dto';
|
||||
import { WordPipe } from '../pipe/word.pipe';
|
||||
import { Word } from '../entities/word.entity';
|
||||
import { WordRecieveDTO } from './dto/wordrecieve.dto';
|
||||
import { WordPipe } from './pipe/word.pipe';
|
||||
import { Word } from './entities/word.entity';
|
||||
import { GetUser } from 'src/users/user.pipe';
|
||||
import { User } from 'src/users/entities/user.entity';
|
||||
import { fromEvent, map, Observable } from 'rxjs';
|
||||
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { WordService } from './word.service';
|
||||
import { WordResponseDTO } from 'events/dto/wordresponse.dto';
|
||||
|
||||
@ApiTags('words')
|
||||
@Controller('words')
|
||||
@@ -1,21 +1,16 @@
|
||||
import {
|
||||
HttpCode,
|
||||
HttpException,
|
||||
HttpStatus,
|
||||
Injectable,
|
||||
} from '@nestjs/common';
|
||||
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { Word } from '../entities/word.entity';
|
||||
|
||||
import { User } from 'src/users/entities/user.entity';
|
||||
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { Word } from './entities/word.entity';
|
||||
import {
|
||||
WordCreateEvent,
|
||||
WordDeleteEvent,
|
||||
WordDisableEvent,
|
||||
WordCreateEvent,
|
||||
WordEnableEvent,
|
||||
} from '../../../events/word.events';
|
||||
import { HttpErrorByCode } from '@nestjs/common/utils/http-error-by-code.util';
|
||||
WordDisableEvent,
|
||||
} from 'events/word.events';
|
||||
|
||||
@Injectable()
|
||||
export class WordService {
|
||||
@@ -2,9 +2,9 @@ import { Module } from '@nestjs/common';
|
||||
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { Word } from './entities/word.entity';
|
||||
import { WordController } from './controllers/word.controller';
|
||||
import { WordService } from './services/word.service';
|
||||
import { WordController } from './word.controller';
|
||||
import { UsersModule } from 'src/users/users.module';
|
||||
import { WordService } from './word.service';
|
||||
|
||||
@Module({
|
||||
imports: [UsersModule, TypeOrmModule.forFeature([Word])],
|
||||
|
||||
Reference in New Issue
Block a user