@dirayaah/assessment-module 1.0.1 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/src/dto/assessment-response.dto.d.ts +8 -0
  2. package/dist/src/dto/assessment-response.dto.js +36 -0
  3. package/dist/src/dto/assessment-response.dto.js.map +1 -0
  4. package/dist/src/dto/assessment.dto.d.ts +2 -0
  5. package/dist/src/dto/assessment.dto.js +6 -0
  6. package/dist/src/dto/assessment.dto.js.map +1 -1
  7. package/dist/src/dto/index.d.ts +2 -1
  8. package/dist/src/dto/index.js +3 -1
  9. package/dist/src/dto/index.js.map +1 -1
  10. package/dist/src/entities/assessment-response.entity.d.ts +7 -0
  11. package/dist/src/entities/assessment-response.entity.js +35 -0
  12. package/dist/src/entities/assessment-response.entity.js.map +1 -0
  13. package/dist/src/entities/assessment.entity.d.ts +2 -0
  14. package/dist/src/entities/assessment.entity.js +5 -0
  15. package/dist/src/entities/assessment.entity.js.map +1 -1
  16. package/dist/src/entities/index.d.ts +2 -1
  17. package/dist/src/entities/index.js +3 -1
  18. package/dist/src/entities/index.js.map +1 -1
  19. package/dist/src/migrations/1769428739895-CreateAssessmentResponseTable.d.ts +6 -0
  20. package/dist/src/migrations/1769428739895-CreateAssessmentResponseTable.js +70 -0
  21. package/dist/src/migrations/1769428739895-CreateAssessmentResponseTable.js.map +1 -0
  22. package/dist/src/migrations/index.d.ts +2 -1
  23. package/dist/src/migrations/index.js +4 -1
  24. package/dist/src/migrations/index.js.map +1 -1
  25. package/dist/src/repositories/assessment-response.repository.d.ts +4 -0
  26. package/dist/src/repositories/assessment-response.repository.js +19 -0
  27. package/dist/src/repositories/assessment-response.repository.js.map +1 -0
  28. package/dist/src/repositories/index.d.ts +2 -1
  29. package/dist/src/repositories/index.js +3 -1
  30. package/dist/src/repositories/index.js.map +1 -1
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +1 -1
  33. package/src/dto/assessment-response.dto.ts +22 -0
  34. package/src/dto/assessment.dto.ts +6 -0
  35. package/src/dto/index.ts +2 -1
  36. package/src/entities/assessment-response.entity.ts +16 -0
  37. package/src/entities/assessment.entity.ts +8 -1
  38. package/src/entities/index.ts +7 -2
  39. package/src/migrations/1769428739895-CreateAssessmentResponseTable.ts +69 -0
  40. package/src/migrations/index.ts +3 -0
  41. package/src/repositories/assessment-response.repository.ts +6 -0
  42. package/src/repositories/index.ts +6 -1
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.0.1",
6
+ "version": "1.0.4",
7
7
  "description": "A reusable module for handling assessments in nestjs applications",
8
8
  "main": "dist/index.js",
9
9
  "type": "commonjs",
@@ -0,0 +1,22 @@
1
+ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
2
+ import { IsNumber, IsNotEmpty, IsObject } from 'class-validator';
3
+ import { BaseDTO } from './base.dto';
4
+ import { AssessmentDto } from './assessment.dto';
5
+
6
+ export class AssessmentResponseDto extends BaseDTO {
7
+ @ApiProperty({ example: 5 })
8
+ userId: number;
9
+
10
+ @ApiProperty({ example: 5 })
11
+ @IsNumber()
12
+ @IsNotEmpty()
13
+ assessmentId: number;
14
+
15
+ @ApiPropertyOptional({
16
+ example: { duration: 60, language: 'en' },
17
+ type: Object,
18
+ })
19
+ response: Record<string, any>;
20
+
21
+ assessment?: AssessmentDto;
22
+ }
@@ -7,6 +7,7 @@ import {
7
7
  IsObject,
8
8
  } from 'class-validator';
