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:
@ -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();
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
Reference in New Issue
Block a user