feat: default pipeline provisioning at workspace creation (#728)

* feat: default pipeline and pipeline stage on workspace creation

* Create seed data files, typo

* Naming

---------

Co-authored-by: Emilien <emilien.chauvet.enpc@gmail.com>
This commit is contained in:
Jérémy M
2023-07-18 19:30:59 +02:00
committed by GitHub
parent f65d2f418e
commit 4ec93d4b6a
10 changed files with 141 additions and 18 deletions

View File

@ -2,6 +2,8 @@ import { Test, TestingModule } from '@nestjs/testing';
import { WorkspaceService } from './workspace.service';
import { PrismaService } from 'src/database/prisma.service';
import { prismaMock } from 'src/database/client-mock/jest-prisma-singleton';
import { PipelineService } from 'src/core/pipeline/services/pipeline.service';
import { PipelineStageService } from 'src/core/pipeline/services/pipeline-stage.service';
describe('WorkspaceService', () => {
let service: WorkspaceService;
@ -14,6 +16,14 @@ describe('WorkspaceService', () => {
provide: PrismaService,
useValue: prismaMock,
},
{
provide: PipelineService,
useValue: {},
},
{
provide: PipelineStageService,
useValue: {},
},
],
}).compile();

View File

@ -1,9 +1,15 @@
import { Injectable } from '@nestjs/common';
import { PipelineStageService } from 'src/core/pipeline/services/pipeline-stage.service';
import { PipelineService } from 'src/core/pipeline/services/pipeline.service';
import { PrismaService } from 'src/database/prisma.service';
@Injectable()
export class WorkspaceService {
constructor(private readonly prismaService: PrismaService) {}
constructor(
private readonly prismaService: PrismaService,
private readonly pipelineService: PipelineService,
private readonly pipelineStageService: PipelineStageService,
) {}
// Find
findFirst = this.prismaService.workspace.findFirst;
@ -35,4 +41,22 @@ export class WorkspaceService {
// GroupBy
groupBy = this.prismaService.workspace.groupBy;
// Customs
async createDefaultWorkspace() {
const workspace = await this.create({ data: {} });
// Create default pipeline
const pipeline = await this.pipelineService.createDefaultPipeline({
workspaceId: workspace.id,
});
// Create default stages
await this.pipelineStageService.createDefaultPipelineStages({
pipelineId: pipeline.id,
workspaceId: workspace.id,
});
return workspace;
}
}

View File

@ -4,8 +4,10 @@ import { WorkspaceMemberService } from './services/workspace-member.service';
import { WorkspaceMemberResolver } from './resolvers/workspace-member.resolver';
import { WorkspaceResolver } from './resolvers/workspace.resolver';
import { FileUploadService } from '../file/services/file-upload.service';
import { PipelineModule } from '../pipeline/pipeline.module';
@Module({
imports: [PipelineModule],
providers: [
WorkspaceService,
FileUploadService,