chore: refacto NestJS in modules (#308)
* chore: wip refacto in modules * fix: rollback port * fix: jwt guard in wrong folder * chore: rename folder exception-filter in filters * fix: tests are running * fix: excessive stack depth comparing types * fix: auth issue * chore: move createUser in UserService * fix: test * fix: guards * fix: jwt guard don't handle falsy user
This commit is contained in:
27
server/src/core/pipeline/pipeline.module.ts
Normal file
27
server/src/core/pipeline/pipeline.module.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { PipelineService } from './services/pipeline.service';
|
||||
import { PipelineResolver } from './resolvers/pipeline.resolver';
|
||||
import { PipelineRelationsResolver } from './resolvers/pipeline-relations.resolver';
|
||||
import { PipelineStageResolver } from './resolvers/pipeline-stage.resolver';
|
||||
import { PipelineStageRelationsResolver } from './resolvers/pipeline-stage-relations.resolver';
|
||||
import { PipelineProgressResolver } from './resolvers/pipeline-progress.resolver';
|
||||
import { PipelineProgressRelationsResolver } from './resolvers/pipeline-progress-relations.resolver';
|
||||
import { PipelineStageService } from './services/pipeline-stage.service';
|
||||
import { PipelineProgressService } from './services/pipeline-progress.service';
|
||||
|
||||
@Module({
|
||||
imports: [],
|
||||
providers: [
|
||||
PipelineService,
|
||||
PipelineStageService,
|
||||
PipelineProgressService,
|
||||
PipelineResolver,
|
||||
PipelineRelationsResolver,
|
||||
PipelineStageResolver,
|
||||
PipelineStageRelationsResolver,
|
||||
PipelineProgressResolver,
|
||||
PipelineProgressRelationsResolver,
|
||||
],
|
||||
exports: [PipelineService, PipelineStageService, PipelineProgressService],
|
||||
})
|
||||
export class PipelineModule {}
|
||||
@ -0,0 +1,32 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PipelineProgressRelationsResolver } from './pipeline-progress-relations.resolver';
|
||||
import { PipelineStageService } from '../services/pipeline-stage.service';
|
||||
import { PipelineService } from '../services/pipeline.service';
|
||||
|
||||
describe('PipelineProgressRelationsResolver', () => {
|
||||
let resolver: PipelineProgressRelationsResolver;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [
|
||||
PipelineProgressRelationsResolver,
|
||||
{
|
||||
provide: PipelineStageService,
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
provide: PipelineService,
|
||||
useValue: {},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
resolver = module.get<PipelineProgressRelationsResolver>(
|
||||
PipelineProgressRelationsResolver,
|
||||
);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(resolver).toBeDefined();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,40 @@
|
||||
import * as TypeGraphQL from '@nestjs/graphql';
|
||||
import { PipelineProgress } from 'src/core/@generated/pipeline-progress/pipeline-progress.model';
|
||||
import { PipelineStage } from 'src/core/@generated/pipeline-stage/pipeline-stage.model';
|
||||
import { Pipeline } from 'src/core/@generated/pipeline/pipeline.model';
|
||||
import { PipelineStageService } from '../services/pipeline-stage.service';
|
||||
import { PipelineService } from '../services/pipeline.service';
|
||||
|
||||
@TypeGraphQL.Resolver(() => PipelineProgress)
|
||||
export class PipelineProgressRelationsResolver {
|
||||
constructor(
|
||||
private readonly pipelineStageService: PipelineStageService,
|
||||
private readonly pipelineService: PipelineService,
|
||||
) {}
|
||||
|
||||
@TypeGraphQL.ResolveField(() => PipelineStage, {
|
||||
nullable: false,
|
||||
})
|
||||
async pipelineStage(
|
||||
@TypeGraphQL.Root() pipelineStage: PipelineProgress,
|
||||
): Promise<PipelineStage> {
|
||||
return this.pipelineStageService.findUniqueOrThrow({
|
||||
where: {
|
||||
id: pipelineStage.pipelineStageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@TypeGraphQL.ResolveField(() => Pipeline, {
|
||||
nullable: false,
|
||||
})
|
||||
async pipeline(
|
||||
@TypeGraphQL.Root() pipelineStage: PipelineProgress,
|
||||
): Promise<Pipeline> {
|
||||
return this.pipelineService.findUniqueOrThrow({
|
||||
where: {
|
||||
id: pipelineStage.pipelineId,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PipelineProgressResolver } from './pipeline-progress.resolver';
|
||||
import { PipelineProgressService } from '../services/pipeline-progress.service';
|
||||
|
||||
describe('PipelineProgressResolver', () => {
|
||||
let resolver: PipelineProgressResolver;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [
|
||||
PipelineProgressResolver,
|
||||
{
|
||||
provide: PipelineProgressService,
|
||||
useValue: {},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
resolver = module.get<PipelineProgressResolver>(PipelineProgressResolver);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(resolver).toBeDefined();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,71 @@
|
||||
import { Resolver, Args, Query, Mutation } from '@nestjs/graphql';
|
||||
import { UseGuards } from '@nestjs/common';
|
||||
import { JwtAuthGuard } from 'src/guards/jwt.auth.guard';
|
||||
import { Workspace } from '../../../core/@generated/workspace/workspace.model';
|
||||
import { AuthWorkspace } from '../../../decorators/auth-workspace.decorator';
|
||||
import { FindManyPipelineProgressArgs } from '../../@generated/pipeline-progress/find-many-pipeline-progress.args';
|
||||
import { PipelineProgress } from '../../@generated/pipeline-progress/pipeline-progress.model';
|
||||
import { UpdateOnePipelineProgressArgs } from '../../@generated/pipeline-progress/update-one-pipeline-progress.args';
|
||||
import { Prisma } from '@prisma/client';
|
||||
import { AffectedRows } from '../../@generated/prisma/affected-rows.output';
|
||||
import { DeleteManyPipelineProgressArgs } from '../../@generated/pipeline-progress/delete-many-pipeline-progress.args';
|
||||
import { CreateOnePipelineProgressArgs } from '../../@generated/pipeline-progress/create-one-pipeline-progress.args';
|
||||
import { PipelineProgressService } from '../services/pipeline-progress.service';
|
||||
import { prepareFindManyArgs } from 'src/utils/prepare-find-many';
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Resolver(() => PipelineProgress)
|
||||
export class PipelineProgressResolver {
|
||||
constructor(
|
||||
private readonly pipelineProgressService: PipelineProgressService,
|
||||
) {}
|
||||
|
||||
@Query(() => [PipelineProgress])
|
||||
async findManyPipelineProgress(
|
||||
@Args() args: FindManyPipelineProgressArgs,
|
||||
@AuthWorkspace() workspace: Workspace,
|
||||
) {
|
||||
const preparedArgs = prepareFindManyArgs<FindManyPipelineProgressArgs>(
|
||||
args,
|
||||
workspace,
|
||||
);
|
||||
return this.pipelineProgressService.findMany(preparedArgs);
|
||||
}
|
||||
|
||||
@Mutation(() => PipelineProgress, {
|
||||
nullable: true,
|
||||
})
|
||||
async updateOnePipelineProgress(
|
||||
@Args() args: UpdateOnePipelineProgressArgs,
|
||||
): Promise<PipelineProgress | null> {
|
||||
return this.pipelineProgressService.update({
|
||||
...args,
|
||||
} satisfies UpdateOnePipelineProgressArgs as Prisma.PipelineProgressUpdateArgs);
|
||||
}
|
||||
|
||||
@Mutation(() => AffectedRows, {
|
||||
nullable: false,
|
||||
})
|
||||
async deleteManyPipelineProgress(
|
||||
@Args() args: DeleteManyPipelineProgressArgs,
|
||||
): Promise<AffectedRows> {
|
||||
return this.pipelineProgressService.deleteMany({
|
||||
...args,
|
||||
});
|
||||
}
|
||||
|
||||
@Mutation(() => PipelineProgress, {
|
||||
nullable: false,
|
||||
})
|
||||
async createOnePipelineProgress(
|
||||
@Args() args: CreateOnePipelineProgressArgs,
|
||||
@AuthWorkspace() workspace: Workspace,
|
||||
): Promise<PipelineProgress> {
|
||||
return this.pipelineProgressService.create({
|
||||
data: {
|
||||
...args.data,
|
||||
...{ workspace: { connect: { id: workspace.id } } },
|
||||
},
|
||||
} satisfies CreateOnePipelineProgressArgs as Prisma.PipelineProgressCreateArgs);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PipelineRelationsResolver } from './pipeline-relations.resolver';
|
||||
import { PipelineStageService } from '../services/pipeline-stage.service';
|
||||
|
||||
describe('PipelineRelationsResolver', () => {
|
||||
let resolver: PipelineRelationsResolver;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [
|
||||
PipelineRelationsResolver,
|
||||
{
|
||||
provide: PipelineStageService,
|
||||
useValue: {},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
resolver = module.get<PipelineRelationsResolver>(PipelineRelationsResolver);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(resolver).toBeDefined();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,24 @@
|
||||
import * as TypeGraphQL from '@nestjs/graphql';
|
||||
import { PipelineStage } from 'src/core/@generated/pipeline-stage/pipeline-stage.model';
|
||||
import { Pipeline } from 'src/core/@generated/pipeline/pipeline.model';
|
||||
import { PipelineStageService } from '../services/pipeline-stage.service';
|
||||
|
||||
@TypeGraphQL.Resolver(() => Pipeline)
|
||||
export class PipelineRelationsResolver {
|
||||
constructor(private readonly pipelineStageService: PipelineStageService) {}
|
||||
|
||||
@TypeGraphQL.ResolveField(() => [PipelineStage], {
|
||||
nullable: false,
|
||||
})
|
||||
async pipelineStages(
|
||||
@TypeGraphQL.Root() pipeline: Pipeline,
|
||||
): Promise<PipelineStage[]> {
|
||||
return this.pipelineStageService.findMany({
|
||||
where: {
|
||||
pipelineId: {
|
||||
equals: pipeline.id,
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PipelineStageRelationsResolver } from './pipeline-stage-relations.resolver';
|
||||
import { PipelineProgressService } from '../services/pipeline-progress.service';
|
||||
|
||||
describe('PipelineStageRelationsResolver', () => {
|
||||
let resolver: PipelineStageRelationsResolver;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [
|
||||
PipelineStageRelationsResolver,
|
||||
{
|
||||
provide: PipelineProgressService,
|
||||
useValue: {},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
resolver = module.get<PipelineStageRelationsResolver>(
|
||||
PipelineStageRelationsResolver,
|
||||
);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(resolver).toBeDefined();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,26 @@
|
||||
import * as TypeGraphQL from '@nestjs/graphql';
|
||||
import { PipelineProgress } from 'src/core/@generated/pipeline-progress/pipeline-progress.model';
|
||||
import { PipelineStage } from 'src/core/@generated/pipeline-stage/pipeline-stage.model';
|
||||
import { PipelineProgressService } from '../services/pipeline-progress.service';
|
||||
|
||||
@TypeGraphQL.Resolver(() => PipelineStage)
|
||||
export class PipelineStageRelationsResolver {
|
||||
constructor(
|
||||
private readonly pipelineProgressService: PipelineProgressService,
|
||||
) {}
|
||||
|
||||
@TypeGraphQL.ResolveField(() => [PipelineProgress], {
|
||||
nullable: false,
|
||||
})
|
||||
async pipelineProgresses(
|
||||
@TypeGraphQL.Root() pipelineStage: PipelineStage,
|
||||
): Promise<PipelineProgress[]> {
|
||||
return this.pipelineProgressService.findMany({
|
||||
where: {
|
||||
pipelineStageId: {
|
||||
equals: pipelineStage.id,
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PipelineStageResolver } from './pipeline-stage.resolver';
|
||||
import { PipelineStageService } from '../services/pipeline-stage.service';
|
||||
|
||||
describe('PipelineStageResolver', () => {
|
||||
let resolver: PipelineStageResolver;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [
|
||||
PipelineStageResolver,
|
||||
{
|
||||
provide: PipelineStageService,
|
||||
useValue: {},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
resolver = module.get<PipelineStageResolver>(PipelineStageResolver);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(resolver).toBeDefined();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,28 @@
|
||||
import { Resolver, Args, Query } from '@nestjs/graphql';
|
||||
import { UseGuards } from '@nestjs/common';
|
||||
import { JwtAuthGuard } from 'src/guards/jwt.auth.guard';
|
||||
import { Workspace } from '../../../core/@generated/workspace/workspace.model';
|
||||
import { AuthWorkspace } from '../../../decorators/auth-workspace.decorator';
|
||||
import { PipelineStage } from '../../../core/@generated/pipeline-stage/pipeline-stage.model';
|
||||
import { FindManyPipelineStageArgs } from '../../../core/@generated/pipeline-stage/find-many-pipeline-stage.args';
|
||||
import { PipelineStageService } from '../services/pipeline-stage.service';
|
||||
import { prepareFindManyArgs } from 'src/utils/prepare-find-many';
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Resolver(() => PipelineStage)
|
||||
export class PipelineStageResolver {
|
||||
constructor(private readonly pipelineStageService: PipelineStageService) {}
|
||||
|
||||
@Query(() => [PipelineStage])
|
||||
async findManyPipelineStage(
|
||||
@Args() args: FindManyPipelineStageArgs,
|
||||
@AuthWorkspace() workspace: Workspace,
|
||||
) {
|
||||
const preparedArgs = prepareFindManyArgs<FindManyPipelineStageArgs>(
|
||||
args,
|
||||
workspace,
|
||||
);
|
||||
|
||||
return this.pipelineStageService.findMany(preparedArgs);
|
||||
}
|
||||
}
|
||||
25
server/src/core/pipeline/resolvers/pipeline.resolver.spec.ts
Normal file
25
server/src/core/pipeline/resolvers/pipeline.resolver.spec.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PipelineResolver } from './pipeline.resolver';
|
||||
import { PipelineService } from '../services/pipeline.service';
|
||||
|
||||
describe('PipelineResolver', () => {
|
||||
let resolver: PipelineResolver;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [
|
||||
PipelineResolver,
|
||||
{
|
||||
provide: PipelineService,
|
||||
useValue: {},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
resolver = module.get<PipelineResolver>(PipelineResolver);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(resolver).toBeDefined();
|
||||
});
|
||||
});
|
||||
27
server/src/core/pipeline/resolvers/pipeline.resolver.ts
Normal file
27
server/src/core/pipeline/resolvers/pipeline.resolver.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import { Resolver, Args, Query } from '@nestjs/graphql';
|
||||
import { UseGuards } from '@nestjs/common';
|
||||
import { JwtAuthGuard } from 'src/guards/jwt.auth.guard';
|
||||
import { Workspace } from '../../@generated/workspace/workspace.model';
|
||||
import { AuthWorkspace } from '../../../decorators/auth-workspace.decorator';
|
||||
import { Pipeline } from '../../@generated/pipeline/pipeline.model';
|
||||
import { FindManyPipelineArgs } from '../../@generated/pipeline/find-many-pipeline.args';
|
||||
import { PipelineService } from '../services/pipeline.service';
|
||||
import { prepareFindManyArgs } from 'src/utils/prepare-find-many';
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Resolver(() => Pipeline)
|
||||
export class PipelineResolver {
|
||||
constructor(private readonly pipelineService: PipelineService) {}
|
||||
|
||||
@Query(() => [Pipeline])
|
||||
async findManyPipeline(
|
||||
@Args() args: FindManyPipelineArgs,
|
||||
@AuthWorkspace() workspace: Workspace,
|
||||
) {
|
||||
const preparedArgs = prepareFindManyArgs<FindManyPipelineArgs>(
|
||||
args,
|
||||
workspace,
|
||||
);
|
||||
return this.pipelineService.findMany(preparedArgs);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PipelineProgressService } from './pipeline-progress.service';
|
||||
import { PrismaService } from 'src/database/prisma.service';
|
||||
import { prismaMock } from 'src/prisma-mock/jest-prisma-singleton';
|
||||
|
||||
describe('PipelineProgressService', () => {
|
||||
let service: PipelineProgressService;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [
|
||||
PipelineProgressService,
|
||||
{
|
||||
provide: PrismaService,
|
||||
useValue: prismaMock,
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
service = module.get<PipelineProgressService>(PipelineProgressService);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(service).toBeDefined();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,38 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { PrismaService } from 'src/database/prisma.service';
|
||||
|
||||
@Injectable()
|
||||
export class PipelineProgressService {
|
||||
constructor(private readonly prismaService: PrismaService) {}
|
||||
|
||||
// Find
|
||||
findFirst = this.prismaService.pipelineProgress.findFirst;
|
||||
findFirstOrThrow = this.prismaService.pipelineProgress.findFirstOrThrow;
|
||||
|
||||
findUnique = this.prismaService.pipelineProgress.findUnique;
|
||||
findUniqueOrThrow = this.prismaService.pipelineProgress.findUniqueOrThrow;
|
||||
|
||||
findMany = this.prismaService.pipelineProgress.findMany;
|
||||
|
||||
// Create
|
||||
create = this.prismaService.pipelineProgress.create;
|
||||
createMany = this.prismaService.pipelineProgress.createMany;
|
||||
|
||||
// Update
|
||||
update = this.prismaService.pipelineProgress.update;
|
||||
upsert = this.prismaService.pipelineProgress.upsert;
|
||||
updateMany = this.prismaService.pipelineProgress.updateMany;
|
||||
|
||||
// Delete
|
||||
delete = this.prismaService.pipelineProgress.delete;
|
||||
deleteMany = this.prismaService.pipelineProgress.deleteMany;
|
||||
|
||||
// Aggregate
|
||||
aggregate = this.prismaService.pipelineProgress.aggregate;
|
||||
|
||||
// Count
|
||||
count = this.prismaService.pipelineProgress.count;
|
||||
|
||||
// GroupBy
|
||||
groupBy = this.prismaService.pipelineProgress.groupBy;
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PipelineStageService } from './pipeline-stage.service';
|
||||
import { PrismaService } from 'src/database/prisma.service';
|
||||
import { prismaMock } from 'src/prisma-mock/jest-prisma-singleton';
|
||||
|
||||
describe('PipelineStageService', () => {
|
||||
let service: PipelineStageService;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [
|
||||
PipelineStageService,
|
||||
{
|
||||
provide: PrismaService,
|
||||
useValue: prismaMock,
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
service = module.get<PipelineStageService>(PipelineStageService);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(service).toBeDefined();
|
||||
});
|
||||
});
|
||||
38
server/src/core/pipeline/services/pipeline-stage.service.ts
Normal file
38
server/src/core/pipeline/services/pipeline-stage.service.ts
Normal file
@ -0,0 +1,38 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { PrismaService } from 'src/database/prisma.service';
|
||||
|
||||
@Injectable()
|
||||
export class PipelineStageService {
|
||||
constructor(private readonly prismaService: PrismaService) {}
|
||||
|
||||
// Find
|
||||
findFirst = this.prismaService.pipelineStage.findFirst;
|
||||
findFirstOrThrow = this.prismaService.pipelineStage.findFirstOrThrow;
|
||||
|
||||
findUnique = this.prismaService.pipelineStage.findUnique;
|
||||
findUniqueOrThrow = this.prismaService.pipelineStage.findUniqueOrThrow;
|
||||
|
||||
findMany = this.prismaService.pipelineStage.findMany;
|
||||
|
||||
// Create
|
||||
create = this.prismaService.pipelineStage.create;
|
||||
createMany = this.prismaService.pipelineStage.createMany;
|
||||
|
||||
// Update
|
||||
update = this.prismaService.pipelineStage.update;
|
||||
upsert = this.prismaService.pipelineStage.upsert;
|
||||
updateMany = this.prismaService.pipelineStage.updateMany;
|
||||
|
||||
// Delete
|
||||
delete = this.prismaService.pipelineStage.delete;
|
||||
deleteMany = this.prismaService.pipelineStage.deleteMany;
|
||||
|
||||
// Aggregate
|
||||
aggregate = this.prismaService.pipelineStage.aggregate;
|
||||
|
||||
// Count
|
||||
count = this.prismaService.pipelineStage.count;
|
||||
|
||||
// GroupBy
|
||||
groupBy = this.prismaService.pipelineStage.groupBy;
|
||||
}
|
||||
26
server/src/core/pipeline/services/pipeline.service.spec.ts
Normal file
26
server/src/core/pipeline/services/pipeline.service.spec.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PipelineService } from './pipeline.service';
|
||||
import { PrismaService } from 'src/database/prisma.service';
|
||||
import { prismaMock } from 'src/prisma-mock/jest-prisma-singleton';
|
||||
|
||||
describe('PipelineService', () => {
|
||||
let service: PipelineService;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [
|
||||
PipelineService,
|
||||
{
|
||||
provide: PrismaService,
|
||||
useValue: prismaMock,
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
service = module.get<PipelineService>(PipelineService);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(service).toBeDefined();
|
||||
});
|
||||
});
|
||||
38
server/src/core/pipeline/services/pipeline.service.ts
Normal file
38
server/src/core/pipeline/services/pipeline.service.ts
Normal file
@ -0,0 +1,38 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { PrismaService } from 'src/database/prisma.service';
|
||||
|
||||
@Injectable()
|
||||
export class PipelineService {
|
||||
constructor(private readonly prismaService: PrismaService) {}
|
||||
|
||||
// Find
|
||||
findFirst = this.prismaService.pipeline.findFirst;
|
||||
findFirstOrThrow = this.prismaService.pipeline.findFirstOrThrow;
|
||||
|
||||
findUnique = this.prismaService.pipeline.findUnique;
|
||||
findUniqueOrThrow = this.prismaService.pipeline.findUniqueOrThrow;
|
||||
|
||||
findMany = this.prismaService.pipeline.findMany;
|
||||
|
||||
// Create
|
||||
create = this.prismaService.pipeline.create;
|
||||
createMany = this.prismaService.pipeline.createMany;
|
||||
|
||||
// Update
|
||||
update = this.prismaService.pipeline.update;
|
||||
upsert = this.prismaService.pipeline.upsert;
|
||||
updateMany = this.prismaService.pipeline.updateMany;
|
||||
|
||||
// Delete
|
||||
delete = this.prismaService.pipeline.delete;
|
||||
deleteMany = this.prismaService.pipeline.deleteMany;
|
||||
|
||||
// Aggregate
|
||||
aggregate = this.prismaService.pipeline.aggregate;
|
||||
|
||||
// Count
|
||||
count = this.prismaService.pipeline.count;
|
||||
|
||||
// GroupBy
|
||||
groupBy = this.prismaService.pipeline.groupBy;
|
||||
}
|
||||
Reference in New Issue
Block a user