editable property added to deck short dto
This commit is contained in:
@@ -18,6 +18,7 @@ export interface ShortDeckDto {
|
|||||||
cardCount: number;
|
cardCount: number;
|
||||||
creator: string;
|
creator: string;
|
||||||
creationdate: Date;
|
creationdate: Date;
|
||||||
|
editable?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DetailDeckDto {
|
export interface DetailDeckDto {
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
import { DeckAggregate } from '../../../Domain/Deck/DeckAggregate';
|
import { DeckAggregate } from '../../../Domain/Deck/DeckAggregate';
|
||||||
import { UserAggregate } from '../../../Domain/User/UserAggregate';
|
import { UserAggregate } from '../../../Domain/User/UserAggregate';
|
||||||
import { CreateDeckDto, UpdateDeckDto, ShortDeckDto, DetailDeckDto } from '../DeckDto';
|
import { CreateDeckDto, UpdateDeckDto, ShortDeckDto, DetailDeckDto } from '../DeckDto';
|
||||||
|
import e from 'express';
|
||||||
|
|
||||||
export class DeckMapper {
|
export class DeckMapper {
|
||||||
static toShortDto(deck: DeckAggregate): ShortDeckDto {
|
static toShortDto(deck: DeckAggregate, userId?: string): ShortDeckDto {
|
||||||
return {
|
return {
|
||||||
id: deck.id,
|
id: deck.id,
|
||||||
name: deck.name,
|
name: deck.name,
|
||||||
@@ -12,7 +13,8 @@ export class DeckMapper {
|
|||||||
ctype: deck.ctype,
|
ctype: deck.ctype,
|
||||||
cardCount: deck.cards.length,
|
cardCount: deck.cards.length,
|
||||||
creator: deck.user?.username || 'Unknown',
|
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 => ({
|
return decks.map(deck => ({
|
||||||
id: deck.id,
|
id: deck.id,
|
||||||
name: deck.name,
|
name: deck.name,
|
||||||
@@ -38,7 +40,8 @@ export class DeckMapper {
|
|||||||
ctype: deck.ctype,
|
ctype: deck.ctype,
|
||||||
cardCount: deck.cards.length,
|
cardCount: deck.cards.length,
|
||||||
creator: deck.user?.username || 'Unknown',
|
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 {
|
return {
|
||||||
decks: DeckMapper.toShortDtoList(result.decks),
|
decks: DeckMapper.toShortDtoList(result.decks, query.userId),
|
||||||
totalCount: result.totalCount
|
totalCount: result.totalCount
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm';
|
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm';
|
||||||
import { OrganizationAggregate } from '../Organization/OrganizationAggregate';
|
import { OrganizationAggregate } from '../Organization/OrganizationAggregate';
|
||||||
import { UserAggregate } from '../User/UserAggregate';
|
import { UserAggregate } from '../User/UserAggregate';
|
||||||
|
import { logError } from '../../Application/Services/Logger';
|
||||||
|
|
||||||
export enum Type {
|
export enum Type {
|
||||||
LUCK = 0,
|
LUCK = 0,
|
||||||
@@ -86,4 +87,11 @@ export class DeckAggregate {
|
|||||||
@ManyToOne(() => UserAggregate, { eager: false })
|
@ManyToOne(() => UserAggregate, { eager: false })
|
||||||
@JoinColumn({ name: 'user_id' })
|
@JoinColumn({ name: 'user_id' })
|
||||||
user!: UserAggregate | null;
|
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