created querybuilder for direct users
This commit is contained in:
@@ -43,6 +43,7 @@ export class ChatController {
|
||||
{
|
||||
console.log("- in getAllRooms controller");
|
||||
const rooms = await this.chatService.getAllNotMyRooms(req.user.username);
|
||||
await this.chatService.getAllUsersNotMyRooms(req.user.username);
|
||||
console.log("- out getAllRooms controller");
|
||||
return res.status(HttpStatus.OK).json({ rooms: rooms });
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import { joinRoomDto } from './dto/joinRoom.dto';
|
||||
import { messagesDto } from './dto/messages.dto';
|
||||
import { socketDto } from './dto/socket.dto';
|
||||
|
||||
|
||||
@Injectable()
|
||||
export class ChatService {
|
||||
|
||||
@@ -46,7 +47,7 @@ export class ChatService {
|
||||
{
|
||||
console.log("-- in getAllNotMyRooms service");
|
||||
const my_rooms = await this.getMyRooms(username);
|
||||
const directs = my_rooms;
|
||||
const directs = my_rooms.filter(room => room.type === 'direct');
|
||||
|
||||
console.log("-- out getAllNotMyRooms service");
|
||||
return directs;
|
||||
@@ -77,25 +78,6 @@ export class ChatService {
|
||||
return rooms;
|
||||
}
|
||||
|
||||
/*
|
||||
async getAllUsersNotRooms(username: string)
|
||||
{
|
||||
console.log("-- in getAllNotMyRooms service");
|
||||
const user_db = await this.getUserByName(username);
|
||||
//const user_db = await this.usersService.findOne(username);
|
||||
const rooms = await this.chatroomRepository
|
||||
.createQueryBuilder('chatroom')
|
||||
.where('chatroom.type != :type', { type: 'private' })
|
||||
.andWhere('chatroom.users NOT LIKE :user_name', { user_name: `%${username}%` })
|
||||
.getMany();
|
||||
//const users = await this.getAllUsers();
|
||||
//let allRooms = [...rooms, ...users];
|
||||
|
||||
console.log("-- out getAllNotMyRooms service");
|
||||
return rooms;
|
||||
}
|
||||
*/
|
||||
|
||||
async getMessagesFromCurrentRoom(username: string): Promise<messagesDto[]>
|
||||
{
|
||||
console.log("-- in getMessagesFromCurrentRoom service");
|
||||
@@ -202,9 +184,6 @@ export class ChatService {
|
||||
async addMessageToRoom(room_name: string, username: string, message: string): Promise<void>
|
||||
{
|
||||
console.log("-- in addMessageToRoom service");
|
||||
//const user_db = await this.getUserByName(username);
|
||||
//const user_db = await this.usersService.findOne(username);
|
||||
//console.log("user_db:", user_db);
|
||||
const currentRoom = await this.getRoomByName(room_name);
|
||||
let chat_message = {
|
||||
name: username,
|
||||
@@ -255,6 +234,45 @@ export class ChatService {
|
||||
return user;
|
||||
}
|
||||
|
||||
async getAllUsersNotMyRooms(username: string)
|
||||
{
|
||||
console.log("-- in getAllUsersNotMyRooms service");
|
||||
|
||||
const directs = await this.getMyDirects(username);
|
||||
let usernames = directs.map(room => room.users[0]);
|
||||
if (usernames.length === 0)
|
||||
usernames = [""];
|
||||
console.log("usernames:", usernames);
|
||||
|
||||
const my_users = await this.userRepository
|
||||
.createQueryBuilder('user')
|
||||
.where('user.username NOT IN (:...usernames)', { usernames: usernames })
|
||||
.getMany();
|
||||
|
||||
console.log("my_users:", my_users);
|
||||
|
||||
/*
|
||||
User {
|
||||
id: 1,
|
||||
fortyTwoId: '42522',
|
||||
username: 'hulamy',
|
||||
email: 'hulamy@student.42.fr',
|
||||
image_url: 'default.png',
|
||||
phone: null,
|
||||
status: 'Connected',
|
||||
isEnabledTwoFactorAuth: false,
|
||||
isTwoFactorAuthenticated: false,
|
||||
secretTwoFactorAuth: null,
|
||||
currentRoom: 'hugo2'
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
console.log("-- out getAllUsersNotMyRooms service");
|
||||
}
|
||||
/*
|
||||
*/
|
||||
|
||||
|
||||
/* GATEWAY EVENTS *****************************************
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { IsBoolean, IsEmpty, IsInt, IsNotEmpty, IsNumber, IsString, IsOptional } from "class-validator";
|
||||
import { IsNull } from "typeorm";
|
||||
import { IsBoolean, IsEmpty, IsInt, IsNotEmpty, IsNumber, IsString, IsOptional, IsEnum } from "class-validator";
|
||||
import { RoomType } from 'src/chat/enums/roomType.enum';
|
||||
|
||||
export class createRoomDto
|
||||
{
|
||||
@@ -9,7 +9,8 @@ export class createRoomDto
|
||||
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
room_type: 'public' | 'private' | 'direct';
|
||||
@IsEnum(RoomType)
|
||||
room_type: RoomType;
|
||||
|
||||
@IsString()
|
||||
@IsOptional()
|
||||
|
||||
@@ -7,7 +7,8 @@ import {
|
||||
PrimaryGeneratedColumn
|
||||
} from "typeorm";
|
||||
import { User } from 'src/users/entities/user.entity';
|
||||
import { messagesDto } from '../dto/messages.dto';
|
||||
import { messagesDto } from 'src/chat/dto/messages.dto';
|
||||
import { RoomType } from 'src/chat/enums/roomType.enum';
|
||||
|
||||
@Entity('chatroom')
|
||||
export class Chatroom {
|
||||
@@ -17,15 +18,12 @@ export class Chatroom {
|
||||
@Column()
|
||||
name: string;
|
||||
|
||||
@Column()
|
||||
type: string;
|
||||
|
||||
// @ManyToOne(type => User, user => user.ownedRooms)
|
||||
// owner: User;
|
||||
//
|
||||
// @ManyToMany(type => User)
|
||||
// @JoinTable()
|
||||
// users: User[];
|
||||
@Column({
|
||||
type: "enum",
|
||||
enum: RoomType,
|
||||
default: RoomType.public
|
||||
})
|
||||
type: RoomType;
|
||||
|
||||
@Column()
|
||||
owner: string; // username
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
export enum RoomType {
|
||||
public = 'public',
|
||||
protected = 'protected',
|
||||
private = 'private',
|
||||
direct = 'direct',
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user