Backend_Fix #76
@@ -18,6 +18,7 @@ export interface ShortDeckDto {
|
||||
cardCount: number;
|
||||
creator: string;
|
||||
creationdate: Date;
|
||||
editable?: boolean;
|
||||
}
|
||||
|
||||
export interface DetailDeckDto {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import { DeckAggregate } from '../../../Domain/Deck/DeckAggregate';
|
||||
import { UserAggregate } from '../../../Domain/User/UserAggregate';
|
||||
import { CreateDeckDto, UpdateDeckDto, ShortDeckDto, DetailDeckDto } from '../DeckDto';
|
||||
import e from 'express';
|
||||
|
||||
export class DeckMapper {
|
||||
static toShortDto(deck: DeckAggregate): ShortDeckDto {
|
||||
static toShortDto(deck: DeckAggregate, userId?: string): ShortDeckDto {
|
||||
return {
|
||||
id: deck.id,
|
||||
name: deck.name,
|
||||
@@ -12,7 +13,8 @@ export class DeckMapper {
|
||||
ctype: deck.ctype,
|
||||
cardCount: deck.cards.length,
|
||||
creator: deck.user?.username || 'Unknown',
|
||||
creationdate: deck.creationdate
|
||||
creationdate: deck.creationdate,
|
||||
editable: deck.isEditable() ? deck.isEditable()(userId!) : undefined
|
||||
};
|
||||
}
|
||||
|
||||
@@ -29,7 +31,7 @@ export class DeckMapper {
|
||||
};
|
||||
}
|
||||
|
||||
static toShortDtoList(decks: DeckAggregate[]): ShortDeckDto[] {
|
||||
static toShortDtoList(decks: DeckAggregate[], userId?: string): ShortDeckDto[] {
|
||||
return decks.map(deck => ({
|
||||
id: deck.id,
|
||||
name: deck.name,
|
||||
@@ -38,7 +40,8 @@ export class DeckMapper {
|
||||
ctype: deck.ctype,
|
||||
cardCount: deck.cards.length,
|
||||
creator: deck.user?.username || 'Unknown',
|
||||
creationdate: deck.creationdate
|
||||
creationdate: deck.creationdate,
|
||||
editable: deck.isEditable() ? deck.isEditable()(userId!) : undefined
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ export class GetDecksByPageQueryHandler {
|
||||
});
|
||||
|
||||
return {
|
||||
decks: DeckMapper.toShortDtoList(result.decks),
|
||||
decks: DeckMapper.toShortDtoList(result.decks, query.userId),
|
||||
totalCount: result.totalCount
|
||||
};
|
||||
} catch (error) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm';
|
||||
import { OrganizationAggregate } from '../Organization/OrganizationAggregate';
|
||||
import { UserAggregate } from '../User/UserAggregate';
|
||||
import { logError } from '../../Application/Services/Logger';
|
||||
|
||||
export enum Type {
|
||||
LUCK = 0,
|
||||
@@ -86,4 +87,11 @@ export class DeckAggregate {
|
||||
@ManyToOne(() => UserAggregate, { eager: false })
|
||||
@JoinColumn({ name: 'user_id' })
|
||||
user!: UserAggregate | null;
|
||||
|
||||
isEditable() {
|
||||
// A deck is editable if the user is the creator
|
||||
return (userId: string) => {
|
||||
return this.user?.id.toString() === userId;
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user