9
9
  import { BaseDTO } from './base.dto';
10
+ import { AssessmentResponseDto } from './assessment-response.dto';
10
11
 
11
12
  export class AssessmentDto extends BaseDTO {
12
13
  @ApiProperty({ example: 'DISC' })
@@ -66,4 +67,9 @@ export class AssessmentDto extends BaseDTO {
66
67
  @IsOptional()
67
68
  @IsString()
68
69
  metaDescription?: string;
70
+
71
+ @ApiPropertyOptional({ example: 'SEO meta description for the assessment' })
72
+ @IsOptional()
73
+ @IsObject()
74
+ responses?: AssessmentResponseDto[];
69
75
  }
package/src/dto/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { AssessmentDto } from './assessment.dto';
2
2
  import { PredefinedAssessmentDto } from './predefined-assessment.dto';
3
+ import { AssessmentResponseDto } from './assessment-response.dto';
3
4
 
4
- export { AssessmentDto, PredefinedAssessmentDto };
5
+ export { AssessmentDto, PredefinedAssessmentDto, AssessmentResponseDto };
@@ -0,0 +1,16 @@
1
+ import { Column, Entity, JoinColumn, ManyToOne } from 'typeorm/index.js';
2
+ import { BaseEntity } from './base.entity';
3
+ import { AssessmentEntity } from './assessment.entity';
4
+
5
+ @Entity('assessment_response')
6
+ export class AssessmentResponseEntity extends BaseEntity {
7
+ @Column({ nullable: false, name: 'userId' })
8
+ userId: number;
9
+
10
+ @ManyToOne(() => AssessmentEntity, (assessment) => assessment.responses)
11
+ @JoinColumn({ name: 'assessmentId' })
12
+ assessment?: AssessmentEntity;
13
+
14
+ @Column({ nullable: false, type: 'json' })
15
+ response: Record<string, any>;
16
+ }
@@ -1,5 +1,6 @@
1
- import { Column, Entity } from 'typeorm/index.js';
1
+ import { Column, Entity, OneToMany } from 'typeorm/index.js';
2
2
  import { BaseEntity } from './base.entity';
3
+ import { AssessmentResponseEntity } from './assessment-response.entity';
3
4
 
4
5
  @Entity('assessment')
5
6
  export class AssessmentEntity extends BaseEntity {
@@ -38,4 +39,10 @@ export class AssessmentEntity extends BaseEntity {
38
39
 
39
40
  @Column({ nullable: true, name: 'meta_description' })
40
41
  metaDescription?: string;
42
+
43
+ @OneToMany(
44
+ () => AssessmentResponseEntity,
45
+ (assessmentResponse) => assessmentResponse.assessment,
46
+ )
47
+ responses?: AssessmentResponseEntity[];
41
48
  }
@@ -1,4 +1,9 @@
1
1
  import { AssessmentEntity } from './assessment.entity';
2
-
3
2
  import { PredefinedAssessmentEntity } from './predefined-assessment.entity';
4
- export { AssessmentEntity, PredefinedAssessmentEntity };
3
+ import { AssessmentResponseEntity } from './assessment-response.entity';
4
+
5
+ export {
6
+ AssessmentEntity,
7
+ PredefinedAssessmentEntity,
8
+ AssessmentResponseEntity,
9
+ };
@@ -0,0 +1,69 @@
1
+ import { MigrationInterface, QueryRunner, Table } from 'typeorm/index.js';
2
+ import { baseColumns } from '../utilities/migrations/get-base-columns';
3
+
4
+ export class CreateAssessmentResponseTable1769428739895 implements MigrationInterface {
5
+ private table = 'assessment_response';
6
+
7
+ public async up(queryRunner: QueryRunner): Promise<void> {
8
+ console.log('EHNA HNBD2 EL MIGRATION AHU');
9
+ const [idColumn, ...otherBaseColumns] = baseColumns;
10
+ console.log('EL COLUMNS AHU', idColumn, ...otherBaseColumns);
11
+ await queryRunner.createTable(
12
+ new Table({
13
+ name: this.table,
14
+ columns: [
15
+ idColumn,
16
+ {
17
+ name: 'userId',
18
+ type: 'int4',
19
+ isNullable: false,
20
+ },
21
+ {
22
+ name: 'assessmentId',
23
+ type: 'int4',
24
+ isNullable: false,
25
+ },
26
+ {
27
+ name: 'response',
28
+ type: 'json',
29
+ isNullable: false,
30
+ },
31
+ ...otherBaseColumns,
32
+ ],
33
+ foreignKeys: [
34
+ {
35
+ columnNames: ['assessmentId'],
36
+ referencedColumnNames: ['id'],
37
+ referencedTableName: 'assessment',
38
+ onDelete: 'CASCADE',
39
+ name: `${this.table}_assessmentId_fk`,
40
+ },
41
+ ],
42
+ indices: [
43
+ {
44
+ columnNames: ['assessmentId'],
45
+ name: `${this.table}_assessmentId_idx`,
46
+ isUnique: false,
47
+ },
48
+ {
49
+ columnNames: ['userId'],
50
+ name: `${this.table}_userId_idx`,
51
+ isUnique: false,
52
+ },
53
+ ],
54
+ uniques: [
55
+ {
56
+ columnNames: ['assessmentId', 'userId'],
57
+ name: `${this.table}_assessmentId_userId_idx`,
58
+ },
59
+ ],
60
+ }),
61
+ true,
62
+ );
63
+ console.log("EHNA KHLSNA L MIGRATIONS")
64
+ }
65
+
66
+ public async down(queryRunner: QueryRunner): Promise<void> {
67
+ await queryRunner.dropTable(this.table, true, true, true);
68
+ }
69
+ }
@@ -5,11 +5,13 @@ import { CreatePredefinedAssessmentTable1767200020161 } from './1767200020161-Cr
5
5
  import { SeedPredefinedAssessments1767204696509 } from './1767204696509-SeedPredefinedAssessments';
6
6
 
7
7
  import { AddMetaFieldsToAssessmentTable1767651698587 } from './1767651698587-AddMetaFieldsToAssessmentTable';
8
+ import { CreateAssessmentResponseTable1769428739895 } from './1769428739895-CreateAssessmentResponseTable';
8
9
  export const AssessmentMigrations = [
9
10
  CreateAssessmentTable1767108782301,
10
11
  CreatePredefinedAssessmentTable1767200020161,
11
12
  SeedPredefinedAssessments1767204696509,
12
13
  AddMetaFieldsToAssessmentTable1767651698587,
14
+ CreateAssessmentResponseTable1769428739895,
13
15
  ];
14
16
 
15
17
  export {
@@ -17,4 +19,5 @@ export {
17
19
  CreatePredefinedAssessmentTable1767200020161,
18
20
  SeedPredefinedAssessments1767204696509,
19
21
  AddMetaFieldsToAssessmentTable1767651698587,
22
+ CreateAssessmentResponseTable1769428739895,
20
23
  };
@@ -0,0 +1,6 @@
1
+ import { AssessmentResponseEntity } from '../entities';
2
+ import { EntityRepository } from 'typeorm/index.js';
3
+ import { BaseRepository } from './base.repository';
4
+
5
+ @EntityRepository(AssessmentResponseEntity)
6
+ export class AssessmentResponseRepository extends BaseRepository<AssessmentResponseEntity> {}
@@ -1,4 +1,9 @@
1
1
  import { AssessmentRepository } from './assessment.repository';
2
2
  import { PredefinedAssessmentRepository } from './predefined-assessment.repository';
3
+ import { AssessmentResponseRepository } from './assessment-response.repository';
3
4
 
4
- export { AssessmentRepository, PredefinedAssessmentRepository };
5
+ export {
6
+ AssessmentRepository,
7
+ PredefinedAssessmentRepository,
8
+ AssessmentResponseRepository,
9
+ };