Import company and person from csv file (#1236)
* feat: wip implement back-end call csv import * fix: rebase IconBrandTwitter missing * feat: person and company csv import * fix: test & clean * fix: clean & test
This commit is contained in:
@ -27,6 +27,7 @@ import {
|
||||
import { UserAbility } from 'src/decorators/user-ability.decorator';
|
||||
import { AppAbility } from 'src/ability/ability.factory';
|
||||
import { FindUniqueCompanyArgs } from 'src/core/@generated/company/find-unique-company.args';
|
||||
import { CreateManyCompanyArgs } from 'src/core/@generated/company/create-many-company.args';
|
||||
|
||||
import { CompanyService } from './company.service';
|
||||
|
||||
@ -123,4 +124,22 @@ export class CompanyResolver {
|
||||
select: prismaSelect.value,
|
||||
} as Prisma.CompanyCreateArgs);
|
||||
}
|
||||
|
||||
@Mutation(() => AffectedRows, {
|
||||
nullable: false,
|
||||
})
|
||||
@UseGuards(AbilityGuard)
|
||||
@CheckAbilities(CreateCompanyAbilityHandler)
|
||||
async createManyCompany(
|
||||
@Args() args: CreateManyCompanyArgs,
|
||||
@AuthWorkspace() workspace: Workspace,
|
||||
): Promise<Prisma.BatchPayload> {
|
||||
return this.companyService.createMany({
|
||||
data: args.data.map((company) => ({
|
||||
...company,
|
||||
workspaceId: workspace.id,
|
||||
})),
|
||||
skipDuplicates: args.skipDuplicates,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,6 +39,7 @@ import { AppAbility } from 'src/ability/ability.factory';
|
||||
import { Workspace } from 'src/core/@generated/workspace/workspace.model';
|
||||
import { streamToBuffer } from 'src/utils/stream-to-buffer';
|
||||
import { FileUploadService } from 'src/core/file/services/file-upload.service';
|
||||
import { CreateManyPersonArgs } from 'src/core/@generated/person/create-many-person.args';
|
||||
|
||||
import { PersonService } from './person.service';
|
||||
|
||||
@ -165,6 +166,24 @@ export class PersonResolver {
|
||||
} as Prisma.PersonCreateArgs);
|
||||
}
|
||||
|
||||
@Mutation(() => AffectedRows, {
|
||||
nullable: false,
|
||||
})
|
||||
@UseGuards(AbilityGuard)
|
||||
@CheckAbilities(CreatePersonAbilityHandler)
|
||||
async createManyPerson(
|
||||
@Args() args: CreateManyPersonArgs,
|
||||
@AuthWorkspace() workspace: Workspace,
|
||||
): Promise<Prisma.BatchPayload> {
|
||||
return this.personService.createMany({
|
||||
data: args.data.map((person) => ({
|
||||
...person,
|
||||
workspaceId: workspace.id,
|
||||
})),
|
||||
skipDuplicates: args.skipDuplicates,
|
||||
});
|
||||
}
|
||||
|
||||
@Mutation(() => String)
|
||||
@UseGuards(AbilityGuard)
|
||||
@CheckAbilities(UpdatePersonAbilityHandler)
|
||||
|
||||
Reference in New Issue
Block a user