123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- const prisma = require('../../prisma/PrismaClient.js');
- const timeLocal = require('../../utils/TimeLocal.js');
- const VendorRepository = {
- findAll: async ({ skip, take, where, orderBy }) => {
- const vendors = await prisma.vendor.findMany({
- where,
- skip,
- take,
- orderBy,
- select: {
- id: true,
- name: true,
- name_pt: true,
- strengths: true,
- weaknesses: true,
- website: true,
- created_by: true,
- _count: {
- select: {
- vendor_histories: {
- where: {
- deletedAt: null
- }
- }
- }
- },
- createdAt: true,
- updatedAt: true,
- },
- });
- const formattedVendors = vendors.map(v => {
- const { _count, ...rest } = v;
- return {
- ...rest,
- count_hospitals: _count.vendor_histories,
- };
- });
- return formattedVendors;
- },
- countAll: async (where) => {
- return prisma.vendor.count({ where });
- },
- findById: async (id) => {
- const vendor = await prisma.vendor.findFirst({
- where: {
- id,
- deletedAt: null
- },
- select: {
- id: true,
- name: true,
- name_pt: true,
- strengths: true,
- weaknesses: true,
- website: true,
- created_by: true,
- _count: {
- select: {
- vendor_histories: {
- where: {
- deletedAt: null
- }
- }
- }
- },
- createdAt: true,
- updatedAt: true,
- },
- });
- const { _count, ...rest } = vendor;
- return {
- ...rest,
- count_hospitals: _count.vendor_histories
- };
- },
- create: async (data) => {
- return prisma.vendor.create({ data });
- },
- update: async (id, data) => {
- return prisma.vendor.update({
- where: { id },
- data
- });
- },
- delete: async (id) => {
- // delete vendor
- const vendor = await prisma.vendor.update({
- where: { id },
- data: {
- deletedAt: timeLocal.now().toDate()
- }
- });
- // Unlink vendor_id di vendor_histories
- await prisma.vendorHistory.updateMany({
- where: {
- vendor_id: id,
- deletedAt: null
- },
- data: {
- vendor_id: null
- }
- });
- return vendor;
- },
- };
- module.exports = VendorRepository;
|