anoderb
feat: initial commit of Tokiva POS Node backend for Hugging Face
ef874e6
Raw
History Blame Contribute Delete
2.04 kB
import prisma from './db';
interface MoveTrashParams {
instance: any;
entityType: 'produk' | 'kategori' | 'supplier' | 'member';
actorId: number;
}
export const moveToTrash = async (params: MoveTrashParams) => {
const { instance, entityType, actorId } = params;
const dataPayload: any = {
main_record: instance,
};
if (entityType === 'produk') {
// harga_tingkat
const hargaTingkat = await prisma.harga_tingkat.findMany({
where: { produk_id: instance.id },
});
dataPayload.harga_tingkat = hargaTingkat;
// stok_batch
const stokBatch = await prisma.stok_batch.findMany({
where: { produk_id: instance.id },
});
dataPayload.stok_batch = stokBatch;
// stok_log
const stokLog = await prisma.stok_log.findMany({
where: { produk_id: instance.id },
});
dataPayload.stok_log = stokLog;
// stok_opname
const stokOpname = await prisma.stok_opname.findMany({
where: { produk_id: instance.id },
});
dataPayload.stok_opname = stokOpname;
}
// Simpan payload di tabel trash
await prisma.trash.create({
data: {
entity_type: entityType,
entity_id: instance.id,
data: JSON.stringify(dataPayload),
deleted_by: actorId,
deleted_at: new Date(),
},
});
// Soft delete / Nonaktifkan record aslinya
const deletedAt = new Date();
if (entityType === 'produk') {
await prisma.produk.update({
where: { id: instance.id },
data: { deleted_at: deletedAt, is_aktif: 0 },
});
} else if (entityType === 'kategori') {
await prisma.kategori.update({
where: { id: instance.id },
data: { deleted_at: deletedAt, aktif: 0 },
});
} else if (entityType === 'supplier') {
await prisma.supplier.update({
where: { id: instance.id },
data: { deleted_at: deletedAt, aktif: 0 },
});
} else if (entityType === 'member') {
await prisma.member.update({
where: { id: instance.id },
data: { deleted_at: deletedAt, aktif: 0 },
});
}
};