Backend_Fix #76

Merged
Donat merged 2 commits from Backend_Fix into main 2025-10-26 23:59:01 +01:00
4 changed files with 17 additions and 5 deletions
Showing only changes of commit fe8d5a53a5 - Show all commits
@@ -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;
};
}
} }