26 lines
857 B
TypeScript
26 lines
857 B
TypeScript
import { DataSource } from 'typeorm';
|
|
import { RoomEntity } from '../../../entities';
|
|
import { GetRoomQuery } from '../../types';
|
|
import { rowToRoom } from '../../mappers';
|
|
import { loadRoomRelationsMap } from '../../relations';
|
|
import { getCurrentUserScope, userOwnsRoom } from '../../current-user-scope';
|
|
|
|
export async function handleGetRoom(query: GetRoomQuery, dataSource: DataSource) {
|
|
const currentUserId = await getCurrentUserScope(dataSource);
|
|
|
|
if (!await userOwnsRoom(dataSource, query.payload.roomId, currentUserId)) {
|
|
return null;
|
|
}
|
|
|
|
const repo = dataSource.getRepository(RoomEntity);
|
|
const row = await repo.findOne({ where: { id: query.payload.roomId } });
|
|
|
|
if (!row) {
|
|
return null;
|
|
}
|
|
|
|
const relationsByRoomId = await loadRoomRelationsMap(dataSource, [row.id]);
|
|
|
|
return rowToRoom(row, relationsByRoomId.get(row.id));
|
|
}
|