creator, creation date on deck

This commit is contained in:
magdo
2025-10-22 22:03:50 +02:00
parent 9673d564a0
commit 38a2aeb58a
9 changed files with 267 additions and 1 deletions
@@ -16,6 +16,8 @@ export interface ShortDeckDto {
playedNumber: number;
ctype: number;
cardsCount: number;
creator: string;
creationdate: Date;
}
export interface DetailDeckDto {
@@ -1,4 +1,5 @@
import { DeckAggregate } from '../../../Domain/Deck/DeckAggregate';
import { UserAggregate } from '../../../Domain/User/UserAggregate';
import { CreateDeckDto, UpdateDeckDto, ShortDeckDto, DetailDeckDto } from '../DeckDto';
export class DeckMapper {
@@ -10,6 +11,8 @@ export class DeckMapper {
playedNumber: deck.playedNumber,
ctype: deck.ctype,
cardsCount: deck.cards.length,
creator: deck.user?.username || 'Unknown',
creationdate: deck.creationdate
};
}
@@ -34,6 +37,8 @@ export class DeckMapper {
playedNumber: deck.playedNumber,
ctype: deck.ctype,
cardsCount: deck.cards.length,
creator: deck.user?.username || 'Unknown',
creationdate: deck.creationdate
}));
}
}
@@ -1,5 +1,6 @@
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm';
import { OrganizationAggregate } from '../Organization/OrganizationAggregate';
import { UserAggregate } from '../User/UserAggregate';
export enum Type {
LUCK = 0,
@@ -81,4 +82,8 @@ export class DeckAggregate {
@ManyToOne(() => OrganizationAggregate, { nullable: true })
@JoinColumn({ name: 'organization_id' })
organization!: OrganizationAggregate | null;
@ManyToOne(() => UserAggregate, { eager: false })
@JoinColumn({ name: 'user_id' })
user!: UserAggregate | null;
}
@@ -255,7 +255,7 @@ export class DeckRepository implements IDeckRepository {
const [decks, totalCount] = await this.repo.findAndCount({
where: { state: Not(State.SOFT_DELETE) },
relations: ['organization'],
relations: ['organization', 'user'],
order: { creationdate: 'DESC' },
skip,
take
@@ -270,6 +270,7 @@ export class DeckRepository implements IDeckRepository {
// Regular user complex filtering
const queryBuilder = this.repo.createQueryBuilder('deck')
.leftJoinAndSelect('deck.organization', 'org')
.leftJoinAndSelect('deck.user', 'user')
.where('deck.state != :deletedState', { deletedState: State.SOFT_DELETE });
queryBuilder.andWhere('(' +