diff --git a/src/assessment/entities/assessment.entity.ts b/src/assessment/entities/assessment.entity.ts index fb51befa..fb8e9128 100644 --- a/src/assessment/entities/assessment.entity.ts +++ b/src/assessment/entities/assessment.entity.ts @@ -1,6 +1,9 @@ import { Column, CreateDateColumn, + OneToMany, + PrimaryGeneratedColumn, + Index, DeleteDateColumn, Entity, OneToMany, @@ -14,12 +17,14 @@ export class Assessment { id: string; @Column() + @Index() title: string; @Column({ nullable: true }) description?: string; @Column() + @Index() durationMinutes: number; @OneToMany(() => Question, (q) => q.assessment, { diff --git a/src/assessment/entities/question.entity.ts b/src/assessment/entities/question.entity.ts index 4f57fc14..aff1d244 100644 --- a/src/assessment/entities/question.entity.ts +++ b/src/assessment/entities/question.entity.ts @@ -1,3 +1,4 @@ +import { ManyToOne, PrimaryGeneratedColumn, Index } from 'typeorm'; import { Column, DeleteDateColumn, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; import { QuestionType } from '../enums/question-type.enum'; import { Assessment } from './assessment.entity'; @@ -8,9 +9,11 @@ export class Question { id: string; @Column({ type: 'enum', enum: QuestionType }) + @Index() type: QuestionType; @Column() + @Index() prompt: string; @Column({ type: 'json', nullable: true }) diff --git a/src/common/utils/websocket.utils.ts b/src/common/utils/websocket.utils.ts index 5c268115..58d99bc6 100644 --- a/src/common/utils/websocket.utils.ts +++ b/src/common/utils/websocket.utils.ts @@ -47,7 +47,9 @@ class WebSocketManager { } const userConnections = this.connections.get(userId) ?? new Set(); - + + const userConnections = this.connections.get(userId); + if (!userConnections) { return; } diff --git a/src/courses/entities/course.entity.ts b/src/courses/entities/course.entity.ts index 43eb7400..d00ac7a6 100644 --- a/src/courses/entities/course.entity.ts +++ b/src/courses/entities/course.entity.ts @@ -19,6 +19,7 @@ export class Course { id: string; @Column() + @Index() title: string; @Column('text') diff --git a/src/email-marketing/entities/campaign.entity.ts b/src/email-marketing/entities/campaign.entity.ts index 79adbd31..87772367 100644 --- a/src/email-marketing/entities/campaign.entity.ts +++ b/src/email-marketing/entities/campaign.entity.ts @@ -9,6 +9,7 @@ import { OneToMany, OneToOne, JoinColumn, + Index, } from 'typeorm'; import { ApiProperty } from '@nestjs/swagger'; @@ -25,10 +26,12 @@ export class Campaign { @ApiProperty() @Column() + @Index() name: string; @ApiProperty() @Column() + @Index() subject: string; @ApiProperty({ required: false }) @@ -41,6 +44,7 @@ export class Campaign { @ApiProperty({ required: false }) @Column({ nullable: true }) + @Index() templateId?: string; @ManyToOne(() => EmailTemplate, { nullable: true }) @@ -53,14 +57,17 @@ export class Campaign { @ApiProperty({ enum: CampaignStatus }) @Column({ type: 'enum', enum: CampaignStatus, default: CampaignStatus.DRAFT }) + @Index() status: CampaignStatus; @ApiProperty({ required: false }) @Column({ nullable: true }) + @Index() scheduledAt?: Date; @ApiProperty({ required: false }) @Column({ nullable: true }) + @Index() sentAt?: Date; @ApiProperty() diff --git a/src/gamification/entities/user-progress.entity.ts b/src/gamification/entities/user-progress.entity.ts index 5c5dc834..fbe04ccd 100644 --- a/src/gamification/entities/user-progress.entity.ts +++ b/src/gamification/entities/user-progress.entity.ts @@ -1,4 +1,4 @@ -import { Entity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn } from 'typeorm'; +import { Entity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn, Index } from 'typeorm'; import { User } from '../../users/entities/user.entity'; @Entity('user_progress') @@ -8,14 +8,18 @@ export class UserProgress { @OneToOne(() => User) @JoinColumn() + @Index() user: User; @Column({ default: 0 }) + @Index() totalPoints: number; @Column({ default: 1 }) + @Index() level: number; @Column({ default: 0 }) + @Index() xp: number; } diff --git a/src/payments/entities/invoice.entity.ts b/src/payments/entities/invoice.entity.ts index 3d8e6781..ca1c671c 100644 --- a/src/payments/entities/invoice.entity.ts +++ b/src/payments/entities/invoice.entity.ts @@ -6,6 +6,7 @@ import { UpdateDateColumn, ManyToOne, JoinColumn, + Index, } from 'typeorm'; import { Payment } from './payment.entity'; import { User } from '../../users/entities/user.entity'; @@ -31,15 +32,18 @@ export class Invoice { id: string; @Column({ type: 'varchar', unique: true }) + @Index() invoiceNumber: string; @Column({ type: 'decimal', precision: 10, scale: 2 }) + @Index() amount: number; @Column({ type: 'decimal', precision: 10, scale: 2, default: 0 }) taxAmount: number; @Column({ type: 'decimal', precision: 10, scale: 2 }) + @Index() totalAmount: number; @Column({ type: 'varchar', length: 3, default: 'USD' }) @@ -53,12 +57,15 @@ export class Invoice { enum: InvoiceStatus, default: InvoiceStatus.DRAFT, }) + @Index() status: InvoiceStatus; @Column({ type: 'date', nullable: true }) + @Index() issuedDate: Date; @Column({ type: 'date', nullable: true }) + @Index() dueDate: Date; @Column({ type: 'text', nullable: true }) @@ -72,6 +79,7 @@ export class Invoice { payment: Payment; @Column({ name: 'payment_id' }) + @Index() paymentId: string; @ManyToOne(() => User, (user) => user.id) @@ -79,6 +87,7 @@ export class Invoice { user: User; @Column({ name: 'user_id' }) + @Index() userId: string; @CreateDateColumn()