because I got bored of customising my CV for every job
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor(server): extract JobType and ApplicationStatus into standalone modules

+183
+9
apps/server/src/modules/application/application-status/application-status.dto.ts
··· 1 + export interface CreateApplicationStatusDto { 2 + name: string; 3 + description?: string; 4 + } 5 + 6 + export interface UpdateApplicationStatusDto { 7 + name?: string; 8 + description?: string; 9 + }
+3
apps/server/src/modules/application/application-status/application-status.entity.ts
··· 1 + import { NamedEntity } from "@cv/system"; 2 + 3 + export class ApplicationStatus extends NamedEntity {}
+25
apps/server/src/modules/application/application-status/application-status.factory.ts
··· 1 + import { ClockService, Factory, UuidFactoryService } from "@cv/system"; 2 + import { Injectable } from "@nestjs/common"; 3 + import type { CreateApplicationStatusDto } from "./application-status.dto"; 4 + import { ApplicationStatus } from "./application-status.entity"; 5 + 6 + @Injectable() 7 + export class ApplicationStatusFactory 8 + implements Factory<ApplicationStatus, CreateApplicationStatusDto> 9 + { 10 + constructor( 11 + private readonly uuidFactory: UuidFactoryService, 12 + private readonly clock: ClockService, 13 + ) {} 14 + 15 + create(dto: CreateApplicationStatusDto): ApplicationStatus { 16 + const now = this.clock.now(); 17 + return new ApplicationStatus( 18 + this.uuidFactory.generate(), 19 + dto.name, 20 + now, 21 + now, 22 + dto.description, 23 + ); 24 + } 25 + }
+29
apps/server/src/modules/application/application-status/application-status.mapper.ts
··· 1 + import { createNamedEntityMapper } from "@cv/system"; 2 + import { Injectable } from "@nestjs/common"; 3 + import type { ApplicationStatus as PrismaApplicationStatus } from "@prisma/client"; 4 + import { ApplicationStatus } from "./application-status.entity"; 5 + 6 + @Injectable() 7 + export class ApplicationStatusMapper { 8 + private mapper = createNamedEntityMapper< 9 + PrismaApplicationStatus, 10 + ApplicationStatus 11 + >(ApplicationStatus); 12 + 13 + toDomain(prismaEntity: null): null; 14 + toDomain(prismaEntity: PrismaApplicationStatus): ApplicationStatus; 15 + toDomain( 16 + prismaEntity: PrismaApplicationStatus | null, 17 + ): ApplicationStatus | null; 18 + toDomain( 19 + prismaEntity: PrismaApplicationStatus | null, 20 + ): ApplicationStatus | null { 21 + return this.mapper.toDomain(prismaEntity); 22 + } 23 + 24 + mapToDomain( 25 + prismaEntities: PrismaApplicationStatus[], 26 + ): ApplicationStatus[] { 27 + return this.mapper.mapToDomain(prismaEntities); 28 + } 29 + }
+20
apps/server/src/modules/application/application-status/application-status.module.ts
··· 1 + import { BaseModule, DatabaseModule } from "@cv/system"; 2 + import { Module } from "@nestjs/common"; 3 + import { ApplicationStatusFactory } from "./application-status.factory"; 4 + import { ApplicationStatusMapper } from "./application-status.mapper"; 5 + import { ApplicationStatusService } from "./application-status.service"; 6 + 7 + @Module({ 8 + imports: [DatabaseModule, BaseModule], 9 + providers: [ 10 + ApplicationStatusService, 11 + ApplicationStatusMapper, 12 + ApplicationStatusFactory, 13 + ], 14 + exports: [ 15 + ApplicationStatusService, 16 + ApplicationStatusMapper, 17 + ApplicationStatusFactory, 18 + ], 19 + }) 20 + export class ApplicationStatusModule {}
+19
apps/server/src/modules/application/application-status/application-status.service.ts
··· 1 + import { NamedEntityService, PrismaService } from "@cv/system"; 2 + import { Injectable } from "@nestjs/common"; 3 + import { ApplicationStatus } from "./application-status.entity"; 4 + import { ApplicationStatusMapper } from "./application-status.mapper"; 5 + 6 + @Injectable() 7 + export class ApplicationStatusService extends NamedEntityService<ApplicationStatus> { 8 + constructor( 9 + prisma: PrismaService, 10 + applicationStatusMapper: ApplicationStatusMapper, 11 + ) { 12 + super( 13 + prisma, 14 + applicationStatusMapper, 15 + prisma.applicationStatus, 16 + "ApplicationStatus", 17 + ); 18 + } 19 + }
+9
apps/server/src/modules/vacancies/job-type/job-type.dto.ts
··· 1 + export interface CreateJobTypeDto { 2 + name: string; 3 + description?: string; 4 + } 5 + 6 + export interface UpdateJobTypeDto { 7 + name?: string; 8 + description?: string; 9 + }
+3
apps/server/src/modules/vacancies/job-type/job-type.entity.ts
··· 1 + import { NamedEntity } from "@cv/system"; 2 + 3 + export class JobType extends NamedEntity {}
+23
apps/server/src/modules/vacancies/job-type/job-type.factory.ts
··· 1 + import { ClockService, Factory, UuidFactoryService } from "@cv/system"; 2 + import { Injectable } from "@nestjs/common"; 3 + import type { CreateJobTypeDto } from "./job-type.dto"; 4 + import { JobType } from "./job-type.entity"; 5 + 6 + @Injectable() 7 + export class JobTypeFactory implements Factory<JobType, CreateJobTypeDto> { 8 + constructor( 9 + private readonly uuidFactory: UuidFactoryService, 10 + private readonly clock: ClockService, 11 + ) {} 12 + 13 + create(dto: CreateJobTypeDto): JobType { 14 + const now = this.clock.now(); 15 + return new JobType( 16 + this.uuidFactory.generate(), 17 + dto.name, 18 + now, 19 + now, 20 + dto.description, 21 + ); 22 + } 23 + }
+20
apps/server/src/modules/vacancies/job-type/job-type.mapper.ts
··· 1 + import { createNamedEntityMapper } from "@cv/system"; 2 + import { Injectable } from "@nestjs/common"; 3 + import type { JobType as PrismaJobType } from "@prisma/client"; 4 + import { JobType } from "./job-type.entity"; 5 + 6 + @Injectable() 7 + export class JobTypeMapper { 8 + private mapper = createNamedEntityMapper<PrismaJobType, JobType>(JobType); 9 + 10 + toDomain(prismaEntity: null): null; 11 + toDomain(prismaEntity: PrismaJobType): JobType; 12 + toDomain(prismaEntity: PrismaJobType | null): JobType | null; 13 + toDomain(prismaEntity: PrismaJobType | null): JobType | null { 14 + return this.mapper.toDomain(prismaEntity); 15 + } 16 + 17 + mapToDomain(prismaEntities: PrismaJobType[]): JobType[] { 18 + return this.mapper.mapToDomain(prismaEntities); 19 + } 20 + }
+12
apps/server/src/modules/vacancies/job-type/job-type.module.ts
··· 1 + import { BaseModule, DatabaseModule } from "@cv/system"; 2 + import { Module } from "@nestjs/common"; 3 + import { JobTypeFactory } from "./job-type.factory"; 4 + import { JobTypeMapper } from "./job-type.mapper"; 5 + import { JobTypeService } from "./job-type.service"; 6 + 7 + @Module({ 8 + imports: [DatabaseModule, BaseModule], 9 + providers: [JobTypeService, JobTypeMapper, JobTypeFactory], 10 + exports: [JobTypeService, JobTypeMapper, JobTypeFactory], 11 + }) 12 + export class JobTypeModule {}
+11
apps/server/src/modules/vacancies/job-type/job-type.service.ts
··· 1 + import { NamedEntityService, PrismaService } from "@cv/system"; 2 + import { Injectable } from "@nestjs/common"; 3 + import { JobType } from "./job-type.entity"; 4 + import { JobTypeMapper } from "./job-type.mapper"; 5 + 6 + @Injectable() 7 + export class JobTypeService extends NamedEntityService<JobType> { 8 + constructor(prisma: PrismaService, jobTypeMapper: JobTypeMapper) { 9 + super(prisma, jobTypeMapper, prisma.jobType, "JobType"); 10 + } 11 + }