postio / libraries /nestjs-libraries /src /database /prisma /webhooks /webhooks.repository.ts
Leon4gr45's picture
Upload folder using huggingface_hub (part 10)
a271c58 verified
Raw
History Blame Contribute Delete
1.96 kB
import { PrismaRepository } from '@gitroom/nestjs-libraries/database/prisma/prisma.service';
import { Injectable } from '@nestjs/common';
import { WebhooksDto } from '@gitroom/nestjs-libraries/dtos/webhooks/webhooks.dto';
import { v4 as uuidv4 } from 'uuid';
@Injectable()
export class WebhooksRepository {
constructor(private _webhooks: PrismaRepository<'webhooks'>) {}
getTotal(orgId: string) {
return this._webhooks.model.webhooks.count({
where: {
organizationId: orgId,
deletedAt: null,
},
});
}
getWebhooks(orgId: string) {
return this._webhooks.model.webhooks.findMany({
where: {
organizationId: orgId,
deletedAt: null,
},
include: {
integrations: {
select: {
integration: {
select: {
id: true,
picture: true,
name: true,
},
},
},
},
},
});
}
deleteWebhook(orgId: string, id: string) {
return this._webhooks.model.webhooks.update({
where: {
id,
organizationId: orgId,
},
data: {
deletedAt: new Date(),
},
});
}
async createWebhook(orgId: string, body: WebhooksDto) {
const { id } = await this._webhooks.model.webhooks.upsert({
where: {
id: body.id || uuidv4(),
organizationId: orgId,
},
create: {
organizationId: orgId,
url: body.url,
name: body.name,
},
update: {
url: body.url,
name: body.name,
},
});
await this._webhooks.model.webhooks.update({
where: {
id,
organizationId: orgId,
},
data: {
integrations: {
deleteMany: {},
create: body.integrations.map((integration) => ({
integrationId: integration.id,
})),
},
},
});
return { id };
}
}