* chore: removes replaces 'import type xxx from 'xxx'' with 'import { type xxx} from 'xxx'''
* chore: remove typed imports
* chore: remove typed imports
* chore: cleanup
---------
Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
|
|
import { ViewType } from '@prisma/client';
|
|
|
|
import { PrismaService } from 'src/database/prisma.service';
|
|
import seedViews from 'src/core/view/seed-data/views.json';
|
|
|
|
@Injectable()
|
|
export class ViewService {
|
|
constructor(private readonly prismaService: PrismaService) {}
|
|
|
|
// Find
|
|
findFirst = this.prismaService.client.view.findFirst;
|
|
findFirstOrThrow = this.prismaService.client.view.findFirstOrThrow;
|
|
|
|
findUnique = this.prismaService.client.view.findUnique;
|
|
findUniqueOrThrow = this.prismaService.client.view.findUniqueOrThrow;
|
|
|
|
findMany = this.prismaService.client.view.findMany;
|
|
|
|
// Create
|
|
create = this.prismaService.client.view.create;
|
|
createMany = this.prismaService.client.view.createMany;
|
|
|
|
// Update
|
|
update = this.prismaService.client.view.update;
|
|
upsert = this.prismaService.client.view.upsert;
|
|
updateMany = this.prismaService.client.view.updateMany;
|
|
|
|
// Delete
|
|
delete = this.prismaService.client.view.delete;
|
|
deleteMany = this.prismaService.client.view.deleteMany;
|
|
|
|
// Aggregate
|
|
aggregate = this.prismaService.client.view.aggregate;
|
|
|
|
// Count
|
|
count = this.prismaService.client.view.count;
|
|
|
|
// GroupBy
|
|
groupBy = this.prismaService.client.view.groupBy;
|
|
|
|
// Custom
|
|
createDefaultViews({ workspaceId }: { workspaceId: string }) {
|
|
return Promise.all(
|
|
seedViews.map(async ({ fields, ...viewInput }) => {
|
|
const view = await this.create({
|
|
data: {
|
|
...viewInput,
|
|
type: viewInput.type as ViewType,
|
|
workspace: { connect: { id: workspaceId } },
|
|
},
|
|
});
|
|
|
|
await this.prismaService.client.viewField.createMany({
|
|
data: fields.map((viewField, index) => ({
|
|
...viewField,
|
|
index,
|
|
isVisible: true,
|
|
objectId: view.objectId,
|
|
viewId: view.id,
|
|
workspaceId,
|
|
})),
|
|
});
|
|
}),
|
|
);
|
|
}
|
|
}
|