commit 7a1ae4ac41c6bdf8e98d87048567ee009cabce83 Author: madkur10 Date: Sun Apr 27 23:29:32 2025 +0700 Test RSAB diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..7a53daf Binary files /dev/null and b/.DS_Store differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..15c38f8 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +Muhammad Kurniawan \ No newline at end of file diff --git a/backend/.DS_Store b/backend/.DS_Store new file mode 100644 index 0000000..eb39a86 Binary files /dev/null and b/backend/.DS_Store differ diff --git a/backend/.env b/backend/.env new file mode 100644 index 0000000..b4f4c51 --- /dev/null +++ b/backend/.env @@ -0,0 +1,6 @@ +DATABASE_URL="postgresql://postgres:R5p3ln1docker@localhost:5432/test_rsab?schema=public" + +PORT=4400 +secretKey="T35T3rK3y" +TZ="Asia/Jakarta" +secretKeyLogin="8fd388f61f24117aa87f92408c93193792aa3c5e4167d88d981ebf17a8fb7d7a4c4b182c1eee50ff74830ce7d9454a3d2d48e9e29b71a3a285bf37215316279f" \ No newline at end of file diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/backend/CHANGELOG.md b/backend/CHANGELOG.md new file mode 100644 index 0000000..3cfa9aa --- /dev/null +++ b/backend/CHANGELOG.md @@ -0,0 +1,34 @@ +## [RELEASE VERSION BACKEND-PHIS2ND-NODE v1.1] + +##ADDED + - [CORE - SATU SEHAT] Penambahan endpoint untuk menambahkan job penarikan pastient_ihs_id. + - [CORE - SATU SEHAT] Penambahan endpoint untuk push job hasil penarikan pastient_ihs_id. + +##CHANGES + - [CORE - GLOBAL] Perubahan pada service pengiriman data melalui axios (dibuat file sendiri src/utils/axiosClient.ts) + - [CORE - SATU SEHAT] Penambahan parameter bagian HD. + +##FIXING AND BUG FIXING + - + +##ADDED MASTER-MASTER DATA FIX + - + +##ADD TABLE ON DATABASE + - JOB (id, endpoint_name, created_date, payload, last_updated_date, status, response, method, url, key_simrs) + - TOKEN (id, access_token, last_updated_date) + +##REMOVE TABLE ON DATABASE + - + +##ADD OR CHANGE FIELD TABLE / TIPE DATA ON DATABASE + - + +##ADD CONFIG : + - + +##REMOVE CONFIG + - + +##ADD API : + - diff --git a/backend/dist/404.js b/backend/dist/404.js new file mode 100644 index 0000000..e1db46c --- /dev/null +++ b/backend/dist/404.js @@ -0,0 +1,56 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const path_1 = __importDefault(require("path")); +const fs_1 = __importDefault(require("fs")); +exports.router = (0, express_1.Router)(); +const htmlIndex = ` + + + + + + 404 - Not Found + + + +

404 - Not Found

+

Maaf, Endpoint yang Anda cari tidak ditemukan.

+ + +`; +exports.router.use("*", (req, res) => { + if (fs_1.default.existsSync(path_1.default.join(__dirname, "./views")) === true) { + if (fs_1.default.existsSync(path_1.default.join(__dirname, "./views/404.html")) === true) { + res.sendFile(path_1.default.join(__dirname, "./views", "404.html")); + } + else { + fs_1.default.writeFileSync(path_1.default.join(__dirname, "./views/404.html"), htmlIndex); + res.sendFile(path_1.default.join(__dirname, "./views", "404.html")); + } + } + else { + fs_1.default.mkdirSync(path_1.default.join(__dirname, "./views")); + fs_1.default.writeFileSync(path_1.default.join(__dirname, "./views/404.html"), htmlIndex); + res.sendFile(path_1.default.join(__dirname, "./views", "404.html")); + } +}); diff --git a/backend/dist/api/antrol-auto/antrolAuto.controller.js b/backend/dist/api/antrol-auto/antrolAuto.controller.js new file mode 100644 index 0000000..2d5f7fe --- /dev/null +++ b/backend/dist/api/antrol-auto/antrolAuto.controller.js @@ -0,0 +1,163 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const antrolAuto_service_1 = require("./antrolAuto.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/fisio-now/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = parseInt(req.params.limit, 10); + const dataFisio = yield (0, antrolAuto_service_1.hitFisioNow)(limit); + if (dataFisio.length > 0) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + dataFisio, + }, + }); + console.log(dataFisio); + } + else { + res.status(200).json({ + metadata: { + code: 200, + msg: "Data tidak tersedia!", + }, + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/update-task/:limit/task/:task_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = parseInt(req.params.limit, 10); + const task_id = parseInt(req.params.task_id, 10); + const dataUpdateTaskNow = yield (0, antrolAuto_service_1.updateTask)(limit, task_id); + if (dataUpdateTaskNow.length > 0) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + dataUpdateTaskNow, + }, + }); + console.log(dataUpdateTaskNow); + } + else { + res.status(200).json({ + metadata: { + code: 200, + msg: "Data tidak tersedia!", + }, + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/update-task-backdate/:limit/task/:task_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = parseInt(req.params.limit, 10); + const task_id = parseInt(req.params.task_id, 10); + const dataUpdateTaskNow = yield (0, antrolAuto_service_1.updateTask)(limit, task_id, true); + if (dataUpdateTaskNow.length > 0) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + dataUpdateTaskNow, + }, + }); + console.log(dataUpdateTaskNow); + } + else { + res.status(200).json({ + metadata: { + code: 200, + msg: "Data tidak tersedia!", + }, + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/update-task-fisio/:limit/task/:task_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = parseInt(req.params.limit, 10); + const task_id = parseInt(req.params.task_id, 10); + const dataUpdateTaskNow = yield (0, antrolAuto_service_1.updateTaskFisio)(limit, task_id); + if (dataUpdateTaskNow.length > 0) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + dataUpdateTaskNow, + }, + }); + console.log(dataUpdateTaskNow); + } + else { + res.status(200).json({ + metadata: { + code: 200, + msg: "Data tidak tersedia!", + }, + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/hit-ulang-add/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = parseInt(req.params.limit, 10); + const dataUpdateTaskNow = yield (0, antrolAuto_service_1.hitUlangAddAntrol)(limit); + if (dataUpdateTaskNow.length > 0) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + dataUpdateTaskNow, + }, + }); + console.log(dataUpdateTaskNow); + } + else { + res.status(200).json({ + metadata: { + code: 200, + msg: "Data tidak tersedia!", + }, + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/antrol-auto/antrolAuto.repository.js b/backend/dist/api/antrol-auto/antrolAuto.repository.js new file mode 100644 index 0000000..e598129 --- /dev/null +++ b/backend/dist/api/antrol-auto/antrolAuto.repository.js @@ -0,0 +1,462 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getKodeBagian = exports.getPasienHitUlangAddAntrol = exports.listReadyHitTaskBpjsFisio = exports.listReadyHitTaskBpjs = exports.getPasienFisioReadyHitNow = void 0; +const db_1 = require("./../../db"); +const listReadyHitTaskBpjs = (limit, task_id, backdate = false) => __awaiter(void 0, void 0, void 0, function* () { + let filter, selectTaskTime, kondisiTask; + let valueBackDate = ""; + if (backdate === true) { + valueBackDate = ` between '2025-04-14' AND now()::date`; + } + else { + valueBackDate = ` = now()::date`; + } + if (new Date().getHours() < 19) { + if (task_id === 1) { + filter = `and last_task = '0' and (assess = '3' or soap = '6')`; + selectTaskTime = `,(case + when rujukan_sep.input_time::date = data_task.tgl_masuk then + case + when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.input_time + end + else + case + when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.mod_time + end + end) task_time`; + kondisiTask = ` inner join rujukan_sep on + data_task.registrasi_id = rujukan_sep.registrasi_id + inner join emr on + data_task.registrasi_id = emr.registrasi_id + and emr.form_id = 6 + and emr.status_batal is null`; + } + if (task_id === 2) { + filter = `and last_task = '1' and (assess = '3' or soap = '6')`; + selectTaskTime = `,(case + when rujukan_sep.input_time::date = data_task.tgl_masuk then + case + when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.input_time + end + else + case + when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.mod_time + end + end) task_time`; + kondisiTask = ` inner join rujukan_sep on + data_task.registrasi_id = rujukan_sep.registrasi_id + inner join emr on + data_task.registrasi_id = emr.registrasi_id + and emr.form_id = 6 + and emr.status_batal is null`; + } + if (task_id === 3) { + filter = `and last_task = '2' and (assess = '3' or soap = '6')`; + selectTaskTime = `,(case + when rujukan_sep.input_time::date = data_task.tgl_masuk then + case + when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.input_time + end + else + case + when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.mod_time + end + end) task_time`; + kondisiTask = ` inner join rujukan_sep on + data_task.registrasi_id = rujukan_sep.registrasi_id + inner join emr on + data_task.registrasi_id = emr.registrasi_id + and emr.form_id = 6 + and emr.status_batal is null`; + } + if (task_id === 4) { + filter = `and last_task = '3' and (assess = '3' or soap = '6')`; + selectTaskTime = `,(emr.input_time) task_time`; + kondisiTask = ` inner join emr on + data_task.registrasi_id = emr.registrasi_id + and emr.form_id = 6 + and emr.status_batal is null`; + } + if (task_id === 5) { + filter = `and last_task = '4' and soap = '6' `; + selectTaskTime = `,(emr.input_time) task_time`; + kondisiTask = ` inner join emr on + data_task.registrasi_id = emr.registrasi_id + and emr.form_id = 3 + and emr.status_batal is null`; + } + if (task_id === 6) { + filter = `and last_task = '5' and status_obat is not null `; + selectTaskTime = `,(peresepan_obat.start_tracking) task_time`; + kondisiTask = ` inner join peresepan_obat on + data_task.registrasi_detail_id = peresepan_obat.registrasi_detail_id + and peresepan_obat.status_batal is null`; + } + if (task_id === 7) { + filter = `and last_task = '6' and status_obat in ('2','3') `; + selectTaskTime = `,(peresepan_obat.end_tracking) task_time`; + kondisiTask = ` inner join peresepan_obat on + data_task.registrasi_detail_id = peresepan_obat.registrasi_detail_id + and peresepan_obat.status_batal is null`; + } + } + else { + if (task_id === 1) { + filter = `and last_task = '0'`; + selectTaskTime = `,(case + when rujukan_sep.input_time::date = data_task.tgl_masuk then + case + when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.input_time + end + else + case + when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.mod_time + end + end) task_time`; + kondisiTask = ` inner join rujukan_sep on + data_task.registrasi_id = rujukan_sep.registrasi_id + inner join emr on + data_task.registrasi_id = emr.registrasi_id + and emr.form_id = 6 + and emr.status_batal is null`; + } + if (task_id === 2) { + filter = `and last_task = '1'`; + selectTaskTime = `,(case + when rujukan_sep.input_time::date = data_task.tgl_masuk then + case + when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.input_time + end + else + case + when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.mod_time + end + end) task_time`; + kondisiTask = ` inner join rujukan_sep on + data_task.registrasi_id = rujukan_sep.registrasi_id + inner join emr on + data_task.registrasi_id = emr.registrasi_id + and emr.form_id = 6 + and emr.status_batal is null`; + } + if (task_id === 3) { + filter = `and last_task = '2'`; + selectTaskTime = `,(case + when rujukan_sep.input_time::date = data_task.tgl_masuk then + case + when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.input_time + end + else + case + when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes' + else rujukan_sep.mod_time + end + end) task_time`; + kondisiTask = ` inner join rujukan_sep on + data_task.registrasi_id = rujukan_sep.registrasi_id + inner join emr on + data_task.registrasi_id = emr.registrasi_id + and emr.form_id = 6 + and emr.status_batal is null`; + } + if (task_id === 4) { + filter = `and last_task = '3'`; + selectTaskTime = `,(emr.input_time) task_time`; + kondisiTask = ` inner join emr on + data_task.registrasi_id = emr.registrasi_id + and emr.form_id = 6 + and emr.status_batal is null`; + } + if (task_id === 5) { + filter = `and last_task = '4'`; + selectTaskTime = `,(emr.input_time) task_time`; + kondisiTask = ` inner join emr on + data_task.registrasi_id = emr.registrasi_id + and emr.form_id = 3 + and emr.status_batal is null`; + } + if (task_id === 6) { + filter = `and last_task = '5'`; + selectTaskTime = `,(peresepan_obat.start_tracking) task_time`; + kondisiTask = ` inner join peresepan_obat on data_task.registrasi_detail_id = peresepan_obat.registrasi_detail_id and peresepan_obat.status_batal is null`; + } + if (task_id === 7) { + filter = `and last_task = '6'`; + selectTaskTime = `,(peresepan_obat.end_tracking) task_time`; + kondisiTask = ` inner join peresepan_obat on + data_task.registrasi_detail_id = peresepan_obat.registrasi_detail_id + and peresepan_obat.status_batal is null`; + } + } + const today = new Date(); + const oneMonthAgo = new Date(); + oneMonthAgo.setMonth(oneMonthAgo.getMonth() - 1); + const formattedToday = today.toISOString().slice(0, 10); + const formattedOneMonthAgo = oneMonthAgo.toISOString().slice(0, 10); + const startDate = formattedOneMonthAgo; + const endDate = formattedToday; + const queryTask = `WITH data_task as ( + select + registrasi.registrasi_id, + pasien.no_mr, + pasien.nama_pasien, + bagian.nama_bagian, + registrasi_detail.registrasi_detail_id, + max(task_bpjs_log.task_id) last_task, + max(emr1.form_id) assess, + max(emr.form_id) soap , + max(peresepan_obat.status_selesai) status_obat, + registrasi.tgl_masuk::date + from + registrasi + inner join pasien on + registrasi.pasien_id = pasien.pasien_id + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is null + inner join registrasi_urut on + registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id + and registrasi_urut.status_batal is null + inner join bagian on + registrasi_urut.bagian_id = bagian.bagian_id + and bagian.referensi_bagian in (1) + and bagian.bagian_id not in (23,46,221) + left join task_bpjs_log on + registrasi.registrasi_id = task_bpjs_log.registrasi_id + and task_bpjs_log.status_batal is null + left join emr emr1 on + registrasi_detail.registrasi_detail_id = emr1.registrasi_detail_id + and emr1.status_batal is null + and emr1.form_id in ('3') + left join emr on + registrasi_detail.registrasi_detail_id = emr.registrasi_detail_id + and emr.status_batal is null + and emr.form_id in ('6') + left join peresepan_obat on + registrasi_detail.registrasi_detail_id = peresepan_obat.registrasi_detail_id + and peresepan_obat.status_batal is null + left join rujukan_sep on + registrasi.registrasi_id = rujukan_Sep.registrasi_id + where + 1 = 1 + and registrasi.tgl_masuk::date = now()::date + and response is not null + and ( + (response->>'metadata')::json->>'code' = '200' + or (response->>'metadata')::json->>'message' ilike '%Terdapat duplikasi%' + ) + and rujukan_sep.sep is not null + group by + registrasi.registrasi_id, + pasien.no_mr, + pasien.nama_pasien, + bagian.nama_bagian, + registrasi_detail.registrasi_detail_id) + select + data_log.* + from + (select + data_task.* + ${selectTaskTime} + from + data_task + ${kondisiTask} + where + 1 = 1 + ${filter} + ) as data_log + where + data_log.task_time is not null + order by random() + limit ${limit};`; + const readyHitTaskNow = yield db_1.prismaDb3.$queryRawUnsafe(queryTask); + return readyHitTaskNow; +}); +exports.listReadyHitTaskBpjs = listReadyHitTaskBpjs; +const listReadyHitTaskBpjsFisio = (limit, task_id) => __awaiter(void 0, void 0, void 0, function* () { + let filter = ""; + if (task_id === 1) { + filter = "and last_task = '0'"; + } + else if (task_id === 2) { + filter = "and last_task = '1'"; + } + else if (task_id === 3) { + filter = "and last_task = '2'"; + } + else if (task_id === 4) { + filter = "and last_task = '3'"; + } + else if (task_id === 5) { + filter = "and last_task = '4'"; + } + else if (task_id === 6) { + filter = "and last_task = '5'"; + } + else if (task_id === 7) { + filter = "and last_task = '6'"; + } + const queryTask = `with data_task as ( + select + registrasi.registrasi_id, + registrasi.tgl_masuk::date, + pasien.no_mr, + pasien.nama_pasien, + rujukan_sep.sep, + bagian.nama_bagian, + max(task_bpjs_log.task_id) last_task, + max(emr1.form_id) assess, + max(emr.form_id) soap , + max(peresepan_obat.status_selesai) status_obat + from + registrasi + inner join pasien on + registrasi.pasien_id = pasien.pasien_id + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is null + inner join registrasi_urut on + registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id + and registrasi_urut.status_batal is null + inner join bagian on + registrasi_urut.bagian_id = bagian.bagian_id + and bagian.referensi_bagian in (202) + left join rujukan_sep on + registrasi.registrasi_id = rujukan_Sep.registrasi_id + left join task_bpjs_log on + registrasi.registrasi_id = task_bpjs_log.registrasi_id + and task_bpjs_log.status_batal is null + left join emr emr1 on + registrasi_detail.registrasi_detail_id = emr1.registrasi_detail_id + and emr1.status_batal is null + and emr1.form_id in ('3') + left join emr on + registrasi_detail.registrasi_detail_id = emr.registrasi_detail_id + and emr.status_batal is null + and emr.form_id in ('6') + left join peresepan_obat on + registrasi_detail.registrasi_detail_id = peresepan_obat.registrasi_detail_id + and peresepan_obat.status_batal is null + where + 1 = 1 + and (registrasi.tgl_masuk::date = now()::date ) + and response is not null + group by + registrasi.registrasi_id, + pasien.no_mr, + pasien.nama_pasien, + rujukan_sep.sep, + bagian.nama_bagian) + select + * + from + data_task + where + 1 = 1 + and sep is not null + ${filter} + and nama_bagian not in ('KLINIK ITER', 'LABORATORIUM ', 'ONE DAY CARE (UMUM)') + order by + random() + limit ${limit};`; + const readyHitTaskNow = yield db_1.prismaDb3.$queryRawUnsafe(queryTask); + return readyHitTaskNow; +}); +exports.listReadyHitTaskBpjsFisio = listReadyHitTaskBpjsFisio; +const getPasienFisioReadyHitNow = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const readyHitFisio = yield db_1.prismaDb3.$queryRaw ` + SELECT + registrasi.registrasi_id, + registrasi.pasien_id, + rujukan_sep.sep, + task_bpjs_log.response, + task_bpjs_log.task_id + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + and bagian.referensi_bagian = '202' + inner join rujukan_sep on + registrasi.registrasi_id = rujukan_sep.registrasi_id + left join task_bpjs_log on + registrasi.registrasi_id = task_bpjs_log.registrasi_id + and task_bpjs_log.task_id = '0' + where + registrasi.status_batal is null + and registrasi.tgl_masuk::date = now()::date + and rujukan_sep.sep is not null + and task_bpjs_log.response is null + limit ${limit};`; + return readyHitFisio; +}); +exports.getPasienFisioReadyHitNow = getPasienFisioReadyHitNow; +const getPasienHitUlangAddAntrol = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const rawQuery = yield db_1.prismaDb3.$queryRaw ` + select + task_bpjs_log.task_id, + rujukan_sep.sep, + pasien.pasien_id, + registrasi.registrasi_id, + task_bpjs_log.response, + task_bpjs_log.mod_time, + pasien.no_hp + from + task_bpjs_log + inner join rujukan_sep on + task_bpjs_log.registrasi_id = rujukan_sep.registrasi_id + and rujukan_sep.sep is not null + inner join registrasi on + task_bpjs_log.registrasi_id = registrasi.registrasi_id + inner join pasien on + registrasi.pasien_id = pasien.pasien_id + inner join emr on + registrasi.registrasi_id = emr.registrasi_id + and emr.form_id = 6 + where + registrasi.tgl_masuk::date = now()::date + and (task_bpjs_log.response->'metadata'->>'message' = 'data nohp belum sesuai.' + or task_bpjs_log.response->'metadata'->>'message' like '%masa berlaku habis%' + or task_bpjs_log.response->'metadata'->>'message' = 'Undefined Error.' + or task_bpjs_log.response->'metadata'->>'message' = 'Rujukan tidak valid') + and task_id = '0' + limit ${limit};`; + return rawQuery; +}); +exports.getPasienHitUlangAddAntrol = getPasienHitUlangAddAntrol; +const getKodeBagian = (registrasi_id) => __awaiter(void 0, void 0, void 0, function* () { + const rawQuery = yield db_1.prismaDb3.$queryRaw ` + SELECT + mapping_poli_bpjs.kode_poli_bpjs + FROM + registrasi_detail + INNER JOIN bagian ON + registrasi_detail.bagian_id = bagian.bagian_id + INNER JOIN mapping_poli_bpjs ON + mapping_poli_bpjs.bagian_id = bagian.bagian_id + WHERE + registrasi_detail.registrasi_id = ${registrasi_id};`; + return rawQuery; +}); +exports.getKodeBagian = getKodeBagian; diff --git a/backend/dist/api/antrol-auto/antrolAuto.service.js b/backend/dist/api/antrol-auto/antrolAuto.service.js new file mode 100644 index 0000000..a2b557f --- /dev/null +++ b/backend/dist/api/antrol-auto/antrolAuto.service.js @@ -0,0 +1,304 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hitUlangAddAntrol = exports.updateTaskFisio = exports.updateTask = exports.hitFisioNow = void 0; +const antrolAuto_repository_1 = require("./antrolAuto.repository"); +const axiosClient_1 = require("../../utils/axiosClient"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const updateTask = (limit, task_id, backdate = false) => __awaiter(void 0, void 0, void 0, function* () { + let task_bpjs = ''; + if (backdate === true) { + task_bpjs = yield (0, antrolAuto_repository_1.listReadyHitTaskBpjs)(limit, task_id, true); + } + else { + task_bpjs = yield (0, antrolAuto_repository_1.listReadyHitTaskBpjs)(limit, task_id); + } + if (task_bpjs.length < 1) { + return false; + } + let dataEndResponse = []; + for (let i = 0; i < task_bpjs.length; i++) { + const registrasi_id = task_bpjs[i].registrasi_id; + let task_time = task_bpjs[i].task_time; + let task_time_current = task_bpjs[i].task_time; + task_time.setHours(task_time.getHours() - 7); + if (task_id == 2) { + task_time.setMinutes(task_time.getMinutes() + 1); + } + else if (task_id == 3) { + task_time.setMinutes(task_time.getMinutes() + 2); + } + task_time = Date.parse(task_time) / 1000; + const url = `${process.env.urlPHIS}API/BPJS/SIMRS-VCLAIM/V2/ANTROL/ANTREAN/UPDATE/${registrasi_id}-${task_id}-1-${task_time}`; + const method = "GET"; + const headersData = {}; + const responseBooking = yield (0, axiosClient_1.requestAxios)(headersData, url, method, null); + const dataObj = { + id: registrasi_id, + task_time: new Date(task_time_current.setHours(task_time_current.getHours() + 7)), + url: url, + response: responseBooking.data.metadata.message, + description: "Update Task Rajal", + }; + dataEndResponse.push(dataObj); + } + return dataEndResponse; +}); +exports.updateTask = updateTask; +const updateTaskFisio = (limit, task_id) => __awaiter(void 0, void 0, void 0, function* () { + const task_bpjs = yield (0, antrolAuto_repository_1.listReadyHitTaskBpjsFisio)(limit, task_id); + if (task_bpjs.length < 1) { + return false; + } + let dataEndResponse = []; + let task_time = ''; + let task_timex; + for (let i = 0; i < task_bpjs.length; i++) { + task_time = getDateWithOffset(task_id, task_bpjs[i].tgl_masuk); + // task_time.setHours(task_time.getHours() - 7); + task_timex = Date.parse(task_time) / 1000; + const registrasi_id = task_bpjs[i].registrasi_id; + const url = `${process.env.urlPHIS}API/BPJS/SIMRS-VCLAIM/V2/ANTROL/ANTREAN/UPDATE/${registrasi_id}-${task_id}-1-${task_timex}`; + const method = "GET"; + const headersData = {}; + const responseBooking = yield (0, axiosClient_1.requestAxios)(headersData, url, method, null); + const dataObj = { + id: registrasi_id, + task_time: task_time, + url: url, + response: responseBooking.data.metadata.message, + description: "Update Task Fisio", + }; + dataEndResponse.push(dataObj); + } + return dataEndResponse; +}); +exports.updateTaskFisio = updateTaskFisio; +const hitFisioNow = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const readyHitFisio = yield (0, antrolAuto_repository_1.getPasienFisioReadyHitNow)(limit); + if (readyHitFisio.length < 1) { + return false; + } + let dataEndResponse = []; + for (let i = 0; i < readyHitFisio.length; i++) { + const url = `${process.env.urlPHIS}API/BPJS/SIMRS-VCLAIM/V2/ANTROL/ANTREAN/CHECK-KODEBOOKING/${readyHitFisio[i].registrasi_id}`; + const method = "GET"; + const headersData = {}; + const responseBooking = yield (0, axiosClient_1.requestAxios)(headersData, url, method, null); + if (responseBooking.data) { + const xmldata = responseBooking.data.response; + const code = responseBooking.data.metadata.code; + const message = responseBooking.data.metadata.message; + if (code === 204) { + const xmldataend = { + nomorkartu: xmldata.no_peserta, + nik: xmldata.nik, + nohp: xmldata.no_hp, + kodepoli: xmldata.kode_poli, + norm: xmldata.no_mr, + tanggalperiksa: xmldata.tgl_periksa, + namadokter: xmldata.dpjp_hfis_nama, + jampraktek: xmldata.jampraktek, + kodebooking: xmldata.registrasi_id, + jenispasien: "JKN", + namapoli: xmldata.nama_bagian, + pasienbaru: "0", + kodedokter: xmldata.dpjp_hfis_kode, + nomorantrean: xmldata.urutan, + angkaantrean: xmldata.urutan, + estimasidilayani: xmldata.estimasidilayani, + sisakuotajkn: xmldata.sisakuota, + kuotajkn: xmldata.kuota, + sisakuotanonjkn: xmldata.sisakuota, + kuotanonjkn: xmldata.kuota, + keterangan: "Peserta harap 60 menit lebih awal guna pencatatan administrasi.", + jeniskunjungan: "2", + nomorreferensi: xmldata.nomorreferensi, + }; + const urlAdd = `${process.env.urlPHIS}API/BPJS/SIMRS-VCLAIM/V2/ANTROL/ANTREAN/ADD-KODEBOOKING/1`; + const methodAdd = "POST"; + const headersDataAdd = { + "Content-Type": "application/json", + }; + const responseAdd = yield (0, axiosClient_1.requestAxios)(headersDataAdd, urlAdd, methodAdd, xmldataend); + const dataObj = { + id: readyHitFisio[i].registrasi_id, + response: responseAdd.data.metadata.message, + }; + dataEndResponse.push(dataObj); + } + else { + const dataObj = { + id: readyHitFisio[i].registrasi_id, + response: message, + }; + dataEndResponse.push(dataObj); + } + } + else { + const dataObj = { + id: readyHitFisio[i].registrasi_id, + response: false, + }; + dataEndResponse.push(dataObj); + } + } + return dataEndResponse; +}); +exports.hitFisioNow = hitFisioNow; +const hitUlangAddAntrol = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const readyHitFisio = yield (0, antrolAuto_repository_1.getPasienHitUlangAddAntrol)(limit); + if (readyHitFisio.length < 1) { + return false; + } + let dataEndResponse = []; + for (let i = 0; i < readyHitFisio.length; i++) { + const url = `${process.env.urlPHIS}API/BPJS/SIMRS-VCLAIM/V2/ANTROL/ANTREAN/CHECK-KODEBOOKING/${readyHitFisio[i].registrasi_id}`; + const method = "GET"; + const headersData = {}; + let regId = readyHitFisio[i].registrasi_id; + let regIdStr = regId.toString(); + let regEnd; + if (regIdStr.length > 6) { + regEnd = regIdStr.slice(-6); + } + else { + regEnd = regIdStr.padStart(6, "0"); + } + const bulan = ("0" + (new Date().getMonth() + 1)).slice(-2); + const tahun = new Date().getFullYear().toString().slice(-2); + const nomorreferensinew = `0904005R${bulan}${tahun}A${regEnd}`; + const responseBooking = yield (0, axiosClient_1.requestAxios)(headersData, url, method, null); + if (responseBooking.data) { + const xmldata = responseBooking.data.response; + const code = responseBooking.data.metadata.code; + const message = responseBooking.data.metadata.message; + if (code === 204) { + const xmldataend = { + nomorkartu: xmldata.no_peserta, + nik: xmldata.nik, + nohp: xmldata.no_hp, + kodepoli: xmldata.kode_poli, + norm: xmldata.no_mr, + tanggalperiksa: xmldata.tgl_periksa, + namadokter: xmldata.dpjp_hfis_nama, + jampraktek: xmldata.jampraktek, + kodebooking: xmldata.registrasi_id, + jenispasien: "JKN", + namapoli: xmldata.nama_bagian, + pasienbaru: "0", + kodedokter: xmldata.dpjp_hfis_kode, + nomorantrean: xmldata.urutan, + angkaantrean: xmldata.urutan, + estimasidilayani: xmldata.estimasidilayani, + sisakuotajkn: xmldata.sisakuota, + kuotajkn: xmldata.kuota, + sisakuotanonjkn: xmldata.sisakuota, + kuotanonjkn: xmldata.kuota, + keterangan: "Peserta harap 60 menit lebih awal guna pencatatan administrasi.", + jeniskunjungan: "2", + nomorreferensi: nomorreferensinew, + }; + const urlAdd = `${process.env.urlPHIS}API/BPJS/SIMRS-VCLAIM/V2/ANTROL/ANTREAN/ADD-KODEBOOKING/1`; + const methodAdd = "POST"; + const headersDataAdd = { + "Content-Type": "application/json", + }; + const responseAdd = yield (0, axiosClient_1.requestAxios)(headersDataAdd, urlAdd, methodAdd, xmldataend); + const dataObj = { + id: readyHitFisio[i].registrasi_id, + response: responseAdd.data.metadata.message, + payload: xmldataend, + }; + dataEndResponse.push(dataObj); + } + else { + const dataObj = { + id: readyHitFisio[i].registrasi_id, + response: message, + }; + dataEndResponse.push(dataObj); + } + } + else { + const dataObj = { + id: readyHitFisio[i].registrasi_id, + response: false, + }; + dataEndResponse.push(dataObj); + } + } + return dataEndResponse; +}); +exports.hitUlangAddAntrol = hitUlangAddAntrol; +function getDateWithOffset(param, tanggal) { + if (param < 1 || param > 7) { + throw new Error("Parameter harus antara 1 dan 7"); + } + const now = new Date(); + const dateNownya = new Date(tanggal); + // Menambahkan 7 jam untuk menyesuaikan dengan zona waktu Asia/Jakarta + // now.setHours(now.getHours() + 7); + if (param === 1) { + // Tidak ada penambahan waktu + } + else if (param === 2) { + now.setMinutes(now.getMinutes() + 10); + } + else if (param === 3) { + now.setMinutes(now.getMinutes() + 20); + } + else if (param === 4) { + now.setMinutes(now.getMinutes() + 30); + } + else if (param === 5) { + now.setMinutes(now.getMinutes() + 40); + } + else if (param === 6) { + now.setMinutes(now.getMinutes() + 50); + } + else if (param === 7) { + now.setMinutes(now.getMinutes() + 60); + } + // Format tanggal menjadi 'YYYY-MM-DD HH:mm:ss.SSS' + const year = dateNownya.getFullYear(); + const month = String(dateNownya.getMonth() + 1).padStart(2, "0"); + const day = String(dateNownya.getDate()).padStart(2, "0"); + const hours = String(now.getHours()).padStart(2, "0"); + const minutes = String(now.getMinutes()).padStart(2, "0"); + const seconds = String(now.getSeconds()).padStart(2, "0"); + const milliseconds = String(now.getMilliseconds()).padStart(3, "0"); + return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`; +} diff --git a/backend/dist/api/asuransi/users.controller.js b/backend/dist/api/asuransi/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/asuransi/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/asuransi/users.repository.js b/backend/dist/api/asuransi/users.repository.js new file mode 100644 index 0000000..4c9774c --- /dev/null +++ b/backend/dist/api/asuransi/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("../../db"); +const database_handler_1 = require("../../db/database.handler"); +const time_1 = require("../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/asuransi/users.service.js b/backend/dist/api/asuransi/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/asuransi/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/auth/auth.controller.js b/backend/dist/api/auth/auth.controller.js new file mode 100644 index 0000000..204c4ca --- /dev/null +++ b/backend/dist/api/auth/auth.controller.js @@ -0,0 +1,152 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const jsonwebtoken_1 = __importStar(require("jsonwebtoken")); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +exports.router = (0, express_1.Router)(); +exports.router.post("/validate-token", (req, res, next) => { + try { + const token = req.body.token; + if (!token) { + return res.status(400).json({ + metadata: { + code: 400, + msg: "Token required!", + }, + }); + } + const secretKey = process.env.secretKey || ""; + if (typeof token !== "string" || token.trim() === "") { + return res.status(400).json({ + metadata: { + code: 400, + msg: "Invalid token format!", + }, + }); + } + jsonwebtoken_1.default.verify(token, secretKey, (err, decoded) => { + if (err) { + if (err instanceof jsonwebtoken_1.TokenExpiredError) { + // Token telah kedaluwarsa + return res.status(401).json({ + metadata: { + code: 401, + msg: "Token expired!", + }, + }); + } + else { + // Token tidak valid atau terjadi kesalahan lainnya + return res.status(401).json({ + metadata: { + code: 401, + msg: "Invalid token!", + }, + }); + } + } + else { + // Token valid + return res.status(200).json({ + metadata: { + code: 200, + msg: "Token valid!", + }, + }); + } + }); + } + catch (error) { + next(error); + } +}); +exports.router.post("/check-token-password", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const token = req.body.token; + if (!token) { + return res.status(400).json({ + metadata: { + code: 400, + msg: "Token required!", + }, + }); + } + const secretKey = process.env.secretKey || ""; + if (typeof token !== "string" || token.trim() === "") { + return res.status(400).json({ + metadata: { + code: 400, + msg: "Invalid token format!", + }, + }); + } + jsonwebtoken_1.default.verify(token, secretKey, (err, decoded) => { + if (err) { + if (err instanceof jsonwebtoken_1.TokenExpiredError) { + // Token telah kedaluwarsa + return res.status(401).json({ + metadata: { + code: 401, + msg: "Token expired!", + }, + }); + } + else { + // Token tidak valid atau terjadi kesalahan lainnya + return res.status(401).json({ + metadata: { + code: 401, + msg: "Invalid token!", + }, + }); + } + } + else { + // Token valid + return res.status(200).json({ + metadata: { + code: 200, + msg: "Token valid!", + }, + }); + } + }); + } + catch (error) { + next(error); + } +})); diff --git a/backend/dist/api/bpjs/index.js b/backend/dist/api/bpjs/index.js new file mode 100644 index 0000000..3ed1905 --- /dev/null +++ b/backend/dist/api/bpjs/index.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const jknmobile_controller_1 = require("./jknmobile/jknmobile.controller"); +const router = (0, express_1.Router)(); +exports.router = router; +router.use("/JKN-MOBILE", jknmobile_controller_1.router); diff --git a/backend/dist/api/bpjs/jknmobile/jknmobile.controller.js b/backend/dist/api/bpjs/jknmobile/jknmobile.controller.js new file mode 100644 index 0000000..1ccb9c0 --- /dev/null +++ b/backend/dist/api/bpjs/jknmobile/jknmobile.controller.js @@ -0,0 +1,499 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const dotenv = __importStar(require("dotenv")); +const auth_1 = require("./../../../middlewares/auth"); +const jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); +const secretKey = process.env.secretKey || ""; +const login_service_1 = require("./../../login/login.service"); +const jknmobile_service_1 = require("./jknmobile.service"); +const jknmobile_repository_1 = require("./jknmobile.repository"); +dotenv.config(); +exports.router = (0, express_1.Router)(); +exports.router.get("/get-auth", [(0, express_validator_1.header)(["x-username", "x-password"]).notEmpty()], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(201).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + try { + const username = req.headers["x-username"]; + const password = req.headers["x-password"]; + const data = { + username: username, + password: password, + }; + const dataUser = yield (0, login_service_1.getLoginUser)(data); + let token; + if (dataUser) { + token = jsonwebtoken_1.default.sign({ + id: dataUser.user_id, + username: dataUser.user_name, + }, secretKey, { + expiresIn: "1h", + }); + res.cookie("jwt", token, { + expires: new Date(Date.now() + 3600000), + httpOnly: true, + }); + res.send({ + response: { + token: token, + }, + metadata: { + message: "Ok", + code: 200, + }, + }); + } + else { + res.status(200).json({ + response: "", + metadata: { + message: "Login Gagal! Mohon periksa kembali username dan password anda.", + code: 201, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.post("/status-antrean", auth_1.authenticateToken, [ + (0, express_validator_1.body)("kodepoli") + .notEmpty() + .custom((value) => __awaiter(void 0, void 0, void 0, function* () { + const poli_hfis = yield (0, jknmobile_repository_1.checkPoliHfis)(value); + if (!poli_hfis) { + return Promise.reject("Kode Poli Tidak Terdaftar Di SIMRS!"); + } + })), + (0, express_validator_1.body)("kodedokter") + .notEmpty() + .custom((value) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const dpjp_hfis = yield (0, jknmobile_repository_1.checkDpjpHfis)(value); + if (!dpjp_hfis) { + return Promise.reject("Kode Dokter Tidak Terdaftar Di SIMRS!"); + } + })), + (0, express_validator_1.body)("tanggalperiksa").isISO8601(), + (0, express_validator_1.body)("jampraktek").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + try { + const statusAntrean = yield (0, jknmobile_service_1.statusAntreanService)(req.body); + if (statusAntrean) { + res.send({ + response: statusAntrean, + metadata: { + message: "Ok", + code: 200, + }, + }); + } + else { + res.status(200).json({ + response: "", + metadata: { + message: "Gagal", + code: 201, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.post("/daftar-perjanjian", auth_1.authenticateToken, [ + (0, express_validator_1.body)("nomorkartu").notEmpty(), + (0, express_validator_1.body)("nik").notEmpty(), + (0, express_validator_1.body)("nohp").notEmpty(), + (0, express_validator_1.body)("kodepoli") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + const poli_hfis = yield (0, jknmobile_repository_1.checkPoliHfis)(value); + if (poli_hfis.length == 0) { + return Promise.reject("Kode Poli Tidak Terdaftar Di SIMRS!"); + } + else { + req.body.bagian_id = poli_hfis[0].bagian_id; + } + })), + (0, express_validator_1.body)("tanggalperiksa").notEmpty().isISO8601(), + (0, express_validator_1.body)("kodedokter") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const dpjp_hfis = yield (0, jknmobile_repository_1.checkDpjpHfis)(value); + if (!dpjp_hfis) { + return Promise.reject("Kode Dokter Tidak Terdaftar Di SIMRS!"); + } + else { + req.body.dokter_id = dpjp_hfis.user_id; + } + })), + (0, express_validator_1.body)("jeniskunjungan").notEmpty(), + (0, express_validator_1.body)("nomorreferensi").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createRegistrasi = yield (0, jknmobile_service_1.daftarPerjanjianService)(req.body); + if (createRegistrasi.code === 200) { + res.send({ + response: createRegistrasi.data, + metadata: { + message: createRegistrasi.message, + code: createRegistrasi.code, + }, + }); + } + else { + res.status(200).json({ + response: "", + metadata: { + message: createRegistrasi.message, + code: createRegistrasi.code, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.post("/sisa-antrean", auth_1.authenticateToken, [(0, express_validator_1.body)("kodebooking").notEmpty()], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const sisaAntrean = yield (0, jknmobile_service_1.sisaAntreanService)(req.body); + if (sisaAntrean.code === 200) { + res.send({ + response: sisaAntrean.data, + metadata: { + message: sisaAntrean.message, + code: sisaAntrean.code, + }, + }); + } + else { + res.status(200).json({ + metadata: { + message: sisaAntrean.message, + code: 201, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.post("/batal-antrean", auth_1.authenticateToken, [(0, express_validator_1.body)("kodebooking").notEmpty()], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const batalAntrean = yield (0, jknmobile_service_1.batalAntreanService)(req.body); + if (batalAntrean.code === 200) { + res.send({ + metadata: { + message: batalAntrean.message, + code: batalAntrean.code, + }, + }); + } + else { + res.status(200).json({ + metadata: { + message: batalAntrean.message, + code: batalAntrean.code, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.post("/check-in", auth_1.authenticateToken, [(0, express_validator_1.body)("kodebooking").notEmpty()], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const checkIn = yield (0, jknmobile_service_1.checkInService)(req.body); + if (checkIn.code === 200) { + res.send({ + metadata: { + message: checkIn.message, + code: checkIn.code, + }, + }); + } + else { + res.status(200).json({ + metadata: { + message: checkIn.message, + code: checkIn.code, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.post("/pasien-baru", auth_1.authenticateToken, [ + (0, express_validator_1.body)("nomorkartu").notEmpty(), + (0, express_validator_1.body)("nik").notEmpty(), + (0, express_validator_1.body)("nomorkk").notEmpty(), + (0, express_validator_1.body)("nama").notEmpty(), + (0, express_validator_1.body)("jeniskelamin").notEmpty(), + (0, express_validator_1.body)("tanggallahir").notEmpty(), + (0, express_validator_1.body)("nohp").notEmpty(), + (0, express_validator_1.body)("alamat").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pasienBaru = yield (0, jknmobile_service_1.pasienBaruService)(req.body); + if (pasienBaru.code === 200) { + res.send({ + response: { + norm: pasienBaru.norm, + }, + metadata: { + message: pasienBaru.message, + code: pasienBaru.code, + }, + }); + } + else { + res.status(200).json({ + metadata: { + message: pasienBaru.message, + code: pasienBaru.code, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.post("/list-jadwal-operasi", auth_1.authenticateToken, [ + (0, express_validator_1.body)("tanggalawal").notEmpty().isISO8601(), + (0, express_validator_1.body)("tanggalakhir") + .notEmpty() + .isISO8601() + .custom((value, { req }) => { + if (new Date(value) < new Date(req.body.tanggalawal)) { + throw new Error("Tanggal akhir tidak boleh lebih kecil dari tanggal awal"); + } + return true; + }), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const listJadwalOperasi = yield (0, jknmobile_service_1.listJadwalOperasiService)(req.body); + if (listJadwalOperasi.code === 200) { + res.send({ + response: { + list: listJadwalOperasi.data, + }, + metadata: { + message: listJadwalOperasi.message, + code: listJadwalOperasi.code, + }, + }); + } + else { + res.status(200).json({ + metadata: { + message: listJadwalOperasi.message, + code: listJadwalOperasi.code, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.post("/jadwal-operasi", auth_1.authenticateToken, [(0, express_validator_1.body)("nopeserta").notEmpty()], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const jadwalOperasi = yield (0, jknmobile_service_1.jadwalOperasiService)(req.body); + if (jadwalOperasi.code === 200) { + res.send({ + response: { + list: jadwalOperasi.data, + }, + metadata: { + message: jadwalOperasi.message, + code: jadwalOperasi.code, + }, + }); + } + else { + res.status(200).json({ + metadata: { + message: jadwalOperasi.message, + code: jadwalOperasi.code, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.post("/ambil-antrean-farmasi", auth_1.authenticateToken, (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + res.send({ + msg: "test success!", + }); + } + catch (err) { + next(err); + } +})); +exports.router.post("/status-antrean-farmasi", auth_1.authenticateToken, (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + res.send({ + msg: "test success!", + }); + } + catch (err) { + next(err); + } +})); +exports.router.post("/rekap-antrian", auth_1.authenticateToken, (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + res.send({ + msg: "test success!", + }); + } + catch (err) { + next(err); + } +})); diff --git a/backend/dist/api/bpjs/jknmobile/jknmobile.repository.js b/backend/dist/api/bpjs/jknmobile/jknmobile.repository.js new file mode 100644 index 0000000..0f4b12f --- /dev/null +++ b/backend/dist/api/bpjs/jknmobile/jknmobile.repository.js @@ -0,0 +1,925 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var _a, _b; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkHariLiburMerah = exports.checkEmrValidasi = exports.checkPasienId = exports.getJadwalOperasi = exports.getTindakanBedah = exports.listJadwalOperasi = exports.insertPasienBaru = exports.checkInData = exports.checkDataRegistrasi = exports.batalDataAntrean = exports.sisaDataAntrean = exports.urutanMaxRajal = exports.insertPendaftaranService = exports.checkDokterReadyService = exports.insertDataNasabahBPJS = exports.checkDataNasabahBPJS = exports.checkRujukanService = exports.insertRujukanService = exports.checkEmrTerdaftar = exports.checkRegistrasiTerdaftarToday = exports.checkRegistrasiTerdaftar = exports.statusAntrean = exports.checkPoliHfis = exports.checkDpjpHfis = void 0; +const db_1 = require("./../../../db"); +const database_handler_1 = require("./../../../db/database.handler"); +const time_1 = require("./../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const kelas = parseInt(((_a = process.env.kelas_ruang3) !== null && _a !== void 0 ? _a : ''), 10); +const nasabahBpjs = parseInt(((_b = process.env.nasabahBPJS) !== null && _b !== void 0 ? _b : ''), 10); +const checkDpjpHfis = (kodeDpjp) => __awaiter(void 0, void 0, void 0, function* () { + const dpjp_hfis = yield db_1.prismaDb1.dpjp_hfis.findFirst({ + where: { + dpjp_hfis_kode: kodeDpjp, + }, + select: { + user_id: true, + }, + }); + return dpjp_hfis; +}); +exports.checkDpjpHfis = checkDpjpHfis; +const checkPoliHfis = (kodePoli) => __awaiter(void 0, void 0, void 0, function* () { + const checkpoli_hfis = `SELECT + bagian.bagian_id + FROM + bagian + INNER JOIN mapping_poli_bpjs ON + bagian.bagian_id = mapping_poli_bpjs.bagian_id + WHERE + mapping_poli_bpjs.kode_poli_bpjs = '${kodePoli}' + AND bagian.flag_eksekutif IS NULL + Limit 1 + `; + const poli_hfis = yield db_1.prismaDb1.$queryRawUnsafe(checkpoli_hfis); + return poli_hfis; +}); +exports.checkPoliHfis = checkPoliHfis; +const statusAntrean = (data) => __awaiter(void 0, void 0, void 0, function* () { + let referensi_bagian_id_rajal = 1; + let kode_poli_bpjs = data.kodepoli; + let dpjp_hfis_kode = data.kodedokter; + let tgl_periksa = data.tanggalperiksa; + let jam_praktek = data.jampraktek; + let hari = new Date(tgl_periksa).getDay(); + const rawQuery = `SELECT + bagian.nama_bagian, + registrasi.registrasi_id, + users.nama_pegawai, + users.user_id, + dpjp_hfis.dpjp_hfis_nama, + jadwal_dokter.kuota, + jadwal_dokter.hari, + registrasi_urut.pegawai_id, + emr.emr_id, + registrasi_urut.urutan + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is NULL + inner join registrasi_urut on + registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id + and registrasi_urut.status_batal is NULL + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + and bagian.referensi_bagian = ${referensi_bagian_id_rajal} + inner join mapping_poli_bpjs on + bagian.bagian_id = mapping_poli_bpjs.bagian_id + and mapping_poli_bpjs.kode_poli_bpjs = '${kode_poli_bpjs}' + and mapping_poli_bpjs.status_batal is NULL + inner join penanggung_rawat on + registrasi.registrasi_id = penanggung_rawat.registrasi_id + inner join users on + penanggung_rawat.rawat_user_id = users.user_id + inner join dpjp_hfis on + users.user_id = dpjp_hfis.user_id + and dpjp_hfis.dpjp_hfis_kode = '${dpjp_hfis_kode.toString()}' + and dpjp_hfis.status_batal is NULL + inner join jadwal_dokter on + bagian.bagian_id = jadwal_dokter.bagian_id + and registrasi_urut.pegawai_id = jadwal_dokter.pegawai_id + and jadwal_dokter.hari = ${hari} + left outer join emr on + registrasi.registrasi_id = emr.registrasi_id + and emr.form_id = 3 + where + registrasi.status_batal is null + and registrasi.tgl_masuk::date = '${tgl_periksa}'`; + const status_antrean = yield db_1.prismaDb1.$queryRawUnsafe(rawQuery); + return status_antrean; +}); +exports.statusAntrean = statusAntrean; +const checkRegistrasiTerdaftar = (pasien_id) => __awaiter(void 0, void 0, void 0, function* () { + const checkRegistrasiPasien = `SELECT + registrasi.registrasi_id, + pegawai.nama_pegawai, + registrasi.tgl_masuk::date, + bagian.nama_bagian, + bagian.bagian_id, + mapping_poli_bpjs.kode_poli_bpjs + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is NULL + inner join penanggung_rawat on + penanggung_rawat.registrasi_id = registrasi.registrasi_id + and penanggung_rawat.status_batal is NULL + inner join pasien_nasabah on + pasien_nasabah.pasien_nasabah_id = registrasi.pasien_nasabah_id + and pasien_nasabah.status_batal is NULL + inner join registrasi_urut on + registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id + and registrasi_urut.status_batal is NULL + inner join pegawai on + registrasi_urut.pegawai_id = pegawai.pegawai_id + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + inner join mapping_poli_bpjs on + bagian.bagian_id = mapping_poli_bpjs.bagian_id + and mapping_poli_bpjs.status_batal is NULL + where + registrasi.pasien_id = ${pasien_id} + and registrasi.tgl_masuk::DATE > now()::date + and pasien_nasabah.nasabah_id = '${nasabahBpjs}' + and registrasi.status_batal is null + order by tgl_masuk::date ASC`; + const checkRegistrasi = yield db_1.prismaDb1.$queryRawUnsafe(checkRegistrasiPasien); + return checkRegistrasi; +}); +exports.checkRegistrasiTerdaftar = checkRegistrasiTerdaftar; +const checkRegistrasiTerdaftarToday = (data) => __awaiter(void 0, void 0, void 0, function* () { + const checkRegistrasiPasien = `SELECT + registrasi.registrasi_id + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is NULL + inner join pasien_nasabah on + pasien_nasabah.pasien_nasabah_id = registrasi.pasien_nasabah_id + and pasien_nasabah.status_batal is NULL + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + and bagian.flag_eksekutif is null + inner join mapping_poli_bpjs on + bagian.bagian_id = mapping_poli_bpjs.bagian_id + and mapping_poli_bpjs.status_batal is NULL + where + registrasi.pasien_id = ${data.pasien_id} + and mapping_poli_bpjs.kode_poli_bpjs = '${data.kode_poli_bpjs}' + and registrasi.tgl_masuk::DATE = now()::date + and pasien_nasabah.nasabah_id = '${nasabahBpjs}' + and registrasi.status_batal is null + order by tgl_masuk::date ASC + Limit 1`; + const checkRegistrasi = yield db_1.prismaDb1.$queryRawUnsafe(checkRegistrasiPasien); + return checkRegistrasi; +}); +exports.checkRegistrasiTerdaftarToday = checkRegistrasiTerdaftarToday; +const checkEmrTerdaftar = (data) => __awaiter(void 0, void 0, void 0, function* () { + const checkEmrPasien = `SELECT + registrasi.registrasi_id + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is NULL + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + and bagian.flag_eksekutif is null + inner join mapping_poli_bpjs on + bagian.bagian_id = mapping_poli_bpjs.bagian_id + and mapping_poli_bpjs.status_batal is NULL + inner join pasien_nasabah on + pasien_nasabah.pasien_nasabah_id = registrasi.pasien_nasabah_id + and pasien_nasabah.status_batal is NULL + inner join emr on + registrasi.registrasi_id = emr.registrasi_id + and emr.status_batal is NULL + inner join pasien on + registrasi.pasien_id = pasien.pasien_id + where + pasien.no_mr = '${data.norm}' + and mapping_poli_bpjs.kode_poli_bpjs = '${data.kodepoli}' + and registrasi.tgl_masuk::DATE = now()::date + and pasien_nasabah.nasabah_id = '${nasabahBpjs}' + and registrasi.status_batal is null + and emr.form_id = '3' + order by tgl_masuk::date ASC + Limit 1`; + const checkRegistrasi = yield db_1.prismaDb1.$queryRawUnsafe(checkEmrPasien); + return checkRegistrasi; +}); +exports.checkEmrTerdaftar = checkEmrTerdaftar; +const checkEmrValidasi = (data) => __awaiter(void 0, void 0, void 0, function* () { + const checkEmrPasien = `SELECT + registrasi.registrasi_id, + emr.form_id + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is null + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + inner join mapping_poli_bpjs on + bagian.bagian_id = mapping_poli_bpjs.bagian_id + and mapping_poli_bpjs.status_batal is null + inner join pasien_nasabah on + pasien_nasabah.pasien_nasabah_id = registrasi.pasien_nasabah_id + and pasien_nasabah.status_batal is null + inner join emr on + registrasi.registrasi_id = emr.registrasi_id + and emr.status_batal is null + where + registrasi.registrasi_id = ${data.kodebooking} + and registrasi.status_batal is null + order by + tgl_masuk::date asc + limit 1`; + const checkRegistrasi = yield db_1.prismaDb1.$queryRawUnsafe(checkEmrPasien); + return checkRegistrasi; +}); +exports.checkEmrValidasi = checkEmrValidasi; +const checkRujukanService = (noRujukan) => __awaiter(void 0, void 0, void 0, function* () { + const rujukan_pasien = yield db_1.prismaDb1.rujukan_pasien.findFirst({ + where: { + no_rujukan: noRujukan, + }, + select: { + rujukan_pasien_id: true, + }, + }); + return rujukan_pasien; +}); +exports.checkRujukanService = checkRujukanService; +const insertRujukanService = (data, inputUserId) => __awaiter(void 0, void 0, void 0, function* () { + const rujukanPasienId = yield (0, database_handler_1.generateMaxDb1)("max_rujukan_sep_idx", "rujukan_pasien_id"); + const insertRujukan = yield db_1.prismaDb1.rujukan_pasien.create({ + data: { + rujukan_pasien_id: rujukanPasienId, + input_time: (0, time_1.dateNow)(), + input_user_id: inputUserId, + pasien_id: parseInt(data.response.rujukan.peserta.mr.noMR, 10), + no_peserta: data.response.rujukan.peserta.noKartu, + no_rujukan: data.response.rujukan.noKunjungan, + tgl_rujukan: new Date(data.response.rujukan.tglKunjungan), + kode_provider: data.response.rujukan.provPerujuk.kode, + nama_provider: data.response.rujukan.provPerujuk.nama, + kode_diagnosa: data.response.rujukan.diagnosa.kode, + nama_diagnosa: data.response.rujukan.diagnosa.nama, + faskes: data.response.asalFaskes, + jenis_peserta: data.response.rujukan.peserta.jenisPeserta.keterangan, + prolanis_prb: data.response.rujukan.peserta.informasi.prolanisPRB, + json_data: data, + kode_poli_bpjs: data.response.rujukan.poliRujukan.kode, + }, + }); +}); +exports.insertRujukanService = insertRujukanService; +const checkDataNasabahBPJS = (norm) => __awaiter(void 0, void 0, void 0, function* () { + const noMr = norm.toString().trim().padStart(8, "0"); + const checkDataBPJS = `SELECT + pasien_nasabah.pasien_nasabah_id, + pasien.pasien_id + FROM + pasien + LEFT JOIN pasien_nasabah ON + pasien.pasien_id = pasien_nasabah.pasien_id + AND pasien_nasabah.nasabah_id = '${nasabahBpjs}' + AND pasien_nasabah.status_batal is null + WHERE + pasien.no_mr = '${noMr}' + Limit 1 + `; + const checkData = yield db_1.prismaDb1.$queryRawUnsafe(checkDataBPJS); + return checkData; +}); +exports.checkDataNasabahBPJS = checkDataNasabahBPJS; +const insertDataNasabahBPJS = (data) => __awaiter(void 0, void 0, void 0, function* () { + const insertDataNasabah = yield db_1.prismaDb1.pasien_nasabah.create({ + data: { + pasien_nasabah_id: yield (0, database_handler_1.generateMaxDb1)("max_pasien_nasabah_idx", "pasien_nasabah_id"), + input_time: (0, time_1.dateNow)(), + input_user_id: data.input_user_id, + pasien_id: data.pasien_id, + nasabah_id: parseInt(data.nasabah_id, 10), + no_peserta: data.no_peserta, + }, + }); + return insertDataNasabah; +}); +exports.insertDataNasabahBPJS = insertDataNasabahBPJS; +const checkHariLiburMerah = (data) => __awaiter(void 0, void 0, void 0, function* () { + const hari_libur = yield db_1.prismaDb1.tanggal_merah.findFirst({ + where: { + tgl_libur: new Date(data.tanggalperiksa), + status_batal: null + }, + select: { + tanggal_merah_id: true, + }, + }); + return hari_libur; +}); +exports.checkHariLiburMerah = checkHariLiburMerah; +const checkDokterReadyService = (data) => __awaiter(void 0, void 0, void 0, function* () { + const hari = new Date(data.tanggalperiksa).getDay(); + const checkDataDokterReady = `select + pegawai.nama_pegawai, + pegawai.pegawai_id, + dpjp_hfis.dpjp_hfis_kode, + cuti_dokter.keterangan, + cuti_dokter.tanggal_awal::date tgl_awal_cuti, + cuti_dokter.tanggal_akhir::date tgl_akhir_cuti, + jadwal_dokter.kuota, + jadwal_dokter.waktu_mulai, + jadwal_dokter.waktu_selesai, + users.user_id, + bagian.nama_bagian, + ( + select + count(registrasi_urut.registrasi_urut_id) as jumlah_terdaftar + from + registrasi_urut + where + registrasi_urut.bagian_id = ${data.bagian_id} + and registrasi_urut.pegawai_id = pegawai.pegawai_id + and registrasi_urut.status_batal is null + and tgl_urut::DATE = '${data.tanggalperiksa}' + ) jumlah_terdaftar + from + jadwal_dokter + inner join bagian on + jadwal_dokter.bagian_id = bagian.bagian_id + inner join pegawai on + jadwal_dokter.pegawai_id = pegawai.pegawai_id + inner join users on + pegawai.pegawai_id = users.pegawai_id + left outer join dpjp_hfis on + users.user_id = dpjp_hfis.user_id + and dpjp_hfis.status_batal is null + left outer join cuti_dokter on + cuti_dokter.cuti_user_id = users.user_id + and cuti_dokter.tanggal_awal::date <= '${data.tanggalperiksa}' + and cuti_dokter.tanggal_akhir::date >= '${data.tanggalperiksa}' + where + jadwal_dokter.bagian_id = ${data.bagian_id} + and users.user_id = ${data.dokter_id} + and jadwal_dokter.status_batal is null + and jadwal_dokter.hari = ${hari} + and pegawai.status_batal is null + `; + const checkData = yield db_1.prismaDb1.$queryRawUnsafe(checkDataDokterReady); + return checkData; +}); +exports.checkDokterReadyService = checkDokterReadyService; +const insertPendaftaranService = (data) => __awaiter(void 0, void 0, void 0, function* () { + const registrasiId = yield (0, database_handler_1.generateMaxDb1)("max_registrasi_idx", "registrasi_id"); + const insertRegistrasi = yield db_1.prismaDb1.registrasi.create({ + data: { + registrasi_id: registrasiId, + input_time: (0, time_1.dateNow)(), + input_user_id: data.data.input_user_id, + pasien_id: data.pasien_id, + pasien_nasabah_id: data.pasien_nasabah_id, + tgl_masuk: new Date(data.data.tanggalperiksa), + jenis_rawat: "RJ", + prioritas: "Berjalan Sendiri", + flag_online: 1, + }, + }); + const registrasiDetailId = yield (0, database_handler_1.generateMaxDb1)("max_registrasi_detail_idx", "registrasi_detail_id"); + const insertRegistrasiDetail = yield db_1.prismaDb1.registrasi_detail.create({ + data: { + registrasi_detail_id: registrasiDetailId, + input_time: (0, time_1.dateNow)(), + input_user_id: data.data.input_user_id, + registrasi_id: registrasiId, + tgl_daftar: new Date(data.data.tanggalperiksa), + bagian_id: data.data.bagian_id, + kelas_id: kelas, + hak_kelas_id: kelas, + }, + }); + const registrasiUrutId = yield (0, database_handler_1.generateMaxDb1)("max_registrasi_urut_idx", "registrasi_urut_id"); + const pegawaiId = yield (0, database_handler_1.selectFieldDb1)("users", "pegawai_id", `where + status_batal is null + and user_id = ${data.data.dokter_id}`); + let antrian_rj, addminute; + const rangeAntrianRJ = process.env.rangeAntrianRJ; + const antrianMax = yield urutanMaxRajal(data.data.bagian_id, pegawaiId, data.data.tanggalperiksa); + if (!antrianMax || antrianMax === "") { + antrian_rj = 1; + addminute = 0; + } + else { + antrian_rj = antrianMax + 1; + addminute = antrian_rj * rangeAntrianRJ - rangeAntrianRJ; + } + const hari = new Date(data.data.tanggalperiksa).getDay(); + let jam_mulai = yield (0, database_handler_1.selectFieldDb1)("jadwal_dokter", "waktu_mulai", `where + bagian_id = ${data.data.bagian_id} + and pegawai_id = ${pegawaiId} + and hari = ${hari} + and status_batal is null`); + let jam_selesai = yield (0, database_handler_1.selectFieldDb1)("jadwal_dokter", "waktu_selesai", `where + bagian_id = ${data.data.bagian_id} + and pegawai_id = ${pegawaiId} + and hari = ${hari} + and status_batal is null`); + jam_mulai = yield (0, database_handler_1.timeHandler)(jam_mulai); + jam_selesai = yield (0, database_handler_1.timeHandler)(jam_selesai); + const kontrol = `${data.data.tanggalperiksa} ${jam_mulai}`; + const bataskontrol = `${data.data.tanggalperiksa} ${jam_selesai}`; + const minutesToAdd = addminute; + let time = new Date(kontrol + " UTC"); + time.setMinutes(time.getMinutes() + minutesToAdd); + let jamkontrol; + if (new Date(time) >= new Date(bataskontrol + " UTC")) { + jamkontrol = new Date(new Date(bataskontrol + " UTC").getTime() - 3600000); // Mengurangi 1 jam dari batas kontrol + } + else { + jamkontrol = time; + } + const jampelayanan = jamkontrol; + const insertRegistrasiUrut = yield db_1.prismaDb1.registrasi_urut.create({ + data: { + registrasi_urut_id: registrasiUrutId, + input_time: (0, time_1.dateNow)(), + input_user_id: data.data.input_user_id, + registrasi_detail_id: registrasiDetailId, + pegawai_id: pegawaiId, + bagian_id: data.data.bagian_id, + urutan: antrian_rj, + tgl_urut: jampelayanan, + }, + }); + const penanggungRawatId = yield (0, database_handler_1.generateMaxDb1)("max_penanggung_rawat_idx", "penanggung_rawat_id"); + const insertPenanggungRawat = yield db_1.prismaDb1.penanggung_rawat.create({ + data: { + penanggung_rawat_id: penanggungRawatId, + input_time: (0, time_1.dateNow)(), + input_user_id: data.data.input_user_id, + registrasi_id: registrasiId, + rawat_user_id: data.data.dokter_id, + }, + }); + const diagnosaRawatId = yield (0, database_handler_1.generateMaxDb1)("max_diagnosa_rawat_idx", "diagnosa_rawat_id"); + const insertDiagnosaRawat = yield db_1.prismaDb1.diagnosa_rawat.create({ + data: { + diagnosa_rawat_id: diagnosaRawatId, + input_time: (0, time_1.dateNow)(), + input_user_id: data.data.input_user_id, + registrasi_id: registrasiId, + icd_id: 9985, + jenis_diagnosa: 1, + }, + }); + const rujukanSepId = yield (0, database_handler_1.generateMaxDb1)("max_rujukan_sep_idx", "rujukan_sep_id"); + const insertRujukanSep = yield db_1.prismaDb1.rujukan_sep.create({ + data: { + rujukan_sep_id: rujukanSepId, + input_time: (0, time_1.dateNow)(), + input_user_id: data.data.input_user_id, + registrasi_id: registrasiId, + no_rujukan: data.noRujukan, + }, + }); + const billTempId = yield (0, database_handler_1.generateMaxDb1)("max_bill_temp_idx", "bill_temp_id"); + const insertBillTemp = yield db_1.prismaDb1.bill_temp.create({ + data: { + bill_temp_id: billTempId, + input_time: (0, time_1.dateNow)(), + input_user_id: data.data.input_user_id, + registrasi_detail_id: registrasiDetailId, + pasien_id: data.pasien_id, + bagian_id: data.data.bagian_id, + nasabah_id: nasabahBpjs, + kelas_ruang_id: kelas, + hak_kelas_ruang_id: kelas, + tgl_bill: new Date(data.data.tanggalperiksa), + }, + }); + if (data.data.jeniskunjungan === 3) { + const suratKontrolId = yield (0, database_handler_1.generateMaxDb1)("surat_kontrol", "surat_kontrol_id"); + const insertSuratKontrol = yield db_1.prismaDb1.surat_kontrol.create({ + data: { + surat_kontrol_id: suratKontrolId, + input_time: (0, time_1.dateNow)(), + input_user_id: data.data.input_user_id, + no_surat_kontrol: data.data.nomorreferensi, + registrasi_id_kontrol: registrasiId, + jenis_kontrol: "KONTROL", + }, + }); + } + const namaDPJP = yield (0, database_handler_1.selectFieldDb1)("users", "nama_pegawai", `where user_id = ${data.data.dokter_id}`); + const namaBagian = yield (0, database_handler_1.selectFieldDb1)("bagian", "nama_bagian", `where bagian_id = ${data.data.bagian_id}`); + const sevenHoursInMilliseconds = 7 * 60 * 60 * 1000; + const adjustedTime = Math.floor(jampelayanan.getTime() - sevenHoursInMilliseconds); + return { + registrasi_id: registrasiId, + registrasi_detail_id: registrasiDetailId, + registrasi_urut_id: registrasiUrutId, + urutan: antrian_rj, + jampelayanan: jampelayanan, + dpjp: namaDPJP, + bagian: namaBagian, + estimasidilayani: adjustedTime, + }; +}); +exports.insertPendaftaranService = insertPendaftaranService; +const sisaDataAntrean = (data) => __awaiter(void 0, void 0, void 0, function* () { + const registrasiId = parseInt(data.kodebooking, 10); + const sisaAntrean = `select + registrasi_urut.urutan, + bagian.nama_bagian, + pegawai.nama_pegawai, + ( + select + count(registrasi_urut.*) + from + registrasi_urut + where + registrasi_urut.bagian_id = bagian.bagian_id + and registrasi_urut.pegawai_id = pegawai.pegawai_id + and registrasi_urut.tgl_urut::date = registrasi.tgl_masuk::date + and registrasi_urut.status_panggil is null + and registrasi_urut.status_batal is null + ) sisaantrean, + ( + select + registrasi_urut.urutan + from + registrasi_urut + where + registrasi_urut.bagian_id = bagian.bagian_id + and registrasi_urut.pegawai_id = pegawai.pegawai_id + and registrasi_urut.tgl_urut::date = registrasi.tgl_masuk::date + and registrasi_urut.status_panggil is not null + and registrasi_urut.status_batal is null + limit 1 + ) antreanpanggil + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is null + inner join registrasi_urut on + registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id + and registrasi_urut.status_batal is null + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + and bagian.referensi_bagian = '1' + inner join pegawai on + registrasi_urut.pegawai_id = pegawai.pegawai_id + where + registrasi.registrasi_id = ${registrasiId} + and registrasi.status_batal is null`; + const checkData = yield db_1.prismaDb1.$queryRawUnsafe(sisaAntrean); + return checkData[0]; +}); +exports.sisaDataAntrean = sisaDataAntrean; +const batalDataAntrean = (data) => __awaiter(void 0, void 0, void 0, function* () { + const registrasiId = parseInt(data.kodebooking, 10); + const batalRegistrasi = yield db_1.prismaDb1.registrasi.update({ + where: { + registrasi_id: registrasiId, + }, + data: { + status_batal: 1, + mod_time: (0, time_1.dateNow)(), + mod_user_id: data.input_user_id, + }, + }); + const registrasiDetailId = yield (0, database_handler_1.selectFieldDb1)("registrasi_detail", "registrasi_detail_id", `where registrasi_id = ${registrasiId} and status_batal is null`); + const batalRegistrasiDetail = yield db_1.prismaDb1.registrasi_detail.updateMany({ + where: { + registrasi_id: registrasiId, + }, + data: { + status_batal: 1, + mod_time: (0, time_1.dateNow)(), + mod_user_id: data.input_user_id, + }, + }); + const batalRegistrasiUrut = yield db_1.prismaDb1.registrasi_urut.updateMany({ + where: { + registrasi_detail_id: registrasiDetailId, + }, + data: { + status_batal: 1, + mod_time: (0, time_1.dateNow)(), + mod_user_id: data.input_user_id, + }, + }); + const batalPenanggungRawat = yield db_1.prismaDb1.penanggung_rawat.updateMany({ + where: { + registrasi_id: registrasiId, + }, + data: { + status_batal: 1, + mod_time: (0, time_1.dateNow)(), + mod_user_id: data.input_user_id, + }, + }); + const batalDiagnosaRawat = yield db_1.prismaDb1.diagnosa_rawat.updateMany({ + where: { + registrasi_id: registrasiId, + }, + data: { + status_batal: 1, + mod_time: (0, time_1.dateNow)(), + mod_user_id: data.input_user_id, + }, + }); + const batalRujukanSep = yield db_1.prismaDb1.rujukan_sep.updateMany({ + where: { + registrasi_id: registrasiId, + }, + data: { + status_batal: 1, + mod_time: (0, time_1.dateNow)(), + mod_user_id: data.input_user_id, + }, + }); + const batalBillTemp = yield db_1.prismaDb1.bill_temp.updateMany({ + where: { + registrasi_detail_id: registrasiDetailId, + }, + data: { + status_batal: 1, + mod_time: (0, time_1.dateNow)(), + mod_user_id: data.input_user_id, + }, + }); + return true; +}); +exports.batalDataAntrean = batalDataAntrean; +const checkDataRegistrasi = (data) => __awaiter(void 0, void 0, void 0, function* () { + const registrasiId = parseInt(data.kodebooking, 10); + const checkRegistrasi = yield db_1.prismaDb1.registrasi.findFirst({ + where: { + registrasi_id: registrasiId, + status_batal: null, + }, + }); + return checkRegistrasi; +}); +exports.checkDataRegistrasi = checkDataRegistrasi; +const checkInData = (data) => __awaiter(void 0, void 0, void 0, function* () { + const registrasiId = parseInt(data.kodebooking, 10); + const registrasiDetailId = yield (0, database_handler_1.selectFieldDb1)("registrasi_detail", "registrasi_detail_id", `where registrasi_id = ${registrasiId} and status_batal is null`); + const checkIn = yield db_1.prismaDb1.registrasi_urut.updateMany({ + where: { + registrasi_detail_id: registrasiDetailId, + }, + data: { + mod_time: (0, time_1.dateNow)(), + mod_user_id: data.input_user_id, + status_check_in: 1, + tgl_check_in: (0, time_1.dateNow)(), + }, + }); + return checkIn; +}); +exports.checkInData = checkInData; +const insertPasienBaru = (data) => __awaiter(void 0, void 0, void 0, function* () { + const pasienId = yield (0, database_handler_1.generateMaxDb1)("max_pasien_idx", "pasien_id"); + const noMr = pasienId.toString().padStart(8, "0"); + let jenisKelamin; + if (data.jeniskelamin === "L") { + jenisKelamin = "Laki-Laki"; + } + else if (data.jeniskelamin === "P") { + jenisKelamin = "Perempuan"; + } + const pasienBaru = yield db_1.prismaDb1.pasien.create({ + data: { + pasien_id: pasienId, + input_time: (0, time_1.dateNow)(), + input_user_id: data.input_user_id, + no_mr: noMr, + tgl_lahir: new Date(data.tanggallahir + "UTC"), + no_hp: data.nohp, + alamat: data.alamat, + ktp: data.nik, + nama_pasien: data.nama, + jenis_kelamin: jenisKelamin, + }, + }); + return pasienBaru; +}); +exports.insertPasienBaru = insertPasienBaru; +const listJadwalOperasi = (data) => __awaiter(void 0, void 0, void 0, function* () { + const listOperasi = `SELECT + kodebooking, + jenistindakan, + namapoli, + kodepoli, + tanggaloperasi, + nopeserta, + ( + case + when laporan_operasi is not null then 1 + else 0 + end ) as terlaksana + from + ( + select + pesan_slot_bedah.pesan_slot_bedah_id as kodebooking, + pesan_slot_bedah.jenis_tindakan_bedah as jenistindakan, + ( + case + when bagian.nama_bagian is not null then bagian.nama_bagian + else bagian_ranap.nama_bagian + end + ) as namapoli, + ( + case + when mapping_poli_bpjs.kode_poli_bpjs is not null then mapping_poli_bpjs.kode_poli_bpjs + else mapping_poli_bpjs_ranap.kode_poli_bpjs + end + ) as kodepoli, + pesan_slot_bedah.tgl_rencana_operasi as tanggaloperasi, + pasien_nasabah.no_peserta as nopeserta, + ( + select + emr.emr_id + from + emr + where + emr.form_id = 27 + and emr.status_batal is null + and emr.registrasi_id = registrasi_detail.registrasi_id + limit 1 ) as laporan_operasi + from + pesan_slot_bedah + left outer join registrasi_detail on + pesan_slot_bedah.registrasi_detail_id = registrasi_detail.registrasi_detail_id + left outer join bagian on + registrasi_detail.bagian_asal_id = bagian.bagian_id + AND bagian.referensi_bagian = 1 + left outer join mapping_poli_bpjs on + mapping_poli_bpjs.bagian_id = bagian.bagian_id + left outer join registrasi on + registrasi.registrasi_id = registrasi_detail.registrasi_id + left outer join pasien_nasabah on + registrasi.pasien_nasabah_id = pasien_nasabah.pasien_nasabah_id + and pasien_nasabah.nasabah_id = '${nasabahBpjs}' + left outer join penanggung_rawat on + registrasi.registrasi_id = penanggung_rawat.registrasi_id + left outer join users on + penanggung_rawat.rawat_user_id = users.user_id + left outer join pegawai on + users.pegawai_id = pegawai.pegawai_id + left outer join bagian as bagian_ranap on + pegawai.bagian_id = bagian_ranap.bagian_id + left outer join mapping_poli_bpjs as mapping_poli_bpjs_ranap on + bagian_ranap.bagian_id = mapping_poli_bpjs_ranap.bagian_id + where + registrasi.status_batal is null + and registrasi_detail.status_batal is null + and mapping_poli_bpjs.status_batal is null + and pesan_slot_bedah.status_batal is null + and cast(pesan_slot_bedah.tgl_rencana_operasi as date) between '${data.tanggalawal}' AND '${data.tanggalakhir}' ) as data_operasi`; + const listOperasiResult = yield db_1.prismaDb1.$queryRawUnsafe(listOperasi); + return listOperasiResult; +}); +exports.listJadwalOperasi = listJadwalOperasi; +const getTindakanBedah = (jenistindakan) => __awaiter(void 0, void 0, void 0, function* () { + const tindakanBedah = `SELECT + detail_tindakan_bedah.nama_tindakan_bedah + FROM + detail_tindakan_bedah + WHERE + detail_tindakan_bedah.detail_tindakan_bedah_id = ${jenistindakan}`; + const tindakanBedahResult = yield db_1.prismaDb1.$queryRawUnsafe(tindakanBedah); + return tindakanBedahResult[0].nama_tindakan_bedah; +}); +exports.getTindakanBedah = getTindakanBedah; +const getJadwalOperasi = (data) => __awaiter(void 0, void 0, void 0, function* () { + const jadwalOperasi = `SELECT + kodebooking, + jenistindakan, + namapoli, + kodepoli, + tanggaloperasi, + nopeserta, + ( + case + when laporan_operasi is not null then 1 + else 0 + end ) as terlaksana + from + ( + select + pesan_slot_bedah.pesan_slot_bedah_id as kodebooking, + pesan_slot_bedah.jenis_tindakan_bedah as jenistindakan, + ( + case + when bagian.nama_bagian is not null then bagian.nama_bagian + else bagian_ranap.nama_bagian + end + ) as namapoli, + ( + case + when mapping_poli_bpjs.kode_poli_bpjs is not null then mapping_poli_bpjs.kode_poli_bpjs + else mapping_poli_bpjs_ranap.kode_poli_bpjs + end + ) as kodepoli, + pesan_slot_bedah.tgl_rencana_operasi as tanggaloperasi, + pasien_nasabah.no_peserta as nopeserta, + ( + select + emr.emr_id + from + emr + where + emr.form_id = 27 + and emr.status_batal is null + and emr.registrasi_id = registrasi_detail.registrasi_id + limit 1 ) as laporan_operasi + from + pesan_slot_bedah + left outer join registrasi_detail on + pesan_slot_bedah.registrasi_detail_id = registrasi_detail.registrasi_detail_id + left outer join bagian on + registrasi_detail.bagian_asal_id = bagian.bagian_id + AND bagian.referensi_bagian = 1 + left outer join mapping_poli_bpjs on + mapping_poli_bpjs.bagian_id = bagian.bagian_id + left outer join registrasi on + registrasi.registrasi_id = registrasi_detail.registrasi_id + left outer join pasien_nasabah on + registrasi.pasien_nasabah_id = pasien_nasabah.pasien_nasabah_id + and pasien_nasabah.nasabah_id = '${nasabahBpjs}' + left outer join penanggung_rawat on + registrasi.registrasi_id = penanggung_rawat.registrasi_id + left outer join users on + penanggung_rawat.rawat_user_id = users.user_id + left outer join pegawai on + users.pegawai_id = pegawai.pegawai_id + left outer join bagian as bagian_ranap on + pegawai.bagian_id = bagian_ranap.bagian_id + left outer join mapping_poli_bpjs as mapping_poli_bpjs_ranap on + bagian_ranap.bagian_id = mapping_poli_bpjs_ranap.bagian_id + where + registrasi.status_batal is null + and registrasi_detail.status_batal is null + and mapping_poli_bpjs.status_batal is null + and pesan_slot_bedah.status_batal is null + and pasien_nasabah.no_peserta = '${data.nopeserta}' ) as data_operasi`; + const jadwalOperasiResult = yield db_1.prismaDb1.$queryRawUnsafe(jadwalOperasi); + return jadwalOperasiResult; +}); +exports.getJadwalOperasi = getJadwalOperasi; +const checkPasienId = (nik) => __awaiter(void 0, void 0, void 0, function* () { + const checkPasienIdData = yield db_1.prismaDb1.pasien.findFirst({ + where: { + ktp: nik, + }, + select: { + pasien_id: true, + no_mr: true, + }, + }); + return checkPasienIdData; +}); +exports.checkPasienId = checkPasienId; +const urutanMaxRajal = (bagianId, pegawaiId, tglKunjungan) => __awaiter(void 0, void 0, void 0, function* () { + const urutanRajal = `SELECT + MAX(urutan) as antrian_max + FROM + registrasi_urut + WHERE + status_batal IS NULL + AND bagian_id = ${bagianId} + AND pegawai_id = ${pegawaiId} + AND tgl_urut::date = '${tglKunjungan}'`; + const checkData = yield db_1.prismaDb1.$queryRawUnsafe(urutanRajal); + if (checkData[0].antrian_max > 0) { + return checkData[0].antrian_max; + } + else { + return 0; + } +}); +exports.urutanMaxRajal = urutanMaxRajal; diff --git a/backend/dist/api/bpjs/jknmobile/jknmobile.service.js b/backend/dist/api/bpjs/jknmobile/jknmobile.service.js new file mode 100644 index 0000000..7b84074 --- /dev/null +++ b/backend/dist/api/bpjs/jknmobile/jknmobile.service.js @@ -0,0 +1,430 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.jadwalOperasiService = exports.listJadwalOperasiService = exports.pasienBaruService = exports.checkInService = exports.batalAntreanService = exports.sisaAntreanService = exports.daftarPerjanjianService = exports.statusAntreanService = void 0; +const jknmobile_repository_1 = require("./jknmobile.repository"); +const axiosClient_1 = require("../../../utils/axiosClient"); +const dotenv = __importStar(require("dotenv")); +const time_1 = require("./../../../middlewares/time"); +dotenv.config(); +const urlPhis = process.env.urlPHIS || ""; +const statusAntreanService = (data) => __awaiter(void 0, void 0, void 0, function* () { + const resultqueryStatusAntrean = yield (0, jknmobile_repository_1.statusAntrean)(data); + if (resultqueryStatusAntrean.length < 1) { + return false; + } + const jumlah_terdaftar = resultqueryStatusAntrean.length; + let sisa_kuota = resultqueryStatusAntrean[0].kuota - jumlah_terdaftar; + if (sisa_kuota < 0) { + sisa_kuota = 0; + } + const arr_sudah_soap = {}; + const arr_belum_soap = []; + resultqueryStatusAntrean.forEach((valresultqueryStatusAntrean) => { + if (valresultqueryStatusAntrean.emr_id) { + arr_sudah_soap[valresultqueryStatusAntrean.registrasi_id] = + valresultqueryStatusAntrean.emr_id; + } + else { + arr_belum_soap.push(valresultqueryStatusAntrean.urutan); + } + }); + const terakhir_panggil = Math.min(...arr_belum_soap); + const jumlah_terlayani = Object.keys(arr_sudah_soap).length; + const sisa_antrian = jumlah_terdaftar - jumlah_terlayani; + const dataWillOutput = { + namapoli: resultqueryStatusAntrean[0].nama_bagian, + namadokter: resultqueryStatusAntrean[0].dpjp_hfis_nama, + totalantrean: jumlah_terdaftar, + sisaantrean: sisa_antrian, + antreanpanggil: terakhir_panggil.toString(), + sisakuotajkn: sisa_kuota, + kuotajkn: resultqueryStatusAntrean[0].kuota, + sisakuotanonjkn: sisa_kuota, + kuotanonjkn: resultqueryStatusAntrean[0].kuota, + keterangan: "", + }; + return dataWillOutput; +}); +exports.statusAntreanService = statusAntreanService; +const daftarPerjanjianService = (data) => __awaiter(void 0, void 0, void 0, function* () { + if (!data.norm) { + return { + message: "Pasien Baru", + code: 202, + }; + } + const checkNasabahBPJS = yield (0, jknmobile_repository_1.checkDataNasabahBPJS)(data.norm); + if (!checkNasabahBPJS[0].pasien_nasabah_id) { + const dataNasabah = { + pasien_id: checkNasabahBPJS[0].pasien_id, + nasabah_id: process.env.nasabahBPJS, + no_peserta: data.nomorkartu, + input_user_id: data.input_user_id, + }; + const nasabahBPJS = yield (0, jknmobile_repository_1.insertDataNasabahBPJS)(dataNasabah); + checkNasabahBPJS[0].pasien_nasabah_id = nasabahBPJS.pasien_nasabah_id; + } + let pasien_id = checkNasabahBPJS[0].pasien_id; + let pasien_nasabah_id = checkNasabahBPJS[0].pasien_nasabah_id; + const checkPendaftaranTerdaftar = yield (0, jknmobile_repository_1.checkRegistrasiTerdaftar)(pasien_id); + if (checkPendaftaranTerdaftar.length > 0) { + if (checkPendaftaranTerdaftar[0].kode_poli_bpjs === data.kodepoli) { + return { + code: 201, + message: `Anda sudah terdaftar di Poli ini pada tanggal ${checkPendaftaranTerdaftar[0].tgl_masuk}`, + }; + } + else if (checkPendaftaranTerdaftar[0].kode_poli_bpjs !== data.kodepoli && + new Date(checkPendaftaranTerdaftar[0].tgl_masuk + " 00:00:00") === + new Date(data.tanggalperiksa + " 00:00:00")) { + return { + code: 201, + message: `Anda sudah terdaftar di Poli ${checkPendaftaranTerdaftar[0].nama_bagian} pada tanggal ${checkPendaftaranTerdaftar[0].tgl_masuk}`, + }; + } + } + const dataPendaftaranTerdaftarToday = { + pasien_id, + kode_poli_bpjs: data.kodepoli, + }; + const checkPendaftaranTerdaftarToday = yield (0, jknmobile_repository_1.checkRegistrasiTerdaftarToday)(dataPendaftaranTerdaftarToday); + if (checkPendaftaranTerdaftarToday.length > 0) { + const checkEmrPasien = yield (0, jknmobile_repository_1.checkEmrTerdaftar)(data); + if (checkEmrPasien.length < 1) { + return { + code: 201, + message: "Hari Ini Ada Pelayanan Yang Belum Diselesaikan.", + }; + } + } + const jeniskunjungan = data.jeniskunjungan; + let responseRujukan = {}; + let responseSKDP = {}; + let collectionData = {}; + let noRujukan = data.nomorreferensi; + if (jeniskunjungan === 1 || jeniskunjungan === 4) { + const checkRujukan = yield (0, jknmobile_repository_1.checkRujukanService)(data.nomorreferensi); + if (!checkRujukan) { + const urlRujukan = `${urlPhis}API/BPJS/SIMRS-VCLAIM/V2/CARIRUJUKAN/NORUJUKAN/${data.nomorreferensi}`; + const method = "GET"; + const headersData = {}; + responseRujukan = yield (0, axiosClient_1.requestAxios)(headersData, urlRujukan, method, null); + if (responseRujukan.data.metadata.code == "200") { + const insertRujukan = yield (0, jknmobile_repository_1.insertRujukanService)(responseRujukan.data, data.input_user_id); + } + else { + return { + code: 201, + message: responseRujukan.data.metadata.message, + }; + } + } + } + else if (jeniskunjungan === 3) { + const urlSKDP = `${urlPhis}API/BPJS/SIMRS-VCLAIM/V2/SURAT-KONTROL/INTERNAL/CARI/${data.nomorreferensi}`; + const method = "GET"; + const headersData = {}; + responseSKDP = yield (0, axiosClient_1.requestAxios)(headersData, urlSKDP, method, null); + if (responseSKDP.data.metadata.code == "200") { + noRujukan = responseSKDP.data.response.sep.provPerujuk.noRujukan; + const checkRujukan = yield (0, jknmobile_repository_1.checkRujukanService)(noRujukan); + if (!checkRujukan) { + const urlRujukan = `${urlPhis}API/BPJS/SIMRS-VCLAIM/V2/CARIRUJUKAN/NORUJUKAN/${noRujukan}`; + const method = "GET"; + const headersData = {}; + responseRujukan = yield (0, axiosClient_1.requestAxios)(headersData, urlRujukan, method, null); + if (responseRujukan.data.metadata.code == "200") { + const insertRujukan = yield (0, jknmobile_repository_1.insertRujukanService)(responseRujukan.data, data.input_user_id); + } + else { + return { + code: 201, + message: responseRujukan.data.metadata.message, + }; + } + } + } + else { + return { + code: 201, + message: responseSKDP.data.metadata.message, + }; + } + } + const checkHariLibur = yield (0, jknmobile_repository_1.checkHariLiburMerah)(data); + if (checkHariLibur) { + return { + code: 201, + message: "Hari ini merupakan tanggal merah nasional", + }; + } + const checkDokterReady = yield (0, jknmobile_repository_1.checkDokterReadyService)(data); + let kuota = 0; + let jumlah_terdaftar = 0; + let sisaPasien = 0; + if (checkDokterReady.length > 0) { + //kuota + kuota = parseInt(checkDokterReady[0].kuota, 10); + jumlah_terdaftar = parseInt(checkDokterReady[0].jumlah_terdaftar, 10); + if (kuota > 0) { + sisaPasien = kuota - jumlah_terdaftar; + if (sisaPasien < 1) { + return { + code: 201, + message: "Quota Dokter Tidak Tersedia di SIMRS", + }; + } + } + //cuti + if (checkDokterReady[0].tgl_akhir_cuti) { + return { + code: 201, + message: "Dokter Sedang Cuti", + }; + } + } + else { + return { + code: 201, + message: "Dokter Tidak Tersedia di SIMRS", + }; + } + collectionData = { + data, + pasien_id, + pasien_nasabah_id, + noRujukan, + }; + const insertPendaftaran = yield (0, jknmobile_repository_1.insertPendaftaranService)(collectionData); + return { + code: 200, + message: "OK", + data: { + nomorantrean: insertPendaftaran.urutan, + angkaantrean: insertPendaftaran.urutan, + kodebooking: insertPendaftaran.registrasi_id, + norm: data.norm, + namapoli: insertPendaftaran.bagian, + namadokter: insertPendaftaran.dpjp, + estimasidilayani: insertPendaftaran.estimasidilayani, + sisakuotajkn: sisaPasien, + kuotajkn: kuota, + sisakuotanonjkn: sisaPasien, + kuotanonjkn: kuota, + keterangan: "Peserta harap 60 menit lebih awal guna pencatatan administrasi.", + }, + }; +}); +exports.daftarPerjanjianService = daftarPerjanjianService; +const sisaAntreanService = (data) => __awaiter(void 0, void 0, void 0, function* () { + const sisaAntrean = yield (0, jknmobile_repository_1.sisaDataAntrean)(data); + if (sisaAntrean) { + let SPM = process.env.SPM; + let sisa_antrean = parseInt(sisaAntrean.sisaantrean, 10); + let waktuTunggu = SPM * (sisa_antrean - 1); + return { + code: 200, + message: "OK", + data: { + nomorantrean: sisaAntrean.urutan, + namapoli: sisaAntrean.nama_bagian, + namadokter: sisaAntrean.nama_pegawai, + sisaantrean: sisa_antrean, + antreanpanggil: sisaAntrean.antreanpanggil + ? sisaAntrean.antreanpanggil + : "", + waktutunggu: waktuTunggu, + keterangan: "", + }, + }; + } + else { + return { + code: 201, + message: "Data Tidak Ditemukan atau sudah dibatalkan", + }; + } +}); +exports.sisaAntreanService = sisaAntreanService; +const batalAntreanService = (data) => __awaiter(void 0, void 0, void 0, function* () { + const checkRegistrasi = yield (0, jknmobile_repository_1.checkDataRegistrasi)(data); + if (!checkRegistrasi) { + return { + code: 201, + message: "Data Tidak Ditemukan atau sudah dibatalkan", + }; + } + const checkEmrPasien = yield (0, jknmobile_repository_1.checkEmrValidasi)(data); + if (checkEmrPasien.length > 0) { + return { + code: 201, + message: "Pasien Sudah diisi EMR", + }; + } + const batalAntrean = yield (0, jknmobile_repository_1.batalDataAntrean)(data); + if (batalAntrean) { + return { + code: 200, + message: "OK", + }; + } +}); +exports.batalAntreanService = batalAntreanService; +const checkInService = (data) => __awaiter(void 0, void 0, void 0, function* () { + const checkRegistrasi = yield (0, jknmobile_repository_1.checkDataRegistrasi)(data); + if (!checkRegistrasi) { + return { + code: 201, + message: "Data Tidak Ditemukan atau sudah dibatalkan", + }; + } + const checkIn = yield (0, jknmobile_repository_1.checkInData)(data); + if (checkIn) { + return { + code: 200, + message: "OK", + }; + } +}); +exports.checkInService = checkInService; +const pasienBaruService = (data) => __awaiter(void 0, void 0, void 0, function* () { + const checkPasienIdData = yield (0, jknmobile_repository_1.checkPasienId)(data.nik); + if (checkPasienIdData) { + return { + code: 200, + message: "Harap datang ke admisi untuk melengkapi data rekam medis", + norm: checkPasienIdData.no_mr, + }; + } + const pasienBaru = yield (0, jknmobile_repository_1.insertPasienBaru)(data); + if (pasienBaru) { + return { + code: 200, + message: "Harap datang ke admisi untuk melengkapi data rekam medis", + norm: pasienBaru.no_mr, + }; + } + else { + return { + code: 201, + message: "Pasien Baru Gagal", + }; + } +}); +exports.pasienBaruService = pasienBaruService; +const listJadwalOperasiService = (data) => __awaiter(void 0, void 0, void 0, function* () { + const listOperasi = yield (0, jknmobile_repository_1.listJadwalOperasi)(data); + if (listOperasi.length > 0) { + let new_result_end = []; + yield Promise.all(listOperasi.map((element) => __awaiter(void 0, void 0, void 0, function* () { + let jenisTindakan = []; + if (element.jenistindakan) { + let matches = element.jenistindakan.match(/\d+/g); + yield Promise.all(matches.map((value) => __awaiter(void 0, void 0, void 0, function* () { + const getNamaTindakanBedah = yield (0, jknmobile_repository_1.getTindakanBedah)(value); + jenisTindakan.push(getNamaTindakanBedah); + }))); + jenisTindakan = jenisTindakan.join(", "); + } + else { + jenisTindakan = "-"; + } + let new_result = { + kodebooking: element.kodebooking, + tanggaloperasi: element.tanggaloperasi, + jenistindakan: jenisTindakan, + kodepoli: element.kodepoli ? element.kodepoli : "", + namapoli: element.namapoli ? element.namapoli : "", + terlaksana: element.terlaksana, + nopeserta: element.nopeserta, + lastupdate: new Date((0, time_1.dateNow)()).getTime(), + }; + new_result_end.push(new_result); + }))); + return { + code: 200, + message: "OK", + data: new_result_end, + }; + } + else { + return { + code: 201, + message: "Jadwal Operasi Tidak Ditemukan", + }; + } +}); +exports.listJadwalOperasiService = listJadwalOperasiService; +const jadwalOperasiService = (data) => __awaiter(void 0, void 0, void 0, function* () { + const jadwalOperasi = yield (0, jknmobile_repository_1.getJadwalOperasi)(data); + if (jadwalOperasi.length > 0) { + let new_result_end = []; + yield Promise.all(jadwalOperasi.map((element) => __awaiter(void 0, void 0, void 0, function* () { + let jenisTindakan = []; + if (element.jenistindakan) { + let matches = element.jenistindakan.match(/\d+/g); + yield Promise.all(matches.map((value) => __awaiter(void 0, void 0, void 0, function* () { + const getNamaTindakanBedah = yield (0, jknmobile_repository_1.getTindakanBedah)(value); + jenisTindakan.push(getNamaTindakanBedah); + }))); + jenisTindakan = jenisTindakan.join(", "); + } + else { + jenisTindakan = "-"; + } + let new_result = { + kodebooking: element.kodebooking, + tanggaloperasi: element.tanggaloperasi, + jenistindakan: jenisTindakan, + kodepoli: element.kodepoli ? element.kodepoli : "", + namapoli: element.namapoli ? element.namapoli : "", + terlaksana: element.terlaksana, + }; + new_result_end.push(new_result); + }))); + return { + code: 200, + message: "OK", + data: new_result_end, + }; + } + else { + return { + code: 201, + message: "Jadwal Operasi Tidak Ditemukan", + }; + } +}); +exports.jadwalOperasiService = jadwalOperasiService; diff --git a/backend/dist/api/index.js b/backend/dist/api/index.js new file mode 100644 index 0000000..5971b75 --- /dev/null +++ b/backend/dist/api/index.js @@ -0,0 +1,38 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const body_parser_1 = __importDefault(require("body-parser")); +const auth_1 = require("../middlewares/auth"); +const login_controller_1 = require("./login/login.controller"); +const auth_controller_1 = require("./auth/auth.controller"); +//Master Routing +const users_controller_1 = require("./master/users/users.controller"); +const pegawai_controller_1 = require("./master/pegawai/pegawai.controller"); +const asuransi_controller_1 = require("./master/asuransi/asuransi.controller"); +const ruangpelayanan_controller_1 = require("./master/ruang_pelayanan/ruangpelayanan.controller"); +const pasien_controller_1 = require("./master/pasien/pasien.controller"); +const tindakan_controller_1 = require("./master/tindakan/tindakan.controller"); +//Transaction Routing +const registrasi_controller_1 = require("./transaction/registrasi/registrasi.controller"); +const transaksi_controller_1 = require("./transaction/transaksi/transaksi.controller"); +//Laporan Routing +const laporan_controller_1 = require("./laporan/laporan.controller"); +const router = (0, express_1.Router)(); +exports.router = router; +router.use(body_parser_1.default.json()); +router.use(body_parser_1.default.urlencoded({ extended: false })); +router.use("/login", auth_1.loginAuthentication, login_controller_1.router); +router.use("/auth", auth_controller_1.router); +router.use("/users", auth_1.authenticateToken, users_controller_1.router); +router.use("/pegawai", auth_1.authenticateToken, pegawai_controller_1.router); +router.use("/asuransi", auth_1.authenticateToken, asuransi_controller_1.router); +router.use("/ruangpelayanan", auth_1.authenticateToken, ruangpelayanan_controller_1.router); +router.use("/pasien", auth_1.authenticateToken, pasien_controller_1.router); +router.use("/tindakan", auth_1.authenticateToken, tindakan_controller_1.router); +router.use("/registrasi", auth_1.authenticateToken, registrasi_controller_1.router); +router.use("/transaksi", auth_1.authenticateToken, transaksi_controller_1.router); +router.use("/laporan", auth_1.authenticateToken, laporan_controller_1.router); diff --git a/backend/dist/api/laporan/laporan.controller.js b/backend/dist/api/laporan/laporan.controller.js new file mode 100644 index 0000000..1491421 --- /dev/null +++ b/backend/dist/api/laporan/laporan.controller.js @@ -0,0 +1,41 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const laporan_service_1 = require("./laporan.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/dashboard/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const getDashboard = yield (0, laporan_service_1.getDashboardService)(); + if (getDashboard) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getDashboard, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/laporan/laporan.repository.js b/backend/dist/api/laporan/laporan.repository.js new file mode 100644 index 0000000..41e04b6 --- /dev/null +++ b/backend/dist/api/laporan/laporan.repository.js @@ -0,0 +1,38 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const getDataDashboardRepository = () => __awaiter(void 0, void 0, void 0, function* () { +}); diff --git a/backend/dist/api/laporan/laporan.service.js b/backend/dist/api/laporan/laporan.service.js new file mode 100644 index 0000000..d135f69 --- /dev/null +++ b/backend/dist/api/laporan/laporan.service.js @@ -0,0 +1,63 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getDashboardService = void 0; +const dotenv = __importStar(require("dotenv")); +// import { +// getDataDashboardRepository +// } from "./laporan.repository"; +const pasien_repository_1 = require("./../master/pasien/pasien.repository"); +const pegawai_repository_1 = require("./../master/pegawai/pegawai.repository"); +const tindakan_repository_1 = require("./../master/tindakan/tindakan.repository"); +const ruangpelayanan_repository_1 = require("./../master/ruang_pelayanan/ruangpelayanan.repository"); +const asuransi_repository_1 = require("./../master/asuransi/asuransi.repository"); +const registrasi_repository_1 = require("./../transaction/registrasi/registrasi.repository"); +dotenv.config(); +const getDashboardService = () => __awaiter(void 0, void 0, void 0, function* () { + const getCountPasien = yield (0, pasien_repository_1.getCountPasienRepository)(); + const getCountPegawai = yield (0, pegawai_repository_1.getCountPegawaiRepository)(); + const getCountTindakan = yield (0, tindakan_repository_1.getCountTindakanRepository)(); + const getCountRuangpelayanan = yield (0, ruangpelayanan_repository_1.getCountRuangpelayananRepository)(); + const getCountAsuransi = yield (0, asuransi_repository_1.getCountAsuransiRepository)(); + const getCountRegistrasi = yield (0, registrasi_repository_1.getCountRegistrasiRepository)(); + return { + pasien: getCountPasien, + pegawai: getCountPegawai, + tindakan: getCountTindakan, + ruangpelayanan: getCountRuangpelayanan, + asuransi: getCountAsuransi, + registrasi: getCountRegistrasi, + }; +}); +exports.getDashboardService = getDashboardService; diff --git a/backend/dist/api/login/login.controller.js b/backend/dist/api/login/login.controller.js new file mode 100644 index 0000000..c215450 --- /dev/null +++ b/backend/dist/api/login/login.controller.js @@ -0,0 +1,108 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __rest = (this && this.__rest) || function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const login_service_1 = require("./login.service"); +const jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const secretKey = process.env.secretKey || ""; +exports.router = (0, express_1.Router)(); +exports.router.post("/", [(0, express_validator_1.body)(["username", "password"]).notEmpty()], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(400).send({ + code: 400, + msg: errors.array(), + }); + return; + } + const { username, password } = req.body; + const dataUser = yield (0, login_service_1.getLoginUser)(req.body); + let tokenJwt; + if (dataUser && dataUser.metadata.code === 200) { + tokenJwt = jsonwebtoken_1.default.sign({ + id: dataUser.response.data.user_id, + username: dataUser.response.data.user_name, + }, secretKey, { + expiresIn: "1h", + }); + res.cookie("jwt", tokenJwt, { + expires: new Date(Date.now() + 15 * 60000), + httpOnly: true, + }); + const _a = dataUser.response.data, { password } = _a, dataUserResponse = __rest(_a, ["password"]); + dataUser.response.data = dataUserResponse; + res.status(200).json({ + metadata: { + code: 200, + msg: "Login Berhasil!", + }, + response: { + data: dataUser.response.data, + token: tokenJwt, + }, + }); + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: dataUser.metadata.msg, + }, + response: {}, + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/login/login.repository.js b/backend/dist/api/login/login.repository.js new file mode 100644 index 0000000..cc4d702 --- /dev/null +++ b/backend/dist/api/login/login.repository.js @@ -0,0 +1,28 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.loginUser = void 0; +const db_1 = require("../../db"); +const loginUser = (username) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + }, + select: { + user_id: true, + username: true, + password: true, + full_name: true, + } + }); + return user; +}); +exports.loginUser = loginUser; diff --git a/backend/dist/api/login/login.service.js b/backend/dist/api/login/login.service.js new file mode 100644 index 0000000..d8733a9 --- /dev/null +++ b/backend/dist/api/login/login.service.js @@ -0,0 +1,56 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getLoginUser = void 0; +const login_repository_1 = require("./login.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +const getLoginUser = (data) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password } = data; + const user = yield (0, login_repository_1.loginUser)(username); + let response = {}; + if (user) { + const inputPassword = yield bcrypt_1.default.compare(password, user.password); + if (inputPassword === true) { + response = { + metadata: { + code: 200, + msg: "Login Berhasil!", + }, + response: { + data: user, + }, + }; + } + else { + response = { + metadata: { + code: 201, + msg: "Login Gagal! Password anda tidak sesuai!", + }, + response: {}, + }; + } + } + else { + response = { + metadata: { + code: 201, + msg: "Login Gagal! Username anda tidak sesuai!", + }, + response: {}, + }; + } + return response; +}); +exports.getLoginUser = getLoginUser; diff --git a/backend/dist/api/master/asuransi copy/asuransi.controller.js b/backend/dist/api/master/asuransi copy/asuransi.controller.js new file mode 100644 index 0000000..f3c52f4 --- /dev/null +++ b/backend/dist/api/master/asuransi copy/asuransi.controller.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const asuransi_service_1 = require("./asuransi.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/asuransi_id/:asuransi_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const getAsuransi = yield (0, asuransi_service_1.getAsuransiId)(asuransi_id); + if (getAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getAsuransi = yield (0, asuransi_service_1.getAsuransiAll)(); + if (getAsuransi && getAsuransi.length > 0) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namaasuransi").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createAsuransi = yield (0, asuransi_service_1.createAsuransiData)(req.body); + if (createAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/asuransi_id/:asuransi_id", [ + (0, express_validator_1.param)("asuransi_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const asuransi_id = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!asuransi_id) { + return Promise.reject("Asuransi ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namaasuransi").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const updateAsuransiAll = yield (0, asuransi_service_1.updateAsuransiDataAll)(req.body, asuransi_id); + if (updateAsuransiAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateAsuransiAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/asuransi_id/:asuransi_id", [ + (0, express_validator_1.param)("asuransi_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const AsuransiId = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!AsuransiId) { + return Promise.reject("Asuransi ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const deleteAsuransi = yield (0, asuransi_service_1.deleteAsuransiData)(asuransi_id); + if (deleteAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/asuransi copy/asuransi.repository.js b/backend/dist/api/master/asuransi copy/asuransi.repository.js new file mode 100644 index 0000000..f512d23 --- /dev/null +++ b/backend/dist/api/master/asuransi copy/asuransi.repository.js @@ -0,0 +1,129 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteAsuransiRepository = exports.updateAsuransiDataAllRepository = exports.getDataAsuransiAll = exports.getDataAsuransiId = exports.createAsuransiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createAsuransiRepository = (namaasuransi) => __awaiter(void 0, void 0, void 0, function* () { + const maxAsuransiId = yield (0, database_handler_1.generateMaxDb1)("ms_asuransi_id_seq", "asuransi_id"); + const createAsuransi = yield db_1.prismaDb1.msasuransi.create({ + data: { + idasuransi: maxAsuransiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namaasuransi: namaasuransi, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return createAsuransi; +}); +exports.createAsuransiRepository = createAsuransiRepository; +const getDataAsuransiId = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const Asuransi = yield db_1.prismaDb1.msasuransi.findFirst({ + where: { + idasuransi: asuransi_id, + deleted_at: null, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return Asuransi; +}); +exports.getDataAsuransiId = getDataAsuransiId; +const getDataAsuransiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const Asuransi = yield db_1.prismaDb1.msasuransi.findMany({ + where: { + deleted_by: null, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return Asuransi; +}); +exports.getDataAsuransiAll = getDataAsuransiAll; +const updateAsuransiDataAllRepository = (namaasuransi, asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateAsuransi = yield db_1.prismaDb1.msasuransi.update({ + where: { + idasuransi: asuransi_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namaasuransi: namaasuransi, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return updateAsuransi; +}); +exports.updateAsuransiDataAllRepository = updateAsuransiDataAllRepository; +const deleteAsuransiRepository = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msasuransi.update({ + where: { + idasuransi: asuransi_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return deleteUser; +}); +exports.deleteAsuransiRepository = deleteAsuransiRepository; diff --git a/backend/dist/api/master/asuransi copy/asuransi.service.js b/backend/dist/api/master/asuransi copy/asuransi.service.js new file mode 100644 index 0000000..b4dd8bd --- /dev/null +++ b/backend/dist/api/master/asuransi copy/asuransi.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteAsuransiData = exports.updateAsuransiDataAll = exports.createAsuransiData = exports.getAsuransiAll = exports.getAsuransiId = void 0; +const dotenv = __importStar(require("dotenv")); +const asuransi_repository_1 = require("./asuransi.repository"); +dotenv.config(); +const createAsuransiData = (dataAsuransi) => __awaiter(void 0, void 0, void 0, function* () { + const { namaasuransi } = dataAsuransi; + const createAsuransi = (0, asuransi_repository_1.createAsuransiRepository)(namaasuransi); + return createAsuransi; +}); +exports.createAsuransiData = createAsuransiData; +const getAsuransiId = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const getAsuransiId = yield (0, asuransi_repository_1.getDataAsuransiId)(asuransi_id); + return getAsuransiId; +}); +exports.getAsuransiId = getAsuransiId; +const getAsuransiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getAsuransi = yield (0, asuransi_repository_1.getDataAsuransiAll)(); + return getAsuransi; +}); +exports.getAsuransiAll = getAsuransiAll; +const updateAsuransiDataAll = (dataAsuransi, asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namaasuransi } = dataAsuransi; + const updateAsuransi = yield (0, asuransi_repository_1.updateAsuransiDataAllRepository)(namaasuransi, asuransi_id); + return updateAsuransi; +}); +exports.updateAsuransiDataAll = updateAsuransiDataAll; +const deleteAsuransiData = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteAsuransi = yield (0, asuransi_repository_1.deleteAsuransiRepository)(asuransi_id); + return deleteAsuransi; +}); +exports.deleteAsuransiData = deleteAsuransiData; diff --git a/backend/dist/api/master/asuransi/asuransi.controller.js b/backend/dist/api/master/asuransi/asuransi.controller.js new file mode 100644 index 0000000..f3c52f4 --- /dev/null +++ b/backend/dist/api/master/asuransi/asuransi.controller.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const asuransi_service_1 = require("./asuransi.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/asuransi_id/:asuransi_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const getAsuransi = yield (0, asuransi_service_1.getAsuransiId)(asuransi_id); + if (getAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getAsuransi = yield (0, asuransi_service_1.getAsuransiAll)(); + if (getAsuransi && getAsuransi.length > 0) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namaasuransi").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createAsuransi = yield (0, asuransi_service_1.createAsuransiData)(req.body); + if (createAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/asuransi_id/:asuransi_id", [ + (0, express_validator_1.param)("asuransi_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const asuransi_id = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!asuransi_id) { + return Promise.reject("Asuransi ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namaasuransi").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const updateAsuransiAll = yield (0, asuransi_service_1.updateAsuransiDataAll)(req.body, asuransi_id); + if (updateAsuransiAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateAsuransiAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/asuransi_id/:asuransi_id", [ + (0, express_validator_1.param)("asuransi_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const AsuransiId = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!AsuransiId) { + return Promise.reject("Asuransi ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const deleteAsuransi = yield (0, asuransi_service_1.deleteAsuransiData)(asuransi_id); + if (deleteAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/asuransi/asuransi.repository.js b/backend/dist/api/master/asuransi/asuransi.repository.js new file mode 100644 index 0000000..6e432a5 --- /dev/null +++ b/backend/dist/api/master/asuransi/asuransi.repository.js @@ -0,0 +1,138 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCountAsuransiRepository = exports.deleteAsuransiRepository = exports.updateAsuransiDataAllRepository = exports.getDataAsuransiAll = exports.getDataAsuransiId = exports.createAsuransiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createAsuransiRepository = (namaasuransi) => __awaiter(void 0, void 0, void 0, function* () { + const maxAsuransiId = yield (0, database_handler_1.generateMaxDb1)("ms_asuransi_id_seq", "asuransi_id"); + const createAsuransi = yield db_1.prismaDb1.msasuransi.create({ + data: { + idasuransi: maxAsuransiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namaasuransi: namaasuransi, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return createAsuransi; +}); +exports.createAsuransiRepository = createAsuransiRepository; +const getDataAsuransiId = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const Asuransi = yield db_1.prismaDb1.msasuransi.findFirst({ + where: { + idasuransi: asuransi_id, + deleted_at: null, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return Asuransi; +}); +exports.getDataAsuransiId = getDataAsuransiId; +const getDataAsuransiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const Asuransi = yield db_1.prismaDb1.msasuransi.findMany({ + where: { + deleted_by: null, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return Asuransi; +}); +exports.getDataAsuransiAll = getDataAsuransiAll; +const updateAsuransiDataAllRepository = (namaasuransi, asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateAsuransi = yield db_1.prismaDb1.msasuransi.update({ + where: { + idasuransi: asuransi_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namaasuransi: namaasuransi, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return updateAsuransi; +}); +exports.updateAsuransiDataAllRepository = updateAsuransiDataAllRepository; +const deleteAsuransiRepository = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msasuransi.update({ + where: { + idasuransi: asuransi_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return deleteUser; +}); +exports.deleteAsuransiRepository = deleteAsuransiRepository; +const getCountAsuransiRepository = () => __awaiter(void 0, void 0, void 0, function* () { + const asuransiCount = yield db_1.prismaDb1.msasuransi.count({ + where: { + deleted_by: null, + }, + }); + return asuransiCount; +}); +exports.getCountAsuransiRepository = getCountAsuransiRepository; diff --git a/backend/dist/api/master/asuransi/asuransi.service.js b/backend/dist/api/master/asuransi/asuransi.service.js new file mode 100644 index 0000000..b4dd8bd --- /dev/null +++ b/backend/dist/api/master/asuransi/asuransi.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteAsuransiData = exports.updateAsuransiDataAll = exports.createAsuransiData = exports.getAsuransiAll = exports.getAsuransiId = void 0; +const dotenv = __importStar(require("dotenv")); +const asuransi_repository_1 = require("./asuransi.repository"); +dotenv.config(); +const createAsuransiData = (dataAsuransi) => __awaiter(void 0, void 0, void 0, function* () { + const { namaasuransi } = dataAsuransi; + const createAsuransi = (0, asuransi_repository_1.createAsuransiRepository)(namaasuransi); + return createAsuransi; +}); +exports.createAsuransiData = createAsuransiData; +const getAsuransiId = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const getAsuransiId = yield (0, asuransi_repository_1.getDataAsuransiId)(asuransi_id); + return getAsuransiId; +}); +exports.getAsuransiId = getAsuransiId; +const getAsuransiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getAsuransi = yield (0, asuransi_repository_1.getDataAsuransiAll)(); + return getAsuransi; +}); +exports.getAsuransiAll = getAsuransiAll; +const updateAsuransiDataAll = (dataAsuransi, asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namaasuransi } = dataAsuransi; + const updateAsuransi = yield (0, asuransi_repository_1.updateAsuransiDataAllRepository)(namaasuransi, asuransi_id); + return updateAsuransi; +}); +exports.updateAsuransiDataAll = updateAsuransiDataAll; +const deleteAsuransiData = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteAsuransi = yield (0, asuransi_repository_1.deleteAsuransiRepository)(asuransi_id); + return deleteAsuransi; +}); +exports.deleteAsuransiData = deleteAsuransiData; diff --git a/backend/dist/api/master/asuransi/pegawai.controller.js b/backend/dist/api/master/asuransi/pegawai.controller.js new file mode 100644 index 0000000..fa8b17a --- /dev/null +++ b/backend/dist/api/master/asuransi/pegawai.controller.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const pegawai_service_1 = require("./pegawai.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/pegawai_id/:pegawai_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(pegawai_id); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getPegawai = yield (0, pegawai_service_1.getPegawaiAll)(); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namapegawai").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createPegawai = yield (0, pegawai_service_1.createPegawaiData)(req.body); + if (createPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/pegawai_id/:pegawai_id", [ + (0, express_validator_1.param)("pegawai_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const pegawai_id = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!pegawai_id) { + return Promise.reject("Pegawai ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namapegawai").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const updateUserAll = yield (0, pegawai_service_1.updatePegawaiDataAll)(req.body, pegawai_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/pegawai_id/:pegawai_id", [ + (0, express_validator_1.param)("pegawai_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const pegawaiId = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!pegawaiId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const deletePegawai = yield (0, pegawai_service_1.deletePegawaiData)(pegawai_id); + if (deletePegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deletePegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/asuransi/pegawai.repository.js b/backend/dist/api/master/asuransi/pegawai.repository.js new file mode 100644 index 0000000..92baaa3 --- /dev/null +++ b/backend/dist/api/master/asuransi/pegawai.repository.js @@ -0,0 +1,129 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deletePegawaiRepository = exports.updatePegawaiDataAllRepository = exports.getDataPegawaiAll = exports.getDataPegawaiId = exports.createPegawaiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createPegawaiRepository = (namapegawai) => __awaiter(void 0, void 0, void 0, function* () { + const maxPegawaiId = yield (0, database_handler_1.generateMaxDb1)("ms_pegawai_id_seq", "pegawai_id"); + const createPegawai = yield db_1.prismaDb1.mspegawai.create({ + data: { + idpegawai: maxPegawaiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return createPegawai; +}); +exports.createPegawaiRepository = createPegawaiRepository; +const getDataPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const pegawai = yield db_1.prismaDb1.mspegawai.findFirst({ + where: { + idpegawai: pegawai_id, + deleted_at: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return pegawai; +}); +exports.getDataPegawaiId = getDataPegawaiId; +const getDataPegawaiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const pegawai = yield db_1.prismaDb1.mspegawai.findMany({ + where: { + deleted_by: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return pegawai; +}); +exports.getDataPegawaiAll = getDataPegawaiAll; +const updatePegawaiDataAllRepository = (namapegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const updatePegawai = yield db_1.prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return updatePegawai; +}); +exports.updatePegawaiDataAllRepository = updatePegawaiDataAllRepository; +const deletePegawaiRepository = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return deleteUser; +}); +exports.deletePegawaiRepository = deletePegawaiRepository; diff --git a/backend/dist/api/master/asuransi/pegawai.service.js b/backend/dist/api/master/asuransi/pegawai.service.js new file mode 100644 index 0000000..e29792c --- /dev/null +++ b/backend/dist/api/master/asuransi/pegawai.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deletePegawaiData = exports.updatePegawaiDataAll = exports.createPegawaiData = exports.getPegawaiAll = exports.getPegawaiId = void 0; +const dotenv = __importStar(require("dotenv")); +const pegawai_repository_1 = require("./pegawai.repository"); +dotenv.config(); +const createPegawaiData = (dataPegawai) => __awaiter(void 0, void 0, void 0, function* () { + const { namapegawai } = dataPegawai; + const createUser = (0, pegawai_repository_1.createPegawaiRepository)(namapegawai); + return createUser; +}); +exports.createPegawaiData = createPegawaiData; +const getPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const getPegawaiId = yield (0, pegawai_repository_1.getDataPegawaiId)(pegawai_id); + return getPegawaiId; +}); +exports.getPegawaiId = getPegawaiId; +const getPegawaiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getPegawai = yield (0, pegawai_repository_1.getDataPegawaiAll)(); + return getPegawai; +}); +exports.getPegawaiAll = getPegawaiAll; +const updatePegawaiDataAll = (dataPegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namapegawai } = dataPegawai; + const updatePegawai = yield (0, pegawai_repository_1.updatePegawaiDataAllRepository)(namapegawai, pegawai_id); + return updatePegawai; +}); +exports.updatePegawaiDataAll = updatePegawaiDataAll; +const deletePegawaiData = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const deletePegawai = yield (0, pegawai_repository_1.deletePegawaiRepository)(pegawai_id); + return deletePegawai; +}); +exports.deletePegawaiData = deletePegawaiData; diff --git a/backend/dist/api/master/asuransi/users.controller.js b/backend/dist/api/master/asuransi/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/master/asuransi/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/asuransi/users.repository.js b/backend/dist/api/master/asuransi/users.repository.js new file mode 100644 index 0000000..f9ad481 --- /dev/null +++ b/backend/dist/api/master/asuransi/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/master/asuransi/users.service.js b/backend/dist/api/master/asuransi/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/master/asuransi/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/master/pasien/asuransi.controller.js b/backend/dist/api/master/pasien/asuransi.controller.js new file mode 100644 index 0000000..f3c52f4 --- /dev/null +++ b/backend/dist/api/master/pasien/asuransi.controller.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const asuransi_service_1 = require("./asuransi.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/asuransi_id/:asuransi_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const getAsuransi = yield (0, asuransi_service_1.getAsuransiId)(asuransi_id); + if (getAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getAsuransi = yield (0, asuransi_service_1.getAsuransiAll)(); + if (getAsuransi && getAsuransi.length > 0) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namaasuransi").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createAsuransi = yield (0, asuransi_service_1.createAsuransiData)(req.body); + if (createAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/asuransi_id/:asuransi_id", [ + (0, express_validator_1.param)("asuransi_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const asuransi_id = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!asuransi_id) { + return Promise.reject("Asuransi ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namaasuransi").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const updateAsuransiAll = yield (0, asuransi_service_1.updateAsuransiDataAll)(req.body, asuransi_id); + if (updateAsuransiAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateAsuransiAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/asuransi_id/:asuransi_id", [ + (0, express_validator_1.param)("asuransi_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const AsuransiId = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!AsuransiId) { + return Promise.reject("Asuransi ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const deleteAsuransi = yield (0, asuransi_service_1.deleteAsuransiData)(asuransi_id); + if (deleteAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/pasien/asuransi.repository.js b/backend/dist/api/master/pasien/asuransi.repository.js new file mode 100644 index 0000000..f512d23 --- /dev/null +++ b/backend/dist/api/master/pasien/asuransi.repository.js @@ -0,0 +1,129 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteAsuransiRepository = exports.updateAsuransiDataAllRepository = exports.getDataAsuransiAll = exports.getDataAsuransiId = exports.createAsuransiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createAsuransiRepository = (namaasuransi) => __awaiter(void 0, void 0, void 0, function* () { + const maxAsuransiId = yield (0, database_handler_1.generateMaxDb1)("ms_asuransi_id_seq", "asuransi_id"); + const createAsuransi = yield db_1.prismaDb1.msasuransi.create({ + data: { + idasuransi: maxAsuransiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namaasuransi: namaasuransi, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return createAsuransi; +}); +exports.createAsuransiRepository = createAsuransiRepository; +const getDataAsuransiId = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const Asuransi = yield db_1.prismaDb1.msasuransi.findFirst({ + where: { + idasuransi: asuransi_id, + deleted_at: null, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return Asuransi; +}); +exports.getDataAsuransiId = getDataAsuransiId; +const getDataAsuransiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const Asuransi = yield db_1.prismaDb1.msasuransi.findMany({ + where: { + deleted_by: null, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return Asuransi; +}); +exports.getDataAsuransiAll = getDataAsuransiAll; +const updateAsuransiDataAllRepository = (namaasuransi, asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateAsuransi = yield db_1.prismaDb1.msasuransi.update({ + where: { + idasuransi: asuransi_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namaasuransi: namaasuransi, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return updateAsuransi; +}); +exports.updateAsuransiDataAllRepository = updateAsuransiDataAllRepository; +const deleteAsuransiRepository = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msasuransi.update({ + where: { + idasuransi: asuransi_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return deleteUser; +}); +exports.deleteAsuransiRepository = deleteAsuransiRepository; diff --git a/backend/dist/api/master/pasien/asuransi.service.js b/backend/dist/api/master/pasien/asuransi.service.js new file mode 100644 index 0000000..b4dd8bd --- /dev/null +++ b/backend/dist/api/master/pasien/asuransi.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteAsuransiData = exports.updateAsuransiDataAll = exports.createAsuransiData = exports.getAsuransiAll = exports.getAsuransiId = void 0; +const dotenv = __importStar(require("dotenv")); +const asuransi_repository_1 = require("./asuransi.repository"); +dotenv.config(); +const createAsuransiData = (dataAsuransi) => __awaiter(void 0, void 0, void 0, function* () { + const { namaasuransi } = dataAsuransi; + const createAsuransi = (0, asuransi_repository_1.createAsuransiRepository)(namaasuransi); + return createAsuransi; +}); +exports.createAsuransiData = createAsuransiData; +const getAsuransiId = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const getAsuransiId = yield (0, asuransi_repository_1.getDataAsuransiId)(asuransi_id); + return getAsuransiId; +}); +exports.getAsuransiId = getAsuransiId; +const getAsuransiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getAsuransi = yield (0, asuransi_repository_1.getDataAsuransiAll)(); + return getAsuransi; +}); +exports.getAsuransiAll = getAsuransiAll; +const updateAsuransiDataAll = (dataAsuransi, asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namaasuransi } = dataAsuransi; + const updateAsuransi = yield (0, asuransi_repository_1.updateAsuransiDataAllRepository)(namaasuransi, asuransi_id); + return updateAsuransi; +}); +exports.updateAsuransiDataAll = updateAsuransiDataAll; +const deleteAsuransiData = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteAsuransi = yield (0, asuransi_repository_1.deleteAsuransiRepository)(asuransi_id); + return deleteAsuransi; +}); +exports.deleteAsuransiData = deleteAsuransiData; diff --git a/backend/dist/api/master/pasien/pasien.controller.js b/backend/dist/api/master/pasien/pasien.controller.js new file mode 100644 index 0000000..4015f1d --- /dev/null +++ b/backend/dist/api/master/pasien/pasien.controller.js @@ -0,0 +1,204 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const pasien_service_1 = require("./pasien.service"); +exports.router = (0, express_1.Router)(); +exports.router.post("/", [ + (0, express_validator_1.body)("namapasien").notEmpty(), + (0, express_validator_1.body)("tanggallahir").notEmpty().isISO8601(), + (0, express_validator_1.body)("jeniskelamin").notEmpty().isIn(["P", "L"]), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createPasien = yield (0, pasien_service_1.createPasienData)(req.body); + if (createPasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createPasien, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/pasien_id/:pasien_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const pasien_id = parseInt(req.params.pasien_id, 10); + const getPasien = yield (0, pasien_service_1.getDataPasienId)(pasien_id); + if (getPasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPasien, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/nomrpasien/:nomrpasien", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const getPasien = yield (0, pasien_service_1.getDataPasienMr)(req.params.nomrpasien); + if (getPasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPasien, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/namapasien/:namapasien", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const getPasien = yield (0, pasien_service_1.getNamaPasien)(req.params.namapasien); + if (getPasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPasien, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const getPasien = yield (0, pasien_service_1.getPasienAll)(); + if (getPasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPasien, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/idpasien/:idpasien", [ + (0, express_validator_1.body)("namapasien").notEmpty(), + (0, express_validator_1.body)("tanggallahir").notEmpty().isISO8601(), + (0, express_validator_1.body)("jeniskelamin").notEmpty().isIn(["P", "L"]), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const idpasien = parseInt(req.params.idpasien, 10); + const updatePasien = yield (0, pasien_service_1.updatePasienData)(req.body, idpasien); + if (updatePasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updatePasien, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/pasien/pasien.repository.js b/backend/dist/api/master/pasien/pasien.repository.js new file mode 100644 index 0000000..cea7a5a --- /dev/null +++ b/backend/dist/api/master/pasien/pasien.repository.js @@ -0,0 +1,176 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCountPasienRepository = exports.getDataPasienIdRepository = exports.updatePasienRepository = exports.getPasienAllRepository = exports.getNamaPasienRepository = exports.getDataPasienRepository = exports.createPasienRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createPasienRepository = (namapasien, tanggallahir, jeniskelamin) => __awaiter(void 0, void 0, void 0, function* () { + const maxPasienId = yield (0, database_handler_1.generateMaxDb1)("ms_pasien_id_seq", "pasien_id"); + const nomrpasien = maxPasienId.toString().padStart(8, "0"); + const createPasien = yield db_1.prismaDb1.mspasien.create({ + data: { + idpasien: maxPasienId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + mrpasien: nomrpasien, + namapasien: namapasien, + tanggallahir: new Date(tanggallahir), + jeniskelamin: jeniskelamin, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + return createPasien; +}); +exports.createPasienRepository = createPasienRepository; +const getDataPasienRepository = (nomrpasien) => __awaiter(void 0, void 0, void 0, function* () { + const getPasien = yield db_1.prismaDb1.mspasien.findFirst({ + where: { + mrpasien: nomrpasien, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + return getPasien; +}); +exports.getDataPasienRepository = getDataPasienRepository; +const getNamaPasienRepository = (namapasien) => __awaiter(void 0, void 0, void 0, function* () { + const getPasien = yield db_1.prismaDb1.mspasien.findMany({ + where: { + namapasien: { + contains: namapasien, + mode: "insensitive", + }, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + return getPasien; +}); +exports.getNamaPasienRepository = getNamaPasienRepository; +const getDataPasienIdRepository = (idpasien) => __awaiter(void 0, void 0, void 0, function* () { + const getPasien = yield db_1.prismaDb1.mspasien.findFirst({ + where: { + idpasien: idpasien, + deleted_by: null, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + return getPasien; +}); +exports.getDataPasienIdRepository = getDataPasienIdRepository; +const getPasienAllRepository = () => __awaiter(void 0, void 0, void 0, function* () { + const getPasien = yield db_1.prismaDb1.mspasien.findMany({ + where: { + deleted_by: null, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + return getPasien; +}); +exports.getPasienAllRepository = getPasienAllRepository; +const updatePasienRepository = (namapasien, tanggallahir, jeniskelamin, idpasien) => __awaiter(void 0, void 0, void 0, function* () { + const updatePasien = yield db_1.prismaDb1.mspasien.update({ + where: { + idpasien: idpasien, + }, + data: { + namapasien: namapasien, + tanggallahir: new Date(tanggallahir), + jeniskelamin: jeniskelamin, + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + return updatePasien; +}); +exports.updatePasienRepository = updatePasienRepository; +const getCountPasienRepository = () => __awaiter(void 0, void 0, void 0, function* () { + const pasienCount = yield db_1.prismaDb1.mspasien.count({ + where: { + deleted_by: null, + }, + }); + return pasienCount; +}); +exports.getCountPasienRepository = getCountPasienRepository; diff --git a/backend/dist/api/master/pasien/pasien.service.js b/backend/dist/api/master/pasien/pasien.service.js new file mode 100644 index 0000000..2d4afb5 --- /dev/null +++ b/backend/dist/api/master/pasien/pasien.service.js @@ -0,0 +1,84 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getDataPasienId = exports.updatePasienData = exports.getPasienAll = exports.getNamaPasien = exports.getDataPasienMr = exports.createPasienData = void 0; +const dotenv = __importStar(require("dotenv")); +const pasien_repository_1 = require("./pasien.repository"); +dotenv.config(); +const createPasienData = (dataPasien) => __awaiter(void 0, void 0, void 0, function* () { + const { namapasien, tanggallahir, jeniskelamin } = dataPasien; + let jenKel; + if (jeniskelamin === "L") { + jenKel = "Laki-Laki"; + } + else { + jenKel = "Perempuan"; + } + const createPasien = (0, pasien_repository_1.createPasienRepository)(namapasien, tanggallahir, jenKel); + return createPasien; +}); +exports.createPasienData = createPasienData; +const getDataPasienMr = (nomrpasien) => __awaiter(void 0, void 0, void 0, function* () { + const getPasien = yield (0, pasien_repository_1.getDataPasienRepository)(nomrpasien); + return getPasien; +}); +exports.getDataPasienMr = getDataPasienMr; +const getDataPasienId = (idpasien) => __awaiter(void 0, void 0, void 0, function* () { + const getPasien = yield (0, pasien_repository_1.getDataPasienIdRepository)(idpasien); + return getPasien; +}); +exports.getDataPasienId = getDataPasienId; +const getNamaPasien = (namapasien) => __awaiter(void 0, void 0, void 0, function* () { + const getPasien = yield (0, pasien_repository_1.getNamaPasienRepository)(namapasien); + return getPasien; +}); +exports.getNamaPasien = getNamaPasien; +const getPasienAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getPasien = yield (0, pasien_repository_1.getPasienAllRepository)(); + return getPasien; +}); +exports.getPasienAll = getPasienAll; +const updatePasienData = (dataPasien, idpasien) => __awaiter(void 0, void 0, void 0, function* () { + const { namapasien, tanggallahir, jeniskelamin } = dataPasien; + let jenKel; + if (jeniskelamin === "L") { + jenKel = "Laki-Laki"; + } + else { + jenKel = "Perempuan"; + } + const updatePasien = (0, pasien_repository_1.updatePasienRepository)(namapasien, tanggallahir, jenKel, idpasien); + return updatePasien; +}); +exports.updatePasienData = updatePasienData; diff --git a/backend/dist/api/master/pegawai copy 2/pegawai.controller.js b/backend/dist/api/master/pegawai copy 2/pegawai.controller.js new file mode 100644 index 0000000..fa8b17a --- /dev/null +++ b/backend/dist/api/master/pegawai copy 2/pegawai.controller.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const pegawai_service_1 = require("./pegawai.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/pegawai_id/:pegawai_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(pegawai_id); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getPegawai = yield (0, pegawai_service_1.getPegawaiAll)(); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namapegawai").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createPegawai = yield (0, pegawai_service_1.createPegawaiData)(req.body); + if (createPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/pegawai_id/:pegawai_id", [ + (0, express_validator_1.param)("pegawai_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const pegawai_id = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!pegawai_id) { + return Promise.reject("Pegawai ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namapegawai").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const updateUserAll = yield (0, pegawai_service_1.updatePegawaiDataAll)(req.body, pegawai_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/pegawai_id/:pegawai_id", [ + (0, express_validator_1.param)("pegawai_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const pegawaiId = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!pegawaiId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const deletePegawai = yield (0, pegawai_service_1.deletePegawaiData)(pegawai_id); + if (deletePegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deletePegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/pegawai copy 2/pegawai.repository.js b/backend/dist/api/master/pegawai copy 2/pegawai.repository.js new file mode 100644 index 0000000..92baaa3 --- /dev/null +++ b/backend/dist/api/master/pegawai copy 2/pegawai.repository.js @@ -0,0 +1,129 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deletePegawaiRepository = exports.updatePegawaiDataAllRepository = exports.getDataPegawaiAll = exports.getDataPegawaiId = exports.createPegawaiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createPegawaiRepository = (namapegawai) => __awaiter(void 0, void 0, void 0, function* () { + const maxPegawaiId = yield (0, database_handler_1.generateMaxDb1)("ms_pegawai_id_seq", "pegawai_id"); + const createPegawai = yield db_1.prismaDb1.mspegawai.create({ + data: { + idpegawai: maxPegawaiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return createPegawai; +}); +exports.createPegawaiRepository = createPegawaiRepository; +const getDataPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const pegawai = yield db_1.prismaDb1.mspegawai.findFirst({ + where: { + idpegawai: pegawai_id, + deleted_at: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return pegawai; +}); +exports.getDataPegawaiId = getDataPegawaiId; +const getDataPegawaiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const pegawai = yield db_1.prismaDb1.mspegawai.findMany({ + where: { + deleted_by: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return pegawai; +}); +exports.getDataPegawaiAll = getDataPegawaiAll; +const updatePegawaiDataAllRepository = (namapegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const updatePegawai = yield db_1.prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return updatePegawai; +}); +exports.updatePegawaiDataAllRepository = updatePegawaiDataAllRepository; +const deletePegawaiRepository = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return deleteUser; +}); +exports.deletePegawaiRepository = deletePegawaiRepository; diff --git a/backend/dist/api/master/pegawai copy 2/pegawai.service.js b/backend/dist/api/master/pegawai copy 2/pegawai.service.js new file mode 100644 index 0000000..e29792c --- /dev/null +++ b/backend/dist/api/master/pegawai copy 2/pegawai.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deletePegawaiData = exports.updatePegawaiDataAll = exports.createPegawaiData = exports.getPegawaiAll = exports.getPegawaiId = void 0; +const dotenv = __importStar(require("dotenv")); +const pegawai_repository_1 = require("./pegawai.repository"); +dotenv.config(); +const createPegawaiData = (dataPegawai) => __awaiter(void 0, void 0, void 0, function* () { + const { namapegawai } = dataPegawai; + const createUser = (0, pegawai_repository_1.createPegawaiRepository)(namapegawai); + return createUser; +}); +exports.createPegawaiData = createPegawaiData; +const getPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const getPegawaiId = yield (0, pegawai_repository_1.getDataPegawaiId)(pegawai_id); + return getPegawaiId; +}); +exports.getPegawaiId = getPegawaiId; +const getPegawaiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getPegawai = yield (0, pegawai_repository_1.getDataPegawaiAll)(); + return getPegawai; +}); +exports.getPegawaiAll = getPegawaiAll; +const updatePegawaiDataAll = (dataPegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namapegawai } = dataPegawai; + const updatePegawai = yield (0, pegawai_repository_1.updatePegawaiDataAllRepository)(namapegawai, pegawai_id); + return updatePegawai; +}); +exports.updatePegawaiDataAll = updatePegawaiDataAll; +const deletePegawaiData = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const deletePegawai = yield (0, pegawai_repository_1.deletePegawaiRepository)(pegawai_id); + return deletePegawai; +}); +exports.deletePegawaiData = deletePegawaiData; diff --git a/backend/dist/api/master/pegawai copy/pegawai.controller.js b/backend/dist/api/master/pegawai copy/pegawai.controller.js new file mode 100644 index 0000000..fa8b17a --- /dev/null +++ b/backend/dist/api/master/pegawai copy/pegawai.controller.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const pegawai_service_1 = require("./pegawai.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/pegawai_id/:pegawai_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(pegawai_id); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getPegawai = yield (0, pegawai_service_1.getPegawaiAll)(); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namapegawai").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createPegawai = yield (0, pegawai_service_1.createPegawaiData)(req.body); + if (createPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/pegawai_id/:pegawai_id", [ + (0, express_validator_1.param)("pegawai_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const pegawai_id = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!pegawai_id) { + return Promise.reject("Pegawai ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namapegawai").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const updateUserAll = yield (0, pegawai_service_1.updatePegawaiDataAll)(req.body, pegawai_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/pegawai_id/:pegawai_id", [ + (0, express_validator_1.param)("pegawai_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const pegawaiId = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!pegawaiId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const deletePegawai = yield (0, pegawai_service_1.deletePegawaiData)(pegawai_id); + if (deletePegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deletePegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/pegawai copy/pegawai.repository.js b/backend/dist/api/master/pegawai copy/pegawai.repository.js new file mode 100644 index 0000000..92baaa3 --- /dev/null +++ b/backend/dist/api/master/pegawai copy/pegawai.repository.js @@ -0,0 +1,129 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deletePegawaiRepository = exports.updatePegawaiDataAllRepository = exports.getDataPegawaiAll = exports.getDataPegawaiId = exports.createPegawaiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createPegawaiRepository = (namapegawai) => __awaiter(void 0, void 0, void 0, function* () { + const maxPegawaiId = yield (0, database_handler_1.generateMaxDb1)("ms_pegawai_id_seq", "pegawai_id"); + const createPegawai = yield db_1.prismaDb1.mspegawai.create({ + data: { + idpegawai: maxPegawaiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return createPegawai; +}); +exports.createPegawaiRepository = createPegawaiRepository; +const getDataPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const pegawai = yield db_1.prismaDb1.mspegawai.findFirst({ + where: { + idpegawai: pegawai_id, + deleted_at: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return pegawai; +}); +exports.getDataPegawaiId = getDataPegawaiId; +const getDataPegawaiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const pegawai = yield db_1.prismaDb1.mspegawai.findMany({ + where: { + deleted_by: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return pegawai; +}); +exports.getDataPegawaiAll = getDataPegawaiAll; +const updatePegawaiDataAllRepository = (namapegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const updatePegawai = yield db_1.prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return updatePegawai; +}); +exports.updatePegawaiDataAllRepository = updatePegawaiDataAllRepository; +const deletePegawaiRepository = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return deleteUser; +}); +exports.deletePegawaiRepository = deletePegawaiRepository; diff --git a/backend/dist/api/master/pegawai copy/pegawai.service.js b/backend/dist/api/master/pegawai copy/pegawai.service.js new file mode 100644 index 0000000..e29792c --- /dev/null +++ b/backend/dist/api/master/pegawai copy/pegawai.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deletePegawaiData = exports.updatePegawaiDataAll = exports.createPegawaiData = exports.getPegawaiAll = exports.getPegawaiId = void 0; +const dotenv = __importStar(require("dotenv")); +const pegawai_repository_1 = require("./pegawai.repository"); +dotenv.config(); +const createPegawaiData = (dataPegawai) => __awaiter(void 0, void 0, void 0, function* () { + const { namapegawai } = dataPegawai; + const createUser = (0, pegawai_repository_1.createPegawaiRepository)(namapegawai); + return createUser; +}); +exports.createPegawaiData = createPegawaiData; +const getPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const getPegawaiId = yield (0, pegawai_repository_1.getDataPegawaiId)(pegawai_id); + return getPegawaiId; +}); +exports.getPegawaiId = getPegawaiId; +const getPegawaiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getPegawai = yield (0, pegawai_repository_1.getDataPegawaiAll)(); + return getPegawai; +}); +exports.getPegawaiAll = getPegawaiAll; +const updatePegawaiDataAll = (dataPegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namapegawai } = dataPegawai; + const updatePegawai = yield (0, pegawai_repository_1.updatePegawaiDataAllRepository)(namapegawai, pegawai_id); + return updatePegawai; +}); +exports.updatePegawaiDataAll = updatePegawaiDataAll; +const deletePegawaiData = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const deletePegawai = yield (0, pegawai_repository_1.deletePegawaiRepository)(pegawai_id); + return deletePegawai; +}); +exports.deletePegawaiData = deletePegawaiData; diff --git a/backend/dist/api/master/pegawai/pegawai.controller.js b/backend/dist/api/master/pegawai/pegawai.controller.js new file mode 100644 index 0000000..fa8b17a --- /dev/null +++ b/backend/dist/api/master/pegawai/pegawai.controller.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const pegawai_service_1 = require("./pegawai.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/pegawai_id/:pegawai_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(pegawai_id); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getPegawai = yield (0, pegawai_service_1.getPegawaiAll)(); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namapegawai").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createPegawai = yield (0, pegawai_service_1.createPegawaiData)(req.body); + if (createPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/pegawai_id/:pegawai_id", [ + (0, express_validator_1.param)("pegawai_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const pegawai_id = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!pegawai_id) { + return Promise.reject("Pegawai ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namapegawai").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const updateUserAll = yield (0, pegawai_service_1.updatePegawaiDataAll)(req.body, pegawai_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/pegawai_id/:pegawai_id", [ + (0, express_validator_1.param)("pegawai_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const pegawaiId = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!pegawaiId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const deletePegawai = yield (0, pegawai_service_1.deletePegawaiData)(pegawai_id); + if (deletePegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deletePegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/pegawai/pegawai.repository.js b/backend/dist/api/master/pegawai/pegawai.repository.js new file mode 100644 index 0000000..5e6374c --- /dev/null +++ b/backend/dist/api/master/pegawai/pegawai.repository.js @@ -0,0 +1,138 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCountPegawaiRepository = exports.deletePegawaiRepository = exports.updatePegawaiDataAllRepository = exports.getDataPegawaiAll = exports.getDataPegawaiId = exports.createPegawaiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createPegawaiRepository = (namapegawai) => __awaiter(void 0, void 0, void 0, function* () { + const maxPegawaiId = yield (0, database_handler_1.generateMaxDb1)("ms_pegawai_id_seq", "pegawai_id"); + const createPegawai = yield db_1.prismaDb1.mspegawai.create({ + data: { + idpegawai: maxPegawaiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return createPegawai; +}); +exports.createPegawaiRepository = createPegawaiRepository; +const getDataPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const pegawai = yield db_1.prismaDb1.mspegawai.findFirst({ + where: { + idpegawai: pegawai_id, + deleted_at: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return pegawai; +}); +exports.getDataPegawaiId = getDataPegawaiId; +const getDataPegawaiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const pegawai = yield db_1.prismaDb1.mspegawai.findMany({ + where: { + deleted_by: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return pegawai; +}); +exports.getDataPegawaiAll = getDataPegawaiAll; +const updatePegawaiDataAllRepository = (namapegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const updatePegawai = yield db_1.prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return updatePegawai; +}); +exports.updatePegawaiDataAllRepository = updatePegawaiDataAllRepository; +const deletePegawaiRepository = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return deleteUser; +}); +exports.deletePegawaiRepository = deletePegawaiRepository; +const getCountPegawaiRepository = () => __awaiter(void 0, void 0, void 0, function* () { + const pegawaiCount = yield db_1.prismaDb1.mspegawai.count({ + where: { + deleted_by: null, + }, + }); + return pegawaiCount; +}); +exports.getCountPegawaiRepository = getCountPegawaiRepository; diff --git a/backend/dist/api/master/pegawai/pegawai.service.js b/backend/dist/api/master/pegawai/pegawai.service.js new file mode 100644 index 0000000..e29792c --- /dev/null +++ b/backend/dist/api/master/pegawai/pegawai.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deletePegawaiData = exports.updatePegawaiDataAll = exports.createPegawaiData = exports.getPegawaiAll = exports.getPegawaiId = void 0; +const dotenv = __importStar(require("dotenv")); +const pegawai_repository_1 = require("./pegawai.repository"); +dotenv.config(); +const createPegawaiData = (dataPegawai) => __awaiter(void 0, void 0, void 0, function* () { + const { namapegawai } = dataPegawai; + const createUser = (0, pegawai_repository_1.createPegawaiRepository)(namapegawai); + return createUser; +}); +exports.createPegawaiData = createPegawaiData; +const getPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const getPegawaiId = yield (0, pegawai_repository_1.getDataPegawaiId)(pegawai_id); + return getPegawaiId; +}); +exports.getPegawaiId = getPegawaiId; +const getPegawaiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getPegawai = yield (0, pegawai_repository_1.getDataPegawaiAll)(); + return getPegawai; +}); +exports.getPegawaiAll = getPegawaiAll; +const updatePegawaiDataAll = (dataPegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namapegawai } = dataPegawai; + const updatePegawai = yield (0, pegawai_repository_1.updatePegawaiDataAllRepository)(namapegawai, pegawai_id); + return updatePegawai; +}); +exports.updatePegawaiDataAll = updatePegawaiDataAll; +const deletePegawaiData = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const deletePegawai = yield (0, pegawai_repository_1.deletePegawaiRepository)(pegawai_id); + return deletePegawai; +}); +exports.deletePegawaiData = deletePegawaiData; diff --git a/backend/dist/api/master/pegawai/users.controller.js b/backend/dist/api/master/pegawai/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/master/pegawai/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/pegawai/users.repository.js b/backend/dist/api/master/pegawai/users.repository.js new file mode 100644 index 0000000..f9ad481 --- /dev/null +++ b/backend/dist/api/master/pegawai/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/master/pegawai/users.service.js b/backend/dist/api/master/pegawai/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/master/pegawai/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/master/ruang_pelayanan/pegawai.controller.js b/backend/dist/api/master/ruang_pelayanan/pegawai.controller.js new file mode 100644 index 0000000..fa8b17a --- /dev/null +++ b/backend/dist/api/master/ruang_pelayanan/pegawai.controller.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const pegawai_service_1 = require("./pegawai.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/pegawai_id/:pegawai_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(pegawai_id); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getPegawai = yield (0, pegawai_service_1.getPegawaiAll)(); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namapegawai").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createPegawai = yield (0, pegawai_service_1.createPegawaiData)(req.body); + if (createPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createPegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/pegawai_id/:pegawai_id", [ + (0, express_validator_1.param)("pegawai_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const pegawai_id = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!pegawai_id) { + return Promise.reject("Pegawai ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namapegawai").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const updateUserAll = yield (0, pegawai_service_1.updatePegawaiDataAll)(req.body, pegawai_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/pegawai_id/:pegawai_id", [ + (0, express_validator_1.param)("pegawai_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const pegawaiId = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!pegawaiId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const deletePegawai = yield (0, pegawai_service_1.deletePegawaiData)(pegawai_id); + if (deletePegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deletePegawai, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/ruang_pelayanan/pegawai.repository.js b/backend/dist/api/master/ruang_pelayanan/pegawai.repository.js new file mode 100644 index 0000000..92baaa3 --- /dev/null +++ b/backend/dist/api/master/ruang_pelayanan/pegawai.repository.js @@ -0,0 +1,129 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deletePegawaiRepository = exports.updatePegawaiDataAllRepository = exports.getDataPegawaiAll = exports.getDataPegawaiId = exports.createPegawaiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createPegawaiRepository = (namapegawai) => __awaiter(void 0, void 0, void 0, function* () { + const maxPegawaiId = yield (0, database_handler_1.generateMaxDb1)("ms_pegawai_id_seq", "pegawai_id"); + const createPegawai = yield db_1.prismaDb1.mspegawai.create({ + data: { + idpegawai: maxPegawaiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return createPegawai; +}); +exports.createPegawaiRepository = createPegawaiRepository; +const getDataPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const pegawai = yield db_1.prismaDb1.mspegawai.findFirst({ + where: { + idpegawai: pegawai_id, + deleted_at: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return pegawai; +}); +exports.getDataPegawaiId = getDataPegawaiId; +const getDataPegawaiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const pegawai = yield db_1.prismaDb1.mspegawai.findMany({ + where: { + deleted_by: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return pegawai; +}); +exports.getDataPegawaiAll = getDataPegawaiAll; +const updatePegawaiDataAllRepository = (namapegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const updatePegawai = yield db_1.prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return updatePegawai; +}); +exports.updatePegawaiDataAllRepository = updatePegawaiDataAllRepository; +const deletePegawaiRepository = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + return deleteUser; +}); +exports.deletePegawaiRepository = deletePegawaiRepository; diff --git a/backend/dist/api/master/ruang_pelayanan/pegawai.service.js b/backend/dist/api/master/ruang_pelayanan/pegawai.service.js new file mode 100644 index 0000000..e29792c --- /dev/null +++ b/backend/dist/api/master/ruang_pelayanan/pegawai.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deletePegawaiData = exports.updatePegawaiDataAll = exports.createPegawaiData = exports.getPegawaiAll = exports.getPegawaiId = void 0; +const dotenv = __importStar(require("dotenv")); +const pegawai_repository_1 = require("./pegawai.repository"); +dotenv.config(); +const createPegawaiData = (dataPegawai) => __awaiter(void 0, void 0, void 0, function* () { + const { namapegawai } = dataPegawai; + const createUser = (0, pegawai_repository_1.createPegawaiRepository)(namapegawai); + return createUser; +}); +exports.createPegawaiData = createPegawaiData; +const getPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const getPegawaiId = yield (0, pegawai_repository_1.getDataPegawaiId)(pegawai_id); + return getPegawaiId; +}); +exports.getPegawaiId = getPegawaiId; +const getPegawaiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getPegawai = yield (0, pegawai_repository_1.getDataPegawaiAll)(); + return getPegawai; +}); +exports.getPegawaiAll = getPegawaiAll; +const updatePegawaiDataAll = (dataPegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namapegawai } = dataPegawai; + const updatePegawai = yield (0, pegawai_repository_1.updatePegawaiDataAllRepository)(namapegawai, pegawai_id); + return updatePegawai; +}); +exports.updatePegawaiDataAll = updatePegawaiDataAll; +const deletePegawaiData = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { + const deletePegawai = yield (0, pegawai_repository_1.deletePegawaiRepository)(pegawai_id); + return deletePegawai; +}); +exports.deletePegawaiData = deletePegawaiData; diff --git a/backend/dist/api/master/ruang_pelayanan/ruangpelayanan.controller.js b/backend/dist/api/master/ruang_pelayanan/ruangpelayanan.controller.js new file mode 100644 index 0000000..60f5227 --- /dev/null +++ b/backend/dist/api/master/ruang_pelayanan/ruangpelayanan.controller.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const ruangpelayanan_service_1 = require("./ruangpelayanan.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/ruangpelayanan_id/:ruangpelayanan_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const ruangpelayanan_id = parseInt(req.params.ruangpelayanan_id, 10); + const getRuangpelayanan = yield (0, ruangpelayanan_service_1.getRuangpelayananId)(ruangpelayanan_id); + if (getRuangpelayanan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getRuangpelayanan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getRuangpelayanan = yield (0, ruangpelayanan_service_1.getRuangpelayananAll)(); + if (getRuangpelayanan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getRuangpelayanan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namaruangpelayanan").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createRuangpelayanan = yield (0, ruangpelayanan_service_1.createRuangpelayananData)(req.body); + if (createRuangpelayanan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createRuangpelayanan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/ruangpelayanan_id/:ruangpelayanan_id", [ + (0, express_validator_1.param)("ruangpelayanan_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const ruangpelayanan_id = yield (0, ruangpelayanan_service_1.getRuangpelayananId)(value); + if (!ruangpelayanan_id) { + return Promise.reject("Ruang Pelayanan tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namaruangpelayanan").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const ruangpelayanan_id = parseInt(req.params.ruangpelayanan_id, 10); + const updateRuangpelayananAll = yield (0, ruangpelayanan_service_1.updateRuangpelayananDataAll)(req.body, ruangpelayanan_id); + if (updateRuangpelayananAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateRuangpelayananAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/ruangpelayanan_id/:ruangpelayanan_id", [ + (0, express_validator_1.param)("ruangpelayanan_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const RuangpelayananId = yield (0, ruangpelayanan_service_1.getRuangpelayananId)(value); + if (!RuangpelayananId) { + return Promise.reject("Ruang Pelayanan tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const ruangpelayanan_id = parseInt(req.params.ruangpelayanan_id, 10); + const deleteRuangpelayanan = yield (0, ruangpelayanan_service_1.deleteRuangpelayananData)(ruangpelayanan_id); + if (deleteRuangpelayanan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteRuangpelayanan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/ruang_pelayanan/ruangpelayanan.repository.js b/backend/dist/api/master/ruang_pelayanan/ruangpelayanan.repository.js new file mode 100644 index 0000000..7c4022f --- /dev/null +++ b/backend/dist/api/master/ruang_pelayanan/ruangpelayanan.repository.js @@ -0,0 +1,138 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCountRuangpelayananRepository = exports.deleteRuangpelayananRepository = exports.updateRuangpelayananDataAllRepository = exports.getDataRuangpelayananAll = exports.getDataRuangpelayananId = exports.createRuangpelayananRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createRuangpelayananRepository = (namaruangpelayanan) => __awaiter(void 0, void 0, void 0, function* () { + const maxRuangpelayananId = yield (0, database_handler_1.generateMaxDb1)("ms_ruang_pelayanan_id_seq", "ruangpelayanan_id"); + const createRuangpelayanan = yield db_1.prismaDb1.msruangpelayanan.create({ + data: { + idruangpelayanan: maxRuangpelayananId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namaruangpelayanan: namaruangpelayanan, + }, + select: { + idruangpelayanan: true, + created_at: true, + created_by: true, + namaruangpelayanan: true, + }, + }); + return createRuangpelayanan; +}); +exports.createRuangpelayananRepository = createRuangpelayananRepository; +const getDataRuangpelayananId = (Ruangpelayanan_id) => __awaiter(void 0, void 0, void 0, function* () { + const Ruangpelayanan = yield db_1.prismaDb1.msruangpelayanan.findFirst({ + where: { + idruangpelayanan: Ruangpelayanan_id, + deleted_at: null, + }, + select: { + idruangpelayanan: true, + created_at: true, + created_by: true, + namaruangpelayanan: true, + }, + }); + return Ruangpelayanan; +}); +exports.getDataRuangpelayananId = getDataRuangpelayananId; +const getDataRuangpelayananAll = () => __awaiter(void 0, void 0, void 0, function* () { + const Ruangpelayanan = yield db_1.prismaDb1.msruangpelayanan.findMany({ + where: { + deleted_by: null, + }, + select: { + idruangpelayanan: true, + created_at: true, + created_by: true, + namaruangpelayanan: true, + }, + }); + return Ruangpelayanan; +}); +exports.getDataRuangpelayananAll = getDataRuangpelayananAll; +const updateRuangpelayananDataAllRepository = (namaruangpelayanan, Ruangpelayanan_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateRuangpelayanan = yield db_1.prismaDb1.msruangpelayanan.update({ + where: { + idruangpelayanan: Ruangpelayanan_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namaruangpelayanan: namaruangpelayanan, + }, + select: { + idruangpelayanan: true, + created_at: true, + created_by: true, + namaruangpelayanan: true, + }, + }); + return updateRuangpelayanan; +}); +exports.updateRuangpelayananDataAllRepository = updateRuangpelayananDataAllRepository; +const deleteRuangpelayananRepository = (Ruangpelayanan_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msruangpelayanan.update({ + where: { + idruangpelayanan: Ruangpelayanan_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idruangpelayanan: true, + created_at: true, + created_by: true, + namaruangpelayanan: true, + }, + }); + return deleteUser; +}); +exports.deleteRuangpelayananRepository = deleteRuangpelayananRepository; +const getCountRuangpelayananRepository = () => __awaiter(void 0, void 0, void 0, function* () { + const ruangpelayananCount = yield db_1.prismaDb1.msruangpelayanan.count({ + where: { + deleted_by: null, + }, + }); + return ruangpelayananCount; +}); +exports.getCountRuangpelayananRepository = getCountRuangpelayananRepository; diff --git a/backend/dist/api/master/ruang_pelayanan/ruangpelayanan.service.js b/backend/dist/api/master/ruang_pelayanan/ruangpelayanan.service.js new file mode 100644 index 0000000..236ff8c --- /dev/null +++ b/backend/dist/api/master/ruang_pelayanan/ruangpelayanan.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteRuangpelayananData = exports.updateRuangpelayananDataAll = exports.createRuangpelayananData = exports.getRuangpelayananAll = exports.getRuangpelayananId = void 0; +const dotenv = __importStar(require("dotenv")); +const ruangpelayanan_repository_1 = require("./ruangpelayanan.repository"); +dotenv.config(); +const createRuangpelayananData = (dataRuangpelayanan) => __awaiter(void 0, void 0, void 0, function* () { + const { namaruangpelayanan } = dataRuangpelayanan; + const createRuangpelayanan = (0, ruangpelayanan_repository_1.createRuangpelayananRepository)(namaruangpelayanan); + return createRuangpelayanan; +}); +exports.createRuangpelayananData = createRuangpelayananData; +const getRuangpelayananId = (ruangpelayanan_id) => __awaiter(void 0, void 0, void 0, function* () { + const getRuangpelayananId = yield (0, ruangpelayanan_repository_1.getDataRuangpelayananId)(ruangpelayanan_id); + return getRuangpelayananId; +}); +exports.getRuangpelayananId = getRuangpelayananId; +const getRuangpelayananAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getRuangpelayanan = yield (0, ruangpelayanan_repository_1.getDataRuangpelayananAll)(); + return getRuangpelayanan; +}); +exports.getRuangpelayananAll = getRuangpelayananAll; +const updateRuangpelayananDataAll = (dataRuangpelayanan, ruangpelayanan_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namaruangpelayanan } = dataRuangpelayanan; + const updateRuangpelayanan = yield (0, ruangpelayanan_repository_1.updateRuangpelayananDataAllRepository)(namaruangpelayanan, ruangpelayanan_id); + return updateRuangpelayanan; +}); +exports.updateRuangpelayananDataAll = updateRuangpelayananDataAll; +const deleteRuangpelayananData = (ruangpelayanan_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteRuangpelayanan = yield (0, ruangpelayanan_repository_1.deleteRuangpelayananRepository)(ruangpelayanan_id); + return deleteRuangpelayanan; +}); +exports.deleteRuangpelayananData = deleteRuangpelayananData; diff --git a/backend/dist/api/master/ruang_pelayanan/users.controller.js b/backend/dist/api/master/ruang_pelayanan/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/master/ruang_pelayanan/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/ruang_pelayanan/users.repository.js b/backend/dist/api/master/ruang_pelayanan/users.repository.js new file mode 100644 index 0000000..f9ad481 --- /dev/null +++ b/backend/dist/api/master/ruang_pelayanan/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/master/ruang_pelayanan/users.service.js b/backend/dist/api/master/ruang_pelayanan/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/master/ruang_pelayanan/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/master/tindakan/asuransi.controller.js b/backend/dist/api/master/tindakan/asuransi.controller.js new file mode 100644 index 0000000..f3c52f4 --- /dev/null +++ b/backend/dist/api/master/tindakan/asuransi.controller.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const asuransi_service_1 = require("./asuransi.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/asuransi_id/:asuransi_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const getAsuransi = yield (0, asuransi_service_1.getAsuransiId)(asuransi_id); + if (getAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getAsuransi = yield (0, asuransi_service_1.getAsuransiAll)(); + if (getAsuransi && getAsuransi.length > 0) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namaasuransi").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createAsuransi = yield (0, asuransi_service_1.createAsuransiData)(req.body); + if (createAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/asuransi_id/:asuransi_id", [ + (0, express_validator_1.param)("asuransi_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const asuransi_id = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!asuransi_id) { + return Promise.reject("Asuransi ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namaasuransi").notEmpty(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const updateAsuransiAll = yield (0, asuransi_service_1.updateAsuransiDataAll)(req.body, asuransi_id); + if (updateAsuransiAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateAsuransiAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/asuransi_id/:asuransi_id", [ + (0, express_validator_1.param)("asuransi_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const AsuransiId = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!AsuransiId) { + return Promise.reject("Asuransi ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const deleteAsuransi = yield (0, asuransi_service_1.deleteAsuransiData)(asuransi_id); + if (deleteAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteAsuransi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/tindakan/asuransi.repository.js b/backend/dist/api/master/tindakan/asuransi.repository.js new file mode 100644 index 0000000..f512d23 --- /dev/null +++ b/backend/dist/api/master/tindakan/asuransi.repository.js @@ -0,0 +1,129 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteAsuransiRepository = exports.updateAsuransiDataAllRepository = exports.getDataAsuransiAll = exports.getDataAsuransiId = exports.createAsuransiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createAsuransiRepository = (namaasuransi) => __awaiter(void 0, void 0, void 0, function* () { + const maxAsuransiId = yield (0, database_handler_1.generateMaxDb1)("ms_asuransi_id_seq", "asuransi_id"); + const createAsuransi = yield db_1.prismaDb1.msasuransi.create({ + data: { + idasuransi: maxAsuransiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namaasuransi: namaasuransi, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return createAsuransi; +}); +exports.createAsuransiRepository = createAsuransiRepository; +const getDataAsuransiId = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const Asuransi = yield db_1.prismaDb1.msasuransi.findFirst({ + where: { + idasuransi: asuransi_id, + deleted_at: null, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return Asuransi; +}); +exports.getDataAsuransiId = getDataAsuransiId; +const getDataAsuransiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const Asuransi = yield db_1.prismaDb1.msasuransi.findMany({ + where: { + deleted_by: null, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return Asuransi; +}); +exports.getDataAsuransiAll = getDataAsuransiAll; +const updateAsuransiDataAllRepository = (namaasuransi, asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateAsuransi = yield db_1.prismaDb1.msasuransi.update({ + where: { + idasuransi: asuransi_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namaasuransi: namaasuransi, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return updateAsuransi; +}); +exports.updateAsuransiDataAllRepository = updateAsuransiDataAllRepository; +const deleteAsuransiRepository = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msasuransi.update({ + where: { + idasuransi: asuransi_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + return deleteUser; +}); +exports.deleteAsuransiRepository = deleteAsuransiRepository; diff --git a/backend/dist/api/master/tindakan/asuransi.service.js b/backend/dist/api/master/tindakan/asuransi.service.js new file mode 100644 index 0000000..b4dd8bd --- /dev/null +++ b/backend/dist/api/master/tindakan/asuransi.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteAsuransiData = exports.updateAsuransiDataAll = exports.createAsuransiData = exports.getAsuransiAll = exports.getAsuransiId = void 0; +const dotenv = __importStar(require("dotenv")); +const asuransi_repository_1 = require("./asuransi.repository"); +dotenv.config(); +const createAsuransiData = (dataAsuransi) => __awaiter(void 0, void 0, void 0, function* () { + const { namaasuransi } = dataAsuransi; + const createAsuransi = (0, asuransi_repository_1.createAsuransiRepository)(namaasuransi); + return createAsuransi; +}); +exports.createAsuransiData = createAsuransiData; +const getAsuransiId = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const getAsuransiId = yield (0, asuransi_repository_1.getDataAsuransiId)(asuransi_id); + return getAsuransiId; +}); +exports.getAsuransiId = getAsuransiId; +const getAsuransiAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getAsuransi = yield (0, asuransi_repository_1.getDataAsuransiAll)(); + return getAsuransi; +}); +exports.getAsuransiAll = getAsuransiAll; +const updateAsuransiDataAll = (dataAsuransi, asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namaasuransi } = dataAsuransi; + const updateAsuransi = yield (0, asuransi_repository_1.updateAsuransiDataAllRepository)(namaasuransi, asuransi_id); + return updateAsuransi; +}); +exports.updateAsuransiDataAll = updateAsuransiDataAll; +const deleteAsuransiData = (asuransi_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteAsuransi = yield (0, asuransi_repository_1.deleteAsuransiRepository)(asuransi_id); + return deleteAsuransi; +}); +exports.deleteAsuransiData = deleteAsuransiData; diff --git a/backend/dist/api/master/tindakan/tindakan.controller.js b/backend/dist/api/master/tindakan/tindakan.controller.js new file mode 100644 index 0000000..c39dad8 --- /dev/null +++ b/backend/dist/api/master/tindakan/tindakan.controller.js @@ -0,0 +1,229 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const tindakan_service_1 = require("./tindakan.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/tindakan_id/:tindakan_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const tindakan_id = parseInt(req.params.tindakan_id, 10); + const getTindakan = yield (0, tindakan_service_1.getTindakanId)(tindakan_id); + if (getTindakan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTindakan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getTindakan = yield (0, tindakan_service_1.getTindakanAll)(); + if (getTindakan && getTindakan.length > 0) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTindakan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namatindakan").notEmpty(), + (0, express_validator_1.body)("tariftindakan").notEmpty().isNumeric(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createTindakan = yield (0, tindakan_service_1.createTindakanData)(req.body); + if (createTindakan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createTindakan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/tindakan_id/:tindakan_id", [ + (0, express_validator_1.param)("tindakan_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const tindakan_id = yield (0, tindakan_service_1.getTindakanId)(value); + if (!tindakan_id) { + return Promise.reject("Tindakan tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namatindakan").notEmpty(), + (0, express_validator_1.body)("tariftindakan").notEmpty().isNumeric(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const tindakan_id = parseInt(req.params.tindakan_id, 10); + const updateTindakanAll = yield (0, tindakan_service_1.updateTindakanDataAll)(req.body, tindakan_id); + if (updateTindakanAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateTindakanAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/tindakan_id/:tindakan_id", [ + (0, express_validator_1.param)("tindakan_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const TindakanId = yield (0, tindakan_service_1.getTindakanId)(value); + if (!TindakanId) { + return Promise.reject("Tindakan ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const tindakan_id = parseInt(req.params.tindakan_id, 10); + const deleteTindakan = yield (0, tindakan_service_1.deleteTindakanData)(tindakan_id); + if (deleteTindakan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteTindakan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/tindakan/tindakan.repository.js b/backend/dist/api/master/tindakan/tindakan.repository.js new file mode 100644 index 0000000..df0b826 --- /dev/null +++ b/backend/dist/api/master/tindakan/tindakan.repository.js @@ -0,0 +1,145 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCountTindakanRepository = exports.deleteTindakanRepository = exports.updateTindakanDataAllRepository = exports.getDataTindakanAll = exports.getDataTindakanId = exports.createTindakanRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createTindakanRepository = (namatindakan, tariftindakan) => __awaiter(void 0, void 0, void 0, function* () { + const maxTindakanId = yield (0, database_handler_1.generateMaxDb1)("ms_tindakan_id_seq", "tindakan_id"); + const createTindakan = yield db_1.prismaDb1.mstindakan.create({ + data: { + idtindakan: maxTindakanId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namatindakan: namatindakan, + tariftindakan: tariftindakan + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + return createTindakan; +}); +exports.createTindakanRepository = createTindakanRepository; +const getDataTindakanId = (tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const tindakan = yield db_1.prismaDb1.mstindakan.findFirst({ + where: { + idtindakan: tindakan_id, + deleted_at: null, + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + return tindakan; +}); +exports.getDataTindakanId = getDataTindakanId; +const getDataTindakanAll = () => __awaiter(void 0, void 0, void 0, function* () { + const tindakan = yield db_1.prismaDb1.mstindakan.findMany({ + where: { + deleted_by: null, + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + return tindakan; +}); +exports.getDataTindakanAll = getDataTindakanAll; +const updateTindakanDataAllRepository = (namatindakan, tariftindakan, tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateTindakan = yield db_1.prismaDb1.mstindakan.update({ + where: { + idtindakan: tindakan_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namatindakan: namatindakan, + tariftindakan: tariftindakan + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + return updateTindakan; +}); +exports.updateTindakanDataAllRepository = updateTindakanDataAllRepository; +const deleteTindakanRepository = (tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.mstindakan.update({ + where: { + idtindakan: tindakan_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + return deleteUser; +}); +exports.deleteTindakanRepository = deleteTindakanRepository; +const getCountTindakanRepository = () => __awaiter(void 0, void 0, void 0, function* () { + const tindakanCount = yield db_1.prismaDb1.mstindakan.count({ + where: { + deleted_by: null, + }, + }); + return tindakanCount; +}); +exports.getCountTindakanRepository = getCountTindakanRepository; diff --git a/backend/dist/api/master/tindakan/tindakan.service.js b/backend/dist/api/master/tindakan/tindakan.service.js new file mode 100644 index 0000000..6ac752a --- /dev/null +++ b/backend/dist/api/master/tindakan/tindakan.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteTindakanData = exports.updateTindakanDataAll = exports.createTindakanData = exports.getTindakanAll = exports.getTindakanId = void 0; +const dotenv = __importStar(require("dotenv")); +const tindakan_repository_1 = require("./tindakan.repository"); +dotenv.config(); +const createTindakanData = (dataTindakan) => __awaiter(void 0, void 0, void 0, function* () { + const { namatindakan, tariftindakan } = dataTindakan; + const createTindakan = (0, tindakan_repository_1.createTindakanRepository)(namatindakan, tariftindakan); + return createTindakan; +}); +exports.createTindakanData = createTindakanData; +const getTindakanId = (tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const getTindakanId = yield (0, tindakan_repository_1.getDataTindakanId)(tindakan_id); + return getTindakanId; +}); +exports.getTindakanId = getTindakanId; +const getTindakanAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getTindakan = yield (0, tindakan_repository_1.getDataTindakanAll)(); + return getTindakan; +}); +exports.getTindakanAll = getTindakanAll; +const updateTindakanDataAll = (dataTindakan, tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namatindakan, tariftindakan } = dataTindakan; + const updateTindakan = yield (0, tindakan_repository_1.updateTindakanDataAllRepository)(namatindakan, tariftindakan, tindakan_id); + return updateTindakan; +}); +exports.updateTindakanDataAll = updateTindakanDataAll; +const deleteTindakanData = (tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteTindakan = yield (0, tindakan_repository_1.deleteTindakanRepository)(tindakan_id); + return deleteTindakan; +}); +exports.deleteTindakanData = deleteTindakanData; diff --git a/backend/dist/api/master/users copy 2/users.controller.js b/backend/dist/api/master/users copy 2/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/master/users copy 2/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/users copy 2/users.repository.js b/backend/dist/api/master/users copy 2/users.repository.js new file mode 100644 index 0000000..f9ad481 --- /dev/null +++ b/backend/dist/api/master/users copy 2/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/master/users copy 2/users.service.js b/backend/dist/api/master/users copy 2/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/master/users copy 2/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/master/users copy/users.controller.js b/backend/dist/api/master/users copy/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/master/users copy/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/users copy/users.repository.js b/backend/dist/api/master/users copy/users.repository.js new file mode 100644 index 0000000..f9ad481 --- /dev/null +++ b/backend/dist/api/master/users copy/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/master/users copy/users.service.js b/backend/dist/api/master/users copy/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/master/users copy/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/master/users copy/users/users.controller.js b/backend/dist/api/master/users copy/users/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/master/users copy/users/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/users copy/users/users.repository.js b/backend/dist/api/master/users copy/users/users.repository.js new file mode 100644 index 0000000..f9ad481 --- /dev/null +++ b/backend/dist/api/master/users copy/users/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/master/users copy/users/users.service.js b/backend/dist/api/master/users copy/users/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/master/users copy/users/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/master/users/users.controller.js b/backend/dist/api/master/users/users.controller.js new file mode 100644 index 0000000..d5ec162 --- /dev/null +++ b/backend/dist/api/master/users/users.controller.js @@ -0,0 +1,311 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const created_by = parseInt(req.body.created_by, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id, created_by); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/master/users/users.repository.js b/backend/dist/api/master/users/users.repository.js new file mode 100644 index 0000000..e3deebb --- /dev/null +++ b/backend/dist/api/master/users/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email, created_by) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: created_by, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, created_by, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: created_by, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id, created_by) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: created_by }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id, created_by) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: created_by, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/master/users/users.service.js b/backend/dist/api/master/users/users.service.js new file mode 100644 index 0000000..0d727cf --- /dev/null +++ b/backend/dist/api/master/users/users.service.js @@ -0,0 +1,92 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email, created_by } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email, created_by); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email, created_by } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, created_by, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const createdBy = dataUser.created_by; + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id, createdBy); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id, created_by) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id, created_by); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/pegawai/users.controller.js b/backend/dist/api/pegawai/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/pegawai/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/pegawai/users.repository.js b/backend/dist/api/pegawai/users.repository.js new file mode 100644 index 0000000..4c9774c --- /dev/null +++ b/backend/dist/api/pegawai/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("../../db"); +const database_handler_1 = require("../../db/database.handler"); +const time_1 = require("../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/pegawai/users.service.js b/backend/dist/api/pegawai/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/pegawai/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/phis2nd/index.js b/backend/dist/api/phis2nd/index.js new file mode 100644 index 0000000..9863333 --- /dev/null +++ b/backend/dist/api/phis2nd/index.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const whatsapp_controller_1 = require("./whatsapp/whatsapp.controller"); +const router = (0, express_1.Router)(); +exports.router = router; +router.use("/Whatsapp", whatsapp_controller_1.router); diff --git a/backend/dist/api/phis2nd/whatsapp/whatsapp.controller.js b/backend/dist/api/phis2nd/whatsapp/whatsapp.controller.js new file mode 100644 index 0000000..c3ec4d9 --- /dev/null +++ b/backend/dist/api/phis2nd/whatsapp/whatsapp.controller.js @@ -0,0 +1,388 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const dotenv = __importStar(require("dotenv")); +const crypto_1 = __importDefault(require("crypto")); +const whatsapp_service_1 = require("./whatsapp.service"); +const path_1 = __importDefault(require("path")); +const fs_1 = __importDefault(require("fs")); +const moment = require("moment-timezone"); +dotenv.config(); +exports.router = (0, express_1.Router)(); +exports.router.get("/confirm/", [(0, express_validator_1.query)(["data"]).notEmpty()], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + var _a, _b; + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(201).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const encryptedData = req.query.data; + const key = process.env.keyKonfirmasiWa; + try { + const [encrypted, iv] = Buffer.from(decodeURIComponent(encryptedData), "base64") + .toString() + .split("::") + .map((part) => Buffer.from(part, "base64")); + const decipher = crypto_1.default.createDecipheriv("aes-256-cbc", key ? Buffer.from(key) : Buffer.from(""), iv); + let decrypted = decipher.update(encrypted); + decrypted = Buffer.concat([decrypted, decipher.final()]); + const registrasiUrutId = parseInt(decrypted.toString(), 10); + const resultConfirm = yield (0, whatsapp_service_1.confirmWhatsappService)(registrasiUrutId); + let htmlIndex = ""; + if (resultConfirm.code === 200) { + htmlIndex = ` + + + + + + + Konfirmasi Berhasil + + + + +
+
+

Selamat!

+

Konfirmasi WhatsApp Anda berhasil.

+
+

Detail Kunjungan

+ + + + + + + + + + + + + + + + + +
+ Nama Pasien + + ${resultConfirm.data + .nama_pasien} +
+ Dokter + + ${((_a = resultConfirm === null || resultConfirm === void 0 ? void 0 : resultConfirm.data) === null || _a === void 0 ? void 0 : _a.nama_pegawai) ? resultConfirm.data.nama_pegawai : ''} +
+ Klinik + + ${resultConfirm.data + .nama_bagian} +
+ Tanggal Kunjungan + + ${moment(resultConfirm.data.tgl_masuk).format("DD-MM-YYYY")} +
+
+
+ + + + `; + fs_1.default.writeFileSync(path_1.default.join(__dirname, "./../../../views/whatsappconfirm.html"), htmlIndex); + res.sendFile(path_1.default.join(__dirname, "./../../../views", "whatsappconfirm.html")); + } + else { + htmlIndex = ` + + + + + + + Konfirmasi Berhasil + + + + +
+
+

Peringatan!

+

Konfirmasi WhatsApp Sudah Dilakukan Sebelumnya.

+
+

Detail Kunjungan

+ + + + + + + + + + + + + + + + + +
+ Nama Pasien + + ${resultConfirm.data + .nama_pasien} +
+ Dokter + + ${((_b = resultConfirm === null || resultConfirm === void 0 ? void 0 : resultConfirm.data) === null || _b === void 0 ? void 0 : _b.nama_pegawai) ? resultConfirm.data.nama_pegawai : ''} +
+ Klinik + + ${resultConfirm.data + .nama_bagian} +
+ Tanggal Kunjungan + + ${moment(resultConfirm.data.tgl_masuk).format("DD-MM-YYYY")} +
+
+
+ + + + `; + fs_1.default.writeFileSync(path_1.default.join(__dirname, "./../../../views/whatsappconfirm.html"), htmlIndex); + res.sendFile(path_1.default.join(__dirname, "./../../../views", "whatsappconfirm.html")); + } + } + catch (err) { + console.log(err.message); + let htmlIndex = ` + + + + + + + Konfirmasi Berhasil + + + + +
+
+

GAGAL!

+

Konfirmasi WhatsApp Gagal.

+
+
+
+ + + + `; + fs_1.default.writeFileSync(path_1.default.join(__dirname, "./../../../views/whatsappconfirm.html"), htmlIndex); + res.sendFile(path_1.default.join(__dirname, "./../../../views", "whatsappconfirm.html")); + } +})); diff --git a/backend/dist/api/phis2nd/whatsapp/whatsapp.repository.js b/backend/dist/api/phis2nd/whatsapp/whatsapp.repository.js new file mode 100644 index 0000000..e59f159 --- /dev/null +++ b/backend/dist/api/phis2nd/whatsapp/whatsapp.repository.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkDataKunjungan = exports.checkConfirmWhatsapp = exports.confirmWhatsapp = void 0; +const db_1 = require("./../../../db"); +const time_1 = require("./../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const confirmWhatsapp = (registrasi_urut_id) => __awaiter(void 0, void 0, void 0, function* () { + const confirm = yield db_1.prismaDb1.registrasi_urut.update({ + where: { + registrasi_urut_id: registrasi_urut_id, + }, + data: { + tgl_jam_wa_konfirmasi: (0, time_1.dateNow)(), + }, + }); + return confirm; +}); +exports.confirmWhatsapp = confirmWhatsapp; +const checkConfirmWhatsapp = (registrasi_urut_id) => __awaiter(void 0, void 0, void 0, function* () { + const checkConfirm = yield db_1.prismaDb1.registrasi_urut.findUnique({ + where: { + registrasi_urut_id: registrasi_urut_id, + }, + select: { + tgl_jam_wa_konfirmasi: true, + }, + }); + return checkConfirm; +}); +exports.checkConfirmWhatsapp = checkConfirmWhatsapp; +const checkDataKunjungan = (data) => __awaiter(void 0, void 0, void 0, function* () { + const checkData = `SELECT + pasien.nama_pasien, + pegawai.nama_pegawai, + bagian.nama_bagian, + registrasi.tgl_masuk::date + FROM + registrasi + INNER JOIN registrasi_detail ON + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is null + INNER JOIN registrasi_urut ON + registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id + and registrasi_urut.status_batal is null + INNER JOIN bagian ON + registrasi_detail.bagian_id = bagian.bagian_id + INNER JOIN pasien ON + registrasi.pasien_id = pasien.pasien_id + LEFT JOIN pegawai ON + registrasi_urut.pegawai_id = pegawai.pegawai_id + WHERE + registrasi_urut.registrasi_urut_id = '${data}' + AND registrasi.status_batal is null + `; + const dataKunjungan = yield db_1.prismaDb1.$queryRawUnsafe(checkData); + return dataKunjungan[0]; +}); +exports.checkDataKunjungan = checkDataKunjungan; diff --git a/backend/dist/api/phis2nd/whatsapp/whatsapp.service.js b/backend/dist/api/phis2nd/whatsapp/whatsapp.service.js new file mode 100644 index 0000000..2d0020d --- /dev/null +++ b/backend/dist/api/phis2nd/whatsapp/whatsapp.service.js @@ -0,0 +1,57 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.confirmWhatsappService = void 0; +const whatsapp_repository_1 = require("./whatsapp.repository"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const confirmWhatsappService = (data) => __awaiter(void 0, void 0, void 0, function* () { + const checkConfirmWhatsappData = yield (0, whatsapp_repository_1.checkConfirmWhatsapp)(data); + if (checkConfirmWhatsappData.tgl_jam_wa_konfirmasi) { + const dataKunjunganPasien = yield (0, whatsapp_repository_1.checkDataKunjungan)(data); + return { + code: 201, + message: "Data Sudah Terkonfirmasi", + data: dataKunjunganPasien, + }; + } + const resultConfirmWhatsapp = yield (0, whatsapp_repository_1.confirmWhatsapp)(data); + const dataKunjunganPasien = yield (0, whatsapp_repository_1.checkDataKunjungan)(data); + return { + code: 200, + message: "Data Berhasil Checkin", + data: dataKunjunganPasien, + }; +}); +exports.confirmWhatsappService = confirmWhatsappService; diff --git a/backend/dist/api/satu-sehat/generate-token/generate-token.controller.js b/backend/dist/api/satu-sehat/generate-token/generate-token.controller.js new file mode 100644 index 0000000..60ff4b6 --- /dev/null +++ b/backend/dist/api/satu-sehat/generate-token/generate-token.controller.js @@ -0,0 +1,40 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const generate_token_service_1 = require("./generate-token.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const generateToken = yield (0, generate_token_service_1.generateTokenService)(); + if (generateToken.code === 200) { + res.send({ + metadata: { + message: generateToken.message, + code: generateToken.code, + }, + data: generateToken.data, + }); + } + else { + res.status(200).json({ + metadata: { + message: generateToken.message, + code: generateToken.code, + }, + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/satu-sehat/generate-token/generate-token.repository.js b/backend/dist/api/satu-sehat/generate-token/generate-token.repository.js new file mode 100644 index 0000000..14662bb --- /dev/null +++ b/backend/dist/api/satu-sehat/generate-token/generate-token.repository.js @@ -0,0 +1,50 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.updateToken = exports.insertToken = exports.checkTokenExist = void 0; +const db_1 = require("./../../../db"); +const database_handler_1 = require("./../../../db/database.handler"); +const time_1 = require("./../../../middlewares/time"); +const checkTokenExist = () => __awaiter(void 0, void 0, void 0, function* () { + const check = yield db_1.prismaDb2.token.findFirst({ + select: { + access_token: true, + last_update_date: true, + }, + }); + return check; +}); +exports.checkTokenExist = checkTokenExist; +const insertToken = (generateToken) => __awaiter(void 0, void 0, void 0, function* () { + const idToken = yield (0, database_handler_1.generateMaxDb2)("token", "id"); + const insert = yield db_1.prismaDb2.token.create({ + data: { + id: idToken, + access_token: generateToken.access_token, + last_update_date: (0, time_1.dateNow)(), + }, + }); + return insert; +}); +exports.insertToken = insertToken; +const updateToken = (generateToken) => __awaiter(void 0, void 0, void 0, function* () { + const update = yield db_1.prismaDb2.token.update({ + where: { + id: 1, + }, + data: { + last_update_date: (0, time_1.dateNow)(), + access_token: generateToken.access_token, + }, + }); + return update; +}); +exports.updateToken = updateToken; diff --git a/backend/dist/api/satu-sehat/generate-token/generate-token.service.js b/backend/dist/api/satu-sehat/generate-token/generate-token.service.js new file mode 100644 index 0000000..2b8485a --- /dev/null +++ b/backend/dist/api/satu-sehat/generate-token/generate-token.service.js @@ -0,0 +1,74 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkTokenExist = exports.generateTokenService = exports.checkTokenService = void 0; +const axiosClient_1 = require("../../../utils/axiosClient"); +const config_1 = require("../../../utils/config"); +const generate_token_repository_1 = require("./generate-token.repository"); +Object.defineProperty(exports, "checkTokenExist", { enumerable: true, get: function () { return generate_token_repository_1.checkTokenExist; } }); +const date_fns_tz_1 = require("date-fns-tz"); +const date = new Date(); +const timeZone = config_1.environment.timezone; +const formattedUtcDate = new Date((0, date_fns_tz_1.format)(date, "yyyy-MM-dd HH:mm:ss", { timeZone }) + " UTC"); +const checkTokenService = () => __awaiter(void 0, void 0, void 0, function* () { + const checkToken = yield (0, generate_token_repository_1.checkTokenExist)(); + if (!checkToken) { + return { + message: "Token not found", + code: 201, + }; + } + return { + message: "Token found", + code: 200, + data: { + last_update_date: checkToken.last_update_date, + access_token: checkToken.access_token, + }, + }; +}); +exports.checkTokenService = checkTokenService; +const generateTokenService = () => __awaiter(void 0, void 0, void 0, function* () { + const client_id = config_1.environment.satusehat.client_id; + const client_secret = config_1.environment.satusehat.client_secret; + const urlAuth = config_1.environment.satusehat.url_auth; + const xmldata = { + client_id: client_id, + client_secret: client_secret, + }; + const url = `${urlAuth}/accesstoken?grant_type=client_credentials`; + const method = "POST"; + const headersData = { + "Content-Type": "application/x-www-form-urlencoded", + }; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, xmldata); + if (response.status === 200) { + if (response.data.resourceType === "OperationOutcome") { + throw new Error("Generate Token Failed"); + } + const checkToken = yield (0, generate_token_repository_1.checkTokenExist)(); + if (!checkToken) { + const insertDataToken = yield (0, generate_token_repository_1.insertToken)(response.data); + } + else { + const updateDataToken = yield (0, generate_token_repository_1.updateToken)(response.data); + } + } + else { + throw new Error("Generate Token Failed"); + } + return { + message: "Generate Token Success", + code: 200, + data: response.data, + }; +}); +exports.generateTokenService = generateTokenService; diff --git a/backend/dist/api/satu-sehat/index.js b/backend/dist/api/satu-sehat/index.js new file mode 100644 index 0000000..b378bf9 --- /dev/null +++ b/backend/dist/api/satu-sehat/index.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const pelayanan_rawat_jalan_controller_1 = require("./pelayanan-rawat-jalan/pelayanan-rawat-jalan.controller"); +const generate_token_controller_1 = require("./generate-token/generate-token.controller"); +const resources_controller_1 = require("./resources/resources.controller"); +const pelayanan_rajal_1 = require("./pelayanan_rajal"); +const router = (0, express_1.Router)(); +exports.router = router; +router.use("/layanan-rawat-jalan", pelayanan_rawat_jalan_controller_1.router); +router.use("/generate-token", generate_token_controller_1.router); +router.use("/resources", resources_controller_1.router); +router.use("/pelayanan-rajal", pelayanan_rajal_1.router); diff --git a/backend/dist/api/satu-sehat/pelayanan-rawat-jalan/pelayanan-rawat-jalan.controller.js b/backend/dist/api/satu-sehat/pelayanan-rawat-jalan/pelayanan-rawat-jalan.controller.js new file mode 100644 index 0000000..7cbd7f6 --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan-rawat-jalan/pelayanan-rawat-jalan.controller.js @@ -0,0 +1,122 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const dotenv = __importStar(require("dotenv")); +const pelayanan_rawat_jalan_service_1 = require("./pelayanan-rawat-jalan.service"); +dotenv.config(); +exports.router = (0, express_1.Router)(); +exports.router.get("/encounter/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = parseInt(req.params.limit, 10); + const generateJob = yield (0, pelayanan_rawat_jalan_service_1.generateJobEncounterService)(limit); + if (generateJob.code === 200) { + res.send({ + metadata: { + message: generateJob.message, + code: generateJob.code, + }, + data: generateJob.data, + }); + } + else { + res.status(200).json({ + metadata: { + message: generateJob.message, + code: generateJob.code, + }, + data: generateJob.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/observation/:type_observation/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const type_observation = req.params.type_observation; + const limit = parseInt(req.params.limit, 10); + const generateJob = yield (0, pelayanan_rawat_jalan_service_1.generateJobObservationService)(limit, type_observation); + if (generateJob.code === 200) { + res.send({ + metadata: { + message: generateJob.message, + code: generateJob.code, + }, + data: generateJob.data, + }); + } + else { + res.status(200).json({ + metadata: { + message: generateJob.message, + code: generateJob.code, + }, + data: generateJob.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/condition/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = parseInt(req.params.limit, 10); + const generateJob = yield (0, pelayanan_rawat_jalan_service_1.generateJobConditionService)(limit); + if (generateJob.code === 200) { + res.send({ + metadata: { + message: generateJob.message, + code: generateJob.code, + }, + data: generateJob.data, + }); + } + else { + res.status(200).json({ + metadata: { + message: generateJob.message, + code: generateJob.code, + }, + data: generateJob.data, + }); + } + } + catch (err) { + next(err); + } +})); diff --git a/backend/dist/api/satu-sehat/pelayanan-rawat-jalan/pelayanan-rawat-jalan.repository.js b/backend/dist/api/satu-sehat/pelayanan-rawat-jalan/pelayanan-rawat-jalan.repository.js new file mode 100644 index 0000000..8f323d8 --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan-rawat-jalan/pelayanan-rawat-jalan.repository.js @@ -0,0 +1,318 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getAdmissionIdByEncounterId = exports.getJobCondition = exports.updateDataEmrDetailConditionSatSet = exports.updateDataEmrDetailObservationSatSet = exports.insertDataEmrDetailConditionSatSet = exports.insertDataEmrDetailObservationSatSet = exports.getEmrDetailConditionSatSet = exports.getEmrDetailObservationSatSet = exports.updateStatusEmrDetail = exports.getJobObservation = exports.insertDataEncounterSatSet = exports.updateDataEncounterSatSet = exports.getEncounterSatSet = exports.updateStatusRegistrasi = exports.getJobEncounter = void 0; +const db_1 = require("./../../../db"); +const database_handler_1 = require("./../../../db/database.handler"); +const time_1 = require("./../../../middlewares/time"); +const getJobEncounter = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const getEncounter = `select + registrasi.registrasi_id, + registrasi.jenis_rawat, + bagian.nama_bagian, + bagian.bagian_id, + pegawai.pegawai_id, + pegawai.nama_pegawai, + pegawai.nik, + pasien.no_mr, + pasien.pasien_id, + pasien.nama_pasien, + pasien.ktp, + pasien.jenis_kelamin, + pasien.tgl_lahir, + registrasi_urut.tgl_urut, + pasien.id_satu_sehat as pasien_ihs_id, + bagian.id_satu_sehat as location_id, + pegawai.id_satu_sehat as practitioner_ihs_id + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is null + inner join registrasi_urut on + registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id + and registrasi_urut.status_batal is null + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + and bagian.referensi_bagian = 1 + and bagian.id_satu_sehat is not null + inner join pegawai on + registrasi_urut.pegawai_id = pegawai.pegawai_id + and pegawai.id_satu_sehat is not null + inner join pasien on + registrasi.pasien_id = pasien.pasien_id + and pasien.id_satu_sehat is not null + and pasien.id_satu_sehat <> '' + inner join emr on + registrasi.registrasi_id = emr.registrasi_id + and emr.status_batal is null + and emr.form_id = 3 + where + registrasi.status_batal is null + and registrasi.tgl_masuk::date = now()::date + and registrasi.status_satu_sehat is null + and registrasi.id_satu_sehat is null + limit ${limit} + `; + const getEncounterData = yield db_1.prismaDb3.$queryRawUnsafe(getEncounter); + return getEncounterData; +}); +exports.getJobEncounter = getJobEncounter; +const updateStatusRegistrasi = (data) => __awaiter(void 0, void 0, void 0, function* () { + const updateStatus = yield db_1.prismaDb1.registrasi.update({ + where: { + registrasi_id: data.registrasi_id, + }, + data: { + status_satu_sehat: data.status_satu_sehat, + id_satu_sehat: data.id_satu_sehat, + }, + }); + return updateStatus; +}); +exports.updateStatusRegistrasi = updateStatusRegistrasi; +const getEncounterSatSet = (registrasiId) => __awaiter(void 0, void 0, void 0, function* () { + const pasienSatSet = yield db_1.prismaDb2.admission.findFirst({ + where: { + registrasi_id: parseInt(registrasiId, 10), + }, + select: { + id: true, + pasien_id: true, + dr_id: true, + created_date: true, + }, + }); + return pasienSatSet; +}); +exports.getEncounterSatSet = getEncounterSatSet; +const updateDataEncounterSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { + const updateEncounterSatSet = yield db_1.prismaDb2.admission.update({ + where: { + id: data.id, + }, + data: { + encounter_ihs_id: responseSatSet.id, + last_updated_date: (0, time_1.dateNow)(), + }, + }); +}); +exports.updateDataEncounterSatSet = updateDataEncounterSatSet; +const insertDataEncounterSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { + const encounterId = yield (0, database_handler_1.generateMaxDb2)("max_admission_idx", "id"); + const insertEncounterSatSet = yield db_1.prismaDb2.admission.create({ + data: { + id: encounterId, + bagian_id: data.bagian_id, + dr_id: data.dr_id, + pasien_id: data.pasien_id, + created_date: (0, time_1.dateNow)(), + admission_type: data.admission_type, + registrasi_id: data.registrasi_id, + }, + }); +}); +exports.insertDataEncounterSatSet = insertDataEncounterSatSet; +const getEmrDetailObservationSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { + const pasienSatSet = yield db_1.prismaDb2.admission_observation.findFirst({ + where: { + observation_ext_id: data.emr_detail_id, + }, + select: { + admission_id: true, + observation_value: true, + observation_type: true, + created_date: true, + }, + }); + return pasienSatSet; +}); +exports.getEmrDetailObservationSatSet = getEmrDetailObservationSatSet; +const getEmrDetailConditionSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { + const pasienSatSet = yield db_1.prismaDb2.dischargediagnosis.findFirst({ + where: { + diag_ext_id: data.emr_detail_id, + }, + select: { + admission_id: true, + diag_code: true, + created_date: true, + }, + }); + return pasienSatSet; +}); +exports.getEmrDetailConditionSatSet = getEmrDetailConditionSatSet; +const updateDataEmrDetailObservationSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { + const updateEmrDetailSatSet = yield db_1.prismaDb2.admission_observation.updateMany({ + where: { + observation_ext_id: parseInt(data.emr_detail_id, 10), + }, + data: { + observation_ihs_id: responseSatSet.id, + last_updated_date: (0, time_1.dateNow)(), + }, + }); + return updateEmrDetailSatSet; +}); +exports.updateDataEmrDetailObservationSatSet = updateDataEmrDetailObservationSatSet; +const getAdmissionIdByEncounterId = (encounter_id) => __awaiter(void 0, void 0, void 0, function* () { + const admissionId = yield db_1.prismaDb2.admission.findFirst({ + where: { + encounter_ihs_id: encounter_id, + }, + select: { + id: true, + }, + }); + return admissionId; +}); +exports.getAdmissionIdByEncounterId = getAdmissionIdByEncounterId; +const insertDataEmrDetailObservationSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { + const insertEmrDetailSatSet = yield db_1.prismaDb2.admission_observation.create({ + data: { + admission_id: data.admission_id, + observation_value: data.value, + observation_type: data.type, + created_date: (0, time_1.dateNow)(), + observation_ext_id: data.emr_detail_id, + }, + }); + return insertEmrDetailSatSet; +}); +exports.insertDataEmrDetailObservationSatSet = insertDataEmrDetailObservationSatSet; +const updateDataEmrDetailConditionSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { + const updateEmrDetailSatSet = yield db_1.prismaDb2.dischargediagnosis.updateMany({ + where: { + diag_ext_id: parseInt(data.emr_detail_id, 10), + }, + data: { + condition_ihs_id: responseSatSet.id, + last_updated_date: (0, time_1.dateNow)(), + }, + }); + return updateEmrDetailSatSet; +}); +exports.updateDataEmrDetailConditionSatSet = updateDataEmrDetailConditionSatSet; +const insertDataEmrDetailConditionSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { + const insertEmrDetailSatSet = yield db_1.prismaDb2.dischargediagnosis.create({ + data: { + admission_id: data.admission_id, + diag_code: data.diag_code, + diag_status: data.diag_status, + created_date: (0, time_1.dateNow)(), + diag_label: data.diag_label, + diag_ext_id: data.emr_detail_id, + }, + }); + return insertEmrDetailSatSet; +}); +exports.insertDataEmrDetailConditionSatSet = insertDataEmrDetailConditionSatSet; +const getJobObservation = (limit, objekId) => __awaiter(void 0, void 0, void 0, function* () { + const getObservation = `select + emr_detail.emr_detail_id, + emr_detail.objek_id, + emr_detail.variabel, + emr_detail.value, + registrasi.id_satu_sehat as encounter_id, + pasien.id_satu_sehat as patient_ihs_id, + pasien.nama_pasien, + pegawai.id_satu_sehat as practitioner_ihs_id, + pegawai.nama_pegawai, + emr_detail.input_time + from + registrasi + inner join pasien on + registrasi.pasien_id = pasien.pasien_id + and pasien.id_satu_sehat is not null + inner join emr on + registrasi.registrasi_id = emr.registrasi_id + and emr.status_batal is null + and emr.form_id = 10 + inner join users on + emr.input_user_id = users.user_id + inner join pegawai on + users.pegawai_id = pegawai.pegawai_id + and pegawai.id_satu_sehat is not null + inner join emr_detail on + emr.emr_id = emr_detail.emr_id + and emr_detail.status_batal is null + and emr_detail.objek_id = ${objekId} + and emr_detail.status_satu_sehat is NULL + where + registrasi.status_batal is null + and registrasi.id_satu_sehat is not null + and registrasi.tgl_masuk::date = now()::date + limit ${limit}`; + const getObservationData = yield db_1.prismaDb3.$queryRawUnsafe(getObservation); + const formattedData = getObservationData.map((item) => (Object.assign(Object.assign({}, item), { emr_detail_id: item.emr_detail_id.toString() }))); + return formattedData; +}); +exports.getJobObservation = getJobObservation; +const updateStatusEmrDetail = (data) => __awaiter(void 0, void 0, void 0, function* () { + const updateStatus = yield db_1.prismaDb1.emr_detail.update({ + where: { + emr_detail_id: data.emr_detail_id, + }, + data: { + status_satu_sehat: data.status_satu_sehat, + id_satu_sehat: data.id_satu_sehat, + }, + }); + return updateStatus; +}); +exports.updateStatusEmrDetail = updateStatusEmrDetail; +const getJobCondition = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const getCondition = `select + emr_detail.emr_detail_id, + emr_detail.objek_id, + emr_detail.variabel, + emr_detail.value, + registrasi.id_satu_sehat as encounter_id, + pasien.id_satu_sehat as patient_ihs_id, + pasien.nama_pasien, + pegawai.id_satu_sehat as practitioner_ihs_id, + pegawai.nama_pegawai, + emr_detail.input_time, + icd.kode_diagnosa, + icd.nama_diagnosa + from + registrasi + inner join pasien on + registrasi.pasien_id = pasien.pasien_id + and pasien.id_satu_sehat is not null + inner join emr on + registrasi.registrasi_id = emr.registrasi_id + and emr.status_batal is null + and emr.form_id = 3 + inner join users on + emr.input_user_id = users.user_id + inner join pegawai on + users.pegawai_id = pegawai.pegawai_id + and pegawai.id_satu_sehat is not null + inner join emr_detail on + emr.emr_id = emr_detail.emr_id + and emr_detail.status_batal is null + and emr_detail.objek_id = 42 + and emr_detail.variabel in ('primary', 'secondary') + and emr_detail.value is not null + and emr_detail.status_satu_sehat is null + inner join icd on + emr_detail.value::int = icd.icd_id + where + registrasi.status_batal is null + and registrasi.id_satu_sehat is not null + and registrasi.tgl_masuk::date = now()::date + limit ${limit}`; + const getConditionData = yield db_1.prismaDb3.$queryRawUnsafe(getCondition); + const formattedData = getConditionData.map((item) => (Object.assign(Object.assign({}, item), { emr_detail_id: item.emr_detail_id.toString() }))); + return formattedData; +}); +exports.getJobCondition = getJobCondition; diff --git a/backend/dist/api/satu-sehat/pelayanan-rawat-jalan/pelayanan-rawat-jalan.service.js b/backend/dist/api/satu-sehat/pelayanan-rawat-jalan/pelayanan-rawat-jalan.service.js new file mode 100644 index 0000000..d439a42 --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan-rawat-jalan/pelayanan-rawat-jalan.service.js @@ -0,0 +1,459 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generateJobConditionService = exports.generateJobObservationService = exports.generateJobEncounterService = void 0; +const pelayanan_rawat_jalan_repository_1 = require("./pelayanan-rawat-jalan.repository"); +const resources_repository_1 = require("../resources/resources.repository"); +const dotenv = __importStar(require("dotenv")); +const config_1 = require("./../../../utils/config"); +const middlewares_1 = require("../../../middlewares"); +dotenv.config(); +const generateJobEncounterService = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const jobEncounter = yield (0, pelayanan_rawat_jalan_repository_1.getJobEncounter)(limit); + if (jobEncounter.length < 1) { + return { + message: "Tidak ada data", + code: 200, + }; + } + else { + jobEncounter.forEach((item) => __awaiter(void 0, void 0, void 0, function* () { + const registrasiId = item.registrasi_id; + const tglLayanan = item.tgl_urut; + const payload = { + resourceType: "Encounter", + identifier: [ + { + system: `http://sys-ids.kemkes.go.id/encounter/${config_1.environment.satusehat.org_id}`, + value: `${item.registrasi_id}`, + }, + ], + status: "arrived", + class: { + system: "http://terminology.hl7.org/CodeSystem/v3-ActCode", + code: "AMB", + display: "ambulatory", + }, + subject: { + reference: `Patient/${item.pasien_ihs_id}`, + display: `${item.nama_pasien}`, + }, + participant: [ + { + type: [ + { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + code: "ATND", + display: "attender", + }, + ], + }, + ], + individual: { + reference: `Practitioner/${item.practitioner_ihs_id}`, + display: `${item.nama_pegawai}`, + }, + }, + ], + period: { + start: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + }, + location: [ + { + location: { + reference: `Location/${item.location_id}`, + display: `${item.nama_bagian}`, + }, + period: { + start: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + }, + extension: [ + { + url: "https://fhir.kemkes.go.id/r4/StructureDefinition/ServiceClass", + extension: [ + { + url: "value", + valueCodeableConcept: { + coding: [ + { + system: "http://terminology.kemkes.go.id/CodeSystem/locationServiceClass-Outpatient", + code: "reguler", + display: "Kelas Reguler", + }, + ], + }, + }, + { + url: "upgradeClassIndicator", + valueCodeableConcept: { + coding: [ + { + system: "http://terminology.kemkes.go.id/CodeSystem/locationUpgradeClass", + code: "kelas-tetap", + display: "Kelas Tetap Perawatan", + }, + ], + }, + }, + ], + }, + ], + }, + ], + statusHistory: [ + { + status: "arrived", + period: { + start: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + }, + }, + ], + serviceProvider: { + reference: `Organization/${config_1.environment.satusehat.org_id}`, + }, + }; + const dataJob = { + endpoint_name: "encounter", + status: 1, + method: "POST", + url: `/Encounter`, + key_simrs: registrasiId.toString(), + payload: payload, + }; + const checkPatientSatSet = yield (0, resources_repository_1.insertJobData)(dataJob); + if (!checkPatientSatSet) { + return { + no_mr: item.no_mr, + registrasi_id: registrasiId, + status: "failed", + }; + } + else { + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusRegistrasi)({ + registrasi_id: parseInt(registrasiId, 10), + status_satu_sehat: 1, + }); + let bagianId = item.bagian_id; + let pegawaiId = item.pegawai_id; + let pasienId = item.pasien_id; + const insertAdmission = yield (0, pelayanan_rawat_jalan_repository_1.insertDataEncounterSatSet)({ + bagian_id: bagianId.toString(), + dr_id: pegawaiId.toString(), + pasien_id: pasienId.toString(), + admission_type: item.jenis_rawat, + registrasi_id: item.registrasi_id, + }); + return { + no_mr: item.no_mr, + registrasi_id: registrasiId, + status: "success", + }; + } + })); + } + return { + message: "Job Generate Success", + code: 200, + data: jobEncounter, + }; +}); +exports.generateJobEncounterService = generateJobEncounterService; +const generateJobObservationService = (limit, type_observation) => __awaiter(void 0, void 0, void 0, function* () { + let objekId = 0; + let category_code = ""; + let category_display = ""; + let code = ""; + let code_display = ""; + let valueQuantityUnit = ""; + let valueQuantityCode = ""; + if (type_observation === "sistolik") { + objekId = 6; + category_code = `vital-signs`; + category_display = `Vital Signs`; + code = `8480-6`; + code_display = `Systolic Blood Pressure`; + valueQuantityUnit = `mm[Hg]`; + valueQuantityCode = `mm[Hg]`; + } + else if (type_observation === "diastolik") { + objekId = 7; + category_code = `vital-signs`; + category_display = `Vital Signs`; + code = `8462-4`; + code_display = `Diastolic blood pressure`; + valueQuantityUnit = `mm[Hg]`; + valueQuantityCode = `mm[Hg]`; + } + else if (type_observation === "suhu_tubuh") { + objekId = 13; + category_code = `vital-signs`; + category_display = `Vital Signs`; + code = `8310-5`; + code_display = `Body temperature`; + valueQuantityUnit = `Cel`; + valueQuantityCode = `Cel`; + } + else if (type_observation === "nadi") { + objekId = 12; + category_code = `vital-signs`; + category_display = `Vital Signs`; + code = `8867-4`; + code_display = `Heart rate`; + valueQuantityUnit = `{beats}/min`; + valueQuantityCode = `{beats}/min`; + } + else if (type_observation === "pernapasan") { + objekId = 14; + category_code = `vital-signs`; + category_display = `Vital Signs`; + code = `9279-1`; + code_display = `Respiratory rate`; + valueQuantityUnit = `breaths/min`; + valueQuantityCode = `/min`; + } + const jobObservation = yield (0, pelayanan_rawat_jalan_repository_1.getJobObservation)(limit, objekId); + let dataObservation = []; + if (jobObservation.length < 1) { + return { + message: "Tidak ada data", + code: 200, + }; + } + else { + dataObservation = yield Promise.all(jobObservation.map((item) => __awaiter(void 0, void 0, void 0, function* () { + const emrDetailId = item.emr_detail_id; + const tglEmr = item.input_time; + const payload = { + resourceType: "Observation", + status: "final", + category: [ + { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/observation-category", + code: `${category_code}`, + display: `${category_display}`, + }, + ], + }, + ], + code: { + coding: [ + { + system: "http://loinc.org", + code: `${code}`, + display: `${code_display}`, + }, + ], + }, + subject: { + reference: `Patient/${item.patient_ihs_id}`, + display: `${item.nama_pasien}`, + }, + encounter: { + reference: `Encounter/${item.encounter_id}`, + }, + effectiveDateTime: `${tglEmr + .toISOString() + .replace(".000Z", "+00:00")}`, + issued: `${tglEmr + .toISOString() + .replace(".000Z", "+00:00")}`, + performer: [ + { + reference: `Practitioner/${item.practitioner_ihs_id}`, + display: `${item.nama_pegawai}`, + }, + ], + valueQuantity: { + value: parseInt(item.value, 10), + unit: `${valueQuantityUnit}`, + system: "http://unitsofmeasure.org", + code: `${valueQuantityCode}`, + }, + }; + const dataJob = { + endpoint_name: "observation", + status: 1, + method: "POST", + url: "/Observation", + key_simrs: emrDetailId.toString(), + payload: payload, + }; + const checkObservationSatSet = yield (0, resources_repository_1.insertJobData)(dataJob); + if (!checkObservationSatSet) { + return { + payload: payload, + emr_detail_id: emrDetailId.toString(), + status: "failed", + }; + } + else { + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusEmrDetail)({ + emr_detail_id: parseInt(emrDetailId, 10), + status_satu_sehat: 1, + }); + const getAdmissionId = yield (0, pelayanan_rawat_jalan_repository_1.getAdmissionIdByEncounterId)(item.encounter_id); + const insertAdmissionObservation = yield (0, pelayanan_rawat_jalan_repository_1.insertDataEmrDetailObservationSatSet)({ + admission_id: getAdmissionId === null || getAdmissionId === void 0 ? void 0 : getAdmissionId.id, + emr_detail_id: parseInt(emrDetailId, 10), + value: item.value, + type: item.variabel, + }); + return { + payload: payload, + emr_detail_id: emrDetailId.toString(), + status: "success", + }; + } + }))); + } + return { + message: "OK", + code: 200, + data: dataObservation, + }; +}); +exports.generateJobObservationService = generateJobObservationService; +const generateJobConditionService = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const jobCondition = yield (0, pelayanan_rawat_jalan_repository_1.getJobCondition)(limit); + let dataCondition = []; + if (jobCondition.length < 1) { + return { + message: "Tidak ada data", + code: 200, + }; + } + else { + dataCondition = yield Promise.all(jobCondition.map((item) => __awaiter(void 0, void 0, void 0, function* () { + const emrDetailId = item.emr_detail_id; + const tglEmr = item.input_time; + const tglLokal = yield (0, middlewares_1.formatTanggalLokal)(tglEmr); + const payload = { + resourceType: "Condition", + clinicalStatus: { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/condition-clinical", + code: "active", + display: "Active", + }, + ], + }, + category: [ + { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/condition-category", + code: "encounter-diagnosis", + display: "Encounter Diagnosis", + }, + ], + }, + ], + code: { + coding: [ + { + system: "http://hl7.org/fhir/sid/icd-10", + code: item.kode_diagnosa, + display: item.nama_diagnosa, + }, + ], + }, + subject: { + reference: `Patient/${item.patient_ihs_id}`, + display: `Kunjungan ${item.nama_pasien} di hari ${tglLokal}`, + }, + encounter: { + reference: `Encounter/${item.encounter_id}`, + }, + onsetDateTime: `${tglEmr + .toISOString() + .replace(".000Z", "+00:00")}`, + recordedDate: `${tglEmr + .toISOString() + .replace(".000Z", "+00:00")}`, + }; + const dataJob = { + endpoint_name: "condition", + status: 1, + method: "POST", + url: "/Condition", + key_simrs: emrDetailId.toString(), + payload: payload, + }; + const checkConditionSatSet = yield (0, resources_repository_1.insertJobData)(dataJob); + if (!checkConditionSatSet) { + return { + payload: payload, + emr_detail_id: emrDetailId.toString(), + status: "failed", + }; + } + else { + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusEmrDetail)({ + emr_detail_id: parseInt(emrDetailId, 10), + status_satu_sehat: 1, + }); + const getAdmissionId = yield (0, pelayanan_rawat_jalan_repository_1.getAdmissionIdByEncounterId)(item.encounter_id); + const insertDischargeDiagnosis = yield (0, pelayanan_rawat_jalan_repository_1.insertDataEmrDetailConditionSatSet)({ + admission_id: getAdmissionId === null || getAdmissionId === void 0 ? void 0 : getAdmissionId.id, + diag_code: item.kode_diagnosa, + diag_status: item.variabel, + diag_label: item.nama_diagnosa, + emr_detail_id: parseInt(emrDetailId, 10), + }); + return { + payload: payload, + emr_detail_id: emrDetailId.toString(), + status: "success", + }; + } + }))); + } + return { + message: "OK", + code: 200, + data: dataCondition, + }; +}); +exports.generateJobConditionService = generateJobConditionService; diff --git a/backend/dist/api/satu-sehat/pelayanan_rajal/condition/condition.controller.js b/backend/dist/api/satu-sehat/pelayanan_rajal/condition/condition.controller.js new file mode 100644 index 0000000..728fce8 --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan_rajal/condition/condition.controller.js @@ -0,0 +1,31 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const condition_service_1 = require("./condition.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/send-condition/limit/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = req.params.limit; + const sendCondition = yield (0, condition_service_1.sendConditionService)(limit); + res.status(200).json({ + metadata: { + code: 200, + msg: "Pengerjaan Selesai!", + }, + response: sendCondition, + }); + } + catch (err) { + next(err); + } +})); diff --git a/backend/dist/api/satu-sehat/pelayanan_rajal/condition/condition.repository.js b/backend/dist/api/satu-sehat/pelayanan_rajal/condition/condition.repository.js new file mode 100644 index 0000000..8847be7 --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan_rajal/condition/condition.repository.js @@ -0,0 +1,90 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.updateInsertIdConditionRepo = exports.getDataCondition = void 0; +const db_1 = require("./../../../../db"); +const database_handler_1 = require("./../../../../db/database.handler"); +const time_1 = require("./../../../../middlewares/time"); +const getDataCondition = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const getDataPasien = yield db_1.prismaDb1.$queryRaw ` + select + registrasi.registrasi_id Registration_ID, + registrasi.tgl_masuk, + pasien.nama_pasien Patient_Name, + resources_patient.key_satu_sehat Patient_ID, + bagian.nama_bagian, + transaction_satu_sehat.key_satu_sehat Encounter_ID, + emr_detail.emr_detail_id, + emr_detail.objek_id, + emr_detail.input_time input_time_emr, + emr_detail.value, + icd.kode_diagnosa, + icd.nama_diagnosa + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is null + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + and bagian.referensi_bagian in (1, 313) + inner join pasien on + registrasi.pasien_id = pasien.pasien_id + inner join resources resources_patient on + pasien.pasien_id = resources_patient.key_simrs + and resources_patient.resources_type = 'Patient' + and resources_patient.key_satu_sehat <> '0' + inner join emr on + registrasi.registrasi_id = emr.registrasi_id + and emr.status_batal is null + and emr.form_id = 3 + inner join emr_detail on + emr.emr_id = emr_detail.emr_id + and emr_detail.variabel = 'primary' + and emr_detail.objek_id in (42) + and emr_detail.status_batal is null + inner join transaction_satu_sehat on + registrasi.registrasi_id = transaction_satu_sehat.key_simrs + and transaction_satu_sehat.transaction_type = 'Encounter' + inner join icd on + emr_detail.value::int = icd.icd_id + left outer join transaction_satu_sehat transaction_satu_sehat_condition on + emr_detail.emr_detail_id = transaction_satu_sehat_condition.key_simrs + where + registrasi.status_batal is null + and registrasi.tgl_masuk::date = now()::date + and transaction_satu_sehat.key_satu_sehat is not null + and transaction_satu_sehat_condition.transaction_satu_sehat_id is null + limit ${parseInt(limit, 10)}; + `; + return getDataPasien; +}); +exports.getDataCondition = getDataCondition; +const updateInsertIdConditionRepo = (registrasi_id, payload, response, id, type, gagal = null) => __awaiter(void 0, void 0, void 0, function* () { + const transaction_satu_sehatId = yield (0, database_handler_1.generateMaxDb1)("max_transaction_satu_sehat_idx", "transaction_satu_sehat_id"); + let data = { + transaction_satu_sehat_id: transaction_satu_sehatId, + input_time: (0, time_1.dateNow)(), + input_user_id: 1, + payload: payload, + key_simrs: registrasi_id, + key_satu_sehat: id, + transaction_type: type, + response: response, + }; + if (gagal === 1) { + data.status = 1; + } + const insertRujukan = yield db_1.prismaDb1.transaction_satu_sehat.create({ + data, + }); +}); +exports.updateInsertIdConditionRepo = updateInsertIdConditionRepo; diff --git a/backend/dist/api/satu-sehat/pelayanan_rajal/condition/condition.service.js b/backend/dist/api/satu-sehat/pelayanan_rajal/condition/condition.service.js new file mode 100644 index 0000000..d10f735 --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan_rajal/condition/condition.service.js @@ -0,0 +1,100 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.sendConditionService = void 0; +const config_1 = require("../../../../utils/config"); +const generate_token_service_1 = require("../../generate-token/generate-token.service"); +const condition_repository_1 = require("./condition.repository"); +const axiosClient_1 = require("../../../../utils/axiosClient"); +const date_fns_tz_1 = require("date-fns-tz"); +const date = new Date(); +const timeZone = config_1.environment.timezone; +const formattedUtcDate = new Date((0, date_fns_tz_1.format)(date, "yyyy-MM-dd HH:mm:ss", { timeZone }) + " UTC"); +const baseUrl = config_1.environment.satusehat.url_base; +const orgId = config_1.environment.satusehat.org_id; +const sendConditionService = (limit) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_a = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _a === void 0 ? void 0 : _a.access_token; + const getDataConditionReady = yield (0, condition_repository_1.getDataCondition)(limit); + const resultPush = []; + if (getDataConditionReady.length > 0) { + const promises = getDataConditionReady.map((element) => __awaiter(void 0, void 0, void 0, function* () { + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Condition`; + const method = "POST"; + const tglLayanan = element.input_time_emr; + const payload = { + resourceType: "Condition", + clinicalStatus: { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/condition-clinical", + code: "active", + display: "Active", + }, + ], + }, + category: [ + { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/condition-category", + code: "encounter-diagnosis", + display: "Encounter Diagnosis", + }, + ], + }, + ], + code: { + coding: [ + { + system: "http://hl7.org/fhir/sid/icd-10", + code: `${element.kode_diagnosa}`, + display: `${element.nama_diagnosa}`, + }, + ], + }, + subject: { + reference: `Patient/${element.patient_id}`, + display: `${element.patient_name}`, + }, + encounter: { + reference: `Encounter/${element.encounter_id}`, + }, + onsetDateTime: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + recordedDate: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + }; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + if (response.status === 201) { + const updateInsertIdPatient = (0, condition_repository_1.updateInsertIdConditionRepo)(element.emr_detail_id, payload, response.data, response.data.id, response.data.resourceType); + resultPush.push(Object.assign(Object.assign({}, element), { status: "sukses" })); + } + else { + const updateInsertIdPatient = (0, condition_repository_1.updateInsertIdConditionRepo)(element.emr_detail_id, payload, response.data, "0", "Condition", 1); + resultPush.push(Object.assign(Object.assign({}, element), { status: "gagal", response: response.data })); + } + })); + yield Promise.all(promises); + } + return resultPush; +}); +exports.sendConditionService = sendConditionService; diff --git a/backend/dist/api/satu-sehat/pelayanan_rajal/encounter/encounter.controller.js b/backend/dist/api/satu-sehat/pelayanan_rajal/encounter/encounter.controller.js new file mode 100644 index 0000000..5c4ad21 --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan_rajal/encounter/encounter.controller.js @@ -0,0 +1,109 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const encounter_service_1 = require("./encounter.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/by-id/:id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const id = req.params.id; + const getEncounter = yield (0, encounter_service_1.getEncounterIdService)(id); + if (getEncounter.status === 200) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + id: getEncounter.data.id, + resources_type: getEncounter.data.resourceType, + raw_response: getEncounter.data, + }, + }); + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Data tidak tersedia!", + }, + response: getEncounter.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/by-subject/:subject", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const subject = req.params.subject; + const getEncounter = yield (0, encounter_service_1.getEncounterSubjectService)(subject); + if (getEncounter.status === 200) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + total: getEncounter.data.total, + entry: getEncounter.data.entry, + raw_response: getEncounter.data, + }, + }); + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Data tidak tersedia!", + }, + response: getEncounter.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/send-encounter/limit/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = req.params.limit; + const sendEncounter = yield (0, encounter_service_1.sendEncounterService)(limit); + res.status(200).json({ + metadata: { + code: 200, + msg: "Pengerjaan Selesai!", + }, + response: sendEncounter, + }); + } + catch (err) { + next(err); + } +})); +exports.router.get("/send-encounter/registrasi_id/:registrasi_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const registrasi_id = req.params.registrasi_id; + const sendEncounter = yield (0, encounter_service_1.sendEncounterRegistrasiService)(registrasi_id); + res.status(200).json({ + metadata: { + code: 200, + msg: "Pengerjaan Selesai!", + }, + response: sendEncounter, + }); + } + catch (err) { + next(err); + } +})); diff --git a/backend/dist/api/satu-sehat/pelayanan_rajal/encounter/encounter.repository.js b/backend/dist/api/satu-sehat/pelayanan_rajal/encounter/encounter.repository.js new file mode 100644 index 0000000..1555a43 --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan_rajal/encounter/encounter.repository.js @@ -0,0 +1,97 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.updateInsertIdEncounterRepo = exports.getDataEncounter = void 0; +const db_1 = require("./../../../../db"); +const database_handler_1 = require("./../../../../db/database.handler"); +const time_1 = require("./../../../../middlewares/time"); +const getDataEncounter = (limit, registrasi_id = "") => __awaiter(void 0, void 0, void 0, function* () { + let queryRegistrasi; + let queryDate; + if (registrasi_id) { + queryDate = ""; + queryRegistrasi = `AND registrasi.registrasi_id = ${parseInt(registrasi_id, 10)}`; + } + else { + queryDate = `AND registrasi.tgl_masuk::date = now()::date`; + queryRegistrasi = ""; + } + const getDataPasien = `select + distinct + registrasi.registrasi_id Registration_ID, + registrasi_urut.tgl_urut, + pasien.nama_pasien Patient_Name, + resources_patient.key_satu_sehat Patient_ID, + resources_practitioner.key_satu_sehat Practitioner_ID, + pegawai.nama_pegawai Practitioner_Name, + resources_location.key_satu_sehat Location_Poli_id, + bagian.nama_bagian Location_Poli_Name + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is null + inner join registrasi_urut on + registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id + and registrasi_urut.status_batal is null + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + and bagian.referensi_bagian in (1, 313) + inner join pegawai on + registrasi_urut.pegawai_id = pegawai.pegawai_id + inner join pasien on + registrasi.pasien_id = pasien.pasien_id + inner join resources resources_patient on + pasien.pasien_id = resources_patient.key_simrs + and resources_patient.resources_type = 'Patient' + and resources_patient.key_satu_sehat <> '0' + inner join resources resources_practitioner on + pegawai.pegawai_id = resources_practitioner.key_simrs + and resources_practitioner.resources_type = 'Practitioner' + inner join resources resources_location on + bagian.bagian_id = resources_location.key_simrs + and resources_location.resources_type = 'Location' + inner join emr on + registrasi.registrasi_id = emr.registrasi_id + and emr.status_batal is null + and emr.form_id = 3 + left outer join transaction_satu_sehat on + registrasi.registrasi_id = transaction_satu_sehat.key_simrs + where + registrasi.status_batal is null + and transaction_satu_sehat.transaction_satu_sehat_id is null + ${queryDate} + ${queryRegistrasi} + limit ${parseInt(limit, 10)};`; + const getDataPasienNew = yield db_1.prismaDb1.$queryRawUnsafe(getDataPasien); + return getDataPasienNew; +}); +exports.getDataEncounter = getDataEncounter; +const updateInsertIdEncounterRepo = (registrasi_id, payload, response, id, type, gagal = null) => __awaiter(void 0, void 0, void 0, function* () { + const transaction_satu_sehatId = yield (0, database_handler_1.generateMaxDb1)("max_transaction_satu_sehat_idx", "transaction_satu_sehat_id"); + let data = { + transaction_satu_sehat_id: transaction_satu_sehatId, + input_time: (0, time_1.dateNow)(), + input_user_id: 1, + payload: payload, + key_simrs: registrasi_id, + key_satu_sehat: id, + transaction_type: type, + response: response, + }; + if (gagal === 1) { + data.status = 1; + } + const insertRujukan = yield db_1.prismaDb1.transaction_satu_sehat.create({ + data, + }); +}); +exports.updateInsertIdEncounterRepo = updateInsertIdEncounterRepo; diff --git a/backend/dist/api/satu-sehat/pelayanan_rajal/encounter/encounter.service.js b/backend/dist/api/satu-sehat/pelayanan_rajal/encounter/encounter.service.js new file mode 100644 index 0000000..f6492fc --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan_rajal/encounter/encounter.service.js @@ -0,0 +1,324 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.sendEncounterRegistrasiService = exports.getEncounterSubjectService = exports.getEncounterIdService = exports.sendEncounterService = void 0; +const config_1 = require("../../../../utils/config"); +const generate_token_service_1 = require("../../generate-token/generate-token.service"); +const encounter_repository_1 = require("./encounter.repository"); +const axiosClient_1 = require("../../../../utils/axiosClient"); +const date_fns_tz_1 = require("date-fns-tz"); +const date = new Date(); +const timeZone = config_1.environment.timezone; +const formattedUtcDate = new Date((0, date_fns_tz_1.format)(date, "yyyy-MM-dd HH:mm:ss", { timeZone }) + " UTC"); +const baseUrl = config_1.environment.satusehat.url_base; +const orgId = config_1.environment.satusehat.org_id; +const getEncounterIdService = (id) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_a = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _a === void 0 ? void 0 : _a.access_token; + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Encounter/${id}`; + const method = "GET"; + const payload = null; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + return response; +}); +exports.getEncounterIdService = getEncounterIdService; +const getEncounterSubjectService = (subject) => __awaiter(void 0, void 0, void 0, function* () { + var _b; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_b = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _b === void 0 ? void 0 : _b.access_token; + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Encounter?subject=${subject}`; + const method = "GET"; + const payload = null; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + return response; +}); +exports.getEncounterSubjectService = getEncounterSubjectService; +const sendEncounterService = (limit) => __awaiter(void 0, void 0, void 0, function* () { + var _c; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_c = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _c === void 0 ? void 0 : _c.access_token; + const getDataEncounterReady = yield (0, encounter_repository_1.getDataEncounter)(limit); + const resultPush = []; + if (getDataEncounterReady.length > 0) { + const promises = getDataEncounterReady.map((element) => __awaiter(void 0, void 0, void 0, function* () { + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Encounter`; + const method = "POST"; + const tglLayanan = element.tgl_urut; + const payload = { + resourceType: "Encounter", + identifier: [ + { + system: `http://sys-ids.kemkes.go.id/encounter/${orgId}`, + value: `${element.registration_id}`, + }, + ], + status: "arrived", + class: { + system: "http://terminology.hl7.org/CodeSystem/v3-ActCode", + code: "AMB", + display: "ambulatory", + }, + subject: { + reference: `Patient/${element.patient_id}`, + display: `${element.patient_name}`, + }, + participant: [ + { + type: [ + { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + code: "ATND", + display: "attender", + }, + ], + }, + ], + individual: { + reference: `Practitioner/${element.practitioner_id}`, + display: `${element.practitioner_name}`, + }, + }, + ], + period: { + start: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + }, + location: [ + { + location: { + reference: `Location/${element.location_poli_id}`, + display: `${element.location_poli_name}`, + }, + period: { + start: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + }, + extension: [ + { + url: "https://fhir.kemkes.go.id/r4/StructureDefinition/ServiceClass", + extension: [ + { + url: "value", + valueCodeableConcept: { + coding: [ + { + system: "http://terminology.kemkes.go.id/CodeSystem/locationServiceClass-Outpatient", + code: "reguler", + display: "Kelas Reguler", + }, + ], + }, + }, + { + url: "upgradeClassIndicator", + valueCodeableConcept: { + coding: [ + { + system: "http://terminology.kemkes.go.id/CodeSystem/locationUpgradeClass", + code: "kelas-tetap", + display: "Kelas Tetap Perawatan", + }, + ], + }, + }, + ], + }, + ], + }, + ], + statusHistory: [ + { + status: "arrived", + period: { + start: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + }, + }, + ], + serviceProvider: { + reference: `Organization/${orgId}`, + }, + }; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + if (response.status === 201) { + const updateInsertIdPatient = (0, encounter_repository_1.updateInsertIdEncounterRepo)(element.registration_id, payload, response.data, response.data.id, response.data.resourceType); + resultPush.push(Object.assign(Object.assign({}, element), { status: "sukses" })); + } + else { + const updateInsertIdPatient = (0, encounter_repository_1.updateInsertIdEncounterRepo)(element.registration_id, payload, response.data, "0", "Encounter", 1); + resultPush.push(Object.assign(Object.assign({}, element), { status: "gagal", response: response.data })); + } + })); + yield Promise.all(promises); + } + return resultPush; +}); +exports.sendEncounterService = sendEncounterService; +const sendEncounterRegistrasiService = (registrasi_id) => __awaiter(void 0, void 0, void 0, function* () { + var _d; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_d = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _d === void 0 ? void 0 : _d.access_token; + const getDataEncounterReady = yield (0, encounter_repository_1.getDataEncounter)('1', registrasi_id); + const resultPush = []; + if (getDataEncounterReady.length > 0) { + const promises = getDataEncounterReady.map((element) => __awaiter(void 0, void 0, void 0, function* () { + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Encounter`; + const method = "POST"; + const tglLayanan = element.tgl_urut; + const payload = { + resourceType: "Encounter", + identifier: [ + { + system: `http://sys-ids.kemkes.go.id/encounter/${orgId}`, + value: `${element.registration_id}`, + }, + ], + status: "arrived", + class: { + system: "http://terminology.hl7.org/CodeSystem/v3-ActCode", + code: "AMB", + display: "ambulatory", + }, + subject: { + reference: `Patient/${element.patient_id}`, + display: `${element.patient_name}`, + }, + participant: [ + { + type: [ + { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + code: "ATND", + display: "attender", + }, + ], + }, + ], + individual: { + reference: `Practitioner/${element.practitioner_id}`, + display: `${element.practitioner_name}`, + }, + }, + ], + period: { + start: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + }, + location: [ + { + location: { + reference: `Location/${element.location_poli_id}`, + display: `${element.location_poli_name}`, + }, + period: { + start: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + }, + extension: [ + { + url: "https://fhir.kemkes.go.id/r4/StructureDefinition/ServiceClass", + extension: [ + { + url: "value", + valueCodeableConcept: { + coding: [ + { + system: "http://terminology.kemkes.go.id/CodeSystem/locationServiceClass-Outpatient", + code: "reguler", + display: "Kelas Reguler", + }, + ], + }, + }, + { + url: "upgradeClassIndicator", + valueCodeableConcept: { + coding: [ + { + system: "http://terminology.kemkes.go.id/CodeSystem/locationUpgradeClass", + code: "kelas-tetap", + display: "Kelas Tetap Perawatan", + }, + ], + }, + }, + ], + }, + ], + }, + ], + statusHistory: [ + { + status: "arrived", + period: { + start: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + }, + }, + ], + serviceProvider: { + reference: `Organization/${orgId}`, + }, + }; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + if (response.status === 201) { + const updateInsertIdPatient = (0, encounter_repository_1.updateInsertIdEncounterRepo)(element.registration_id, payload, response.data, response.data.id, response.data.resourceType); + resultPush.push(Object.assign(Object.assign({}, element), { status: "sukses" })); + } + else { + const updateInsertIdPatient = (0, encounter_repository_1.updateInsertIdEncounterRepo)(element.registration_id, payload, response.data, "0", "Encounter", 1); + resultPush.push(Object.assign(Object.assign({}, element), { status: "gagal", response: response.data })); + } + })); + yield Promise.all(promises); + } + return resultPush; +}); +exports.sendEncounterRegistrasiService = sendEncounterRegistrasiService; diff --git a/backend/dist/api/satu-sehat/pelayanan_rajal/index.js b/backend/dist/api/satu-sehat/pelayanan_rajal/index.js new file mode 100644 index 0000000..e65a554 --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan_rajal/index.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const encounter_controller_1 = require("./encounter/encounter.controller"); +const observation_controller_1 = require("./observation/observation.controller"); +const condition_controller_1 = require("./condition/condition.controller"); +const router = (0, express_1.Router)(); +exports.router = router; +router.use("/encounter", encounter_controller_1.router); +router.use("/observation", observation_controller_1.router); +router.use("/condition", condition_controller_1.router); diff --git a/backend/dist/api/satu-sehat/pelayanan_rajal/observation/observation.controller.js b/backend/dist/api/satu-sehat/pelayanan_rajal/observation/observation.controller.js new file mode 100644 index 0000000..298104e --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan_rajal/observation/observation.controller.js @@ -0,0 +1,31 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const observation_service_1 = require("./observation.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/send-observation/limit/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = req.params.limit; + const sendObservation = yield (0, observation_service_1.sendObservationService)(limit); + res.status(200).json({ + metadata: { + code: 200, + msg: "Pengerjaan Selesai!", + }, + response: sendObservation, + }); + } + catch (err) { + next(err); + } +})); diff --git a/backend/dist/api/satu-sehat/pelayanan_rajal/observation/observation.repository.js b/backend/dist/api/satu-sehat/pelayanan_rajal/observation/observation.repository.js new file mode 100644 index 0000000..a093962 --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan_rajal/observation/observation.repository.js @@ -0,0 +1,101 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.updateInsertIdObservationRepo = exports.getDataObservation = void 0; +const db_1 = require("./../../../../db"); +const database_handler_1 = require("./../../../../db/database.handler"); +const time_1 = require("./../../../../middlewares/time"); +const getDataObservation = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const getDataPasien = yield db_1.prismaDb1.$queryRaw ` + select + distinct + registrasi.registrasi_id Registration_ID, + registrasi.tgl_masuk, + pasien.nama_pasien Patient_Name, + resources_patient.key_satu_sehat Patient_ID, + resources_practitioner.key_satu_sehat Practitioner_ID, + pegawai.nama_pegawai Practitioner_Name, + resources_location.key_satu_sehat Location_Poli_id, + bagian.nama_bagian, + transaction_satu_sehat.key_satu_sehat Encounter_ID, + emr_detail.emr_detail_id, + emr_detail.objek_id, + emr_detail.input_time input_time_emr, + emr_detail.value + from + registrasi + inner join registrasi_detail on + registrasi.registrasi_id = registrasi_detail.registrasi_id + and registrasi_detail.status_batal is null + inner join registrasi_urut on + registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id + and registrasi_urut.status_batal is null + inner join bagian on + registrasi_detail.bagian_id = bagian.bagian_id + and bagian.referensi_bagian in (1, 313) + inner join pegawai on + registrasi_urut.pegawai_id = pegawai.pegawai_id + inner join pasien on + registrasi.pasien_id = pasien.pasien_id + inner join resources resources_patient on + pasien.pasien_id = resources_patient.key_simrs + and resources_patient.resources_type = 'Patient' + and resources_patient.key_satu_sehat <> '0' + inner join resources resources_practitioner on + pegawai.pegawai_id = resources_practitioner.key_simrs + and resources_practitioner.resources_type = 'Practitioner' + inner join resources resources_location on + bagian.bagian_id = resources_location.key_simrs + and resources_location.resources_type = 'Location' + inner join emr on + registrasi.registrasi_id = emr.registrasi_id + and emr.status_batal is null + and emr.form_id in (6, 36) + inner join emr_detail on + emr.emr_id = emr_detail.emr_id + and emr_detail.objek_id in (6, 7, 13, 12, 14) + and emr_detail.status_batal is null + inner join transaction_satu_sehat on + registrasi.registrasi_id = transaction_satu_sehat.key_simrs + and transaction_satu_sehat.transaction_type = 'Encounter' + left outer join transaction_satu_sehat transaction_satu_sehat_observation on + emr_detail.emr_detail_id = transaction_satu_sehat_observation.key_simrs + where + registrasi.status_batal is null + and registrasi.tgl_masuk::date = now()::date + and transaction_satu_sehat.key_satu_sehat is not null + and transaction_satu_sehat.key_satu_sehat <> '0' + and transaction_satu_sehat_observation.transaction_satu_sehat_id is null + limit ${parseInt(limit, 10)}; + `; + return getDataPasien; +}); +exports.getDataObservation = getDataObservation; +const updateInsertIdObservationRepo = (emr_detail_id, payload, response, id, type, gagal = null) => __awaiter(void 0, void 0, void 0, function* () { + const transaction_satu_sehatId = yield (0, database_handler_1.generateMaxDb1)("max_transaction_satu_sehat_idx", "transaction_satu_sehat_id"); + let data = { + transaction_satu_sehat_id: transaction_satu_sehatId, + input_time: (0, time_1.dateNow)(), + input_user_id: 1, + payload: payload, + key_simrs: emr_detail_id, + key_satu_sehat: id, + transaction_type: type, + response: response, + }; + if (gagal === 1) { + data.status = 1; + } + const insertRujukan = yield db_1.prismaDb1.transaction_satu_sehat.create({ + data, + }); +}); +exports.updateInsertIdObservationRepo = updateInsertIdObservationRepo; diff --git a/backend/dist/api/satu-sehat/pelayanan_rajal/observation/observation.service.js b/backend/dist/api/satu-sehat/pelayanan_rajal/observation/observation.service.js new file mode 100644 index 0000000..bdc8f0b --- /dev/null +++ b/backend/dist/api/satu-sehat/pelayanan_rajal/observation/observation.service.js @@ -0,0 +1,138 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.sendObservationService = void 0; +const config_1 = require("../../../../utils/config"); +const generate_token_service_1 = require("../../generate-token/generate-token.service"); +const observation_repository_1 = require("./observation.repository"); +const axiosClient_1 = require("../../../../utils/axiosClient"); +const date_fns_tz_1 = require("date-fns-tz"); +const date = new Date(); +const timeZone = config_1.environment.timezone; +const formattedUtcDate = new Date((0, date_fns_tz_1.format)(date, "yyyy-MM-dd HH:mm:ss", { timeZone }) + " UTC"); +const baseUrl = config_1.environment.satusehat.url_base; +const orgId = config_1.environment.satusehat.org_id; +const sendObservationService = (limit) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_a = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _a === void 0 ? void 0 : _a.access_token; + const getDataObservationReady = yield (0, observation_repository_1.getDataObservation)(limit); + const resultPush = []; + if (getDataObservationReady.length > 0) { + const promises = getDataObservationReady.map((element) => __awaiter(void 0, void 0, void 0, function* () { + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Observation`; + const method = "POST"; + const tglLayanan = element.input_time_emr; + let code = ""; + let code_display = ""; + let valueQuantityUnit = ""; + let valueQuantityCode = ""; + if (element.objek_id === 6) { + code = `8480-6`; + code_display = `Systolic Blood Pressure`; + valueQuantityUnit = `mm[Hg]`; + valueQuantityCode = `mm[Hg]`; + } + else if (element.objek_id === 7) { + code = `8462-4`; + code_display = `Diastolic blood pressure`; + valueQuantityUnit = `mm[Hg]`; + valueQuantityCode = `mm[Hg]`; + } + else if (element.objek_id === 13) { + code = `8310-5`; + code_display = `Body temperature`; + valueQuantityUnit = `Cel`; + valueQuantityCode = `Cel`; + } + else if (element.objek_id === 12) { + code = `8867-4`; + code_display = `Heart rate`; + valueQuantityUnit = `{beats}/min`; + valueQuantityCode = `{beats}/min`; + } + else if (element.objek_id === 14) { + code = `9279-1`; + code_display = `Respiratory rate`; + valueQuantityUnit = `breaths/min`; + valueQuantityCode = `/min`; + } + const payload = { + resourceType: "Observation", + status: "final", + category: [ + { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/observation-category", + code: "vital-signs", + display: "Vital Signs", + }, + ], + }, + ], + code: { + coding: [ + { + system: "http://loinc.org", + code: code, + display: code_display, + }, + ], + }, + subject: { + reference: `Patient/${element.patient_id}`, + display: `${element.patient_name}`, + }, + encounter: { + reference: `Encounter/${element.encounter_id}`, + }, + effectiveDateTime: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + issued: `${tglLayanan + .toISOString() + .replace(".000Z", "+00:00")}`, + performer: [ + { + reference: `Practitioner/${element.practitioner_id}`, + display: `${element.practitioner_name}`, + }, + ], + valueQuantity: { + value: parseInt(element.value, 10), + unit: valueQuantityUnit, + system: "http://unitsofmeasure.org", + code: valueQuantityCode, + }, + }; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + if (response.status === 201) { + const updateInsertIdPatient = (0, observation_repository_1.updateInsertIdObservationRepo)(element.emr_detail_id, payload, response.data, response.data.id, response.data.resourceType); + resultPush.push(Object.assign(Object.assign({}, element), { status: "sukses" })); + } + else { + const updateInsertIdPatient = (0, observation_repository_1.updateInsertIdObservationRepo)(element.emr_detail_id, payload, response.data, "0", "Observation", 1); + resultPush.push(Object.assign(Object.assign({}, element), { status: "gagal", response: response.data })); + } + })); + yield Promise.all(promises); + } + return resultPush; +}); +exports.sendObservationService = sendObservationService; diff --git a/backend/dist/api/satu-sehat/resources/resources.controller.js b/backend/dist/api/satu-sehat/resources/resources.controller.js new file mode 100644 index 0000000..1cbce5c --- /dev/null +++ b/backend/dist/api/satu-sehat/resources/resources.controller.js @@ -0,0 +1,512 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const resources_service_1 = require("./resources.service"); +const express_validator_1 = require("express-validator"); +exports.router = (0, express_1.Router)(); +exports.router.get("/create-job-pasien/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = parseInt(req.params.limit, 10); + const statusAntrean = yield (0, resources_service_1.createJobPasien)(limit); + if (statusAntrean) { + res.send({ + response: statusAntrean.data, + metadata: { + message: statusAntrean.message, + code: statusAntrean.code, + }, + }); + } + else { + res.status(200).json({ + response: "", + metadata: { + message: "Gagal", + code: 201, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/create-job-practitioner/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = parseInt(req.params.limit, 10); + const statusAntrean = yield (0, resources_service_1.createJobPractitioner)(limit); + if (statusAntrean) { + res.send({ + response: statusAntrean.data, + metadata: { + message: statusAntrean.message, + code: statusAntrean.code, + }, + }); + } + else { + res.status(200).json({ + response: "", + metadata: { + message: "Gagal", + code: 201, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/push-job/:nama_endpoint/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = parseInt(req.params.limit, 10); + const nama_endpoint = req.params.nama_endpoint; + const pushJob = yield (0, resources_service_1.pushJobService)(nama_endpoint, limit); + if (pushJob) { + res.send({ + response: pushJob.data, + metadata: { + message: pushJob.message, + code: pushJob.code, + }, + }); + } + else { + res.status(200).json({ + response: "", + metadata: { + message: "Gagal", + code: 201, + }, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/patient/nik/:nik", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const nik = req.params.nik; + const patientByNik = yield (0, resources_service_1.getPatientNikService)(nik); + if (patientByNik.status === 200) { + if (patientByNik.data.total === 0) { + res.status(200).json({ + metadata: { + code: 201, + msg: "Data tidak tersedia!", + }, + response: patientByNik.data, + }); + } + else { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + patient_ihs_id: patientByNik.data.entry[0].resource.id, + resources_type: patientByNik.data.entry[0].resource + .resourceType, + raw_response: patientByNik.data, + }, + }); + } + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Data tidak tersedia!", + }, + response: patientByNik.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/patient/send-all/limit/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = req.params.limit; + const patientByNik = yield (0, resources_service_1.getPatientSendAllService)(limit); + res.status(200).json({ + metadata: { + code: 200, + msg: "Pengerjaan Selesai!", + }, + response: patientByNik, + }); + } + catch (err) { + next(err); + } +})); +exports.router.get("/get-practitioner-nik/:nik", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const nik = req.params.nik; + const practitionerByNik = yield (0, resources_service_1.getPractitionerNikService)(nik); + if (practitionerByNik.status === 200) { + if (practitionerByNik.data.total === 0) { + res.status(200).json({ + metadata: { + code: 201, + msg: "Data tidak tersedia!", + }, + response: practitionerByNik.data, + }); + } + else { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + practitioner_ihs_id: practitionerByNik.data.entry[0].resource.id, + resources_type: practitionerByNik.data.entry[0].resource + .resourceType, + raw_response: practitionerByNik.data, + }, + }); + } + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Data tidak tersedia!", + }, + response: practitionerByNik.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/practitioner/nik/:nik", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const nik = req.params.nik; + const practitionerByNik = yield (0, resources_service_1.getPractitionerNikService)(nik); + if (practitionerByNik.status === 200) { + if (practitionerByNik.data.total === 0) { + res.status(200).json({ + metadata: { + code: 201, + msg: "Data tidak tersedia!", + }, + response: practitionerByNik.data, + }); + } + else { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + practitioner_ihs_id: practitionerByNik.data.entry[0].resource.id, + resources_type: practitionerByNik.data.entry[0].resource + .resourceType, + raw_response: practitionerByNik.data, + }, + }); + } + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Data tidak tersedia!", + }, + response: practitionerByNik.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/practitioner/send-all/limit/:limit", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const limit = req.params.limit; + const practitionerByNik = yield (0, resources_service_1.getPractitionerSendAllService)(limit); + res.status(200).json({ + metadata: { + code: 200, + msg: "Pengerjaan Selesai!", + }, + response: practitionerByNik, + }); + } + catch (err) { + next(err); + } +})); +exports.router.post("/organization", (0, express_validator_1.body)(["nama_bagian", "bagian_id"]).notEmpty().isString(), (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(201).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + try { + const data = req.body; + const createOrganization = yield (0, resources_service_1.createOrganizationService)(data); + if (createOrganization.status === 201) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + practitioner_ihs_id: createOrganization.id, + resources_type: createOrganization.resourceType, + raw_response: createOrganization.data, + }, + }); + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Operation failed!", + }, + response: createOrganization.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/organization/id/:organization_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(201).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + try { + const { organization_id } = req.params; + const getOrganization = yield (0, resources_service_1.getOrganizationIdService)(organization_id); + if (getOrganization.status === 200) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + raw_response: getOrganization.data, + }, + }); + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Operation failed!", + }, + response: getOrganization.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/organization/partOf/:organization_id?", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(201).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + try { + const { organization_id } = req.params; + const getOrganization = yield (0, resources_service_1.getOrganizationPartofService)(organization_id); + if (getOrganization.status === 200) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + raw_response: getOrganization.data, + }, + }); + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Operation failed!", + }, + response: getOrganization.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.post("/location", (0, express_validator_1.body)(["nama_bagian", "bagian_id", "organization_id"]).notEmpty().isString(), (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(201).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + try { + const data = req.body; + const createLocation = yield (0, resources_service_1.createLocationService)(data); + if (createLocation.status === 201) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + practitioner_ihs_id: createLocation.id, + resources_type: createLocation.resourceType, + raw_response: createLocation.data, + }, + }); + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Operation failed!", + }, + response: createLocation.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/location/id/:location_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(201).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + try { + const { location_id } = req.params; + const getLocation = yield (0, resources_service_1.getLocationIdService)(location_id); + if (getLocation.status === 200) { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: { + raw_response: getLocation.data, + }, + }); + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Operation failed!", + }, + response: getLocation.data, + }); + } + } + catch (err) { + next(err); + } +})); +exports.router.get("/kfa/kfa-name/:kfa_name", (0, express_validator_1.param)('kfa_name').notEmpty().isString().isLength({ min: 5 }), (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(201).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + try { + const kfa_name = req.params.kfa_name; + const resourcesKfa = yield (0, resources_service_1.getResourcesKfaService)(kfa_name); + if (resourcesKfa.status === 200) { + if (resourcesKfa.data.total === 0) { + res.status(200).json({ + metadata: { + code: 201, + msg: "Data tidak tersedia!", + }, + response: resourcesKfa.data, + }); + } + else { + res.status(200).json({ + metadata: { + code: 200, + msg: "Operation completed successfully!", + }, + response: resourcesKfa.data, + }); + } + } + else { + res.status(200).json({ + metadata: { + code: 201, + msg: "Data tidak tersedia!", + }, + response: resourcesKfa.data, + }); + } + } + catch (err) { + next(err); + } +})); diff --git a/backend/dist/api/satu-sehat/resources/resources.repository.js b/backend/dist/api/satu-sehat/resources/resources.repository.js new file mode 100644 index 0000000..cb6f120 --- /dev/null +++ b/backend/dist/api/satu-sehat/resources/resources.repository.js @@ -0,0 +1,333 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getDataKfa = exports.updateInsertIdPatientRepo = exports.getDataPatient = exports.updateInsertIdPractitionerRepo = exports.getDataPractitioner = exports.updateStatusPegawai = exports.getPractitionerSimrs = exports.getJob = exports.updateStatusPasien = exports.updateJobData = exports.insertJobData = exports.getPatientSimrs = exports.updateDataPractitionerSatSet = exports.insertDataPractitionerSatSet = exports.getPractitionerSatSet = exports.updateDataPatientSatSet = exports.insertDataPatientSatSet = exports.getPatientSatSet = void 0; +const db_1 = require("./../../../db"); +const database_handler_1 = require("./../../../db/database.handler"); +const time_1 = require("./../../../middlewares/time"); +const getPatientSimrs = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const patientSimrs = yield db_1.prismaDb1.pasien.findMany({ + where: { + id_satu_sehat: null, + ktp: { + not: null, + }, + status_satu_sehat: null, + }, + select: { + no_mr: true, + pasien_id: true, + ktp: true, + tgl_lahir: true, + nama_pasien: true, + jenis_kelamin: true, + }, + orderBy: { + no_mr: "asc", + }, + take: limit, + }); + return patientSimrs; +}); +exports.getPatientSimrs = getPatientSimrs; +const getPractitionerSimrs = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const practitionerSimrs = yield db_1.prismaDb1.pegawai.findMany({ + where: { + id_satu_sehat: null, + status_batal: null, + nik: { + not: null, + }, + }, + select: { + pegawai_id: true, + nama_pegawai: true, + nik: true, + }, + orderBy: { + pegawai_id: "asc", + }, + take: limit, + }); + return practitionerSimrs; +}); +exports.getPractitionerSimrs = getPractitionerSimrs; +const getPatientSatSet = (no_mr) => __awaiter(void 0, void 0, void 0, function* () { + const pasienSatSet = yield db_1.prismaDb2.patient.findFirst({ + where: { + no_mr, + }, + select: { + patient_ihs_id: true, + patient_name: true, + pasien_id: true, + }, + }); + return pasienSatSet; +}); +exports.getPatientSatSet = getPatientSatSet; +const getPractitionerSatSet = (pegawaiId) => __awaiter(void 0, void 0, void 0, function* () { + const practitionerSatSet = yield db_1.prismaDb2.practitioner.findFirst({ + where: { + pegawai_id: pegawaiId, + }, + select: { + practitioner_ihs_id: true, + practitioner_name: true, + id: true, + }, + }); + return practitionerSatSet; +}); +exports.getPractitionerSatSet = getPractitionerSatSet; +const insertDataPatientSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { + const patient = yield db_1.prismaDb2.patient.create({ + data: { + pasien_id: data.pasien_id, + patient_name: data.nama_pasien, + created_date: (0, time_1.dateNow)(), + birth_date: new Date(data.tgl_lahir), + nik: data.nik, + no_mr: data.no_mr, + }, + }); + return patient; +}); +exports.insertDataPatientSatSet = insertDataPatientSatSet; +const getDataKfa = (kfa_name) => __awaiter(void 0, void 0, void 0, function* () { + const kfa_data = yield db_1.prismaDb2.kfa_references.findMany({ + where: { + kfa_name: { + contains: kfa_name, + mode: "insensitive", + }, + }, + select: { + kfa_code: true, + kfa_name: true, + }, + }); + return kfa_data; +}); +exports.getDataKfa = getDataKfa; +const updateDataPatientSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { + const patient = yield db_1.prismaDb2.patient.update({ + where: { + pasien_id: data.pasien_id, + }, + data: { + patient_ihs_id: responseSatSet.entry[0].resource.id, + last_updated_date: (0, time_1.dateNow)(), + ihs_json_data: responseSatSet, + }, + }); + return patient; +}); +exports.updateDataPatientSatSet = updateDataPatientSatSet; +const insertDataPractitionerSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { + const idPractiitioner = yield (0, database_handler_1.generateMaxDb2)("max_practitioner_idx", "id"); + const practitioner = yield db_1.prismaDb2.practitioner.create({ + data: { + id: idPractiitioner, + practitioner_name: responseSatSet.entry[0].resource.name[0].text, + created_date: (0, time_1.dateNow)(), + birth_date: new Date(responseSatSet.entry[0].resource.birthDate), + gender: responseSatSet.entry[0].resource.gender, + practitioner_ihs_id: responseSatSet.entry[0].resource.id, + ihs_json_data: responseSatSet, + nik: data.nik, + pegawai_id: data.pegawai_id, + }, + }); + return practitioner; +}); +exports.insertDataPractitionerSatSet = insertDataPractitionerSatSet; +const updateDataPractitionerSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { + const patient = yield db_1.prismaDb2.practitioner.updateMany({ + where: { + id: data.id, + }, + data: { + practitioner_name: responseSatSet.entry[0].resource.name[0].text, + created_date: (0, time_1.dateNow)(), + birth_date: new Date(responseSatSet.entry[0].resource.birthDate), + gender: responseSatSet.entry[0].resource.gender, + practitioner_ihs_id: responseSatSet.entry[0].resource.id, + ihs_json_data: responseSatSet, + nik: data.nik, + pegawai_id: data.pegawai_id, + }, + }); + return patient; +}); +exports.updateDataPractitionerSatSet = updateDataPractitionerSatSet; +const insertJobData = (data) => __awaiter(void 0, void 0, void 0, function* () { + const idJob = yield (0, database_handler_1.generateMaxDb2)("max_job_idx", "id"); + const job = yield db_1.prismaDb2.job.create({ + data: { + id: idJob, + created_date: (0, time_1.dateNow)(), + endpoint_name: data.endpoint_name, + payload: data.payload, + status: data.status, + method: data.method, + url: data.url, + key_simrs: data.key_simrs, + }, + }); + return job; +}); +exports.insertJobData = insertJobData; +const updateJobData = (data) => __awaiter(void 0, void 0, void 0, function* () { + const job = yield db_1.prismaDb2.job.update({ + where: { + id: data.id, + }, + data: { + last_updated_date: (0, time_1.dateNow)(), + status: data.status, + response: data.response, + }, + }); + return job; +}); +exports.updateJobData = updateJobData; +const updateStatusPasien = (data) => __awaiter(void 0, void 0, void 0, function* () { + const updateStatus = yield db_1.prismaDb1.pasien.updateMany({ + where: { + no_mr: data.no_mr, + }, + data: { + status_satu_sehat: data.status_satu_sehat, + id_satu_sehat: data.id_satu_sehat, + }, + }); + return updateStatus; +}); +exports.updateStatusPasien = updateStatusPasien; +const updateStatusPegawai = (data) => __awaiter(void 0, void 0, void 0, function* () { + const updateStatus = yield db_1.prismaDb1.pegawai.update({ + where: { + pegawai_id: data.pegawai_id, + }, + data: { + id_satu_sehat: data.id_satu_sehat, + }, + }); + return updateStatus; +}); +exports.updateStatusPegawai = updateStatusPegawai; +const getJob = (endpoint_name, limit) => __awaiter(void 0, void 0, void 0, function* () { + const job = yield db_1.prismaDb2.job.findMany({ + where: { + status: { + in: [1, 3], + }, + endpoint_name: endpoint_name, + }, + select: { + id: true, + created_date: true, + endpoint_name: true, + payload: true, + status: true, + method: true, + url: true, + key_simrs: true, + }, + orderBy: [ + { + status: "asc", + }, + { + created_date: "asc", + }, + ], + take: limit, + }); + return job; +}); +exports.getJob = getJob; +const getDataPractitioner = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const getDataPegawai = yield db_1.prismaDb1.$queryRaw ` + SELECT + pegawai.pegawai_id, + pegawai.nik + FROM + pegawai + LEFT JOIN resources ON + resources.key_simrs = pegawai.pegawai_id + WHERE + pegawai.status_batal is null + AND pegawai.nik IS NOT NULL + AND resources.resources_id IS NULL + ORDER BY + pegawai.pegawai_id ASC + LIMIT ${parseInt(limit, 10)}; + `; + return getDataPegawai; +}); +exports.getDataPractitioner = getDataPractitioner; +const updateInsertIdPractitionerRepo = (pegawai_id, response, id, type) => __awaiter(void 0, void 0, void 0, function* () { + const resourcesId = yield (0, database_handler_1.generateMaxDb1)("max_resources_idx", "resources_id"); + const insertRujukan = yield db_1.prismaDb1.resources.create({ + data: { + resources_id: resourcesId, + input_time: (0, time_1.dateNow)(), + input_user_id: 1, + key_simrs: pegawai_id, + key_satu_sehat: id, + resources_type: type, + response: response, + }, + }); +}); +exports.updateInsertIdPractitionerRepo = updateInsertIdPractitionerRepo; +const getDataPatient = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const getDataPasien = yield db_1.prismaDb1.$queryRaw ` + SELECT + pasien.pasien_id, + TRIM(pasien.ktp) ktp + FROM + pasien + LEFT JOIN resources ON + resources.key_simrs = pasien.pasien_id + WHERE + pasien.status_batal is null + AND pasien.ktp IS NOT NULL + AND LENGTH(TRIM(pasien.ktp)) = 16 + AND resources.resources_id IS NULL + ORDER BY + pasien.pasien_id DESC + LIMIT ${parseInt(limit, 10)}; + `; + return getDataPasien; +}); +exports.getDataPatient = getDataPatient; +const updateInsertIdPatientRepo = (pasien_id, response, id, type, gagal = null) => __awaiter(void 0, void 0, void 0, function* () { + const resourcesId = yield (0, database_handler_1.generateMaxDb1)("max_resources_idx", "resources_id"); + let data = { + resources_id: resourcesId, + input_time: (0, time_1.dateNow)(), + input_user_id: 1, + key_simrs: pasien_id, + key_satu_sehat: id, + resources_type: type, + response: response, + }; + if (gagal === 1) { + data.status = 1; + } + const insertRujukan = yield db_1.prismaDb1.resources.create({ + data, + }); +}); +exports.updateInsertIdPatientRepo = updateInsertIdPatientRepo; diff --git a/backend/dist/api/satu-sehat/resources/resources.service.js b/backend/dist/api/satu-sehat/resources/resources.service.js new file mode 100644 index 0000000..f6a5670 --- /dev/null +++ b/backend/dist/api/satu-sehat/resources/resources.service.js @@ -0,0 +1,780 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getResourcesKfaService = exports.getPatientSendAllService = exports.getPractitionerSendAllService = exports.getLocationIdService = exports.createLocationService = exports.getOrganizationIdService = exports.getOrganizationPartofService = exports.createOrganizationService = exports.getPractitionerNikService = exports.getPatientNikService = exports.createJobPractitioner = exports.pushJobService = exports.createJobPasien = void 0; +const config_1 = require("../../../utils/config"); +const resources_repository_1 = require("./resources.repository"); +const generate_token_service_1 = require("../generate-token/generate-token.service"); +const axiosClient_1 = require("../../../utils/axiosClient"); +const date_fns_tz_1 = require("date-fns-tz"); +const pelayanan_rawat_jalan_repository_1 = require("../pelayanan-rawat-jalan/pelayanan-rawat-jalan.repository"); +const date = new Date(); +const timeZone = config_1.environment.timezone; +const formattedUtcDate = new Date((0, date_fns_tz_1.format)(date, "yyyy-MM-dd HH:mm:ss", { timeZone }) + " UTC"); +const baseUrl = config_1.environment.satusehat.url_base; +const orgId = config_1.environment.satusehat.org_id; +const createJobPasien = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const getDataPasien = yield (0, resources_repository_1.getPatientSimrs)(limit); + if (getDataPasien.length < 1) { + return { + message: "Tidak ada data", + code: 200, + }; + } + let dataPatient = yield Promise.all(getDataPasien.map((item) => __awaiter(void 0, void 0, void 0, function* () { + const dataJob = { + endpoint_name: "patient", + status: 1, + method: "GET", + url: `/Patient?identifier=https://fhir.kemkes.go.id/id/nik|${item.ktp}`, + key_simrs: item.no_mr, + }; + const checkPatientSatSet = yield (0, resources_repository_1.insertJobData)(dataJob); + if (!checkPatientSatSet) { + return { + no_mr: item.no_mr, + ktp: item.ktp, + birthdate: item.birthdate, + gender: item.gender, + status: "failed", + }; + } + else { + const updateStatus = yield (0, resources_repository_1.updateStatusPasien)({ + no_mr: item.no_mr, + status_satu_sehat: 1, + }); + const checkPatientSatSet = yield (0, resources_repository_1.getPatientSatSet)(item.no_mr); + if (!checkPatientSatSet) { + const insertPatient = yield (0, resources_repository_1.insertDataPatientSatSet)({ + pasien_id: item.pasien_id, + nama_pasien: item.nama_pasien, + tgl_lahir: item.tgl_lahir, + nik: item.ktp, + no_mr: item.no_mr, + }); + } + return { + no_mr: item.no_mr, + ktp: item.ktp, + birthdate: item.birthdate, + gender: item.gender, + status: "success", + }; + } + }))); + return { + data: dataPatient, + code: 200, + message: "success", + }; +}); +exports.createJobPasien = createJobPasien; +const createJobPractitioner = (limit) => __awaiter(void 0, void 0, void 0, function* () { + const getDataPractitioner = yield (0, resources_repository_1.getPractitionerSimrs)(limit); + if (getDataPractitioner.length < 1) { + return { + message: "Tidak ada data", + code: 200, + }; + } + let dataPractitioner = yield Promise.all(getDataPractitioner.map((item) => __awaiter(void 0, void 0, void 0, function* () { + let pegawaiId = item.pegawai_id; + const dataJob = { + endpoint_name: "practitioner", + status: 1, + method: "GET", + url: `/Practitioner?identifier=https://fhir.kemkes.go.id/id/nik|${item.nik}`, + key_simrs: pegawaiId.toString(), + }; + const checkPractitionerSatSet = yield (0, resources_repository_1.insertJobData)(dataJob); + if (!checkPractitionerSatSet) { + return { + pegawai_id: pegawaiId, + ktp: item.ktp, + nama_pegawai: item.nama_pegawai, + status: "failed", + }; + } + else { + return { + pegawai_id: pegawaiId, + ktp: item.ktp, + nama_pegawai: item.nama_pegawai, + status: "success", + }; + } + }))); + return { + data: { + jumlah_data: dataPractitioner.length, + dataPractitioner, + }, + code: 200, + message: "success", + }; +}); +exports.createJobPractitioner = createJobPractitioner; +const pushJobService = (endpoint_name, limit) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + const getJobRepository = yield (0, resources_repository_1.getJob)(endpoint_name, limit); + if (getJobRepository.length < 1) { + return { + message: "Tidak ada data", + code: 200, + }; + } + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_a = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _a === void 0 ? void 0 : _a.access_token; + let dataJob = yield Promise.all(getJobRepository.map((item) => __awaiter(void 0, void 0, void 0, function* () { + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}${item.url}`; + const method = item.method; + const payload = item.payload; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + const key_simrs = item.key_simrs; + if (item.endpoint_name === "patient") { + const executePatient = yield executePatientService(response, item, key_simrs); + return executePatient; + } + else if (item.endpoint_name === "encounter") { + const executeEncounter = yield executeEncounterService(response, item, key_simrs); + return executeEncounter; + } + else if (item.endpoint_name === "practitioner") { + const executePractitioner = yield executePractitionerService(response, item, key_simrs); + return executePractitioner; + } + else if (item.endpoint_name === "observation") { + const executeObservation = yield executeObservationService(response, item, key_simrs); + return executeObservation; + } + else if (item.endpoint_name === "condition") { + const executeCondition = yield executeConditionService(response, item, key_simrs); + return executeCondition; + } + }))); + return { + data: dataJob, + code: 200, + message: "success", + }; +}); +exports.pushJobService = pushJobService; +const executePatientService = (response, item, key_simrs) => __awaiter(void 0, void 0, void 0, function* () { + if (response.status === 200) { + if (response.data.resourceType === "OperationOutcome") { + const updateStatus = yield (0, resources_repository_1.updateStatusPasien)({ + no_mr: key_simrs, + status_satu_sehat: 3, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } + else { + if (response.data.total > 0) { + const checkPatientSatSet = yield (0, resources_repository_1.getPatientSatSet)(key_simrs); + if (checkPatientSatSet) { + const updatePatientSatSet = yield (0, resources_repository_1.updateDataPatientSatSet)(response.data, { + no_mr: key_simrs, + pasien_id: checkPatientSatSet.pasien_id, + }); + } + const updateStatus = yield (0, resources_repository_1.updateStatusPasien)({ + no_mr: key_simrs, + status_satu_sehat: 2, + id_satu_sehat: response.data.entry[0].resource.id, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 2, + }); + return { + job_id: item.id, + status: "success", + response: response.data.entry[0].resource, + }; + } + else { + const updateStatus = yield (0, resources_repository_1.updateStatusPasien)({ + no_mr: key_simrs, + status_satu_sehat: 3, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } + } + } + else { + const updateStatus = yield (0, resources_repository_1.updateStatusPasien)({ + no_mr: key_simrs, + status_satu_sehat: 3, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } +}); +const executeEncounterService = (response, item, key_simrs) => __awaiter(void 0, void 0, void 0, function* () { + if (response.status === 201) { + if (response.data.resourceType === "OperationOutcome") { + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusRegistrasi)({ + registrasi_id: parseInt(key_simrs, 10), + status_satu_sehat: 3, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } + else { + const checkEncounterSatSet = yield (0, pelayanan_rawat_jalan_repository_1.getEncounterSatSet)(key_simrs); + if (checkEncounterSatSet) { + const updateEncounterSatSet = yield (0, pelayanan_rawat_jalan_repository_1.updateDataEncounterSatSet)(response.data, { + registrasi_id: key_simrs, + id: checkEncounterSatSet.id, + }); + } + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusRegistrasi)({ + registrasi_id: parseInt(key_simrs, 10), + status_satu_sehat: 2, + id_satu_sehat: response.data.id, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 2, + }); + return { + job_id: item.id, + status: "success", + response: response.data, + }; + } + } + else { + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusRegistrasi)({ + registrasi_id: parseInt(key_simrs, 10), + status_satu_sehat: 3, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } +}); +const executePractitionerService = (response, item, key_simrs) => __awaiter(void 0, void 0, void 0, function* () { + let url = item.url; + let nik = url.substring(58); + if (response.status === 200) { + if (response.data.resourceType === "OperationOutcome") { + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } + else { + if (response.data.total > 0) { + const checkPractitionerSatSet = yield (0, resources_repository_1.getPractitionerSatSet)(key_simrs); + if (checkPractitionerSatSet) { + const updatePractitionerSatSet = yield (0, resources_repository_1.updateDataPractitionerSatSet)(response.data, { + pegawai_id: key_simrs, + nik: nik, + id: checkPractitionerSatSet.id, + }); + } + else { + const insertPractitionerSatSet = yield (0, resources_repository_1.insertDataPractitionerSatSet)(response.data, { + pegawai_id: key_simrs, + nik: nik, + }); + } + const updateStatus = yield (0, resources_repository_1.updateStatusPegawai)({ + pegawai_id: parseInt(key_simrs, 10), + status_satu_sehat: 2, + id_satu_sehat: response.data.entry[0].resource.id, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 2, + }); + return { + job_id: item.id, + status: "success", + response: response.data, + }; + } + else { + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } + } + } + else { + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } +}); +const executeObservationService = (response, item, key_simrs) => __awaiter(void 0, void 0, void 0, function* () { + if (response.status === 201) { + if (response.data.resourceType === "OperationOutcome") { + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusEmrDetail)({ + emr_detail_id: parseInt(key_simrs, 10), + status_satu_sehat: 3, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } + else { + const checkEmrDetailObservationSatSet = yield (0, pelayanan_rawat_jalan_repository_1.getEmrDetailObservationSatSet)(key_simrs); + if (checkEmrDetailObservationSatSet) { + const updateEmrDetailSatSet = yield (0, pelayanan_rawat_jalan_repository_1.updateDataEmrDetailObservationSatSet)(response.data, { + emr_detail_id: key_simrs, + id: checkEmrDetailObservationSatSet.admission_id, + }); + } + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusEmrDetail)({ + emr_detail_id: parseInt(key_simrs, 10), + status_satu_sehat: 2, + id_satu_sehat: response.data.id, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 2, + }); + return { + job_id: item.id, + status: "success", + response: response.data, + }; + } + } + else { + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusEmrDetail)({ + emr_detail_id: parseInt(key_simrs, 10), + status_satu_sehat: 3, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } +}); +const executeConditionService = (response, item, key_simrs) => __awaiter(void 0, void 0, void 0, function* () { + if (response.status === 201) { + if (response.data.resourceType === "OperationOutcome") { + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusEmrDetail)({ + emr_detail_id: parseInt(key_simrs, 10), + status_satu_sehat: 3, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } + else { + const checkEmrDetailSatSet = yield (0, pelayanan_rawat_jalan_repository_1.getEmrDetailConditionSatSet)(key_simrs); + if (checkEmrDetailSatSet) { + const updateEmrDetailSatSet = yield (0, pelayanan_rawat_jalan_repository_1.updateDataEmrDetailConditionSatSet)(response.data, { + emr_detail_id: key_simrs, + id: checkEmrDetailSatSet.admission_id, + }); + } + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusEmrDetail)({ + emr_detail_id: parseInt(key_simrs, 10), + status_satu_sehat: 2, + id_satu_sehat: response.data.id, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 2, + }); + return { + job_id: item.id, + status: "success", + response: response.data, + }; + } + } + else { + const updateStatus = yield (0, pelayanan_rawat_jalan_repository_1.updateStatusEmrDetail)({ + emr_detail_id: parseInt(key_simrs, 10), + status_satu_sehat: 3, + }); + const updateJob = yield (0, resources_repository_1.updateJobData)({ + id: item.id, + response: response.data, + status: 3, + }); + return { + job_id: item.id, + status: "failed", + response: response.data, + }; + } +}); +const getPatientNikService = (nik) => __awaiter(void 0, void 0, void 0, function* () { + var _b; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_b = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _b === void 0 ? void 0 : _b.access_token; + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Patient?identifier=https://fhir.kemkes.go.id/id/nik|${nik}`; + const method = "GET"; + const payload = null; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + return response; +}); +exports.getPatientNikService = getPatientNikService; +const getPractitionerNikService = (nik) => __awaiter(void 0, void 0, void 0, function* () { + var _c; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_c = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _c === void 0 ? void 0 : _c.access_token; + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Practitioner?identifier=https://fhir.kemkes.go.id/id/nik|${nik}`; + const method = "GET"; + const payload = null; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + return response; +}); +exports.getPractitionerNikService = getPractitionerNikService; +const createOrganizationService = (data) => __awaiter(void 0, void 0, void 0, function* () { + var _d; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_d = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _d === void 0 ? void 0 : _d.access_token; + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Organization`; + const method = "POST"; + const payload = { + resourceType: "Organization", + active: true, + identifier: [ + { + use: "official", + system: "http://sys-ids.kemkes.go.id/organization/" + orgId, + value: data.bagian_id, + }, + ], + type: [ + { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/organization-type", + code: "dept", + display: "Hospital Department", + }, + ], + }, + ], + name: data.nama_bagian, + partOf: { + reference: "Organization/" + orgId, + }, + }; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + return response; +}); +exports.createOrganizationService = createOrganizationService; +const getOrganizationPartofService = (organization_id) => __awaiter(void 0, void 0, void 0, function* () { + var _e; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_e = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _e === void 0 ? void 0 : _e.access_token; + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + organization_id = organization_id !== null && organization_id !== void 0 ? organization_id : orgId; + const url = `${baseUrl}/Organization?partof=${organization_id}`; + const method = "GET"; + const payload = null; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + return response; +}); +exports.getOrganizationPartofService = getOrganizationPartofService; +const getOrganizationIdService = (organization_id) => __awaiter(void 0, void 0, void 0, function* () { + var _f; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_f = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _f === void 0 ? void 0 : _f.access_token; + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Organization/${organization_id}`; + const method = "GET"; + const payload = null; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + return response; +}); +exports.getOrganizationIdService = getOrganizationIdService; +const createLocationService = (data) => __awaiter(void 0, void 0, void 0, function* () { + var _g; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_g = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _g === void 0 ? void 0 : _g.access_token; + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Location`; + const method = "POST"; + const payload = { + resourceType: "Location", + identifier: [ + { + system: "http://sys-ids.kemkes.go.id/location/" + orgId, + value: data.bagian_id, + }, + ], + status: "active", + name: data.nama_bagian, + description: "This is a location for " + data.nama_bagian, + mode: "instance", + physicalType: { + coding: [ + { + system: "http://terminology.hl7.org/CodeSystem/location-physical-type", + code: "ro", + display: "Room", + }, + ], + }, + managingOrganization: { + reference: "Organization/" + data.organization_id, + }, + }; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + return response; +}); +exports.createLocationService = createLocationService; +const getLocationIdService = (location_id) => __awaiter(void 0, void 0, void 0, function* () { + var _h; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_h = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _h === void 0 ? void 0 : _h.access_token; + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Location/${location_id}`; + const method = "GET"; + const payload = null; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + return response; +}); +exports.getLocationIdService = getLocationIdService; +const getPractitionerSendAllService = (limit) => __awaiter(void 0, void 0, void 0, function* () { + var _j; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_j = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _j === void 0 ? void 0 : _j.access_token; + const getDataPractitionerReady = yield (0, resources_repository_1.getDataPractitioner)(limit); + const resultPush = []; + if (getDataPractitionerReady.length > 0) { + const promises = getDataPractitionerReady.map((element) => __awaiter(void 0, void 0, void 0, function* () { + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Practitioner?identifier=https://fhir.kemkes.go.id/id/nik|${element.nik}`; + const method = "GET"; + const payload = null; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + if (response.status === 200) { + if (response.data.total === 0) { + resultPush.push(Object.assign(Object.assign({}, element), { status: "gagal" })); + } + else { + const updateInsertIdPractitioner = (0, resources_repository_1.updateInsertIdPractitionerRepo)(element.pegawai_id, response.data, response.data.entry[0].resource.id, response.data.entry[0].resource.resourceType); + resultPush.push(Object.assign(Object.assign({}, element), { status: "sukses" })); + } + } + else { + resultPush.push(Object.assign(Object.assign({}, element), { status: "gagal" })); + } + })); + yield Promise.all(promises); + } + return resultPush; +}); +exports.getPractitionerSendAllService = getPractitionerSendAllService; +const getPatientSendAllService = (limit) => __awaiter(void 0, void 0, void 0, function* () { + var _k; + const tokenService = yield (0, generate_token_service_1.checkTokenService)(); + if ((tokenService === null || tokenService === void 0 ? void 0 : tokenService.code) !== 200) { + throw new Error("Generate Token Failed"); + } + let token = (_k = tokenService === null || tokenService === void 0 ? void 0 : tokenService.data) === null || _k === void 0 ? void 0 : _k.access_token; + const getDataPatientReady = yield (0, resources_repository_1.getDataPatient)(limit); + const resultPush = []; + if (getDataPatientReady.length > 0) { + const promises = getDataPatientReady.map((element) => __awaiter(void 0, void 0, void 0, function* () { + const headersData = { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }; + const url = `${baseUrl}/Patient?identifier=https://fhir.kemkes.go.id/id/nik|${element.ktp}`; + const method = "GET"; + const payload = null; + const response = yield (0, axiosClient_1.requestAxios)(headersData, url, method, payload); + if (response.status === 200) { + if (response.data.total === 0) { + const updateInsertIdPatient = (0, resources_repository_1.updateInsertIdPatientRepo)(element.pasien_id, response.data, "0", "Patient", 1); + resultPush.push(Object.assign(Object.assign({}, element), { status: "gagal" })); + } + else { + const updateInsertIdPatient = (0, resources_repository_1.updateInsertIdPatientRepo)(element.pasien_id, response.data, response.data.entry[0].resource.id, response.data.entry[0].resource.resourceType); + resultPush.push(Object.assign(Object.assign({}, element), { status: "sukses" })); + } + } + else { + resultPush.push(Object.assign(Object.assign({}, element), { status: "gagal", response: response.data })); + } + })); + yield Promise.all(promises); + } + return resultPush; +}); +exports.getPatientSendAllService = getPatientSendAllService; +const getResourcesKfaService = (kfa_name) => __awaiter(void 0, void 0, void 0, function* () { + const getDataKfaReady = yield (0, resources_repository_1.getDataKfa)(kfa_name); + let datax; + let code; + let data; + if (getDataKfaReady.length > 0) { + code = 200; + data = getDataKfaReady; + } + else { + code = 201; + data = ''; + } + return (datax = { + status: code, + data: data, + }); +}); +exports.getResourcesKfaService = getResourcesKfaService; diff --git a/backend/dist/api/transaction/registrasi/registrasi.controller.js b/backend/dist/api/transaction/registrasi/registrasi.controller.js new file mode 100644 index 0000000..796fd35 --- /dev/null +++ b/backend/dist/api/transaction/registrasi/registrasi.controller.js @@ -0,0 +1,255 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const registrasi_service_1 = require("./registrasi.service"); +const pasien_service_1 = require("../../master/pasien/pasien.service"); +const asuransi_service_1 = require("../../master/asuransi/asuransi.service"); +const pegawai_service_1 = require("../../master/pegawai/pegawai.service"); +const ruangpelayanan_service_1 = require("../../master/ruang_pelayanan/ruangpelayanan.service"); +exports.router = (0, express_1.Router)(); +exports.router.post("/", [ + (0, express_validator_1.body)("tanggalregistrasi").notEmpty().isISO8601(), + (0, express_validator_1.body)("idpasien") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPasienId = yield (0, pasien_service_1.getDataPasienId)(value); + if (!getPasienId) { + return Promise.reject("Pasien tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("nomorkartuasuransi").notEmpty(), + (0, express_validator_1.body)("idasuransi") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getAsuransi = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!getAsuransi) { + return Promise.reject("Asuransi tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("idpegawai") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!getPegawai) { + return Promise.reject("Pegawai tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("idruangpelayanan") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getRuangpelayanan = yield (0, ruangpelayanan_service_1.getRuangpelayananId)(value); + if (!getRuangpelayanan) { + return Promise.reject("Ruangpelayanan tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createRegistrasi = yield (0, registrasi_service_1.createRegistrasiData)(req.body); + if (createRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createRegistrasi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/registrasi_id/:registrasi_id", [ + (0, express_validator_1.body)("tanggalregistrasi").notEmpty().isISO8601(), + (0, express_validator_1.body)("idpasien") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPasienId = yield (0, pasien_service_1.getDataPasienId)(value); + if (!getPasienId) { + return Promise.reject("Pasien tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("nomorkartuasuransi").notEmpty(), + (0, express_validator_1.body)("idasuransi") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getAsuransi = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!getAsuransi) { + return Promise.reject("Asuransi tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("idpegawai") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!getPegawai) { + return Promise.reject("Pegawai tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("idruangpelayanan") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getRuangpelayanan = yield (0, ruangpelayanan_service_1.getRuangpelayananId)(value); + if (!getRuangpelayanan) { + return Promise.reject("Ruangpelayanan tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.param)("registrasi_id") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getRegistrasi = yield (0, registrasi_service_1.getRegistrasiId)(value); + if (!getRegistrasi) { + return Promise.reject("Registrasi tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const registrasi_id = parseInt(req.params.registrasi_id, 10); + const updateRegistrasi = yield (0, registrasi_service_1.updateRegistrasiData)(req.body, registrasi_id); + if (updateRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateRegistrasi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/registrasi_id/:registrasi_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const registrasi_id = parseInt(req.params.registrasi_id, 10); + const getRegistrasi = yield (0, registrasi_service_1.getRegistrasiId)(registrasi_id); + if (getRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getRegistrasi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const getRegistrasi = yield (0, registrasi_service_1.getRegistrasiData)(); + if (getRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getRegistrasi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/transaction/registrasi/registrasi.repository.js b/backend/dist/api/transaction/registrasi/registrasi.repository.js new file mode 100644 index 0000000..b926cca --- /dev/null +++ b/backend/dist/api/transaction/registrasi/registrasi.repository.js @@ -0,0 +1,221 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCountRegistrasiRepository = exports.updateRegistrasiDataRepository = exports.getDataRegistrasiRepositoryAll = exports.getDataRegistrasiRepository = exports.createRegistrasiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createRegistrasiRepository = (tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan) => __awaiter(void 0, void 0, void 0, function* () { + const maxRegistrasiId = yield (0, database_handler_1.generateMaxDb1)("tr_registrasi_id_seq", "registrasi_id"); + const createRegistrasi = yield db_1.prismaDb1.trregistrasi.create({ + data: { + idregistrasi: maxRegistrasiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + tanggalregistrasi: new Date(tanggalregistrasi), + idpasien: idpasien, + nomorkartuasuransi: nomorkartuasuransi, + idasuransi: idasuransi, + idpegawai: idpegawai, + idruangpelayanan: idruangpelayanan, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + idasuransi: true, + idpasien: true, + idpegawai: true, + idruangpelayanan: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + jeniskelamin: true, + }, + }, + }, + }); + return createRegistrasi; +}); +exports.createRegistrasiRepository = createRegistrasiRepository; +const updateRegistrasiDataRepository = (tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan, idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const createRegistrasi = yield db_1.prismaDb1.trregistrasi.update({ + where: { + idregistrasi: idregistrasi, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + tanggalregistrasi: new Date(tanggalregistrasi), + idpasien: idpasien, + nomorkartuasuransi: nomorkartuasuransi, + idasuransi: idasuransi, + idpegawai: idpegawai, + idruangpelayanan: idruangpelayanan, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + idasuransi: true, + idpasien: true, + idpegawai: true, + idruangpelayanan: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + jeniskelamin: true, + }, + }, + }, + }); + return createRegistrasi; +}); +exports.updateRegistrasiDataRepository = updateRegistrasiDataRepository; +const getDataRegistrasiRepository = (idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const getDataRegistrasi = yield db_1.prismaDb1.trregistrasi.findUnique({ + where: { + idregistrasi: idregistrasi, + deleted_at: null, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + idasuransi: true, + idpasien: true, + idpegawai: true, + idruangpelayanan: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + jeniskelamin: true, + }, + }, + }, + }); + return getDataRegistrasi; +}); +exports.getDataRegistrasiRepository = getDataRegistrasiRepository; +const getDataRegistrasiRepositoryAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getDataRegistrasi = yield db_1.prismaDb1.trregistrasi.findMany({ + where: { + deleted_at: null, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + idasuransi: true, + idpasien: true, + idpegawai: true, + idruangpelayanan: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + jeniskelamin: true, + }, + }, + }, + }); + return getDataRegistrasi; +}); +exports.getDataRegistrasiRepositoryAll = getDataRegistrasiRepositoryAll; +const getCountRegistrasiRepository = () => __awaiter(void 0, void 0, void 0, function* () { + const registrasiCount = yield db_1.prismaDb1.trregistrasi.count({ + where: { + deleted_by: null, + }, + }); + return registrasiCount; +}); +exports.getCountRegistrasiRepository = getCountRegistrasiRepository; diff --git a/backend/dist/api/transaction/registrasi/registrasi.service.js b/backend/dist/api/transaction/registrasi/registrasi.service.js new file mode 100644 index 0000000..a2ab088 --- /dev/null +++ b/backend/dist/api/transaction/registrasi/registrasi.service.js @@ -0,0 +1,60 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.updateRegistrasiData = exports.getRegistrasiData = exports.getRegistrasiId = exports.createRegistrasiData = void 0; +const dotenv = __importStar(require("dotenv")); +const registrasi_repository_1 = require("./registrasi.repository"); +dotenv.config(); +const createRegistrasiData = (dataRegistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const { tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan, } = dataRegistrasi; + const createRegistrasi = (0, registrasi_repository_1.createRegistrasiRepository)(tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan); + return createRegistrasi; +}); +exports.createRegistrasiData = createRegistrasiData; +const getRegistrasiId = (idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const getRegistrasi = yield (0, registrasi_repository_1.getDataRegistrasiRepository)(idregistrasi); + return getRegistrasi; +}); +exports.getRegistrasiId = getRegistrasiId; +const getRegistrasiData = () => __awaiter(void 0, void 0, void 0, function* () { + const getRegistrasi = yield (0, registrasi_repository_1.getDataRegistrasiRepositoryAll)(); + return getRegistrasi; +}); +exports.getRegistrasiData = getRegistrasiData; +const updateRegistrasiData = (dataRegistrasi, idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const { tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan, } = dataRegistrasi; + const updateRegistrasi = yield (0, registrasi_repository_1.updateRegistrasiDataRepository)(tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan, idregistrasi); + return updateRegistrasi; +}); +exports.updateRegistrasiData = updateRegistrasiData; diff --git a/backend/dist/api/transaction/registrasi/tindakan.controller.js b/backend/dist/api/transaction/registrasi/tindakan.controller.js new file mode 100644 index 0000000..c39dad8 --- /dev/null +++ b/backend/dist/api/transaction/registrasi/tindakan.controller.js @@ -0,0 +1,229 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const tindakan_service_1 = require("./tindakan.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/tindakan_id/:tindakan_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const tindakan_id = parseInt(req.params.tindakan_id, 10); + const getTindakan = yield (0, tindakan_service_1.getTindakanId)(tindakan_id); + if (getTindakan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTindakan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getTindakan = yield (0, tindakan_service_1.getTindakanAll)(); + if (getTindakan && getTindakan.length > 0) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTindakan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("namatindakan").notEmpty(), + (0, express_validator_1.body)("tariftindakan").notEmpty().isNumeric(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createTindakan = yield (0, tindakan_service_1.createTindakanData)(req.body); + if (createTindakan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createTindakan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/tindakan_id/:tindakan_id", [ + (0, express_validator_1.param)("tindakan_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const tindakan_id = yield (0, tindakan_service_1.getTindakanId)(value); + if (!tindakan_id) { + return Promise.reject("Tindakan tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("namatindakan").notEmpty(), + (0, express_validator_1.body)("tariftindakan").notEmpty().isNumeric(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const tindakan_id = parseInt(req.params.tindakan_id, 10); + const updateTindakanAll = yield (0, tindakan_service_1.updateTindakanDataAll)(req.body, tindakan_id); + if (updateTindakanAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateTindakanAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/tindakan_id/:tindakan_id", [ + (0, express_validator_1.param)("tindakan_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const TindakanId = yield (0, tindakan_service_1.getTindakanId)(value); + if (!TindakanId) { + return Promise.reject("Tindakan ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const tindakan_id = parseInt(req.params.tindakan_id, 10); + const deleteTindakan = yield (0, tindakan_service_1.deleteTindakanData)(tindakan_id); + if (deleteTindakan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteTindakan, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/transaction/registrasi/tindakan.repository.js b/backend/dist/api/transaction/registrasi/tindakan.repository.js new file mode 100644 index 0000000..6c39af6 --- /dev/null +++ b/backend/dist/api/transaction/registrasi/tindakan.repository.js @@ -0,0 +1,136 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteTindakanRepository = exports.updateTindakanDataAllRepository = exports.getDataTindakanAll = exports.getDataTindakanId = exports.createTindakanRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createTindakanRepository = (namatindakan, tariftindakan) => __awaiter(void 0, void 0, void 0, function* () { + const maxTindakanId = yield (0, database_handler_1.generateMaxDb1)("ms_tindakan_id_seq", "tindakan_id"); + const createTindakan = yield db_1.prismaDb1.mstindakan.create({ + data: { + idtindakan: maxTindakanId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + namatindakan: namatindakan, + tariftindakan: tariftindakan + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + return createTindakan; +}); +exports.createTindakanRepository = createTindakanRepository; +const getDataTindakanId = (tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const tindakan = yield db_1.prismaDb1.mstindakan.findFirst({ + where: { + idtindakan: tindakan_id, + deleted_at: null, + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + return tindakan; +}); +exports.getDataTindakanId = getDataTindakanId; +const getDataTindakanAll = () => __awaiter(void 0, void 0, void 0, function* () { + const tindakan = yield db_1.prismaDb1.mstindakan.findMany({ + where: { + deleted_by: null, + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + return tindakan; +}); +exports.getDataTindakanAll = getDataTindakanAll; +const updateTindakanDataAllRepository = (namatindakan, tariftindakan, tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateTindakan = yield db_1.prismaDb1.mstindakan.update({ + where: { + idtindakan: tindakan_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + namatindakan: namatindakan, + tariftindakan: tariftindakan + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + return updateTindakan; +}); +exports.updateTindakanDataAllRepository = updateTindakanDataAllRepository; +const deleteTindakanRepository = (tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.mstindakan.update({ + where: { + idtindakan: tindakan_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + return deleteUser; +}); +exports.deleteTindakanRepository = deleteTindakanRepository; diff --git a/backend/dist/api/transaction/registrasi/tindakan.service.js b/backend/dist/api/transaction/registrasi/tindakan.service.js new file mode 100644 index 0000000..6ac752a --- /dev/null +++ b/backend/dist/api/transaction/registrasi/tindakan.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteTindakanData = exports.updateTindakanDataAll = exports.createTindakanData = exports.getTindakanAll = exports.getTindakanId = void 0; +const dotenv = __importStar(require("dotenv")); +const tindakan_repository_1 = require("./tindakan.repository"); +dotenv.config(); +const createTindakanData = (dataTindakan) => __awaiter(void 0, void 0, void 0, function* () { + const { namatindakan, tariftindakan } = dataTindakan; + const createTindakan = (0, tindakan_repository_1.createTindakanRepository)(namatindakan, tariftindakan); + return createTindakan; +}); +exports.createTindakanData = createTindakanData; +const getTindakanId = (tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const getTindakanId = yield (0, tindakan_repository_1.getDataTindakanId)(tindakan_id); + return getTindakanId; +}); +exports.getTindakanId = getTindakanId; +const getTindakanAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getTindakan = yield (0, tindakan_repository_1.getDataTindakanAll)(); + return getTindakan; +}); +exports.getTindakanAll = getTindakanAll; +const updateTindakanDataAll = (dataTindakan, tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const { namatindakan, tariftindakan } = dataTindakan; + const updateTindakan = yield (0, tindakan_repository_1.updateTindakanDataAllRepository)(namatindakan, tariftindakan, tindakan_id); + return updateTindakan; +}); +exports.updateTindakanDataAll = updateTindakanDataAll; +const deleteTindakanData = (tindakan_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteTindakan = yield (0, tindakan_repository_1.deleteTindakanRepository)(tindakan_id); + return deleteTindakan; +}); +exports.deleteTindakanData = deleteTindakanData; diff --git a/backend/dist/api/transaction/transaksi/registrasi.controller.js b/backend/dist/api/transaction/transaksi/registrasi.controller.js new file mode 100644 index 0000000..796fd35 --- /dev/null +++ b/backend/dist/api/transaction/transaksi/registrasi.controller.js @@ -0,0 +1,255 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const registrasi_service_1 = require("./registrasi.service"); +const pasien_service_1 = require("../../master/pasien/pasien.service"); +const asuransi_service_1 = require("../../master/asuransi/asuransi.service"); +const pegawai_service_1 = require("../../master/pegawai/pegawai.service"); +const ruangpelayanan_service_1 = require("../../master/ruang_pelayanan/ruangpelayanan.service"); +exports.router = (0, express_1.Router)(); +exports.router.post("/", [ + (0, express_validator_1.body)("tanggalregistrasi").notEmpty().isISO8601(), + (0, express_validator_1.body)("idpasien") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPasienId = yield (0, pasien_service_1.getDataPasienId)(value); + if (!getPasienId) { + return Promise.reject("Pasien tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("nomorkartuasuransi").notEmpty(), + (0, express_validator_1.body)("idasuransi") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getAsuransi = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!getAsuransi) { + return Promise.reject("Asuransi tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("idpegawai") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!getPegawai) { + return Promise.reject("Pegawai tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("idruangpelayanan") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getRuangpelayanan = yield (0, ruangpelayanan_service_1.getRuangpelayananId)(value); + if (!getRuangpelayanan) { + return Promise.reject("Ruangpelayanan tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createRegistrasi = yield (0, registrasi_service_1.createRegistrasiData)(req.body); + if (createRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createRegistrasi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/registrasi_id/:registrasi_id", [ + (0, express_validator_1.body)("tanggalregistrasi").notEmpty().isISO8601(), + (0, express_validator_1.body)("idpasien") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPasienId = yield (0, pasien_service_1.getDataPasienId)(value); + if (!getPasienId) { + return Promise.reject("Pasien tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("nomorkartuasuransi").notEmpty(), + (0, express_validator_1.body)("idasuransi") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getAsuransi = yield (0, asuransi_service_1.getAsuransiId)(value); + if (!getAsuransi) { + return Promise.reject("Asuransi tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("idpegawai") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!getPegawai) { + return Promise.reject("Pegawai tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("idruangpelayanan") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getRuangpelayanan = yield (0, ruangpelayanan_service_1.getRuangpelayananId)(value); + if (!getRuangpelayanan) { + return Promise.reject("Ruangpelayanan tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.param)("registrasi_id") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getRegistrasi = yield (0, registrasi_service_1.getRegistrasiId)(value); + if (!getRegistrasi) { + return Promise.reject("Registrasi tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const registrasi_id = parseInt(req.params.registrasi_id, 10); + const updateRegistrasi = yield (0, registrasi_service_1.updateRegistrasiData)(req.body, registrasi_id); + if (updateRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateRegistrasi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/registrasi_id/:registrasi_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const registrasi_id = parseInt(req.params.registrasi_id, 10); + const getRegistrasi = yield (0, registrasi_service_1.getRegistrasiId)(registrasi_id); + if (getRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getRegistrasi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const getRegistrasi = yield (0, registrasi_service_1.getRegistrasiData)(); + if (getRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getRegistrasi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/transaction/transaksi/registrasi.repository.js b/backend/dist/api/transaction/transaksi/registrasi.repository.js new file mode 100644 index 0000000..bd485b6 --- /dev/null +++ b/backend/dist/api/transaction/transaksi/registrasi.repository.js @@ -0,0 +1,192 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.updateRegistrasiDataRepository = exports.getDataRegistrasiRepositoryAll = exports.getDataRegistrasiRepository = exports.createRegistrasiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createRegistrasiRepository = (tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan) => __awaiter(void 0, void 0, void 0, function* () { + const maxRegistrasiId = yield (0, database_handler_1.generateMaxDb1)("tr_registrasi_id_seq", "registrasi_id"); + const createRegistrasi = yield db_1.prismaDb1.trregistrasi.create({ + data: { + idregistrasi: maxRegistrasiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + tanggalregistrasi: new Date(tanggalregistrasi), + idpasien: idpasien, + nomorkartuasuransi: nomorkartuasuransi, + idasuransi: idasuransi, + idpegawai: idpegawai, + idruangpelayanan: idruangpelayanan, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + }, + }, + }, + }); + return createRegistrasi; +}); +exports.createRegistrasiRepository = createRegistrasiRepository; +const updateRegistrasiDataRepository = (tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan, idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const createRegistrasi = yield db_1.prismaDb1.trregistrasi.update({ + where: { + idregistrasi: idregistrasi, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + tanggalregistrasi: new Date(tanggalregistrasi), + idpasien: idpasien, + nomorkartuasuransi: nomorkartuasuransi, + idasuransi: idasuransi, + idpegawai: idpegawai, + idruangpelayanan: idruangpelayanan, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + }, + }, + }, + }); + return createRegistrasi; +}); +exports.updateRegistrasiDataRepository = updateRegistrasiDataRepository; +const getDataRegistrasiRepository = (idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const getDataRegistrasi = yield db_1.prismaDb1.trregistrasi.findUnique({ + where: { + idregistrasi: idregistrasi, + deleted_at: null, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + }, + }, + }, + }); + return getDataRegistrasi; +}); +exports.getDataRegistrasiRepository = getDataRegistrasiRepository; +const getDataRegistrasiRepositoryAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getDataRegistrasi = yield db_1.prismaDb1.trregistrasi.findMany({ + where: { + deleted_at: null, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + }, + }, + }, + }); + return getDataRegistrasi; +}); +exports.getDataRegistrasiRepositoryAll = getDataRegistrasiRepositoryAll; diff --git a/backend/dist/api/transaction/transaksi/registrasi.service.js b/backend/dist/api/transaction/transaksi/registrasi.service.js new file mode 100644 index 0000000..a2ab088 --- /dev/null +++ b/backend/dist/api/transaction/transaksi/registrasi.service.js @@ -0,0 +1,60 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.updateRegistrasiData = exports.getRegistrasiData = exports.getRegistrasiId = exports.createRegistrasiData = void 0; +const dotenv = __importStar(require("dotenv")); +const registrasi_repository_1 = require("./registrasi.repository"); +dotenv.config(); +const createRegistrasiData = (dataRegistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const { tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan, } = dataRegistrasi; + const createRegistrasi = (0, registrasi_repository_1.createRegistrasiRepository)(tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan); + return createRegistrasi; +}); +exports.createRegistrasiData = createRegistrasiData; +const getRegistrasiId = (idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const getRegistrasi = yield (0, registrasi_repository_1.getDataRegistrasiRepository)(idregistrasi); + return getRegistrasi; +}); +exports.getRegistrasiId = getRegistrasiId; +const getRegistrasiData = () => __awaiter(void 0, void 0, void 0, function* () { + const getRegistrasi = yield (0, registrasi_repository_1.getDataRegistrasiRepositoryAll)(); + return getRegistrasi; +}); +exports.getRegistrasiData = getRegistrasiData; +const updateRegistrasiData = (dataRegistrasi, idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const { tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan, } = dataRegistrasi; + const updateRegistrasi = yield (0, registrasi_repository_1.updateRegistrasiDataRepository)(tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan, idregistrasi); + return updateRegistrasi; +}); +exports.updateRegistrasiData = updateRegistrasiData; diff --git a/backend/dist/api/transaction/transaksi/transaksi.controller.js b/backend/dist/api/transaction/transaksi/transaksi.controller.js new file mode 100644 index 0000000..ae2e4c4 --- /dev/null +++ b/backend/dist/api/transaction/transaksi/transaksi.controller.js @@ -0,0 +1,270 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const transaksi_service_1 = require("./transaksi.service"); +const registrasi_service_1 = require("../../transaction/registrasi/registrasi.service"); +const tindakan_service_1 = require("../../master/tindakan/tindakan.service"); +const pegawai_service_1 = require("../../master/pegawai/pegawai.service"); +exports.router = (0, express_1.Router)(); +exports.router.post("/", [ + (0, express_validator_1.body)("idregistrasi") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPasienId = yield (0, registrasi_service_1.getRegistrasiId)(value); + if (!getPasienId) { + return Promise.reject("Registrasi tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("idtindakan") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPasienId = yield (0, tindakan_service_1.getTindakanId)(value); + if (!getPasienId) { + return Promise.reject("Tindakan tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("jmltindakan").notEmpty().isNumeric(), + (0, express_validator_1.body)("idpegawai") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!getPegawai) { + return Promise.reject("Pegawai tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createTransaksi = yield (0, transaksi_service_1.createTransaksiData)(req.body); + if (createTransaksi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createTransaksi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/transaksi_id/:transaksi_id", [ + (0, express_validator_1.body)("idregistrasi") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPasienId = yield (0, registrasi_service_1.getRegistrasiId)(value); + if (!getPasienId) { + return Promise.reject("Registrasi tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("idtindakan") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPasienId = yield (0, tindakan_service_1.getTindakanId)(value); + if (!getPasienId) { + return Promise.reject("Tindakan tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("jmltindakan").notEmpty().isNumeric(), + (0, express_validator_1.body)("idpegawai") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getPegawai = yield (0, pegawai_service_1.getPegawaiId)(value); + if (!getPegawai) { + return Promise.reject("Pegawai tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.param)("transaksi_id") + .notEmpty() + .isNumeric() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const getTransaksi = yield (0, transaksi_service_1.getTransaksiId)(value); + if (!getTransaksi) { + return Promise.reject("Transaksi tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const transaksi_id = parseInt(req.params.transaksi_id, 10); + const updateTransaksi = yield (0, transaksi_service_1.updateTransaksiData)(req.body, transaksi_id); + if (updateTransaksi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateTransaksi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/transaksi_id/:transaksi_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const transaksi_id = parseInt(req.params.transaksi_id, 10); + const getTransaksi = yield (0, transaksi_service_1.getTransaksiId)(transaksi_id); + if (getTransaksi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTransaksi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/registrasi_id/:registrasi_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const registrasi_id = parseInt(req.params.registrasi_id, 10); + const getTransaksi = yield (0, transaksi_service_1.getTransaksiRegistrasiId)(registrasi_id); + if (getTransaksi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTransaksi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const getTransaksi = yield (0, transaksi_service_1.getTransaksiData)(); + if (getTransaksi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTransaksi, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/transaction/transaksi/transaksi.repository.js b/backend/dist/api/transaction/transaksi/transaksi.repository.js new file mode 100644 index 0000000..e0501a0 --- /dev/null +++ b/backend/dist/api/transaction/transaksi/transaksi.repository.js @@ -0,0 +1,176 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getDataTransaksiRegistrasiRepository = exports.getCountTransaksiRepository = exports.updateTransaksiDataRepository = exports.getDataTransaksiRepositoryAll = exports.getDataTransaksiRepository = exports.createTransaksiRepository = void 0; +const db_1 = require("../../../db"); +const database_handler_1 = require("../../../db/database.handler"); +const time_1 = require("../../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createTransaksiRepository = (idregistrasi, idtindakan, jmltindakan, idpegawai) => __awaiter(void 0, void 0, void 0, function* () { + const maxTransaksiId = yield (0, database_handler_1.generateMaxDb1)("tr_transaksi_id_seq", "transaksi_id"); + const createTransaksi = yield db_1.prismaDb1.trtransaksi.create({ + data: { + idtransaksi: maxTransaksiId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + idregistrasi: idregistrasi, + idtindakan: idtindakan, + jmltindakan: jmltindakan, + idpegawai: idpegawai, + }, + select: { + idtransaksi: true, + created_at: true, + created_by: true, + idregistrasi: true, + jmltindakan: true, + mspegawai: { + select: { namapegawai: true }, + }, + mstindakan: { + select: { namatindakan: true, tariftindakan: true }, + }, + }, + }); + return createTransaksi; +}); +exports.createTransaksiRepository = createTransaksiRepository; +const updateTransaksiDataRepository = (idregistrasi, idtindakan, jmltindakan, idpegawai, idtransaksi) => __awaiter(void 0, void 0, void 0, function* () { + const createTransaksi = yield db_1.prismaDb1.trtransaksi.update({ + where: { + idtransaksi: idtransaksi, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + idregistrasi: idregistrasi, + idtindakan: idtindakan, + jmltindakan: jmltindakan, + idpegawai: idpegawai, + }, + select: { + idtransaksi: true, + created_at: true, + created_by: true, + idregistrasi: true, + jmltindakan: true, + mspegawai: { + select: { namapegawai: true }, + }, + mstindakan: { + select: { namatindakan: true, tariftindakan: true }, + }, + }, + }); + return createTransaksi; +}); +exports.updateTransaksiDataRepository = updateTransaksiDataRepository; +const getDataTransaksiRepository = (idtransaksi) => __awaiter(void 0, void 0, void 0, function* () { + const getDataTransaksi = yield db_1.prismaDb1.trtransaksi.findUnique({ + where: { + idtransaksi: idtransaksi, + deleted_at: null, + }, + select: { + idtransaksi: true, + created_at: true, + created_by: true, + idregistrasi: true, + jmltindakan: true, + mspegawai: { + select: { namapegawai: true }, + }, + mstindakan: { + select: { namatindakan: true, tariftindakan: true }, + }, + }, + }); + return getDataTransaksi; +}); +exports.getDataTransaksiRepository = getDataTransaksiRepository; +const getDataTransaksiRepositoryAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getDataTransaksi = yield db_1.prismaDb1.trtransaksi.findMany({ + where: { + deleted_at: null, + }, + select: { + idtransaksi: true, + created_at: true, + created_by: true, + idregistrasi: true, + jmltindakan: true, + mspegawai: { + select: { namapegawai: true }, + }, + mstindakan: { + select: { namatindakan: true, tariftindakan: true }, + }, + }, + }); + return getDataTransaksi; +}); +exports.getDataTransaksiRepositoryAll = getDataTransaksiRepositoryAll; +const getCountTransaksiRepository = () => __awaiter(void 0, void 0, void 0, function* () { + const transaksiCount = yield db_1.prismaDb1.trtransaksi.count({ + where: { + deleted_by: null, + }, + }); + return transaksiCount; +}); +exports.getCountTransaksiRepository = getCountTransaksiRepository; +const getDataTransaksiRegistrasiRepository = (idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const getDataTransaksi = yield db_1.prismaDb1.trtransaksi.findMany({ + where: { + idregistrasi: idregistrasi, + deleted_at: null, + }, + select: { + idtransaksi: true, + created_at: true, + created_by: true, + idregistrasi: true, + jmltindakan: true, + mspegawai: { + select: { namapegawai: true }, + }, + mstindakan: { + select: { namatindakan: true, tariftindakan: true }, + }, + }, + }); + return getDataTransaksi; +}); +exports.getDataTransaksiRegistrasiRepository = getDataTransaksiRegistrasiRepository; diff --git a/backend/dist/api/transaction/transaksi/transaksi.service.js b/backend/dist/api/transaction/transaksi/transaksi.service.js new file mode 100644 index 0000000..c8dc307 --- /dev/null +++ b/backend/dist/api/transaction/transaksi/transaksi.service.js @@ -0,0 +1,65 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getTransaksiRegistrasiId = exports.updateTransaksiData = exports.getTransaksiData = exports.getTransaksiId = exports.createTransaksiData = void 0; +const dotenv = __importStar(require("dotenv")); +const transaksi_repository_1 = require("./transaksi.repository"); +dotenv.config(); +const createTransaksiData = (dataTransaksi) => __awaiter(void 0, void 0, void 0, function* () { + const { idregistrasi, idtindakan, jmltindakan, idpegawai } = dataTransaksi; + const createTransaksi = (0, transaksi_repository_1.createTransaksiRepository)(idregistrasi, idtindakan, jmltindakan, idpegawai); + return createTransaksi; +}); +exports.createTransaksiData = createTransaksiData; +const getTransaksiId = (idtransaksi) => __awaiter(void 0, void 0, void 0, function* () { + const getTransaksi = yield (0, transaksi_repository_1.getDataTransaksiRepository)(idtransaksi); + return getTransaksi; +}); +exports.getTransaksiId = getTransaksiId; +const getTransaksiData = () => __awaiter(void 0, void 0, void 0, function* () { + const getTransaksi = yield (0, transaksi_repository_1.getDataTransaksiRepositoryAll)(); + return getTransaksi; +}); +exports.getTransaksiData = getTransaksiData; +const updateTransaksiData = (dataTransaksi, idtransaksi) => __awaiter(void 0, void 0, void 0, function* () { + const { idregistrasi, idtindakan, jmltindakan, idpegawai } = dataTransaksi; + const updateTransaksi = yield (0, transaksi_repository_1.updateTransaksiDataRepository)(idregistrasi, idtindakan, jmltindakan, idpegawai, idtransaksi); + return updateTransaksi; +}); +exports.updateTransaksiData = updateTransaksiData; +const getTransaksiRegistrasiId = (idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { + const getTransaksi = yield (0, transaksi_repository_1.getDataTransaksiRegistrasiRepository)(idregistrasi); + return getTransaksi; +}); +exports.getTransaksiRegistrasiId = getTransaksiRegistrasiId; diff --git a/backend/dist/api/users copy/users.controller.js b/backend/dist/api/users copy/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/users copy/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/users copy/users.repository.js b/backend/dist/api/users copy/users.repository.js new file mode 100644 index 0000000..b8e5d68 --- /dev/null +++ b/backend/dist/api/users copy/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("./../../db"); +const database_handler_1 = require("./../../db/database.handler"); +const time_1 = require("./../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/users copy/users.service.js b/backend/dist/api/users copy/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/users copy/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/users copy/users/users.controller.js b/backend/dist/api/users copy/users/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/users copy/users/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/users copy/users/users.repository.js b/backend/dist/api/users copy/users/users.repository.js new file mode 100644 index 0000000..b8e5d68 --- /dev/null +++ b/backend/dist/api/users copy/users/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("./../../db"); +const database_handler_1 = require("./../../db/database.handler"); +const time_1 = require("./../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/users copy/users/users.service.js b/backend/dist/api/users copy/users/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/users copy/users/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/users copy/users/users/users.controller.js b/backend/dist/api/users copy/users/users/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/users copy/users/users/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/users copy/users/users/users.repository.js b/backend/dist/api/users copy/users/users/users.repository.js new file mode 100644 index 0000000..b8e5d68 --- /dev/null +++ b/backend/dist/api/users copy/users/users/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("./../../db"); +const database_handler_1 = require("./../../db/database.handler"); +const time_1 = require("./../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/users copy/users/users/users.service.js b/backend/dist/api/users copy/users/users/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/users copy/users/users/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/api/users/users.controller.js b/backend/dist/api/users/users.controller.js new file mode 100644 index 0000000..99281e3 --- /dev/null +++ b/backend/dist/api/users/users.controller.js @@ -0,0 +1,310 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const express_validator_1 = require("express-validator"); +const users_service_1 = require("./users.service"); +exports.router = (0, express_1.Router)(); +exports.router.get("/user_id/:user_id", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const getUser = yield (0, users_service_1.getUserId)(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.get("/", (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const getUser = yield (0, users_service_1.getUserAll)(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.post("/", [ + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + if (value) { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const createUser = yield (0, users_service_1.createUserData)(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.put("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value, (_a = req.params) === null || _a === void 0 ? void 0 : _a.user_id); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("password").notEmpty(), + (0, express_validator_1.body)("fullname").notEmpty(), + (0, express_validator_1.body)("email").notEmpty().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserAll = yield (0, users_service_1.updateUserDataAll)(req.body, user_id); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.patch("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), + (0, express_validator_1.body)("username") + .optional() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = value.toString(); + const username = yield (0, users_service_1.checkUsername)(value); + if (username) { + return Promise.reject("Username sudah terdaftar, silahkan gunakan username lain"); + } + })), + (0, express_validator_1.body)("email").optional().isEmail(), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const updateUserPart = yield (0, users_service_1.updateUserDataPart)(req.body, user_id); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); +exports.router.delete("/user_id/:user_id", [ + (0, express_validator_1.param)("user_id") + .notEmpty() + .custom((value, { req }) => __awaiter(void 0, void 0, void 0, function* () { + value = parseInt(value, 10); + const userId = yield (0, users_service_1.getUserId)(value); + if (!userId) { + return Promise.reject("User ID tidak ditemukan, silahkan coba lagi"); + } + })), +], (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const errors = (0, express_validator_1.validationResult)(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + const user_id = parseInt(req.params.user_id, 10); + const deleteUser = yield (0, users_service_1.deleteUserData)(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } + else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } + catch (error) { + next(error.message.replace(/\n/g, " ")); + } +})); diff --git a/backend/dist/api/users/users.repository.js b/backend/dist/api/users/users.repository.js new file mode 100644 index 0000000..b8e5d68 --- /dev/null +++ b/backend/dist/api/users/users.repository.js @@ -0,0 +1,184 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteUserRepository = exports.getDataUserAll = exports.getDataUserId = exports.updateUserDataPartRepository = exports.updateUserDataAllRepository = exports.createUserRepository = exports.checkDataUsername = void 0; +const db_1 = require("./../../db"); +const database_handler_1 = require("./../../db/database.handler"); +const time_1 = require("./../../middlewares/time"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const createUserRepository = (username, password, fullname, email) => __awaiter(void 0, void 0, void 0, function* () { + const maxUserId = yield (0, database_handler_1.generateMaxDb1)("ms_users_id_seq", "user_id"); + const createUser = yield db_1.prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: (0, time_1.dateNow)(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return createUser; +}); +exports.createUserRepository = createUserRepository; +const getDataUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserId = getDataUserId; +const getDataUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return user; +}); +exports.getDataUserAll = getDataUserAll; +const checkDataUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield db_1.prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + return user; +}); +exports.checkDataUsername = checkDataUsername; +const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: (0, time_1.dateNow)(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataAllRepository = updateUserDataAllRepository; +const updateUserDataPartRepository = (updateField, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const updateUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: Object.assign(Object.assign({}, updateField), { modified_at: (0, time_1.dateNow)(), modified_by: 1 }), + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return updateUser; +}); +exports.updateUserDataPartRepository = updateUserDataPartRepository; +const deleteUserRepository = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield db_1.prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: (0, time_1.dateNow)(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + return deleteUser; +}); +exports.deleteUserRepository = deleteUserRepository; diff --git a/backend/dist/api/users/users.service.js b/backend/dist/api/users/users.service.js new file mode 100644 index 0000000..6ffba5d --- /dev/null +++ b/backend/dist/api/users/users.service.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAll = exports.deleteUserData = exports.getUserId = exports.updateUserDataPart = exports.updateUserDataAll = exports.checkUsername = exports.createUserData = void 0; +const dotenv = __importStar(require("dotenv")); +const users_repository_1 = require("./users.repository"); +const bcrypt_1 = __importDefault(require("bcrypt")); +dotenv.config(); +const createUserData = (dataUser) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const createUser = (0, users_repository_1.createUserRepository)(username, passwordHash, fullname, email); + return createUser; +}); +exports.createUserData = createUserData; +const getUserId = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const getUserId = yield (0, users_repository_1.getDataUserId)(user_id); + return getUserId; +}); +exports.getUserId = getUserId; +const getUserAll = () => __awaiter(void 0, void 0, void 0, function* () { + const getUser = yield (0, users_repository_1.getDataUserAll)(); + return getUser; +}); +exports.getUserAll = getUserAll; +const checkUsername = (username, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = (0, users_repository_1.checkDataUsername)(username, user_id); + return checkUser; +}); +exports.checkUsername = checkUsername; +const updateUserDataAll = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(password, saltRounds); + const updateUser = yield (0, users_repository_1.updateUserDataAllRepository)(username, passwordHash, fullname, email, user_id); + return updateUser; +}); +exports.updateUserDataAll = updateUserDataAll; +const updateUserDataPart = (dataUser, user_id) => __awaiter(void 0, void 0, void 0, function* () { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = yield bcrypt_1.default.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = yield (0, users_repository_1.updateUserDataPartRepository)(dataUser, user_id); + return updateUser; +}); +exports.updateUserDataPart = updateUserDataPart; +const deleteUserData = (user_id) => __awaiter(void 0, void 0, void 0, function* () { + const deleteUser = yield (0, users_repository_1.deleteUserRepository)(user_id); + return deleteUser; +}); +exports.deleteUserData = deleteUserData; diff --git a/backend/dist/app.js b/backend/dist/app.js new file mode 100644 index 0000000..61a0ae5 --- /dev/null +++ b/backend/dist/app.js @@ -0,0 +1,36 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const express_1 = __importDefault(require("express")); +const dotenv_1 = __importDefault(require("dotenv")); +const cors_1 = __importDefault(require("cors")); +const welcome_1 = require("./welcome"); +const _404_1 = require("./404"); +const index_1 = require("./api/index"); +const middlewares_1 = require("./middlewares"); +const corsOption_1 = require("./config/corsOption"); +const cookie_parser_1 = __importDefault(require("cookie-parser")); +dotenv_1.default.config(); +const app = (0, express_1.default)(); +const PORT = process.env.PORT; +app.use(middlewares_1.credentials); +app.use((0, cors_1.default)(corsOption_1.corsOptions)); +app.use((req, res, next) => { + res.header("Access-Control-Allow-Origin", "*"); + res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); + res.header("Access-Control-Allow-Headers", "Content-Type, Authorization"); + next(); +}); +app.use(express_1.default.json()); +app.use((0, cookie_parser_1.default)()); +app.use(express_1.default.static("public")); +app.use(middlewares_1.logger); +app.use("/", welcome_1.router); +app.use("/api", index_1.router); +app.use(_404_1.router); +app.use(middlewares_1.errLogger); +app.listen(PORT, () => { + console.log(`Server running on PORT ${PORT} at ${new Date()}`); +}); diff --git a/backend/dist/config/allowedOrigins.js b/backend/dist/config/allowedOrigins.js new file mode 100644 index 0000000..46efa91 --- /dev/null +++ b/backend/dist/config/allowedOrigins.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.allowedOrigins = void 0; +exports.allowedOrigins = [ + "https://www.yoursite.com", + "http://127.0.0.1:5500", + "http://localhost:4400", + "http://10.38.27.200", + "http://localhost:8080", + "http://localhost:8000", + "http://127.0.0.1" +]; diff --git a/backend/dist/config/corsOption.js b/backend/dist/config/corsOption.js new file mode 100644 index 0000000..227a355 --- /dev/null +++ b/backend/dist/config/corsOption.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.corsOptions = void 0; +const allowedOrigins_1 = require("./allowedOrigins"); +const corsOptions = { + origin: (origin, callback) => { + if (!origin || allowedOrigins_1.allowedOrigins.indexOf(origin) !== -1) { + callback(null, true); + } + else { + callback(new Error("Not allowed by CORS")); + } + }, + // optionsSuccessStatus: 200, + preflightContinue: false, +}; +exports.corsOptions = corsOptions; diff --git a/backend/dist/db/database.handler.js b/backend/dist/db/database.handler.js new file mode 100644 index 0000000..1de5be2 --- /dev/null +++ b/backend/dist/db/database.handler.js @@ -0,0 +1,61 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.timeHandler = exports.selectFieldDb1 = exports.generateMaxDb1 = void 0; +const index_1 = require("./index"); +const generateMaxDb1 = (sequenceName, field, conditions) => __awaiter(void 0, void 0, void 0, function* () { + const queryCheckSequence = ` + select + sequence_name + from + information_schema.sequences + where + sequence_name = '${sequenceName}';`; + const sequenceCheck = yield index_1.prismaDb1.$queryRawUnsafe(queryCheckSequence); + let generateMax; + if (sequenceCheck.length === 0) { + const rawQuery = ` + SELECT + COALESCE(MAX(${field})+1, 1) as maxid + FROM + ${sequenceName} + ${conditions};`; + const sequenceCheck = yield index_1.prismaDb1.$queryRawUnsafe(rawQuery); + generateMax = parseInt(sequenceCheck[0].maxid.toString()); + } + else { + const rawQuery = yield index_1.prismaDb1.$queryRaw `SELECT + nextval(${sequenceName}) as nextval`; + generateMax = parseInt(rawQuery[0].nextval.toString()); + } + return generateMax; +}); +exports.generateMaxDb1 = generateMaxDb1; +const selectFieldDb1 = (tableName, field, conditions) => __awaiter(void 0, void 0, void 0, function* () { + const rawQuery = `SELECT + ${field} + FROM + ${tableName} + ${conditions} + Limit 1`; + const selectDataField = yield index_1.prismaDb1.$queryRawUnsafe(rawQuery); + return selectDataField[0][field]; +}); +exports.selectFieldDb1 = selectFieldDb1; +const timeHandler = (timex) => __awaiter(void 0, void 0, void 0, function* () { + const time = new Date(timex); + const hours = time.getUTCHours().toString().padStart(2, "0"); + const minutes = time.getUTCMinutes().toString().padStart(2, "0"); + const seconds = time.getUTCSeconds().toString().padStart(2, "0"); + const formattedTime = `${hours}:${minutes}:${seconds}`; + return formattedTime; +}); +exports.timeHandler = timeHandler; diff --git a/backend/dist/db/index.js b/backend/dist/db/index.js new file mode 100644 index 0000000..d7230ef --- /dev/null +++ b/backend/dist/db/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.prismaDb1 = void 0; +const client_db1_1 = require("./../../prisma/generated/client-db1"); +const prismaDb1 = new client_db1_1.PrismaClient(); +exports.prismaDb1 = prismaDb1; diff --git a/backend/dist/log/access/log_2025-04-25.txt b/backend/dist/log/access/log_2025-04-25.txt new file mode 100644 index 0000000..d1695b1 --- /dev/null +++ b/backend/dist/log/access/log_2025-04-25.txt @@ -0,0 +1,37 @@ +GET 6ab513ca-bbe1-497c-9b7a-318368011c97 ::ffff:127.0.0.1 / 1745592519947 Fri Apr 25 2025 21:48:39 GMT+0700 (Western Indonesia Time) {} +GET 0c47b383-e908-4892-9afc-8db580f2655a ::ffff:127.0.0.1 / 1745592522630 Fri Apr 25 2025 21:48:42 GMT+0700 (Western Indonesia Time) {} +GET 9c29e28d-b07b-40c2-9902-4669bf1cdbe3 ::ffff:127.0.0.1 /api/users 1745593316236 Fri Apr 25 2025 22:01:56 GMT+0700 (Western Indonesia Time) {} +POST f3823ad4-3978-45dd-a7d9-b8e67ac06d40 ::ffff:127.0.0.1 /api/users 1745593319539 Fri Apr 25 2025 22:01:59 GMT+0700 (Western Indonesia Time) {} +POST 427c5234-8d93-465e-ad82-c1fb4b845d6b ::ffff:127.0.0.1 /api/users 1745593364149 Fri Apr 25 2025 22:02:44 GMT+0700 (Western Indonesia Time) {} +POST d1174bff-cde2-4936-8538-bc3d14357b2e ::ffff:127.0.0.1 /api/users 1745593709782 Fri Apr 25 2025 22:08:29 GMT+0700 (Western Indonesia Time) {} +POST cbfde12f-6944-4146-a28e-66a2e4d16d0f ::ffff:127.0.0.1 /api/users 1745593720034 Fri Apr 25 2025 22:08:40 GMT+0700 (Western Indonesia Time) {} +POST 17b80187-f94f-4e66-b318-51415a561dcc ::ffff:127.0.0.1 /api/users 1745593897146 Fri Apr 25 2025 22:11:37 GMT+0700 (Western Indonesia Time) {} +POST ace77773-f609-4f85-a72a-e17c92d998bf ::ffff:127.0.0.1 /api/users 1745594007394 Fri Apr 25 2025 22:13:27 GMT+0700 (Western Indonesia Time) {"username":"test"} +POST 22b5eea9-dee6-486e-9db0-ff31572d0151 ::ffff:127.0.0.1 /api/users 1745594058222 Fri Apr 25 2025 22:14:18 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST 6b4386cd-8724-4c8b-a131-f07e1c0c3945 ::ffff:127.0.0.1 /api/users 1745594066487 Fri Apr 25 2025 22:14:26 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur4m"} +POST f038935a-20ba-4c71-88e9-0c80b36d4f30 ::ffff:127.0.0.1 /api/users 1745594072111 Fri Apr 25 2025 22:14:32 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST 84e59138-adf7-4810-83e6-70f5c5bde7bd ::ffff:127.0.0.1 /api/users 1745595587544 Fri Apr 25 2025 22:39:47 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST fd53551a-b036-47e5-acba-8cb60318b9e4 ::ffff:127.0.0.1 /api/users 1745595598150 Fri Apr 25 2025 22:39:58 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST a691aa3a-07b0-4bf6-96bf-cc42d0447209 ::ffff:127.0.0.1 /api/users 1745595765218 Fri Apr 25 2025 22:42:45 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST 6b5826e3-a5ae-419e-9317-55d128d1648d ::ffff:127.0.0.1 /api/users 1745595791651 Fri Apr 25 2025 22:43:11 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST 095b59fa-46d1-4257-9bd2-802961149f9a ::ffff:127.0.0.1 /api/users 1745595798036 Fri Apr 25 2025 22:43:18 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST d4e41af0-0f5c-4328-b64c-c425c243ae83 ::ffff:127.0.0.1 /api/users 1745595803041 Fri Apr 25 2025 22:43:23 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST bba14bc9-fc0b-466a-afd0-211738b8bfe0 ::ffff:127.0.0.1 /api/users 1745596200439 Fri Apr 25 2025 22:50:00 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST bdb35814-a5b8-4850-8241-61f1c71f3f3d ::ffff:127.0.0.1 /api/users 1745596228823 Fri Apr 25 2025 22:50:28 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST ce64f51b-cea5-4c63-942c-e594523e1254 ::ffff:127.0.0.1 /api/users 1745596412014 Fri Apr 25 2025 22:53:32 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST c661666f-2afd-4bd0-a805-da9c6f88fbff ::ffff:127.0.0.1 /api/users 1745596420514 Fri Apr 25 2025 22:53:40 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST f398cac6-a7aa-458c-a0ed-6a44c5f25672 ::ffff:127.0.0.1 /api/users 1745596437987 Fri Apr 25 2025 22:53:57 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST 692c0526-8266-4049-b351-5768f88092e2 ::ffff:127.0.0.1 /api/users/user_id/1 1745597605989 Fri Apr 25 2025 23:13:25 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +PUT 3c2d9436-9366-4e0b-beb9-f72eb107b857 ::ffff:127.0.0.1 /api/users/user_id/1 1745597611130 Fri Apr 25 2025 23:13:31 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +PUT 16974061-85c9-4739-aa74-318b6f943067 ::ffff:127.0.0.1 /api/users/user_id/1 1745597619803 Fri Apr 25 2025 23:13:39 GMT+0700 (Western Indonesia Time) {"username":"madkur102","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +PUT ab5f9b3c-bb1b-415b-adce-d5b14fe88e82 ::ffff:127.0.0.1 /api/users/user_id/1 1745597955807 Fri Apr 25 2025 23:19:15 GMT+0700 (Western Indonesia Time) {"username":"madkur102","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +PUT 419243cf-7078-4aca-a609-ee1a53f3efc3 ::ffff:127.0.0.1 /api/users/user_id/1 1745597969179 Fri Apr 25 2025 23:19:29 GMT+0700 (Western Indonesia Time) {"username":"madkur102","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +PUT 7d510e9b-8e38-4c5c-a7f7-b10ee6c5a749 ::ffff:127.0.0.1 /api/users/user_id/1 1745598018564 Fri Apr 25 2025 23:20:18 GMT+0700 (Western Indonesia Time) {"username":"madkur102","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +PUT 3e81c290-6ef0-40be-8c66-27d1ddbb08ed ::ffff:127.0.0.1 /api/users/user_id/3 1745598029784 Fri Apr 25 2025 23:20:29 GMT+0700 (Western Indonesia Time) {"username":"madkur22","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +PATCH f4e101de-e1b1-4efe-927a-6b1ae248c3d0 ::ffff:127.0.0.1 /api/users/user_id/2 1745598057047 Fri Apr 25 2025 23:20:57 GMT+0700 (Western Indonesia Time) {"username":"madkur22","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +PATCH 8b441006-8003-458c-beef-2250f5916c35 ::ffff:127.0.0.1 /api/users/user_id/3 1745598085183 Fri Apr 25 2025 23:21:25 GMT+0700 (Western Indonesia Time) {"username":"madkur200"} +PATCH 7221f0f8-d64f-44ad-86c3-ecd9bb901e7e ::ffff:127.0.0.1 /api/users/user_id/3 1745598171711 Fri Apr 25 2025 23:22:51 GMT+0700 (Western Indonesia Time) {"username":"madkur200"} +DELETE 36bbbc4c-3860-4a1d-8ffe-99d386cd72bd ::ffff:127.0.0.1 /api/users/user_id/1 1745598458585 Fri Apr 25 2025 23:27:38 GMT+0700 (Western Indonesia Time) {} +DELETE 7b3028d5-9c19-4c6e-bdf2-3ce7ac4437b2 ::ffff:127.0.0.1 /api/users/user_id/3 1745598464113 Fri Apr 25 2025 23:27:44 GMT+0700 (Western Indonesia Time) {} +DELETE 629759a4-5883-4ce1-a996-6696a7fce12a ::ffff:127.0.0.1 /api/users/user_id/3 1745598544265 Fri Apr 25 2025 23:29:04 GMT+0700 (Western Indonesia Time) {} +DELETE a26af4e8-28c5-441e-88b9-318d45b30b66 ::ffff:127.0.0.1 /api/users/user_id/3 1745598547733 Fri Apr 25 2025 23:29:07 GMT+0700 (Western Indonesia Time) {} \ No newline at end of file diff --git a/backend/dist/log/access/log_2025-04-26.txt b/backend/dist/log/access/log_2025-04-26.txt new file mode 100644 index 0000000..c4f38fa --- /dev/null +++ b/backend/dist/log/access/log_2025-04-26.txt @@ -0,0 +1,172 @@ +POST f81568d9-b0d4-4fb8-8cbc-e398981e6f46 ::ffff:127.0.0.1 /api/users/ 1745631093417 Sat Apr 26 2025 08:31:33 GMT+0700 (Western Indonesia Time) {} +POST 2c9f4bd6-70d3-4708-88ca-e22d307ed148 ::ffff:127.0.0.1 /api/users/ 1745631266436 Sat Apr 26 2025 08:34:26 GMT+0700 (Western Indonesia Time) {} +POST e17779f2-7739-47ca-8d4c-b3d7a055a120 ::ffff:127.0.0.1 /api/users/ 1745631378308 Sat Apr 26 2025 08:36:18 GMT+0700 (Western Indonesia Time) {"username":"eldrich12","password":"123eldrich","fullname":"Eldrich Hanafi Shankara"} +POST 91490b00-b388-4479-a58e-79a311259f7d ::ffff:127.0.0.1 /api/users/ 1745631404988 Sat Apr 26 2025 08:36:44 GMT+0700 (Western Indonesia Time) {"username":"eldrich12","password":"123eldrich","fullname":"Eldrich Hanafi Shankara","email":"eldrichhanafi@gmail.com"} +POST 1fa4016e-b005-4cb0-97f3-27773a3a0ea8 ::ffff:127.0.0.1 /api/users/ 1745631481527 Sat Apr 26 2025 08:38:01 GMT+0700 (Western Indonesia Time) {"username":"eldrich12","password":"123eldrich","fullname":"Eldrich Hanafi Shankara","email":"eldrichhanafi@gmail.com"} +GET 618fddaa-c5de-41ee-89ba-67c57dde979a ::ffff:127.0.0.1 /api/users/user_id/3 1745631536268 Sat Apr 26 2025 08:38:56 GMT+0700 (Western Indonesia Time) {} +GET 9d38a63b-5956-4c1d-8dd1-965718c45a23 ::ffff:127.0.0.1 /api/users/user_id/3 1745631667961 Sat Apr 26 2025 08:41:07 GMT+0700 (Western Indonesia Time) {} +GET 8f1f4a1e-2181-4ac6-b6d3-ae43f51ceb55 ::ffff:127.0.0.1 /api/users/user_id/4 1745631673859 Sat Apr 26 2025 08:41:13 GMT+0700 (Western Indonesia Time) {} +GET 46f32e1f-b1bc-4038-adec-7a6218325ef1 ::ffff:127.0.0.1 /api/users/user_id/4 1745654400305 Sat Apr 26 2025 15:00:00 GMT+0700 (Western Indonesia Time) {} +GET d6ceadb3-8b46-4a43-9f55-e3add293aee2 ::ffff:127.0.0.1 /api/users/user_id/2 1745654407396 Sat Apr 26 2025 15:00:07 GMT+0700 (Western Indonesia Time) {} +GET ef72e094-4554-4d08-939b-ff6cbc4d8c15 ::ffff:127.0.0.1 /api/users/ 1745654494651 Sat Apr 26 2025 15:01:34 GMT+0700 (Western Indonesia Time) {} +GET aaa71ef8-17f6-4559-9f42-54773da8d61d ::ffff:127.0.0.1 /api/users/ 1745655150780 Sat Apr 26 2025 15:12:30 GMT+0700 (Western Indonesia Time) {} +GET 5b9e1929-d255-4b32-822f-c77a1fdfe88f ::ffff:127.0.0.1 /api/users/ 1745655259320 Sat Apr 26 2025 15:14:19 GMT+0700 (Western Indonesia Time) {} +GET afefe32a-ef3c-4427-9ac9-4ca5c1ea085e ::ffff:127.0.0.1 /api/users/user_id/3 1745655292364 Sat Apr 26 2025 15:14:52 GMT+0700 (Western Indonesia Time) {} +GET dc7ea18a-499d-4f41-a438-2dae8219a76a ::ffff:127.0.0.1 /api/users/user_id/4 1745655295241 Sat Apr 26 2025 15:14:55 GMT+0700 (Western Indonesia Time) {} +POST eac8c616-445f-4d8f-a516-11db354a154a ::ffff:127.0.0.1 /api/users/ 1745655321964 Sat Apr 26 2025 15:15:21 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +POST 59aebb3f-fb1a-4ce1-9fda-cd68df1f99ce ::ffff:127.0.0.1 /api/users/ 1745655324921 Sat Apr 26 2025 15:15:24 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +GET a0bb5e89-0b3f-4d47-93fd-4872fb64fda1 ::ffff:127.0.0.1 /api/users/user_id/4 1745655328873 Sat Apr 26 2025 15:15:28 GMT+0700 (Western Indonesia Time) {} +GET b5dad4d8-e470-4c99-b958-8a9e30cd3bb3 ::ffff:127.0.0.1 /api/users/ 1745655331222 Sat Apr 26 2025 15:15:31 GMT+0700 (Western Indonesia Time) {} +GET 42f55486-2f51-4c09-a30f-ef82e91b6f73 ::ffff:127.0.0.1 /api/users/user_id/5 1745655393869 Sat Apr 26 2025 15:16:33 GMT+0700 (Western Indonesia Time) {} +PUT 787d4d5a-4ddd-4c4d-8cea-e5cc606c1189 ::ffff:127.0.0.1 /api/users/5 1745655427081 Sat Apr 26 2025 15:17:07 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +PUT c2239075-c79a-47e4-807b-069f3f9bf6e5 ::ffff:127.0.0.1 /api/users/user_id/5 1745655436954 Sat Apr 26 2025 15:17:16 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +PUT d52949af-e6db-4c66-866b-d62d1af613f1 ::ffff:127.0.0.1 /api/users/user_id/5 1745655722358 Sat Apr 26 2025 15:22:02 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +PUT 1ade8b9e-32e2-40c4-806b-7e649b6f09c4 ::ffff:127.0.0.1 /api/users/user_id/5 1745655756595 Sat Apr 26 2025 15:22:36 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +PUT 7ac36f20-de5f-4959-a5a9-7504d36481c9 ::ffff:127.0.0.1 /api/users/user_id/5 1745655778421 Sat Apr 26 2025 15:22:58 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +PUT 8a61b2b6-02fa-4960-bea3-5082b84176dd ::ffff:127.0.0.1 /api/users/user_id/5 1745655807917 Sat Apr 26 2025 15:23:27 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +PUT efaf6103-9318-419d-adbe-83a816a08658 ::ffff:127.0.0.1 /api/users/user_id/5 1745655975195 Sat Apr 26 2025 15:26:15 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +PUT 899e735f-872d-4147-b79e-ff6f8de2271f ::ffff:127.0.0.1 /api/users/user_id/5 1745656001737 Sat Apr 26 2025 15:26:41 GMT+0700 (Western Indonesia Time) {"username":"flaw122","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +PUT fd817da5-d161-4649-a5d6-b31226ba320d ::ffff:127.0.0.1 /api/users/user_id/5 1745656010931 Sat Apr 26 2025 15:26:50 GMT+0700 (Western Indonesia Time) {"username":"flaw122","password":"123flaw","fullname":"Flawery Handayani Aja","email":"flaweryhandayani@gmail.com"} +PUT aa487f7e-ca5d-4347-9cd4-7f05f7d2407d ::ffff:127.0.0.1 /api/users/user_id/5 1745656015629 Sat Apr 26 2025 15:26:55 GMT+0700 (Western Indonesia Time) {"username":"flaw122","password":"123flaw","fullname":"Flawery Handayani Aja","email":"flaweryhandayani10@gmail.com"} +GET 861d73f6-40fe-452d-861a-f0d355c353c7 ::ffff:127.0.0.1 /api/pegawai/ 1745657977653 Sat Apr 26 2025 15:59:37 GMT+0700 (Western Indonesia Time) {} +GET 276bf76e-adb9-4972-854b-1f5cbcc2bbec ::ffff:127.0.0.1 /api/pegawai/ 1745658015019 Sat Apr 26 2025 16:00:15 GMT+0700 (Western Indonesia Time) {} +GET 4139324e-1f93-4e08-8424-1483cc15c17d ::ffff:127.0.0.1 /api/pegawai/pegawai_id/1 1745658035221 Sat Apr 26 2025 16:00:35 GMT+0700 (Western Indonesia Time) {} +POST b276a14e-98fd-4d02-ba66-7f2b5badc1aa ::ffff:127.0.0.1 /api/pegawai/ 1745658119185 Sat Apr 26 2025 16:01:59 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Bondan Notonegoro"} +POST 2899100b-a29f-41e4-8356-9f312df01197 ::ffff:127.0.0.1 /api/pegawai/ 1745658142081 Sat Apr 26 2025 16:02:22 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Sal Priadi"} +POST c7e2cf43-cd57-4a69-8854-d46169c96465 ::ffff:127.0.0.1 /api/pegawai/ 1745658169693 Sat Apr 26 2025 16:02:49 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Tulus Gajah"} +GET 58628328-da72-4511-ad84-5330cdd7bdf1 ::ffff:127.0.0.1 /api/pegawai/ 1745658179992 Sat Apr 26 2025 16:02:59 GMT+0700 (Western Indonesia Time) {} +GET 8b5a903d-0c13-4412-9904-6b74a8e4976a ::ffff:127.0.0.1 /api/pegawai/pegawai_id/1 1745658184294 Sat Apr 26 2025 16:03:04 GMT+0700 (Western Indonesia Time) {} +GET a52ed900-2af6-486a-a9d4-e0c5f19567ed ::ffff:127.0.0.1 /api/pegawai/pegawai_id/2 1745658186932 Sat Apr 26 2025 16:03:06 GMT+0700 (Western Indonesia Time) {} +GET fe048fdf-765c-49f2-8933-9cc4e260e8aa ::ffff:127.0.0.1 /api/pegawai/pegawai_id/3 1745658190103 Sat Apr 26 2025 16:03:10 GMT+0700 (Western Indonesia Time) {} +GET df584ffd-9eac-4a75-acc4-f859bf1767d1 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/4 1745658192720 Sat Apr 26 2025 16:03:12 GMT+0700 (Western Indonesia Time) {} +PUT d80dad90-cd5a-4ad2-b78d-3b6bff275c04 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/4 1745658228511 Sat Apr 26 2025 16:03:48 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Tulus Gajah Thailand"} +PUT f9277ecf-0bfe-40d4-9b8d-d415be9732fc ::ffff:127.0.0.1 /api/pegawai/pegawai_id/4 1745658285978 Sat Apr 26 2025 16:04:45 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Tulus Gajah Thailand"} +DELETE 1cb5ceb6-3f33-4af1-862f-9cadc93d9781 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/4 1745658310592 Sat Apr 26 2025 16:05:10 GMT+0700 (Western Indonesia Time) {} +PATCH 2c67fd25-3dc6-48f4-ad27-5537eae1e569 ::ffff:127.0.0.1 /api/users/user_id/5 1745667435929 Sat Apr 26 2025 18:37:15 GMT+0700 (Western Indonesia Time) {"username":"flaw190"} +PATCH 15f3a533-3257-4d14-a97f-37cd16ae133d ::ffff:127.0.0.1 /api/users/user_id/5 1745667454266 Sat Apr 26 2025 18:37:34 GMT+0700 (Western Indonesia Time) {"username":"123read"} +PATCH b42379f6-9bd5-42d9-956d-07ca94fc3908 ::ffff:127.0.0.1 /api/users/user_id/5 1745667465111 Sat Apr 26 2025 18:37:45 GMT+0700 (Western Indonesia Time) {"username":"flawery34"} +PATCH 22816c3f-202d-4cad-b050-f4d15372438e ::ffff:127.0.0.1 /api/users/user_id/5 1745667480675 Sat Apr 26 2025 18:38:00 GMT+0700 (Western Indonesia Time) {"password":"123read"} +DELETE 24993713-2c01-4301-a22d-6ba7bc4d149d ::ffff:127.0.0.1 /api/users/user_id/5 1745667515977 Sat Apr 26 2025 18:38:35 GMT+0700 (Western Indonesia Time) {} +GET 20be57be-406b-416f-b405-d5e91fb5acb8 ::ffff:127.0.0.1 /api/asuransi/ 1745668924455 Sat Apr 26 2025 19:02:04 GMT+0700 (Western Indonesia Time) {} +GET 2ecd193c-7f60-4d50-9455-81fcf83aeb93 ::ffff:127.0.0.1 /api/asuransi/ 1745668965251 Sat Apr 26 2025 19:02:45 GMT+0700 (Western Indonesia Time) {} +GET 86e6b732-c427-41cf-8bfe-6dae12c83352 ::ffff:127.0.0.1 /api/asuransi/asuransi_id/4 1745669008837 Sat Apr 26 2025 19:03:28 GMT+0700 (Western Indonesia Time) {} +POST 97586e27-5cf7-46c8-b952-cb95d2fb2265 ::ffff:127.0.0.1 /api/asuransi/ 1745669019055 Sat Apr 26 2025 19:03:39 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Tulus Gajah"} +POST 557448cc-acaf-48e6-9cb4-043d632e0b4e ::ffff:127.0.0.1 /api/asuransi/ 1745669122945 Sat Apr 26 2025 19:05:22 GMT+0700 (Western Indonesia Time) {"namaasuransi":"Mandiri Inhealth"} +POST ecf21dbe-7d46-4529-a1a0-1131e199c348 ::ffff:127.0.0.1 /api/asuransi/ 1745669136096 Sat Apr 26 2025 19:05:36 GMT+0700 (Western Indonesia Time) {"namaasuransi":"JKN BPJS"} +POST 367c774f-92b6-48c7-9c5e-47324739fef5 ::ffff:127.0.0.1 /api/asuransi/ 1745669146681 Sat Apr 26 2025 19:05:46 GMT+0700 (Western Indonesia Time) {"namaasuransi":"PT PLN"} +POST ff66d095-ae41-41d3-bca1-c5b9e05054bb ::ffff:127.0.0.1 /api/users/ 1745669428734 Sat Apr 26 2025 19:10:28 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +POST 48fa50cc-c460-4d92-b8ba-3fac9e82620a ::ffff:127.0.0.1 /api/users/ 1745669682354 Sat Apr 26 2025 19:14:42 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +POST a3ecc209-ff12-4633-a799-9b2518db08a4 ::ffff:127.0.0.1 /api/users/ 1745669686109 Sat Apr 26 2025 19:14:46 GMT+0700 (Western Indonesia Time) {"username":"flaw10","password":"123flaw","fullname":"Flawery Handayani","email":"flaweryhandayani@gmail.com"} +POST d984764b-4d18-460d-8d46-e3a4b7312665 ::ffff:127.0.0.1 /api/users/ 1745669714600 Sat Apr 26 2025 19:15:14 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +POST 3782fa7d-c4f9-479f-9ed9-7abe775ac86a ::ffff:127.0.0.1 /api/users/ 1745669739230 Sat Apr 26 2025 19:15:39 GMT+0700 (Western Indonesia Time) {"username":"eldrich11","password":"123eldrich","fullname":"Eldrich Hanafi Shankara","email":"eldrichshankara@gmail.com"} +GET 253f93ba-5fcc-4bb6-a4e2-0fcefef4f02b ::ffff:127.0.0.1 /api/users/ 1745669790888 Sat Apr 26 2025 19:16:30 GMT+0700 (Western Indonesia Time) {} +GET e220f7f7-a895-43cc-b344-4991df111067 ::ffff:127.0.0.1 /api/users/user_id/5 1745669796296 Sat Apr 26 2025 19:16:36 GMT+0700 (Western Indonesia Time) {} +GET ec0977ff-7d34-4239-9b6a-f9b1edbecb3f ::ffff:127.0.0.1 /api/users/user_id/1 1745669800433 Sat Apr 26 2025 19:16:40 GMT+0700 (Western Indonesia Time) {} +GET 36e17a4f-8e57-4b6e-97f2-ef804546f511 ::ffff:127.0.0.1 /api/users/user_id/2 1745669805377 Sat Apr 26 2025 19:16:45 GMT+0700 (Western Indonesia Time) {} +GET f99f41e4-6443-4316-b954-026a6b39246f ::ffff:127.0.0.1 /api/users/user_id/3 1745669813010 Sat Apr 26 2025 19:16:53 GMT+0700 (Western Indonesia Time) {} +PUT e584bb45-9b3b-49ec-8566-357176c5ef73 ::ffff:127.0.0.1 /api/users/user_id/1 1745669829842 Sat Apr 26 2025 19:17:09 GMT+0700 (Western Indonesia Time) {"username":"flaw122","password":"123flaw","fullname":"Flawery Handayani Aja","email":"flaweryhandayani10@gmail.com"} +PATCH 8923c2f5-5053-428e-a364-8a005a6004f7 ::ffff:127.0.0.1 /api/users/user_id/5 1745669848369 Sat Apr 26 2025 19:17:28 GMT+0700 (Western Indonesia Time) {"username":"flaw23"} +PATCH 3ffddf84-fe0c-4cec-87ef-ac7fae97f1fe ::ffff:127.0.0.1 /api/users/user_id/1 1745669857094 Sat Apr 26 2025 19:17:37 GMT+0700 (Western Indonesia Time) {"username":"flaw23"} +DELETE b90463c9-26c4-481f-9e61-6de79add80b8 ::ffff:127.0.0.1 /api/users/user_id/1 1745669865048 Sat Apr 26 2025 19:17:45 GMT+0700 (Western Indonesia Time) {} +POST e8e6e4a8-d3f2-4d13-9238-89e557f51672 ::ffff:127.0.0.1 /api/asuransi/ 1745669887032 Sat Apr 26 2025 19:18:07 GMT+0700 (Western Indonesia Time) {"namaasuransi":"PT PLN"} +POST 86e54371-2415-43ab-86f4-f943bdcfd69d ::ffff:127.0.0.1 /api/asuransi/ 1745669894101 Sat Apr 26 2025 19:18:14 GMT+0700 (Western Indonesia Time) {"namaasuransi":"PT PELNI"} +POST bbd721be-3734-463f-853b-d91c370daf05 ::ffff:127.0.0.1 /api/asuransi/ 1745669911366 Sat Apr 26 2025 19:18:31 GMT+0700 (Western Indonesia Time) {"namaasuransi":"Mandiri Inhealth"} +POST ec9fa6ef-ca62-4711-bf44-3079145c7a91 ::ffff:127.0.0.1 /api/asuransi/ 1745669923308 Sat Apr 26 2025 19:18:43 GMT+0700 (Western Indonesia Time) {"namaasuransi":"JKN BPJS"} +GET bebe25f5-7112-496d-b4f0-e53616cbdc70 ::ffff:127.0.0.1 /api/asuransi/ 1745669929287 Sat Apr 26 2025 19:18:49 GMT+0700 (Western Indonesia Time) {} +POST a129507a-1e4c-430e-aced-97f8b4849578 ::ffff:127.0.0.1 /api/pegawai/ 1745670024351 Sat Apr 26 2025 19:20:24 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Tulus Gajah"} +POST b0b697f6-ddcb-4243-90ec-b9ab39aafd61 ::ffff:127.0.0.1 /api/pegawai/ 1745670030823 Sat Apr 26 2025 19:20:30 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Sal Priadi"} +POST 2967a175-fc92-44ce-a85a-2d67973607fd ::ffff:127.0.0.1 /api/pegawai/ 1745670037315 Sat Apr 26 2025 19:20:37 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Gustiwiw"} +POST a57a75ef-794e-4f25-9d0e-5ee310846b3b ::ffff:127.0.0.1 /api/pegawai/ 1745670044786 Sat Apr 26 2025 19:20:44 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Nadin Amizah"} +GET 4cda2819-50d7-4dc7-9dc8-852165060249 ::ffff:127.0.0.1 /api/pegawai/ 1745670056333 Sat Apr 26 2025 19:20:56 GMT+0700 (Western Indonesia Time) {} +GET 5f32ef70-677b-4e82-8c6d-c62aaf53f088 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/4 1745670060494 Sat Apr 26 2025 19:21:00 GMT+0700 (Western Indonesia Time) {} +PUT 446d15c1-8f96-4e90-8ba8-388aff13cc68 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/1 1745670088399 Sat Apr 26 2025 19:21:28 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Tulus Gajah Thailand"} +PUT 1dfeff56-bd0b-4b9d-a186-0e93cc9dc5f8 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/1 1745670098796 Sat Apr 26 2025 19:21:38 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Tulus Sanjaya"} +DELETE 147f9628-c06d-4816-af56-58399aa3258c ::ffff:127.0.0.1 /api/pegawai/pegawai_id/3 1745670118054 Sat Apr 26 2025 19:21:58 GMT+0700 (Western Indonesia Time) {} +GET 98844ccd-e9fd-484b-8145-616bd3f95a1e ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670731470 Sat Apr 26 2025 19:32:11 GMT+0700 (Western Indonesia Time) {} +GET d6586a6b-4ebc-472d-8d5b-1b3377f82677 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670804922 Sat Apr 26 2025 19:33:24 GMT+0700 (Western Indonesia Time) {} +GET deeeb94e-6e65-4d26-b6b6-b812baba8f85 ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/4 1745670840853 Sat Apr 26 2025 19:34:00 GMT+0700 (Western Indonesia Time) {} +POST 99a1f34c-00d0-43d2-b51d-de1c4b65bb8d ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670848615 Sat Apr 26 2025 19:34:08 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Nadin Amizah"} +POST 9db22674-3b16-4722-a9f7-1b7a1e27e806 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670877181 Sat Apr 26 2025 19:34:37 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Anak"} +POST 0210120d-6f24-4f60-a615-fd80c5e53cb8 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670930907 Sat Apr 26 2025 19:35:30 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Anak"} +POST e50830c8-ce93-43db-94a1-ac6778fbbe15 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670935885 Sat Apr 26 2025 19:35:35 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Kandungan"} +POST 8065cdad-eefe-46a6-a2f6-b94294db927f ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670940546 Sat Apr 26 2025 19:35:40 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Jantung"} +POST ef267420-fe30-434c-a07a-3a7de8c82ec6 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670946060 Sat Apr 26 2025 19:35:46 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Ortopedhy"} +POST ffc063f7-8b16-423d-96d3-74da0ba13d82 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670950001 Sat Apr 26 2025 19:35:50 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Gigi"} +POST 5acf6a34-2806-4bd3-a431-5c00cc5e7928 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670953851 Sat Apr 26 2025 19:35:53 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Mata"} +POST 122cf43f-1778-4736-95df-e0affbc78497 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670968279 Sat Apr 26 2025 19:36:08 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Hati Cerna"} +POST 7a15989a-9f13-459b-847e-7f27ee681c61 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670972663 Sat Apr 26 2025 19:36:12 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Jiwa"} +GET 5426fa50-4e3b-4a07-99a8-30cd3f83084a ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670976363 Sat Apr 26 2025 19:36:16 GMT+0700 (Western Indonesia Time) {} +GET 58659d42-3111-42f2-a5c5-f966a4daa26c ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/4 1745670982315 Sat Apr 26 2025 19:36:22 GMT+0700 (Western Indonesia Time) {} +PUT 5780bbf1-c762-4d13-9b53-b25836827056 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/1 1745671009246 Sat Apr 26 2025 19:36:49 GMT+0700 (Western Indonesia Time) {"namapegawai":"Klinik Anak Bocil"} +PUT 0bc74f7c-13ba-47ea-bddd-283a154c6c3b ::ffff:127.0.0.1 /api/pegawai/pegawai_id/1 1745671013150 Sat Apr 26 2025 19:36:53 GMT+0700 (Western Indonesia Time) {"namapegawai":"Klinik Anak"} +PUT 42c09be4-a1a3-488c-a1ae-f238dbfeeb9b ::ffff:127.0.0.1 /api/pegawai/pegawai_id/2 1745671046621 Sat Apr 26 2025 19:37:26 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Tulus Gajah Thailand"} +PUT af6cd846-2e7d-4413-abd4-38e282d6ca8d ::ffff:127.0.0.1 /api/asuransi/asuransi_id/2 1745671077464 Sat Apr 26 2025 19:37:57 GMT+0700 (Western Indonesia Time) {"namapegawai":"PT PELNI PUSAT"} +PUT 7126f0b2-7ba5-48b4-a094-3cc0fb5e3c60 ::ffff:127.0.0.1 /api/asuransi/asuransi_id/2 1745671084922 Sat Apr 26 2025 19:38:04 GMT+0700 (Western Indonesia Time) {"namaasuransi":"PT PELNI PUSAT"} +PUT 615d6ffd-1ddd-4c0f-baa6-63e7d1c638d0 ::ffff:127.0.0.1 /api/asuransi/asuransi_id/2 1745671105247 Sat Apr 26 2025 19:38:25 GMT+0700 (Western Indonesia Time) {"namaasuransi":"PT RSAB"} +DELETE 2b206a83-7835-46a8-9030-d7cbdfc87f6d ::ffff:127.0.0.1 /api/asuransi/asuransi_id/4 1745671134690 Sat Apr 26 2025 19:38:54 GMT+0700 (Western Indonesia Time) {} +PUT 344678d9-8b44-4d7c-aaf8-8112ea9d2389 ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/1 1745671184785 Sat Apr 26 2025 19:39:44 GMT+0700 (Western Indonesia Time) {"namapegawai":"Klinik Anak Kecil"} +PUT 7745c863-060a-48cb-a32b-0d828bbf9e6e ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/1 1745671191799 Sat Apr 26 2025 19:39:51 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Anak Kecil"} +PUT e902b2d2-74cb-40ad-a659-0a8a1c84a2ef ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/1 1745671216461 Sat Apr 26 2025 19:40:16 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik Anak"} +DELETE aedd4ca5-66d1-40f7-82d7-186977b414fb ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/3 1745671228653 Sat Apr 26 2025 19:40:28 GMT+0700 (Western Indonesia Time) {} +POST 772db3f4-7c13-4639-8d63-bb47c1d30d0d ::ffff:127.0.0.1 /api/pasien/ 1745673968279 Sat Apr 26 2025 20:26:08 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Nadin Amizah"} +POST 4dbec6b7-b9d4-444a-b455-bae0b034068b ::ffff:127.0.0.1 /api/pasien/ 1745674000085 Sat Apr 26 2025 20:26:40 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Nadin Amizah"} +POST 3ab8a621-b00a-404b-a7ff-08cdfc547185 ::ffff:127.0.0.1 /api/pasien/ 1745674002450 Sat Apr 26 2025 20:26:42 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Nadin Amizah"} +POST e90ec181-e4a0-4593-b002-59215cf9ae10 ::ffff:127.0.0.1 /api/pasien/ 1745674011023 Sat Apr 26 2025 20:26:51 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Nadin Amizah"} +POST 1fb1759f-1454-406a-8266-49d1486d8b06 ::ffff:127.0.0.1 /api/pasien/ 1745674172105 Sat Apr 26 2025 20:29:32 GMT+0700 (Western Indonesia Time) {"namapasien":"Cristiano Ronaldo"} +POST 07336869-0261-4121-b79f-df77cc7c7357 ::ffff:127.0.0.1 /api/pasien/ 1745674801657 Sat Apr 26 2025 20:40:01 GMT+0700 (Western Indonesia Time) {"namapasien":"Cristiano Ronaldo","tanggallahir":"1985-09-21","jeniskelamin":"N"} +POST 7f6290a1-b2c1-4c38-a948-87cf0dd378de ::ffff:127.0.0.1 /api/pasien/ 1745674810859 Sat Apr 26 2025 20:40:10 GMT+0700 (Western Indonesia Time) {"namapasien":"Cristiano Ronaldo","tanggallahir":"1985-09-21","jeniskelamin":"L"} +POST b3a45941-e25f-456e-b081-2aa9eb8eda7a ::ffff:127.0.0.1 /api/pasien/ 1745674890031 Sat Apr 26 2025 20:41:30 GMT+0700 (Western Indonesia Time) {"namapasien":"Cristiano Ronaldo","tanggallahir":"1985-09-21","jeniskelamin":"L"} +POST fd73829a-9347-4b7a-b670-3a4bbe1ed753 ::ffff:127.0.0.1 /api/pasien/ 1745674970960 Sat Apr 26 2025 20:42:50 GMT+0700 (Western Indonesia Time) {"namapasien":"Cristiano Ronaldo","tanggallahir":"1985-09-21","jeniskelamin":"L"} +POST 0a0e725e-aa9a-4fc5-a5d2-ae04fec0f164 ::ffff:127.0.0.1 /api/pasien/ 1745675007062 Sat Apr 26 2025 20:43:27 GMT+0700 (Western Indonesia Time) {"namapasien":"Lionel Messi","tanggallahir":"1989-10-10","jeniskelamin":"L"} +POST a54f25fe-9c3e-4d41-bd27-f7d2e315392e ::ffff:127.0.0.1 /api/pasien/ 1745675038745 Sat Apr 26 2025 20:43:58 GMT+0700 (Western Indonesia Time) {"namapasien":"Maya Estianti","tanggallahir":"1978-03-10","jeniskelamin":"P"} +GET c1510224-9073-45e3-a4b6-17281d2f25fc ::ffff:127.0.0.1 /api/pasien/nomrpasien/00000004 1745675662139 Sat Apr 26 2025 20:54:22 GMT+0700 (Western Indonesia Time) {} +GET adb02ac9-9daf-419b-b35c-01cd0fefd973 ::ffff:127.0.0.1 /api/pasien/nomrpasien/000000040 1745675670382 Sat Apr 26 2025 20:54:30 GMT+0700 (Western Indonesia Time) {} +GET 080d9d96-1a31-49f9-ab9c-ffbd2de10c55 ::ffff:127.0.0.1 /api/pasien/nomrpasien/00000004 1745675673347 Sat Apr 26 2025 20:54:33 GMT+0700 (Western Indonesia Time) {} +GET 020c351a-a51e-4f41-b04a-944b473984df ::ffff:127.0.0.1 /api/pasien/namapasien/lionel 1745675914099 Sat Apr 26 2025 20:58:34 GMT+0700 (Western Indonesia Time) {} +GET f6186f50-3316-4a92-8599-9fc1ff70b33d ::ffff:127.0.0.1 /api/pasien/namapasien/lionel 1745675934023 Sat Apr 26 2025 20:58:54 GMT+0700 (Western Indonesia Time) {} +GET 491aed72-616a-4491-825d-8a7e228d697a ::ffff:127.0.0.1 /api/pasien/namapasien/lione 1745675938730 Sat Apr 26 2025 20:58:58 GMT+0700 (Western Indonesia Time) {} +GET 801b98c3-4706-4320-9264-40ebeff0dc01 ::ffff:127.0.0.1 /api/pasien/ 1745675995903 Sat Apr 26 2025 20:59:55 GMT+0700 (Western Indonesia Time) {} +GET aae6e8d5-4874-47c0-ae98-6c9564893550 ::ffff:127.0.0.1 /api/pasien/ 1745676283323 Sat Apr 26 2025 21:04:43 GMT+0700 (Western Indonesia Time) {} +GET 889d0990-0605-4c51-b539-42c5d2b8d29b ::ffff:127.0.0.1 /api/pasien/ 1745676317316 Sat Apr 26 2025 21:05:17 GMT+0700 (Western Indonesia Time) {} +GET 745b4996-a2dc-43ca-a253-5e2aa6d4f7df ::ffff:127.0.0.1 /api/pasien/nomrpasien/00000004 1745676327737 Sat Apr 26 2025 21:05:27 GMT+0700 (Western Indonesia Time) {} +GET a3697b58-0784-4780-b7e1-fcc893faeebf ::ffff:127.0.0.1 /api/pasien/nomrpasien/00000005 1745676330380 Sat Apr 26 2025 21:05:30 GMT+0700 (Western Indonesia Time) {} +GET 51032679-125c-4170-846c-6e72339cbe88 ::ffff:127.0.0.1 /api/pasien/nomrpasien/00000006 1745676334843 Sat Apr 26 2025 21:05:34 GMT+0700 (Western Indonesia Time) {} +PUT 966d46e6-8530-404b-aee3-08b8781a1a3b ::ffff:127.0.0.1 /api/pasien/idpasien/5 1745676827859 Sat Apr 26 2025 21:13:47 GMT+0700 (Western Indonesia Time) {"namapasien":"Maya EsTeh Anti"} +PUT 0bdf73a3-995f-40a7-bd35-4e0e92492fe1 ::ffff:127.0.0.1 /api/pasien/idpasien/5 1745676862425 Sat Apr 26 2025 21:14:22 GMT+0700 (Western Indonesia Time) {"namapasien":"Maya EsTeh Anti","tanggallahir":"2023-01-23"} +PUT e5cb6e55-55f2-46a7-b6d0-1bce7805bc9a ::ffff:127.0.0.1 /api/pasien/idpasien/5 1745676880599 Sat Apr 26 2025 21:14:40 GMT+0700 (Western Indonesia Time) {"namapasien":"Maya EsTeh Anti","tanggallahir":"2023-01-23","jeniskelamin":"P"} +GET 417b3b9e-9142-48aa-abf8-ec651a648d22 ::ffff:127.0.0.1 /api/tindakan/ 1745678522495 Sat Apr 26 2025 21:42:02 GMT+0700 (Western Indonesia Time) {} +GET b1d5badf-8508-4aa5-b576-bcc044a1d1a8 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/4 1745678551068 Sat Apr 26 2025 21:42:31 GMT+0700 (Western Indonesia Time) {} +POST 8e5d2231-28e4-4162-a53f-61e63c11b1cc ::ffff:127.0.0.1 /api/tindakan/ 1745678566415 Sat Apr 26 2025 21:42:46 GMT+0700 (Western Indonesia Time) {"namaasuransi":"JKN BPJS"} +POST cdcdf2db-ffb4-404b-b16c-8f8e2de8021c ::ffff:127.0.0.1 /api/tindakan/ 1745678633280 Sat Apr 26 2025 21:43:53 GMT+0700 (Western Indonesia Time) {"namatindakan":"Konsultasi Dr Umum"} +POST ad223415-86f4-4fb4-932c-7e481ee03fb6 ::ffff:127.0.0.1 /api/tindakan/ 1745678653037 Sat Apr 26 2025 21:44:13 GMT+0700 (Western Indonesia Time) {"namatindakan":"Konsultasi Dr Umum","tariftindakan":400000} +POST a742d40d-7d86-4033-b38d-ef8318c56381 ::ffff:127.0.0.1 /api/tindakan/ 1745678665532 Sat Apr 26 2025 21:44:25 GMT+0700 (Western Indonesia Time) {"namatindakan":"Konsultasi Dr Spesialis","tariftindakan":600000} +GET 7b2ab8fe-4b75-4472-854b-d011dae23654 ::ffff:127.0.0.1 /api/tindakan/ 1745678670957 Sat Apr 26 2025 21:44:30 GMT+0700 (Western Indonesia Time) {} +GET bf15f168-858e-4fcf-9f4b-b19a10e22fe4 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/1 1745679085133 Sat Apr 26 2025 21:51:25 GMT+0700 (Western Indonesia Time) {} +GET eb4da49c-eebd-4930-a098-056339e3bdbd ::ffff:127.0.0.1 /api/tindakan/tindakan_id/2 1745679089077 Sat Apr 26 2025 21:51:29 GMT+0700 (Western Indonesia Time) {} +GET 679fba29-1d91-4f77-ae91-8aac91c51f5a ::ffff:127.0.0.1 /api/tindakan/tindakan_id/3 1745679092145 Sat Apr 26 2025 21:51:32 GMT+0700 (Western Indonesia Time) {} +POST 718d1200-4c59-499a-854f-96f70b44acb0 ::ffff:127.0.0.1 /api/tindakan/ 1745679211075 Sat Apr 26 2025 21:53:31 GMT+0700 (Western Indonesia Time) {"namatindakan":"Pemeriksaan Laboratorium Darah Lengkap","tariftindakan":250000} +POST 8f72511a-a65d-45ff-a317-c5551affe0ca ::ffff:127.0.0.1 /api/tindakan/ 1745679219095 Sat Apr 26 2025 21:53:39 GMT+0700 (Western Indonesia Time) {"namatindakan":"CT Scan Kepala","tariftindakan":1500000} +POST 11f3819c-d63a-4c3e-ba63-deaba3d4a826 ::ffff:127.0.0.1 /api/tindakan/ 1745679229309 Sat Apr 26 2025 21:53:49 GMT+0700 (Western Indonesia Time) {"namatindakan":"Rontgen Dada","tariftindakan":300000} +POST 70048da4-e97c-4207-843c-5362679880f8 ::ffff:127.0.0.1 /api/tindakan/ 1745679237713 Sat Apr 26 2025 21:53:57 GMT+0700 (Western Indonesia Time) {"namatindakan":"USG Abdomen","tariftindakan":400000} +POST bf0ed8a3-6ce1-4d36-99fe-201682b9a658 ::ffff:127.0.0.1 /api/tindakan/ 1745679248620 Sat Apr 26 2025 21:54:08 GMT+0700 (Western Indonesia Time) {"namatindakan":"Fisioterapi Bahu","tariftindakan":200000} +POST 6b01b8f7-db0d-4be1-97c8-c4b1a0b6972f ::ffff:127.0.0.1 /api/tindakan/ 1745679256434 Sat Apr 26 2025 21:54:16 GMT+0700 (Western Indonesia Time) {"namatindakan":"Operasi Apendiks","tariftindakan":4500000} +POST b2fd8efb-bc10-49b7-a370-810d90e8d17a ::ffff:127.0.0.1 /api/tindakan/ 1745679263969 Sat Apr 26 2025 21:54:23 GMT+0700 (Western Indonesia Time) {"namatindakan":"Rawat Inap Kelas 1","tariftindakan":750000} +POST 8fc33a5b-ae01-4fe8-bac9-45b7ac631559 ::ffff:127.0.0.1 /api/tindakan/ 1745679271541 Sat Apr 26 2025 21:54:31 GMT+0700 (Western Indonesia Time) {"namatindakan":"Rawat Inap Kelas 2","tariftindakan":500000} +POST ba9ab8c6-1204-49d0-8dd2-a337c1d7648a ::ffff:127.0.0.1 /api/tindakan/ 1745679278657 Sat Apr 26 2025 21:54:38 GMT+0700 (Western Indonesia Time) {"namatindakan":"Rawat Inap Kelas 3","tariftindakan":300000} +POST 02e9f606-1cd7-4561-866f-114674b90eb0 ::ffff:127.0.0.1 /api/tindakan/ 1745679285845 Sat Apr 26 2025 21:54:45 GMT+0700 (Western Indonesia Time) {"namatindakan":"Pemeriksaan EKG","tariftindakan":180000} +POST e7f9dfb0-f245-46c3-8d8d-831c90f23428 ::ffff:127.0.0.1 /api/tindakan/ 1745679367788 Sat Apr 26 2025 21:56:07 GMT+0700 (Western Indonesia Time) {"namatindakan":"Endoskopi Lambung","tariftindakan":1200000} +POST 6306103a-01f6-4570-97d7-fc8e8da166e3 ::ffff:127.0.0.1 /api/tindakan/ 1745679375512 Sat Apr 26 2025 21:56:15 GMT+0700 (Western Indonesia Time) {"namatindakan":"Hemodialisa (Cuci Darah)","tariftindakan":1000000} +POST b327427c-defc-4c24-9adc-ce606862adfe ::ffff:127.0.0.1 /api/tindakan/ 1745679382846 Sat Apr 26 2025 21:56:22 GMT+0700 (Western Indonesia Time) {"namatindakan":"Konsultasi Gizi","tariftindakan":150000} +POST 887ae094-0002-48bf-b375-319bccb61618 ::ffff:127.0.0.1 /api/tindakan/ 1745679389609 Sat Apr 26 2025 21:56:29 GMT+0700 (Western Indonesia Time) {"namatindakan":"Persalinan Normal","tariftindakan":3500000} +POST c6870c69-e4c4-4deb-bca9-4aa7e7c15da8 ::ffff:127.0.0.1 /api/tindakan/ 1745679397853 Sat Apr 26 2025 21:56:37 GMT+0700 (Western Indonesia Time) {"namatindakan":"Persalinan Operasi Caesar","tariftindakan":8500000} +POST c348cfe4-6f91-4c06-ba77-68b2031c8afe ::ffff:127.0.0.1 /api/tindakan/ 1745679405659 Sat Apr 26 2025 21:56:45 GMT+0700 (Western Indonesia Time) {"namatindakan":"Pemeriksaan Mata","tariftindakan":200000} +POST ff5bfc7f-5041-41ce-90fa-f1e3527411c5 ::ffff:127.0.0.1 /api/tindakan/ 1745679413097 Sat Apr 26 2025 21:56:53 GMT+0700 (Western Indonesia Time) {"namatindakan":"Pemasangan Infus","tariftindakan":100000} +POST 8868d9ce-a155-42cc-a554-70f1cd6ac5da ::ffff:127.0.0.1 /api/tindakan/ 1745679425050 Sat Apr 26 2025 21:57:05 GMT+0700 (Western Indonesia Time) {"namatindakan":"Nebulizer","tariftindakan":80000} +POST 3a745327-3ba7-4f65-ab84-6433aa01a81a ::ffff:127.0.0.1 /api/tindakan/ 1745679434164 Sat Apr 26 2025 21:57:14 GMT+0700 (Western Indonesia Time) {"namatindakan":"Vaksinasi Influenza","tariftindakan":250000} +GET 042eb1f6-e984-4153-9778-d6904a6dbafa ::ffff:127.0.0.1 /api/tindakan/ 1745679454521 Sat Apr 26 2025 21:57:34 GMT+0700 (Western Indonesia Time) {} +GET e3ebe175-6f04-40cc-a86f-f9be01efde40 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/3 1745679728371 Sat Apr 26 2025 22:02:08 GMT+0700 (Western Indonesia Time) {} +PUT 8467c498-4c7b-45e7-a854-8bf006bf4627 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/3 1745679754588 Sat Apr 26 2025 22:02:34 GMT+0700 (Western Indonesia Time) {"namaasuransi":"PT RSAB"} +PUT a33faac1-f0b0-4945-9aef-e612b56fa496 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/3 1745679777237 Sat Apr 26 2025 22:02:57 GMT+0700 (Western Indonesia Time) {"namatindakan":"Pemeriksaan Laboratorium Darah Lengkap Banget"} +PUT 0a647f9c-8cee-4973-86e5-869eb3fd7842 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/3 1745679806588 Sat Apr 26 2025 22:03:26 GMT+0700 (Western Indonesia Time) {"namatindakan":"Pemeriksaan Laboratorium Darah Lengkap Banget","tariftindakan":250000} +DELETE e64837dd-30ce-4c41-afcb-8c0580ff9bfb ::ffff:127.0.0.1 /api/tindakan/tindakan_id/4 1745679832677 Sat Apr 26 2025 22:03:52 GMT+0700 (Western Indonesia Time) {} +GET d4b2f09d-7031-48de-a893-fa7a8dec3526 ::ffff:127.0.0.1 /api/registrasi/ 1745680277698 Sat Apr 26 2025 22:11:17 GMT+0700 (Western Indonesia Time) {} \ No newline at end of file diff --git a/backend/dist/log/access/log_2025-04-27.txt b/backend/dist/log/access/log_2025-04-27.txt new file mode 100644 index 0000000..10e4879 --- /dev/null +++ b/backend/dist/log/access/log_2025-04-27.txt @@ -0,0 +1,528 @@ +POST 0923d45e-a461-4375-8acd-211db29c2893 ::ffff:127.0.0.1 /api/registrasi/ 1745712730756 Sun Apr 27 2025 07:12:10 GMT+0700 (Western Indonesia Time) {} +POST 1dc1b04c-c30d-4249-9e9c-bfb6ca4ba6d7 ::ffff:127.0.0.1 /api/registrasi/ 1745713414300 Sun Apr 27 2025 07:23:34 GMT+0700 (Western Indonesia Time) {} +POST fd601607-1228-4254-8966-522d464baacf ::ffff:127.0.0.1 /api/registrasi/ 1745713503559 Sun Apr 27 2025 07:25:03 GMT+0700 (Western Indonesia Time) {} +POST b7e3d396-8d8a-4ed0-ace8-03b847cf8013 ::ffff:127.0.0.1 /api/registrasi/ 1745713709974 Sun Apr 27 2025 07:28:29 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":3,"nomorkartuasuransi":"0123456789","idasuransi":2,"idpegawai":1,"idruangpelayanan":8} +POST 9c05502c-1c35-47d7-8edc-7d9b62905c3d ::ffff:127.0.0.1 /api/registrasi/ 1745713769922 Sun Apr 27 2025 07:29:29 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":3,"nomorkartuasuransi":"0123456789","idasuransi":2,"idpegawai":1,"idruangpelayanan":8} +GET cb707c1e-27a1-4ea7-9470-056caed87195 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745714126192 Sun Apr 27 2025 07:35:26 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":3,"nomorkartuasuransi":"0123456789","idasuransi":2,"idpegawai":1,"idruangpelayanan":8} +GET bd2299a9-3f78-46d1-97f8-f7a3fa986f25 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745714394549 Sun Apr 27 2025 07:39:54 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":3,"nomorkartuasuransi":"0123456789","idasuransi":2,"idpegawai":1,"idruangpelayanan":8} +GET 6707a3f9-4bd6-4809-be92-c38c99b7dd50 ::ffff:127.0.0.1 /api/registrasi/ 1745714610908 Sun Apr 27 2025 07:43:30 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":3,"nomorkartuasuransi":"0123456789","idasuransi":2,"idpegawai":1,"idruangpelayanan":8} +GET 1133507f-0b98-4650-86f9-77fe7b1232eb ::ffff:127.0.0.1 /api/registrasi/ 1745716267040 Sun Apr 27 2025 08:11:07 GMT+0700 (Western Indonesia Time) {} +GET 236b8aac-e8a6-4bed-bf8e-234f8fa9485f ::ffff:127.0.0.1 /api/registrasi/registrasi_id/3 1745716292010 Sun Apr 27 2025 08:11:32 GMT+0700 (Western Indonesia Time) {} +GET 724ad96e-6451-42ba-9c87-28ef866e9986 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745716298591 Sun Apr 27 2025 08:11:38 GMT+0700 (Western Indonesia Time) {} +POST e87a4906-6dae-4f79-8112-87a116dcd76e ::ffff:127.0.0.1 /api/registrasi/ 1745717017787 Sun Apr 27 2025 08:23:37 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":9,"nomorkartuasuransi":"0123456789","idasuransi":2,"idpegawai":1,"idruangpelayanan":8} +POST ea86e813-eaf1-414f-a8cc-b1ee903c31a6 ::ffff:127.0.0.1 /api/registrasi/ 1745717027774 Sun Apr 27 2025 08:23:47 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":2,"nomorkartuasuransi":"0123456789","idasuransi":2,"idpegawai":1,"idruangpelayanan":8} +POST 093bc5a3-81e5-489d-969c-aa7afd7d222e ::ffff:127.0.0.1 /api/registrasi/ 1745717529559 Sun Apr 27 2025 08:32:09 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":2,"nomorkartuasuransi":"0123456789","idasuransi":2,"idpegawai":1,"idruangpelayanan":8} +POST 86d4c5df-14d8-4878-b7bb-0d1773cf08ac ::ffff:127.0.0.1 /api/registrasi/ 1745717548591 Sun Apr 27 2025 08:32:28 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":4,"nomorkartuasuransi":"987654321","idasuransi":3,"idpegawai":3,"idruangpelayanan":9} +POST b6a2abec-b4be-49ff-92bc-fbda5711bc76 ::ffff:127.0.0.1 /api/registrasi/ 1745717554770 Sun Apr 27 2025 08:32:34 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":4,"nomorkartuasuransi":"987654321","idasuransi":3,"idpegawai":3,"idruangpelayanan":1} +POST 19cb66da-c3f0-4f69-b508-a0d011a7b04f ::ffff:127.0.0.1 /api/registrasi/ 1745717560428 Sun Apr 27 2025 08:32:40 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":4,"nomorkartuasuransi":"987654321","idasuransi":3,"idpegawai":4,"idruangpelayanan":1} +POST 838d753d-9652-4932-a047-1406b33035c7 ::ffff:127.0.0.1 /api/registrasi/ 1745717617238 Sun Apr 27 2025 08:33:37 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":5,"nomorkartuasuransi":"44556677","idasuransi":4,"idpegawai":5,"idruangpelayanan":3} +POST 43d30895-4871-464d-ad57-bec674e648c0 ::ffff:127.0.0.1 /api/registrasi/ 1745717635393 Sun Apr 27 2025 08:33:55 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":5,"nomorkartuasuransi":"44556677","idasuransi":1,"idpegawai":5,"idruangpelayanan":3} +POST b9246961-62aa-4f9f-92c0-23f094bb9b12 ::ffff:127.0.0.1 /api/registrasi/ 1745717651428 Sun Apr 27 2025 08:34:11 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":5,"nomorkartuasuransi":"44556677","idasuransi":1,"idpegawai":2,"idruangpelayanan":3} +POST c78215f9-4faa-4549-841f-7da5b689df8f ::ffff:127.0.0.1 /api/registrasi/ 1745717663716 Sun Apr 27 2025 08:34:23 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":5,"nomorkartuasuransi":"44556677","idasuransi":1,"idpegawai":2,"idruangpelayanan":8} +PUT 5243e6a7-a458-489f-85cf-d3eec3592a2b ::ffff:127.0.0.1 /api/registrasi/registrasi_id/3 1745718298286 Sun Apr 27 2025 08:44:58 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":5,"nomorkartuasuransi":"44556677","idasuransi":1,"idpegawai":4,"idruangpelayanan":8} +PUT ed6404e6-8679-4cc5-9283-2162f1368f9b ::ffff:127.0.0.1 /api/registrasi/registrasi_id/3 1745718344852 Sun Apr 27 2025 08:45:44 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":5,"nomorkartuasuransi":"44556677","idasuransi":1,"idpegawai":4,"idruangpelayanan":8} +PUT 9e9c1c39-c51a-4c65-98b6-46a4decccd5a ::ffff:127.0.0.1 /api/registrasi/registrasi_id/3 1745719012160 Sun Apr 27 2025 08:56:52 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":5,"nomorkartuasuransi":"44556677","idasuransi":1,"idpegawai":4,"idruangpelayanan":8} +PUT 10057f65-786d-4d61-9917-1b068096e624 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/3 1745719078849 Sun Apr 27 2025 08:57:58 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":5,"nomorkartuasuransi":"44556677","idasuransi":1,"idpegawai":4,"idruangpelayanan":8} +PUT e62e7769-8d50-4326-b42d-f39bed4139b8 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/3 1745719105739 Sun Apr 27 2025 08:58:25 GMT+0700 (Western Indonesia Time) {"tanggalregistrasi":"2025-04-27","idpasien":5,"nomorkartuasuransi":"44556677","idasuransi":1,"idpegawai":4,"idruangpelayanan":8} +GET 3a4deb54-0e03-4149-aeee-1b6353efc78f ::ffff:127.0.0.1 /api/transaksi/ 1745744182224 Sun Apr 27 2025 15:56:22 GMT+0700 (Western Indonesia Time) {} +GET 41741908-feaa-4ed1-b84f-4d9403c97f86 ::ffff:127.0.0.1 /api/transaksi/ 1745744200582 Sun Apr 27 2025 15:56:40 GMT+0700 (Western Indonesia Time) {} +GET 3a6e467b-4758-4540-aa26-42a24a3c3094 ::ffff:127.0.0.1 /api/transaksi/transaksi_id/1 1745744294422 Sun Apr 27 2025 15:58:14 GMT+0700 (Western Indonesia Time) {} +POST 237b0939-bc60-4b5f-8e36-3a063b344015 ::ffff:127.0.0.1 /api/transaksi/ 1745744477991 Sun Apr 27 2025 16:01:17 GMT+0700 (Western Indonesia Time) {"idregistrasi":3,"idtindakan":2,"jmltindakan":1,"idpegawai":4} +GET 7479395e-71f2-4344-9e12-e50545db6def ::ffff:127.0.0.1 /api/transaksi/ 1745744655097 Sun Apr 27 2025 16:04:15 GMT+0700 (Western Indonesia Time) {} +GET 1be9ca6a-1933-4f1b-8f5b-4590df20d98f ::ffff:127.0.0.1 /api/transaksi/transaksi_id/1 1745744678453 Sun Apr 27 2025 16:04:38 GMT+0700 (Western Indonesia Time) {} +GET b968688f-10a4-46d9-9c82-16287a4bca4b ::ffff:127.0.0.1 /api/transaksi/transaksi_id/2 1745744682243 Sun Apr 27 2025 16:04:42 GMT+0700 (Western Indonesia Time) {} +PUT ee485095-c948-4d2b-a626-fd4616812f1d ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745744707078 Sun Apr 27 2025 16:05:07 GMT+0700 (Western Indonesia Time) {"idregistrasi":3,"idtindakan":3,"jmltindakan":1,"idpegawai":4} +PUT 1ee37a95-0838-40b1-b562-e28ab7eb3fbf ::ffff:127.0.0.1 /api/tindakan/tindakan_id/1 1745744725951 Sun Apr 27 2025 16:05:25 GMT+0700 (Western Indonesia Time) {"idregistrasi":3,"idtindakan":3,"jmltindakan":1,"idpegawai":4} +PUT 2c71a662-be81-4c0a-a3e5-a238e75915e8 ::ffff:127.0.0.1 /api/transaksi/transaksi_id/1 1745744740999 Sun Apr 27 2025 16:05:40 GMT+0700 (Western Indonesia Time) {"idregistrasi":3,"idtindakan":3,"jmltindakan":1,"idpegawai":4} +GET 70d16098-8fa0-438b-a5ac-8d87c5583056 ::ffff:127.0.0.1 /api/users/ 1745744797868 Sun Apr 27 2025 16:06:37 GMT+0700 (Western Indonesia Time) {} +GET 00df9372-f091-49ad-9882-eb42d8340178 ::ffff:127.0.0.1 /api/login/ 1745744803466 Sun Apr 27 2025 16:06:43 GMT+0700 (Western Indonesia Time) {} +POST 33ca6cee-0af2-4cd6-89a6-1265c33b1bec ::ffff:127.0.0.1 /api/login/ 1745744897773 Sun Apr 27 2025 16:08:17 GMT+0700 (Western Indonesia Time) {} +POST 57fee074-665f-464e-8d81-01da81dadc2a ::ffff:127.0.0.1 /api/login/ 1745745014231 Sun Apr 27 2025 16:10:14 GMT+0700 (Western Indonesia Time) {} +POST f4662aa1-25a3-4fc5-a275-a07e9a523869 ::ffff:127.0.0.1 /api/login/ 1745745048560 Sun Apr 27 2025 16:10:48 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 5843f32a-ecd8-4975-a095-15faee22c79a ::ffff:127.0.0.1 /api/login/ 1745746245224 Sun Apr 27 2025 16:30:45 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST b257ed4f-48d2-4822-abab-e5f53baa70b5 ::ffff:127.0.0.1 /api/login/ 1745746320413 Sun Apr 27 2025 16:32:00 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 8d854613-85ff-4488-94f3-52b8944a9500 ::ffff:127.0.0.1 /api/login/ 1745746344520 Sun Apr 27 2025 16:32:24 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 7ad4581e-5268-46e9-bcd9-1c6a3b993207 ::ffff:127.0.0.1 /api/login/ 1745746363359 Sun Apr 27 2025 16:32:43 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST c5da9c0e-3ffa-4357-9373-1873661f32c2 ::ffff:127.0.0.1 /api/login/ 1745746385559 Sun Apr 27 2025 16:33:05 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST aaacb823-a659-4600-bef8-837d77d19334 ::ffff:127.0.0.1 /api/login/ 1745746410353 Sun Apr 27 2025 16:33:30 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 1449549b-2cac-4e34-98ea-35fd7f72adbd ::ffff:127.0.0.1 /api/login/ 1745746423907 Sun Apr 27 2025 16:33:43 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 86f7157a-808d-4d4c-ab89-cb380f9b7113 ::ffff:127.0.0.1 /api/login/ 1745746453118 Sun Apr 27 2025 16:34:13 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST c62920bb-789b-4e4d-a6a9-d11290deaca9 ::ffff:127.0.0.1 /api/login/ 1745746464886 Sun Apr 27 2025 16:34:24 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 12f83880-5155-4326-95d2-edfcecee31a1 ::ffff:127.0.0.1 /api/login/ 1745746478691 Sun Apr 27 2025 16:34:38 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 07a2581a-2646-486e-8ff0-33910f525863 ::ffff:127.0.0.1 /api/login/ 1745746510176 Sun Apr 27 2025 16:35:10 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST bbaf07f6-a788-4c1d-b699-a2b18c148079 ::ffff:127.0.0.1 /api/login/ 1745746794441 Sun Apr 27 2025 16:39:54 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 17e7d2cb-89e9-4b9b-9197-b5adfb418346 ::ffff:127.0.0.1 /api/login/ 1745746905934 Sun Apr 27 2025 16:41:45 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST ff0e4a02-d70b-4962-b034-0c1650dd0c02 ::ffff:127.0.0.1 /api/login/ 1745746926581 Sun Apr 27 2025 16:42:06 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +GET bb22a7f0-c21e-46e2-ac97-f9e129f499ef ::ffff:127.0.0.1 /api/users/ 1745747119670 Sun Apr 27 2025 16:45:19 GMT+0700 (Western Indonesia Time) {} +GET 6f4792ec-a000-402d-a601-7f788a611475 ::ffff:127.0.0.1 /api/users/ 1745747131098 Sun Apr 27 2025 16:45:31 GMT+0700 (Western Indonesia Time) {} +GET 5d000dd1-4776-41fd-8e27-6782166db0b5 ::ffff:127.0.0.1 /api/users/ 1745747180537 Sun Apr 27 2025 16:46:20 GMT+0700 (Western Indonesia Time) {} +GET 409d8970-f29f-4491-b4fd-a0a7d3e6377f ::ffff:127.0.0.1 /api/users/ 1745747245099 Sun Apr 27 2025 16:47:25 GMT+0700 (Western Indonesia Time) {} +POST 4beb22de-c4f8-4a3c-ad5f-1492a1bd5aa5 ::ffff:127.0.0.1 /api/users/ 1745747528601 Sun Apr 27 2025 16:52:08 GMT+0700 (Western Indonesia Time) {"username":"fauzan90","password":"123fauzan","fullname":"Muhammad Fauzan","email":"muhamadfauzan@gmail.com"} +POST c73eaa15-8896-46f2-a65b-fa1313f9537f ::ffff:127.0.0.1 /api/users/ 1745747557209 Sun Apr 27 2025 16:52:37 GMT+0700 (Western Indonesia Time) {"username":"fauzan90","password":"123fauzan","fullname":"Muhammad Fauzan","email":"muhamadfauzan@gmail.com"} +POST 44e6d636-5f3c-4014-b734-152fd63e48ce ::ffff:127.0.0.1 /api/login/ 1745747666128 Sun Apr 27 2025 16:54:26 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 74f4d8f9-f96c-4d97-a3ac-7a1ec639969d ::ffff:127.0.0.1 /api/login/ 1745747674122 Sun Apr 27 2025 16:54:34 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 0b5fde86-b09a-4a10-b058-85040fc7d193 ::ffff:127.0.0.1 /api/login/ 1745747688883 Sun Apr 27 2025 16:54:48 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +GET c84a98c2-6536-4108-919a-b4d888f64041 ::ffff:127.0.0.1 / 1745747843327 Sun Apr 27 2025 16:57:23 GMT+0700 (Western Indonesia Time) {} +POST 768321eb-7af2-498d-b40a-f44f75a6cb76 ::ffff:127.0.0.1 /api/login/ 1745748871004 Sun Apr 27 2025 17:14:31 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 7d396b36-8373-4e3a-9e92-c997038b7b25 ::ffff:127.0.0.1 /api/login/ 1745749188940 Sun Apr 27 2025 17:19:48 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +OPTIONS e8ea1dd8-eb0c-40cf-9460-c84f46ca68b6 ::ffff:127.0.0.1 /api/login/ 1745749200617 Sun Apr 27 2025 17:20:00 GMT+0700 (Western Indonesia Time) {} +OPTIONS 94140710-a84a-43b1-90d1-43c8040cabb0 ::ffff:127.0.0.1 /api/login/ 1745749237565 Sun Apr 27 2025 17:20:37 GMT+0700 (Western Indonesia Time) {} +POST 953183d0-da2c-4e70-a0c3-d710f5df5824 ::ffff:127.0.0.1 /api/login/ 1745749298000 Sun Apr 27 2025 17:21:38 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 15fe0b14-a652-4ba2-86df-3a59c4665cd4 ::ffff:127.0.0.1 /api/login/ 1745749369510 Sun Apr 27 2025 17:22:49 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 302c5e1a-47cd-485d-b26d-7e087b759696 ::ffff:127.0.0.1 /api/login/ 1745749457827 Sun Apr 27 2025 17:24:17 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST cfffdc7e-888e-488b-a865-627fd717d8d8 ::ffff:127.0.0.1 /api/login/ 1745749482469 Sun Apr 27 2025 17:24:42 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur9"} +POST e39427c0-43d4-4dca-a899-9becdaf28815 ::ffff:127.0.0.1 /api/login/ 1745749520705 Sun Apr 27 2025 17:25:20 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur1"} +POST 82755f9d-d650-46ac-bf9d-884e5599e856 ::ffff:127.0.0.1 /api/login/ 1745749526753 Sun Apr 27 2025 17:25:26 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST e4b24bf8-6315-47ae-a026-ff9286f607ac ::ffff:127.0.0.1 /api/login/ 1745749799641 Sun Apr 27 2025 17:29:59 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST bbd16d73-844a-4391-973d-5313773a66de ::ffff:127.0.0.1 /api/login/ 1745749920692 Sun Apr 27 2025 17:32:00 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 91311057-ce34-4260-9d4f-0f5e836454d5 ::ffff:127.0.0.1 /api/login/ 1745749960791 Sun Apr 27 2025 17:32:40 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST acddde70-eee9-4fe9-bdb6-e756113237fe ::ffff:127.0.0.1 /api/login/ 1745750025940 Sun Apr 27 2025 17:33:45 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 9b21d484-f182-414a-92c3-6660e1052b80 ::ffff:127.0.0.1 /api/login/ 1745750060101 Sun Apr 27 2025 17:34:20 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 82b04fd5-34e2-49b5-bd33-b334949b27a4 ::ffff:127.0.0.1 /api/login/ 1745750071690 Sun Apr 27 2025 17:34:31 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST 7c1fa440-16cd-4a11-ada7-d9a884119718 ::ffff:127.0.0.1 /api/login/ 1745751015375 Sun Apr 27 2025 17:50:15 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +GET 65cc04f3-ed47-4cab-b940-7aa2ae580ab5 ::ffff:127.0.0.1 /api/laporan/dashboard 1745752258009 Sun Apr 27 2025 18:10:58 GMT+0700 (Western Indonesia Time) {} +POST 0024bcb8-2c54-4865-bd32-0acfa0d96c17 ::ffff:127.0.0.1 /api/login/ 1745752263747 Sun Apr 27 2025 18:11:03 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +GET 1e614585-2232-41bf-aa31-89b02b8fb3df ::ffff:127.0.0.1 /api/laporan/dashboard 1745752281421 Sun Apr 27 2025 18:11:21 GMT+0700 (Western Indonesia Time) {} +GET b991233a-b79d-4ed7-922c-f4038f8b4579 ::ffff:127.0.0.1 /api/laporan/dashboard 1745752451477 Sun Apr 27 2025 18:14:11 GMT+0700 (Western Indonesia Time) {} +GET ae86ca2f-cfad-4e37-a111-1811577eccb4 ::ffff:127.0.0.1 /api/laporan/dashboard 1745752465388 Sun Apr 27 2025 18:14:25 GMT+0700 (Western Indonesia Time) {} +GET d3edc5d0-2a47-46ef-b4e9-7127f965e706 ::ffff:127.0.0.1 /api/laporan/dashboard 1745752490065 Sun Apr 27 2025 18:14:50 GMT+0700 (Western Indonesia Time) {} +GET cfb2b0ff-77a1-4d26-b9ba-a2bd10dca98b ::ffff:127.0.0.1 /api/laporan/dashboard 1745752547616 Sun Apr 27 2025 18:15:47 GMT+0700 (Western Indonesia Time) {} +GET f07be12a-783e-4fee-b5d5-03820b2c412c ::ffff:127.0.0.1 /api/laporan/dashboard 1745752582787 Sun Apr 27 2025 18:16:22 GMT+0700 (Western Indonesia Time) {} +GET b40078a4-a31d-4b2a-ae1c-e01f4f920588 ::ffff:127.0.0.1 /api/laporan/dashboard 1745752621430 Sun Apr 27 2025 18:17:01 GMT+0700 (Western Indonesia Time) {} +GET ad813dda-895b-4295-ad61-c75bb8f51a93 ::ffff:127.0.0.1 /api/laporan/dashboard 1745752728564 Sun Apr 27 2025 18:18:48 GMT+0700 (Western Indonesia Time) {} +GET 37030f75-a709-4ba1-b74c-ce64cf84d3a4 ::ffff:127.0.0.1 /api/laporan/dashboard 1745752832101 Sun Apr 27 2025 18:20:32 GMT+0700 (Western Indonesia Time) {} +GET d9a37ba6-c6c3-4d1a-91fb-0704db277c32 ::ffff:127.0.0.1 /api/laporan/dashboard 1745753061290 Sun Apr 27 2025 18:24:21 GMT+0700 (Western Indonesia Time) {} +GET 6a33cbaa-fb7b-4d86-90e9-c394952a400f ::ffff:127.0.0.1 /api/laporan/dashboard 1745753128229 Sun Apr 27 2025 18:25:28 GMT+0700 (Western Indonesia Time) {} +GET 62082606-b67e-49d0-b115-d17bb067a64e ::ffff:127.0.0.1 /api/laporan/dashboard 1745753129924 Sun Apr 27 2025 18:25:29 GMT+0700 (Western Indonesia Time) {} +GET 5e005d3a-5c22-4938-b54d-19916ca8de76 ::ffff:127.0.0.1 /api/laporan/dashboard 1745753132587 Sun Apr 27 2025 18:25:32 GMT+0700 (Western Indonesia Time) {} +GET 157d6f97-8cf9-4fad-a1be-9e1c96534800 ::ffff:127.0.0.1 /api/laporan/dashboard 1745753453841 Sun Apr 27 2025 18:30:53 GMT+0700 (Western Indonesia Time) {} +GET 5cf528d9-3c7b-4450-ae90-14efc87c7c74 ::ffff:127.0.0.1 /api/laporan/dashboard 1745753647194 Sun Apr 27 2025 18:34:07 GMT+0700 (Western Indonesia Time) {} +GET 0875c0ab-5397-4226-aabd-c9eb5ccd0883 ::ffff:127.0.0.1 /api/laporan/dashboard 1745753661590 Sun Apr 27 2025 18:34:21 GMT+0700 (Western Indonesia Time) {} +GET 9a86e47b-7081-4476-b42c-8487b59d2939 ::ffff:127.0.0.1 /api/laporan/dashboard 1745753673573 Sun Apr 27 2025 18:34:33 GMT+0700 (Western Indonesia Time) {} +GET 6ba23168-dd83-4e3d-9064-5311136146f9 ::ffff:127.0.0.1 /api/laporan/dashboard 1745753805821 Sun Apr 27 2025 18:36:45 GMT+0700 (Western Indonesia Time) {} +GET ab4e8aad-1f09-4aaf-be1c-04d43788b64a ::ffff:127.0.0.1 /api/users/ 1745753864056 Sun Apr 27 2025 18:37:44 GMT+0700 (Western Indonesia Time) {} +GET 14b027c8-cd19-40da-b895-22f7a2c563ad ::ffff:127.0.0.1 /api/users/ 1745753937490 Sun Apr 27 2025 18:38:57 GMT+0700 (Western Indonesia Time) {} +GET dcbded13-4313-46ab-a721-b1e14600414a ::ffff:127.0.0.1 /api/users/ 1745754038772 Sun Apr 27 2025 18:40:38 GMT+0700 (Western Indonesia Time) {} +GET 5bfd4470-3530-4d93-a3f9-eaee5007a9d4 ::ffff:127.0.0.1 /api/users/ 1745754171072 Sun Apr 27 2025 18:42:51 GMT+0700 (Western Indonesia Time) {} +GET edeeb886-b280-4b45-99d7-e26e66e43182 ::ffff:127.0.0.1 /api/users/ 1745754183908 Sun Apr 27 2025 18:43:03 GMT+0700 (Western Indonesia Time) {} +GET 1ad5adaa-a2af-496c-820e-119e0540c6c2 ::ffff:127.0.0.1 /api/users/ 1745754261823 Sun Apr 27 2025 18:44:21 GMT+0700 (Western Indonesia Time) {} +GET 8e37b83c-af11-49ff-b265-e751ada45400 ::ffff:127.0.0.1 /api/users/ 1745754507163 Sun Apr 27 2025 18:48:27 GMT+0700 (Western Indonesia Time) {} +GET 546fe4bf-7d9d-4acd-9d92-37f39ee32173 ::ffff:127.0.0.1 /api/users/ 1745754533067 Sun Apr 27 2025 18:48:53 GMT+0700 (Western Indonesia Time) {} +GET 78cebde0-4ca4-4722-8184-2084e15460e6 ::ffff:127.0.0.1 /api/users/ 1745754923344 Sun Apr 27 2025 18:55:23 GMT+0700 (Western Indonesia Time) {} +GET 7276c5d8-2b71-413c-9c97-f573c9733a9f ::ffff:127.0.0.1 /api/users/ 1745754937470 Sun Apr 27 2025 18:55:37 GMT+0700 (Western Indonesia Time) {} +POST 92033bb4-dfcb-44f8-826f-58986d1154e4 ::ffff:127.0.0.1 /api/login/ 1745754953538 Sun Apr 27 2025 18:55:53 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +GET 52c649a9-7a78-408d-a397-bb625eb90e0b ::ffff:127.0.0.1 /api/laporan/dashboard 1745754955381 Sun Apr 27 2025 18:55:55 GMT+0700 (Western Indonesia Time) {} +GET 28e4fcdb-1364-4aa8-b12f-caec0bce7dd6 ::ffff:127.0.0.1 /api/users/ 1745754958271 Sun Apr 27 2025 18:55:58 GMT+0700 (Western Indonesia Time) {} +GET 162b14b2-9fd0-468b-881c-14cf56f0e484 ::ffff:127.0.0.1 /api/users/ 1745755026847 Sun Apr 27 2025 18:57:06 GMT+0700 (Western Indonesia Time) {} +GET 3d6222d4-901b-4773-a910-5e992760c52d ::ffff:127.0.0.1 /api/users/ 1745755198307 Sun Apr 27 2025 18:59:58 GMT+0700 (Western Indonesia Time) {} +POST c8c0a3c9-11dd-4c10-b124-ea62d2422649 ::ffff:127.0.0.1 /api/users/ 1745755255499 Sun Apr 27 2025 19:00:55 GMT+0700 (Western Indonesia Time) {"username":"joni69","password":"123joni","email":"jonislobozlai@gmail.com","fullname":"Joni Slobozlai","is_active":"1"} +GET 98ebe6f8-c6a9-4fbf-991a-520fa7bd4a25 ::ffff:127.0.0.1 /api/users/ 1745755288387 Sun Apr 27 2025 19:01:28 GMT+0700 (Western Indonesia Time) {} +POST 9d62cd12-df82-4660-b3f4-93d2eecc7eb3 ::ffff:127.0.0.1 /api/users/ 1745755320842 Sun Apr 27 2025 19:02:00 GMT+0700 (Western Indonesia Time) {"username":"lamine40","password":"123lamine","email":"lamineyamal@gmail.com","fullname":"Lamine Yamal","is_active":"1"} +GET 1d20abf8-d652-4d82-a2a6-4bb8da2a62cc ::ffff:127.0.0.1 /api/users/ 1745755324030 Sun Apr 27 2025 19:02:04 GMT+0700 (Western Indonesia Time) {} +GET a67bb56f-ca15-4bd6-8e83-7f54890b7e65 ::ffff:127.0.0.1 /api/users/ 1745755487986 Sun Apr 27 2025 19:04:47 GMT+0700 (Western Indonesia Time) {} +GET 9e277d2f-f61c-49e1-9dba-2a464f584d01 ::ffff:127.0.0.1 /api/users/ 1745755501947 Sun Apr 27 2025 19:05:01 GMT+0700 (Western Indonesia Time) {} +GET dd24801a-8a54-4e75-935a-7ae574aa1a3e ::ffff:127.0.0.1 /api/users/ 1745755706683 Sun Apr 27 2025 19:08:26 GMT+0700 (Western Indonesia Time) {} +GET 6720eaae-f7ef-402f-905d-8112b75a8404 ::ffff:127.0.0.1 /api/users/ 1745755731938 Sun Apr 27 2025 19:08:51 GMT+0700 (Western Indonesia Time) {} +GET 6eb36a0e-6b42-441e-bdd4-c1b577ace265 ::ffff:127.0.0.1 /api/users/ 1745755744195 Sun Apr 27 2025 19:09:04 GMT+0700 (Western Indonesia Time) {} +GET 50394d32-321d-4d73-8607-d6c2eb2ff4bc ::ffff:127.0.0.1 /api/users/ 1745755769389 Sun Apr 27 2025 19:09:29 GMT+0700 (Western Indonesia Time) {} +GET d9725a53-fd6d-4540-a8e8-00e38e133be2 ::ffff:127.0.0.1 /api/users/ 1745755806411 Sun Apr 27 2025 19:10:06 GMT+0700 (Western Indonesia Time) {} +GET efce04fe-05f8-44e4-a352-e453ba6eb7bc ::ffff:127.0.0.1 /api/users/ 1745755839884 Sun Apr 27 2025 19:10:39 GMT+0700 (Western Indonesia Time) {} +GET 9b563832-3854-44bc-8dd8-18a4e1281942 ::ffff:127.0.0.1 /api/users/ 1745755895225 Sun Apr 27 2025 19:11:35 GMT+0700 (Western Indonesia Time) {} +GET 4c51c358-7ece-415a-a309-8797f5839e11 ::ffff:127.0.0.1 /api/users/ 1745755909046 Sun Apr 27 2025 19:11:49 GMT+0700 (Western Indonesia Time) {} +GET 67f02258-f8ef-49d2-91ac-6dfede68e716 ::ffff:127.0.0.1 /api/users/ 1745756027500 Sun Apr 27 2025 19:13:47 GMT+0700 (Western Indonesia Time) {} +GET 7683e0ff-a32a-4a39-8826-22d85a2aecd3 ::ffff:127.0.0.1 /api/users/ 1745756518592 Sun Apr 27 2025 19:21:58 GMT+0700 (Western Indonesia Time) {} +GET e1d9639a-b0eb-44e1-9c58-3f2aa0350781 ::ffff:127.0.0.1 /api/users/2 1745756522625 Sun Apr 27 2025 19:22:02 GMT+0700 (Western Indonesia Time) {} +GET 1de53a5f-1362-4590-8368-39e2807cb733 ::ffff:127.0.0.1 /api/users/ 1745756551561 Sun Apr 27 2025 19:22:31 GMT+0700 (Western Indonesia Time) {} +GET abf7e683-f366-42f6-aa9d-2bf1ded8fa16 ::ffff:127.0.0.1 /api/users/user_id/2 1745756553327 Sun Apr 27 2025 19:22:33 GMT+0700 (Western Indonesia Time) {} +GET 0849c7b5-1c78-4fe0-b804-29dccc4d6209 ::ffff:127.0.0.1 /api/users/user_id/2 1745756567817 Sun Apr 27 2025 19:22:47 GMT+0700 (Western Indonesia Time) {} +GET ed086fff-f5f9-469e-b226-806c0fb7f486 ::ffff:127.0.0.1 /api/users/ 1745756613912 Sun Apr 27 2025 19:23:33 GMT+0700 (Western Indonesia Time) {} +GET 82d471ff-0f9d-40d1-8df9-c9001252b17d ::ffff:127.0.0.1 /api/users/user_id/2 1745756619623 Sun Apr 27 2025 19:23:39 GMT+0700 (Western Indonesia Time) {} +GET 71820de0-4de7-466d-8208-10a74eec96a6 ::ffff:127.0.0.1 /api/users/ 1745756704715 Sun Apr 27 2025 19:25:04 GMT+0700 (Western Indonesia Time) {} +GET fc22d54b-41af-43df-81d4-d1b59a3dc383 ::ffff:127.0.0.1 /api/users/user_id/2 1745756706568 Sun Apr 27 2025 19:25:06 GMT+0700 (Western Indonesia Time) {} +GET ab0dfb5d-2395-4764-86a3-38fa91b858bb ::ffff:127.0.0.1 /api/users/ 1745756777656 Sun Apr 27 2025 19:26:17 GMT+0700 (Western Indonesia Time) {} +GET c971c04e-cd5a-4c3b-9edb-950c2cb31888 ::ffff:127.0.0.1 /api/users/user_id/2 1745756786875 Sun Apr 27 2025 19:26:26 GMT+0700 (Western Indonesia Time) {} +GET 9beb6767-676f-4b6f-bc29-646e9fcfd362 ::ffff:127.0.0.1 /api/users/ 1745756829178 Sun Apr 27 2025 19:27:09 GMT+0700 (Western Indonesia Time) {} +GET 4c780405-62c1-4d83-825b-894bd884b4fc ::ffff:127.0.0.1 /api/users/ 1745756933787 Sun Apr 27 2025 19:28:53 GMT+0700 (Western Indonesia Time) {} +GET fcd2c498-1178-4f4f-acca-ba71aa656742 ::ffff:127.0.0.1 /api/users/ 1745757036997 Sun Apr 27 2025 19:30:36 GMT+0700 (Western Indonesia Time) {} +GET d5399451-2ac2-43db-86f3-2733001f40a0 ::ffff:127.0.0.1 /api/users/ 1745757063081 Sun Apr 27 2025 19:31:03 GMT+0700 (Western Indonesia Time) {} +GET 56e99b33-9d43-41ee-9436-be2ca34e7c67 ::ffff:127.0.0.1 /api/users/ 1745757154779 Sun Apr 27 2025 19:32:34 GMT+0700 (Western Indonesia Time) {} +GET 9448b57d-660b-4f75-a851-dabb3361fa0e ::ffff:127.0.0.1 /api/users/ 1745757221995 Sun Apr 27 2025 19:33:41 GMT+0700 (Western Indonesia Time) {} +GET c0e31aac-4005-49f1-9424-3daa6650cceb ::ffff:127.0.0.1 /api/users/ 1745757266145 Sun Apr 27 2025 19:34:26 GMT+0700 (Western Indonesia Time) {} +GET fd61bd39-3b27-46cf-b084-723f2b1457f5 ::ffff:127.0.0.1 /api/users/ 1745757345083 Sun Apr 27 2025 19:35:45 GMT+0700 (Western Indonesia Time) {} +GET 6d09554c-f491-48f1-9e10-aa467e20a6d2 ::ffff:127.0.0.1 /api/users/ 1745757449507 Sun Apr 27 2025 19:37:29 GMT+0700 (Western Indonesia Time) {} +GET b92c2a91-d227-46a5-9a68-444807a4ff2b ::ffff:127.0.0.1 /api/users/ 1745757485513 Sun Apr 27 2025 19:38:05 GMT+0700 (Western Indonesia Time) {} +GET 5c65bf17-ae24-412f-a409-b96ba8e07db7 ::ffff:127.0.0.1 /api/users/ 1745757546035 Sun Apr 27 2025 19:39:06 GMT+0700 (Western Indonesia Time) {} +DELETE 6995ae00-ef1c-4741-a92e-7c39f4aa9ec7 ::ffff:127.0.0.1 /api/users/5 1745757568812 Sun Apr 27 2025 19:39:28 GMT+0700 (Western Indonesia Time) {} +GET 629ce7ff-b6e3-43b9-bd95-48d02f86edd8 ::ffff:127.0.0.1 /api/users/ 1745757612963 Sun Apr 27 2025 19:40:12 GMT+0700 (Western Indonesia Time) {} +DELETE f6aee7fd-6943-44dc-99a1-647c60da6b0d ::ffff:127.0.0.1 /api/users/user_id/5 1745757618133 Sun Apr 27 2025 19:40:18 GMT+0700 (Western Indonesia Time) {} +GET eda5c6ba-5651-4029-93e2-d377b4757ca8 ::ffff:127.0.0.1 /api/users/ 1745757620325 Sun Apr 27 2025 19:40:20 GMT+0700 (Western Indonesia Time) {} +GET 0fbbbc71-574a-49b0-847a-24294a21d22e ::ffff:127.0.0.1 /api/users/ 1745757689396 Sun Apr 27 2025 19:41:29 GMT+0700 (Western Indonesia Time) {} +GET 704957b8-7cd1-4062-90af-0773c2dcbeb0 ::ffff:127.0.0.1 /api/users/ 1745757778513 Sun Apr 27 2025 19:42:58 GMT+0700 (Western Indonesia Time) {} +GET 82748598-bd91-4a89-a5c8-cee207c5307e ::ffff:127.0.0.1 /api/users/ 1745757800008 Sun Apr 27 2025 19:43:20 GMT+0700 (Western Indonesia Time) {} +GET 73a200df-a25d-4e06-aca9-27282d90bc92 ::ffff:127.0.0.1 /api/users/ 1745757822736 Sun Apr 27 2025 19:43:42 GMT+0700 (Western Indonesia Time) {} +GET ee05e8db-1d73-4c5b-8b68-69a3887b1eb6 ::ffff:127.0.0.1 /api/users/ 1745757846240 Sun Apr 27 2025 19:44:06 GMT+0700 (Western Indonesia Time) {} +GET fe95458c-efd0-4ecc-868e-411e6225f6b2 ::ffff:127.0.0.1 /api/users/user_id/6 1745757853858 Sun Apr 27 2025 19:44:13 GMT+0700 (Western Indonesia Time) {} +PATCH c6506294-86c4-4a0c-a895-d99c26c8c99a ::ffff:127.0.0.1 /api/users/6 1745757860863 Sun Apr 27 2025 19:44:20 GMT+0700 (Western Indonesia Time) {"username":"lamine25","email":"lamineyamal@gmail.com","full_name":"Lamine Yamal","is_active":"1"} +GET bd53d476-bb95-4bad-be13-f8f0e22fa3a1 ::ffff:127.0.0.1 /api/users/ 1745757889144 Sun Apr 27 2025 19:44:49 GMT+0700 (Western Indonesia Time) {} +GET 7cda854a-6210-49e7-826a-f145fe9a95fc ::ffff:127.0.0.1 /api/users/user_id/6 1745757896141 Sun Apr 27 2025 19:44:56 GMT+0700 (Western Indonesia Time) {} +PATCH 9b4dbf1c-4fbb-497f-a826-a12bb1ce8001 ::ffff:127.0.0.1 /api/users/user_id/6 1745757903892 Sun Apr 27 2025 19:45:03 GMT+0700 (Western Indonesia Time) {"username":"lamine200","email":"lamineyamal@gmail.com","full_name":"Lamine Yamal Jamet","is_active":"1"} +GET a3c1c983-a4cb-4a2c-b706-38d6ae369aa5 ::ffff:127.0.0.1 /api/users/ 1745758010692 Sun Apr 27 2025 19:46:50 GMT+0700 (Western Indonesia Time) {} +GET 9f1b05e9-c041-4cc1-b63f-b06b7c02efa5 ::ffff:127.0.0.1 /api/users/user_id/6 1745758012257 Sun Apr 27 2025 19:46:52 GMT+0700 (Western Indonesia Time) {} +PUT 4040f7a6-d50c-421d-a2f2-6e91ea6af303 ::ffff:127.0.0.1 /api/users/user_id/6 1745758018087 Sun Apr 27 2025 19:46:58 GMT+0700 (Western Indonesia Time) {"username":"lamine200","email":"lamineyamal@gmail.com","full_name":"Lamine Yamal","is_active":"1"} +GET 40bf51f5-a0a7-488d-b045-ab54f90d9af2 ::ffff:127.0.0.1 /api/users/ 1745758060785 Sun Apr 27 2025 19:47:40 GMT+0700 (Western Indonesia Time) {} +GET cbeff316-1011-4da2-a114-2a393c75d996 ::ffff:127.0.0.1 /api/users/user_id/6 1745758062984 Sun Apr 27 2025 19:47:42 GMT+0700 (Western Indonesia Time) {} +PATCH 53c9f719-a98d-4740-96af-c72997eb2a9e ::ffff:127.0.0.1 /api/users/user_id/6 1745758066465 Sun Apr 27 2025 19:47:46 GMT+0700 (Western Indonesia Time) {"username":"lamine200","email":"lamineyamal@gmail.com","fullname":"Lamine Yamal","is_active":"1"} +GET b420da06-391d-4d45-a852-f8428958cbd4 ::ffff:127.0.0.1 /api/users/ 1745758121235 Sun Apr 27 2025 19:48:41 GMT+0700 (Western Indonesia Time) {} +GET be85200f-70a1-40cb-92ef-be83169e3b15 ::ffff:127.0.0.1 /api/users/user_id/6 1745758122802 Sun Apr 27 2025 19:48:42 GMT+0700 (Western Indonesia Time) {} +PATCH 790364ad-cf13-46d0-a430-1d4761199e37 ::ffff:127.0.0.1 /api/users/user_id/6 1745758127394 Sun Apr 27 2025 19:48:47 GMT+0700 (Western Indonesia Time) {"username":"lamine200","email":"lamineyamal@gmail.com","full_name":"Lamine Yamal","is_active":"1"} +GET a2519a3f-0053-4562-92e9-bb4776b548d9 ::ffff:127.0.0.1 /api/users/ 1745758167231 Sun Apr 27 2025 19:49:27 GMT+0700 (Western Indonesia Time) {} +GET 5447b9c7-d758-442c-a3f5-e419b50cbb83 ::ffff:127.0.0.1 /api/users/user_id/6 1745758168651 Sun Apr 27 2025 19:49:28 GMT+0700 (Western Indonesia Time) {} +PATCH ecbad9f9-bf82-4115-a47b-cae9cdfbcae0 ::ffff:127.0.0.1 /api/users/user_id/6 1745758172109 Sun Apr 27 2025 19:49:32 GMT+0700 (Western Indonesia Time) {"username":"lamine200","email":"lamineyamal@gmail.com","full_name":"Lamine Yamal","is_active":1} +GET 9803ad52-123f-4b5c-bea2-305c6bff051d ::ffff:127.0.0.1 /api/users/ 1745758207914 Sun Apr 27 2025 19:50:07 GMT+0700 (Western Indonesia Time) {} +GET 9eaaf407-55f6-4acd-a3f4-e10c07faae82 ::ffff:127.0.0.1 /api/users/user_id/6 1745758209628 Sun Apr 27 2025 19:50:09 GMT+0700 (Western Indonesia Time) {} +PATCH 9a9d9ae1-0e32-4769-9c10-e8b87c187bee ::ffff:127.0.0.1 /api/users/user_id/6 1745758215222 Sun Apr 27 2025 19:50:15 GMT+0700 (Western Indonesia Time) {"username":"lamine200","email":"lamineyamal@gmail.com","full_name":"Lamine Yamal","is_active":true} +GET 88a34e8e-edfc-446d-917c-c42aefe14dfa ::ffff:127.0.0.1 /api/users/ 1745758216914 Sun Apr 27 2025 19:50:16 GMT+0700 (Western Indonesia Time) {} +POST 58bf1965-76af-4e33-802e-5c54c36b3aed ::ffff:127.0.0.1 /api/users/ 1745758312721 Sun Apr 27 2025 19:51:52 GMT+0700 (Western Indonesia Time) {"username":"ferranshark","password":"123ferran","email":"ferrantores@gmail.com","fullname":"Ferran Torres","is_active":"1"} +GET a88f08d7-3008-444a-a6fa-30645db99e61 ::ffff:127.0.0.1 /api/users/ 1745758315663 Sun Apr 27 2025 19:51:55 GMT+0700 (Western Indonesia Time) {} +GET 81cfb3d0-bb2d-4303-9db6-f8ed042bb96d ::ffff:127.0.0.1 /api/pegawai/ 1745758439572 Sun Apr 27 2025 19:53:59 GMT+0700 (Western Indonesia Time) {} +GET dd40af35-0217-4a06-a371-529e43af62e1 ::ffff:127.0.0.1 /api/pegawai/ 1745758537277 Sun Apr 27 2025 19:55:37 GMT+0700 (Western Indonesia Time) {} +GET 43c85408-9b31-4c55-bee7-5994e63b66e3 ::ffff:127.0.0.1 /api/pegawai/ 1745758564930 Sun Apr 27 2025 19:56:04 GMT+0700 (Western Indonesia Time) {} +POST 99b6f377-d5f5-4061-84db-bd05debfaf4f ::ffff:127.0.0.1 /api/login/ 1745758589802 Sun Apr 27 2025 19:56:29 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madur"} +POST de177e26-9a61-459b-b7b4-f8ff3d4c485d ::ffff:127.0.0.1 /api/login/ 1745758595330 Sun Apr 27 2025 19:56:35 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +GET 72a17d05-3cc1-4f75-b232-74f1ec265fe4 ::ffff:127.0.0.1 /api/laporan/dashboard 1745758597476 Sun Apr 27 2025 19:56:37 GMT+0700 (Western Indonesia Time) {} +GET 3057d746-34de-440b-b013-27969bdd0ba4 ::ffff:127.0.0.1 /api/pegawai/ 1745758602559 Sun Apr 27 2025 19:56:42 GMT+0700 (Western Indonesia Time) {} +GET 7dacd622-33de-455c-88fb-0336932fad40 ::ffff:127.0.0.1 /api/pegawai/ 1745758722657 Sun Apr 27 2025 19:58:42 GMT+0700 (Western Indonesia Time) {} +GET 0100d93e-241d-404b-a616-18a48a073d42 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/undefined 1745758729106 Sun Apr 27 2025 19:58:49 GMT+0700 (Western Indonesia Time) {} +GET bfba4cb6-3674-4716-b1ab-152f7f97bf08 ::ffff:127.0.0.1 /api/pegawai/ 1745758785105 Sun Apr 27 2025 19:59:45 GMT+0700 (Western Indonesia Time) {} +GET ad206132-4023-4b5b-8d0b-ce1ec73efeb9 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/undefined 1745758786897 Sun Apr 27 2025 19:59:46 GMT+0700 (Western Indonesia Time) {} +GET e8aa6e15-518a-4921-836a-1a694e7b5def ::ffff:127.0.0.1 /api/pegawai/ 1745758857798 Sun Apr 27 2025 20:00:57 GMT+0700 (Western Indonesia Time) {} +GET 0b3c7097-76e4-42bb-9ae4-982a132677e3 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/4 1745758859347 Sun Apr 27 2025 20:00:59 GMT+0700 (Western Indonesia Time) {} +GET e42098e4-3ca9-46ab-a7f8-10fc5d81cf6d ::ffff:127.0.0.1 /api/pegawai/pegawai_id/2 1745758862020 Sun Apr 27 2025 20:01:02 GMT+0700 (Western Indonesia Time) {} +GET b36ff5ff-d5d0-42d2-a517-0a92452b66b9 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/2 1745758865599 Sun Apr 27 2025 20:01:05 GMT+0700 (Western Indonesia Time) {} +PATCH b9dc62c3-3199-424f-ade2-b8f47aee7ca2 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/2 1745758871201 Sun Apr 27 2025 20:01:11 GMT+0700 (Western Indonesia Time) {"namapegawai":{"0":{},"length":1}} +GET b675fe1c-c508-4327-8e80-1451f7118b7b ::ffff:127.0.0.1 /api/pegawai/ 1745758906515 Sun Apr 27 2025 20:01:46 GMT+0700 (Western Indonesia Time) {} +GET fb6ccb21-d871-4413-8472-a97d058ab6ef ::ffff:127.0.0.1 /api/pegawai/pegawai_id/2 1745758909042 Sun Apr 27 2025 20:01:49 GMT+0700 (Western Indonesia Time) {} +PUT d8bcd94b-c7ac-4ef7-8c92-158b1e1dbce8 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/2 1745758913461 Sun Apr 27 2025 20:01:53 GMT+0700 (Western Indonesia Time) {"namapegawai":{"0":{},"length":1}} +GET 38b9f1a8-0144-4885-9a6b-f1ca73c1d7b2 ::ffff:127.0.0.1 /api/pegawai/ 1745758945849 Sun Apr 27 2025 20:02:25 GMT+0700 (Western Indonesia Time) {} +GET aefea9f4-8f8a-4f82-b676-b6be13f35bfc ::ffff:127.0.0.1 /api/pegawai/pegawai_id/2 1745758948006 Sun Apr 27 2025 20:02:28 GMT+0700 (Western Indonesia Time) {} +PUT 6fb1812a-dcc3-43db-a698-cf6dce281a0e ::ffff:127.0.0.1 /api/pegawai/pegawai_id/2 1745758952841 Sun Apr 27 2025 20:02:32 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr. Tulus Sepatu"} +GET 57fbf7db-f9dd-4570-9cfd-93cf969131c6 ::ffff:127.0.0.1 /api/pegawai/ 1745758954361 Sun Apr 27 2025 20:02:34 GMT+0700 (Western Indonesia Time) {} +GET 4e501926-f35b-4b8c-a87b-423f1d3353e6 ::ffff:127.0.0.1 /api/pegawai/ 1745759019366 Sun Apr 27 2025 20:03:39 GMT+0700 (Western Indonesia Time) {} +POST 27d9d43b-25e3-47ec-b9fc-494c75caa83a ::ffff:127.0.0.1 /api/pegawai/ 1745759026711 Sun Apr 27 2025 20:03:46 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr Kunto Aji"} +GET eb06ecc5-f8ea-499a-a4a0-f1d6c25e6f92 ::ffff:127.0.0.1 /api/pegawai/ 1745759029452 Sun Apr 27 2025 20:03:49 GMT+0700 (Western Indonesia Time) {} +POST 31681892-fec9-4060-b7fc-ec7578291bc5 ::ffff:127.0.0.1 /api/pegawai/ 1745759046264 Sun Apr 27 2025 20:04:06 GMT+0700 (Western Indonesia Time) {"namapegawai":"dr Aji Saptaji"} +GET 4f97ee8e-c54e-4490-a35e-6ca52f835007 ::ffff:127.0.0.1 /api/pegawai/ 1745759049244 Sun Apr 27 2025 20:04:09 GMT+0700 (Western Indonesia Time) {} +GET f7ddd3c6-e14c-444d-a475-aabcf5a3fb82 ::ffff:127.0.0.1 /api/pegawai/ 1745759254044 Sun Apr 27 2025 20:07:34 GMT+0700 (Western Indonesia Time) {} +GET 6ac964b2-f018-4199-9c8b-cebacb6cdcdc ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745759261446 Sun Apr 27 2025 20:07:41 GMT+0700 (Western Indonesia Time) {} +GET 73fcd752-7c69-4efc-8920-d4fc2f943d8e ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745759301261 Sun Apr 27 2025 20:08:21 GMT+0700 (Western Indonesia Time) {} +GET 69d56471-d76d-498a-9057-6887507fb10b ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745759367948 Sun Apr 27 2025 20:09:27 GMT+0700 (Western Indonesia Time) {} +POST 491bb2a0-1a59-4012-b317-bfd7937e4a41 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745759383214 Sun Apr 27 2025 20:09:43 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik THT"} +GET 6c8a8385-5847-4109-8189-dca0d461ed51 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745759386100 Sun Apr 27 2025 20:09:46 GMT+0700 (Western Indonesia Time) {} +GET f4dd5de9-48b1-4cff-bf52-fe5ab7348a62 ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/9 1745759388511 Sun Apr 27 2025 20:09:48 GMT+0700 (Western Indonesia Time) {} +GET f2c36738-682c-4023-aa43-9e0d33217a1f ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745759480747 Sun Apr 27 2025 20:11:20 GMT+0700 (Western Indonesia Time) {} +GET e51894c3-d1f0-48ae-a3f7-a535e7d7aac1 ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/9 1745759483765 Sun Apr 27 2025 20:11:23 GMT+0700 (Western Indonesia Time) {} +PUT d5358f6b-901b-4497-a266-2db2ecad39ba ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/9 1745759488336 Sun Apr 27 2025 20:11:28 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik THT test edit"} +GET 824f1248-ef5c-413e-9adb-a94597075040 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745759489869 Sun Apr 27 2025 20:11:29 GMT+0700 (Western Indonesia Time) {} +GET 1e3b7a33-eb67-4cf1-a188-9889c09759b8 ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/9 1745759492582 Sun Apr 27 2025 20:11:32 GMT+0700 (Western Indonesia Time) {} +PUT f8a6bc90-6623-4e54-96de-67b6562dbcab ::ffff:127.0.0.1 /api/ruangpelayanan/ruangpelayanan_id/9 1745759496856 Sun Apr 27 2025 20:11:36 GMT+0700 (Western Indonesia Time) {"namaruangpelayanan":"Klinik THT"} +GET c2590c2c-d525-4911-a269-a088632a1773 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745759498864 Sun Apr 27 2025 20:11:38 GMT+0700 (Western Indonesia Time) {} +GET 55a1ede9-0975-464f-ad6c-f941d71e1e5d ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745759559533 Sun Apr 27 2025 20:12:39 GMT+0700 (Western Indonesia Time) {} +GET 83862f74-81b1-4283-ae38-1a3c06d41245 ::ffff:127.0.0.1 /api/tindakan/ 1745759716989 Sun Apr 27 2025 20:15:16 GMT+0700 (Western Indonesia Time) {} +GET 4519fc2c-2cc4-4572-9df4-f1de7c9f1d7e ::ffff:127.0.0.1 /api/tindakan/tindakan_id/1 1745759724233 Sun Apr 27 2025 20:15:24 GMT+0700 (Western Indonesia Time) {} +GET d7041985-875a-4f04-8277-a9f785753235 ::ffff:127.0.0.1 /api/tindakan/ 1745759831822 Sun Apr 27 2025 20:17:11 GMT+0700 (Western Indonesia Time) {} +GET 99712362-ae9e-43c2-8d14-fbb64ba01575 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/1 1745759833476 Sun Apr 27 2025 20:17:13 GMT+0700 (Western Indonesia Time) {} +GET 9af3dbe5-a62f-4cf1-a26e-1546d403ccaa ::ffff:127.0.0.1 /api/tindakan/tindakan_id/2 1745759836583 Sun Apr 27 2025 20:17:16 GMT+0700 (Western Indonesia Time) {} +GET c5004f32-8cd6-4772-bc89-af444e39bac8 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/7 1745759840504 Sun Apr 27 2025 20:17:20 GMT+0700 (Western Indonesia Time) {} +POST a098e0b2-93ce-402d-a788-ad4b9a1b6ad1 ::ffff:127.0.0.1 /api/tindakan/ 1745759861443 Sun Apr 27 2025 20:17:41 GMT+0700 (Western Indonesia Time) {"namatindakan":"Tindakan Test Input","tariftindakan":"300000"} +GET c4e9b01c-e5ab-4738-a4a4-ae455ba01c6d ::ffff:127.0.0.1 /api/tindakan/ 1745759865287 Sun Apr 27 2025 20:17:45 GMT+0700 (Western Indonesia Time) {} +GET b7570be6-ce87-45c8-90a9-418fa4be18ae ::ffff:127.0.0.1 /api/tindakan/tindakan_id/22 1745759871246 Sun Apr 27 2025 20:17:51 GMT+0700 (Western Indonesia Time) {} +PUT ea93a71c-cdc5-4497-a416-602d58cc4278 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/22 1745759876950 Sun Apr 27 2025 20:17:56 GMT+0700 (Western Indonesia Time) {"namatindakan":"Tindakan Test Edit"} +GET d509315c-fd4a-4653-a1ef-d3323edb8a87 ::ffff:127.0.0.1 /api/tindakan/ 1745759940228 Sun Apr 27 2025 20:19:00 GMT+0700 (Western Indonesia Time) {} +GET c3180837-0050-4be9-a3eb-f570e17cbe04 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/22 1745759943709 Sun Apr 27 2025 20:19:03 GMT+0700 (Western Indonesia Time) {} +PUT c01c6e68-33db-403d-a196-cc1bb36322e0 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/22 1745759948540 Sun Apr 27 2025 20:19:08 GMT+0700 (Western Indonesia Time) {"namatindakan":"Tindakan Test Edit","tariftindakan":null} +GET 1f8b455c-45a1-4e53-af68-bb7b0d0231c3 ::ffff:127.0.0.1 /api/tindakan/ 1745759986956 Sun Apr 27 2025 20:19:46 GMT+0700 (Western Indonesia Time) {} +GET 3f5d17c9-4c02-4144-b81e-e7ffd88870a7 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/22 1745759993372 Sun Apr 27 2025 20:19:53 GMT+0700 (Western Indonesia Time) {} +PUT 68a7abf6-835b-4aed-9e1f-002ec10e6b31 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/22 1745759998267 Sun Apr 27 2025 20:19:58 GMT+0700 (Western Indonesia Time) {"namatindakan":"Tindakan Test Edit","tariftindakan":300000} +GET 7e6bce92-022d-4187-b3ce-d9b2c8c2d71b ::ffff:127.0.0.1 /api/tindakan/ 1745759999938 Sun Apr 27 2025 20:19:59 GMT+0700 (Western Indonesia Time) {} +GET 43c386af-4afa-40d6-ba86-d07cf399f828 ::ffff:127.0.0.1 /api/tindakan/ 1745760012153 Sun Apr 27 2025 20:20:12 GMT+0700 (Western Indonesia Time) {} +DELETE 1bdc6655-8441-4474-b37d-2e485f656dc8 ::ffff:127.0.0.1 /api/tindakan/tindakan_id/22 1745760031314 Sun Apr 27 2025 20:20:31 GMT+0700 (Western Indonesia Time) {} +GET 1b903558-4890-4a1d-bab6-e903ec04da15 ::ffff:127.0.0.1 /api/tindakan/ 1745760032967 Sun Apr 27 2025 20:20:32 GMT+0700 (Western Indonesia Time) {} +GET 1e1106a0-f8ac-4849-b532-af0cf56a1c05 ::ffff:127.0.0.1 /api/tindakan/ 1745760113472 Sun Apr 27 2025 20:21:53 GMT+0700 (Western Indonesia Time) {} +GET 2a423228-9315-4cf9-ab7f-290c0c968535 ::ffff:127.0.0.1 /api/pasien/ 1745760828777 Sun Apr 27 2025 20:33:48 GMT+0700 (Western Indonesia Time) {} +GET d94fe2e7-1426-4073-9901-7999756d6f23 ::ffff:127.0.0.1 /api/pasien/ 1745760879209 Sun Apr 27 2025 20:34:39 GMT+0700 (Western Indonesia Time) {} +GET be3f070a-bdec-4dff-bbbf-bf59e5d19748 ::ffff:127.0.0.1 /api/pasien/ 1745761092400 Sun Apr 27 2025 20:38:12 GMT+0700 (Western Indonesia Time) {} +GET 2f092b0e-1569-4113-9308-c7783722d49d ::ffff:127.0.0.1 /api/pasien/ 1745761142671 Sun Apr 27 2025 20:39:02 GMT+0700 (Western Indonesia Time) {} +GET f640958a-3f5d-40dd-a2e2-0a41741817c9 ::ffff:127.0.0.1 /api/pasien/ 1745761173822 Sun Apr 27 2025 20:39:33 GMT+0700 (Western Indonesia Time) {} +GET b44552ad-f25e-4221-9371-383278c5bcbd ::ffff:127.0.0.1 /api/pasien/ 1745761249654 Sun Apr 27 2025 20:40:49 GMT+0700 (Western Indonesia Time) {} +POST f614370b-180a-4ca4-831e-17a91ffe2bee ::ffff:127.0.0.1 /api/pasien/ 1745761268358 Sun Apr 27 2025 20:41:08 GMT+0700 (Western Indonesia Time) {"namapasien":{"0":{},"length":1},"tanggallahir":{"0":{},"length":1},"jeniskelamin":{"0":{"0":{},"1":{}},"length":1}} +GET ef104acc-1e3c-4b14-993a-9a8056c3a5ee ::ffff:127.0.0.1 /api/pasien/ 1745761296341 Sun Apr 27 2025 20:41:36 GMT+0700 (Western Indonesia Time) {} +POST 1b2dc867-2c92-422a-8b43-7fbe22dabce3 ::ffff:127.0.0.1 /api/pasien/ 1745761322036 Sun Apr 27 2025 20:42:02 GMT+0700 (Western Indonesia Time) {"namapasien":"Rafal Heliosentris","tanggallahir":"1936-05-27","jeniskelamin":"L"} +GET 1c6fcc48-9504-45c4-9b1b-b0e9c71d10af ::ffff:127.0.0.1 /api/pasien/ 1745761326076 Sun Apr 27 2025 20:42:06 GMT+0700 (Western Indonesia Time) {} +POST 4d2d4033-1db6-43b6-a92d-a19f979e3041 ::ffff:127.0.0.1 /api/pasien/ 1745761345281 Sun Apr 27 2025 20:42:25 GMT+0700 (Western Indonesia Time) {"namapasien":"test doang","tanggallahir":"1988-09-20","jeniskelamin":"L"} +GET de79c7f4-48cf-4215-b166-e2aa3619c223 ::ffff:127.0.0.1 /api/pasien/ 1745761348440 Sun Apr 27 2025 20:42:28 GMT+0700 (Western Indonesia Time) {} +GET 7a5e1d7f-c39b-459a-a03a-c7b3123da034 ::ffff:127.0.0.1 /api/pasien/pasien_id/7 1745761350436 Sun Apr 27 2025 20:42:30 GMT+0700 (Western Indonesia Time) {} +GET 3ceb16e7-8b38-4824-8ecc-1ae79a1e8a2f ::ffff:127.0.0.1 /api/pasien/ 1745761466837 Sun Apr 27 2025 20:44:26 GMT+0700 (Western Indonesia Time) {} +GET ba761f3f-82af-45b2-b16b-bd0589be9cda ::ffff:127.0.0.1 /api/pasien/pasien_id/7 1745761468838 Sun Apr 27 2025 20:44:28 GMT+0700 (Western Indonesia Time) {} +GET 885ebdc6-9010-469f-a606-0061fa5ebc33 ::ffff:127.0.0.1 /api/pasien/ 1745761540752 Sun Apr 27 2025 20:45:40 GMT+0700 (Western Indonesia Time) {} +GET 44ee8f05-3035-468b-b232-e4562eff6062 ::ffff:127.0.0.1 /api/pasien/pasien_id/7 1745761543301 Sun Apr 27 2025 20:45:43 GMT+0700 (Western Indonesia Time) {} +GET 3ed2f771-bdf6-4d70-85ab-1d4b575013d3 ::ffff:127.0.0.1 /api/pasien/pasien_id/7 1745761547077 Sun Apr 27 2025 20:45:47 GMT+0700 (Western Indonesia Time) {} +PUT 50728762-65c8-45dd-ac99-5067bcd9cb05 ::ffff:127.0.0.1 /api/pasien/pasien_id/7 1745761553309 Sun Apr 27 2025 20:45:53 GMT+0700 (Western Indonesia Time) {"namapasien":{"0":{},"length":1},"tanggallahir":{"0":{},"length":1},"jeniskelamin":{"0":{"0":{},"1":{}},"length":1}} +GET d0e90a4a-2aad-4a9b-b75f-c0e0e0c6fdaa ::ffff:127.0.0.1 /api/pasien/ 1745761588091 Sun Apr 27 2025 20:46:28 GMT+0700 (Western Indonesia Time) {} +GET a08be60d-00bc-4f1e-8c92-185c39df7e24 ::ffff:127.0.0.1 /api/pasien/pasien_id/7 1745761589811 Sun Apr 27 2025 20:46:29 GMT+0700 (Western Indonesia Time) {} +PUT c476a337-f253-4431-bd43-82f4977db330 ::ffff:127.0.0.1 /api/pasien/idpasien/7 1745761594104 Sun Apr 27 2025 20:46:34 GMT+0700 (Western Indonesia Time) {"namapasien":{"0":{},"length":1},"tanggallahir":{"0":{},"length":1},"jeniskelamin":{"0":{"0":{},"1":{}},"length":1}} +GET 5892a151-0eb7-4653-a1c0-36ac21df5210 ::ffff:127.0.0.1 /api/pasien/ 1745761633860 Sun Apr 27 2025 20:47:13 GMT+0700 (Western Indonesia Time) {} +GET c065d90a-82fe-422a-a9d0-abfd3f4558c5 ::ffff:127.0.0.1 /api/pasien/pasien_id/7 1745761637058 Sun Apr 27 2025 20:47:17 GMT+0700 (Western Indonesia Time) {} +PUT 007095a5-9156-4579-bddb-443dbd61bec1 ::ffff:127.0.0.1 /api/pasien/idpasien/7 1745761640872 Sun Apr 27 2025 20:47:20 GMT+0700 (Western Indonesia Time) {"namapasien":"test lagi","tanggallahir":"1988-09-20","jeniskelamin":"L"} +GET 7554ec3f-857e-46eb-981b-67447da95f2f ::ffff:127.0.0.1 /api/pasien/ 1745761643192 Sun Apr 27 2025 20:47:23 GMT+0700 (Western Indonesia Time) {} +GET 7c82e8d8-bfae-4b90-9858-6ef5c79aaf43 ::ffff:127.0.0.1 /api/pasien/pasien_id/7 1745761646751 Sun Apr 27 2025 20:47:26 GMT+0700 (Western Indonesia Time) {} +PUT be19531b-7789-410d-b2e7-839f158543be ::ffff:127.0.0.1 /api/pasien/idpasien/7 1745761651977 Sun Apr 27 2025 20:47:31 GMT+0700 (Western Indonesia Time) {"namapasien":"test lagi","tanggallahir":"1988-09-21","jeniskelamin":"L"} +GET c7481522-7144-4830-ab86-275c3eb0e6e0 ::ffff:127.0.0.1 /api/pasien/ 1745761653504 Sun Apr 27 2025 20:47:33 GMT+0700 (Western Indonesia Time) {} +DELETE 11c7aab0-c324-42ff-9b4c-e1ab1b56cccd ::ffff:127.0.0.1 /api/pasien/pasien_id/7 1745761673065 Sun Apr 27 2025 20:47:53 GMT+0700 (Western Indonesia Time) {} +GET 798dcfd0-06bf-418e-b8a1-e1cd097d2f6b ::ffff:127.0.0.1 /api/pasien/ 1745761703964 Sun Apr 27 2025 20:48:23 GMT+0700 (Western Indonesia Time) {} +GET 0c378d42-54a7-4af3-abea-a847e3a19f8a ::ffff:127.0.0.1 /api/users/ 1745761714364 Sun Apr 27 2025 20:48:34 GMT+0700 (Western Indonesia Time) {} +GET 08dfced7-9730-42ac-b755-bda54580d94c ::ffff:127.0.0.1 /api/pegawai/ 1745761718683 Sun Apr 27 2025 20:48:38 GMT+0700 (Western Indonesia Time) {} +GET f915512c-f1be-4bfa-880a-57e7a43772f9 ::ffff:127.0.0.1 /api/tindakan/ 1745761722384 Sun Apr 27 2025 20:48:42 GMT+0700 (Western Indonesia Time) {} +GET 9d0f970c-e1fd-44eb-891d-34431877bcd9 ::ffff:127.0.0.1 /api/pasien/ 1745761726978 Sun Apr 27 2025 20:48:46 GMT+0700 (Western Indonesia Time) {} +GET e4292f4a-5516-4dd0-b198-f4ee883751da ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745761730685 Sun Apr 27 2025 20:48:50 GMT+0700 (Western Indonesia Time) {} +GET f2df6565-1e61-4ed8-96bf-0ef8a65e19f5 ::ffff:127.0.0.1 /api/pasien/ 1745761784125 Sun Apr 27 2025 20:49:44 GMT+0700 (Western Indonesia Time) {} +GET fa427c75-81b7-46e4-aa46-ffdeba7a11b0 ::ffff:127.0.0.1 /api/registrasi/ 1745762225070 Sun Apr 27 2025 20:57:05 GMT+0700 (Western Indonesia Time) {} +POST 4d72a7e0-4e33-478c-9d1b-72c58fba4f1c ::ffff:127.0.0.1 /api/login/ 1745762241895 Sun Apr 27 2025 20:57:21 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +GET 4b25dd26-1a83-43c1-8cc7-713d1a4fbdb2 ::ffff:127.0.0.1 /api/laporan/dashboard 1745762244058 Sun Apr 27 2025 20:57:24 GMT+0700 (Western Indonesia Time) {} +GET 6934d1fc-4976-4eaf-8f9b-8ef919dbb35a ::ffff:127.0.0.1 /api/registrasi/ 1745762250104 Sun Apr 27 2025 20:57:30 GMT+0700 (Western Indonesia Time) {} +GET 81fff223-a68d-4e54-8a9f-11f4347ea6e6 ::ffff:127.0.0.1 /api/registrasi/ 1745762286856 Sun Apr 27 2025 20:58:06 GMT+0700 (Western Indonesia Time) {} +GET de3e5fae-e447-4ee8-a53d-148d5b4c9166 ::ffff:127.0.0.1 /api/registrasi/ 1745762334508 Sun Apr 27 2025 20:58:54 GMT+0700 (Western Indonesia Time) {} +GET 7ab88e71-f7a7-43a7-b29c-0207691cac72 ::ffff:127.0.0.1 /api/registrasi/ 1745762468841 Sun Apr 27 2025 21:01:08 GMT+0700 (Western Indonesia Time) {} +GET 0c64638e-6ddd-4f06-a60f-43d574a9b99c ::ffff:127.0.0.1 /api/registrasi/ 1745762540336 Sun Apr 27 2025 21:02:20 GMT+0700 (Western Indonesia Time) {} +GET edbfb3b9-2a32-4e38-969a-01f9c4e57698 ::ffff:127.0.0.1 /api/pasien/pasien_id/undefined 1745762745564 Sun Apr 27 2025 21:05:45 GMT+0700 (Western Indonesia Time) {} +GET f15733c1-6259-47b0-b1ae-a446810aaca6 ::ffff:127.0.0.1 /api/registrasi/ 1745762769519 Sun Apr 27 2025 21:06:09 GMT+0700 (Western Indonesia Time) {} +GET aa60f1f7-159a-4705-8cd0-b36deae3ebeb ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745762772454 Sun Apr 27 2025 21:06:12 GMT+0700 (Western Indonesia Time) {} +GET 16ae39b2-c6e3-4f89-90b3-a03a95133e30 ::ffff:127.0.0.1 /api/registrasi/ 1745762840181 Sun Apr 27 2025 21:07:20 GMT+0700 (Western Indonesia Time) {} +GET 3991652e-36ee-444d-9ccc-2053bb1bb350 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745762842605 Sun Apr 27 2025 21:07:22 GMT+0700 (Western Indonesia Time) {} +GET 6809458c-f811-46ff-aa72-eab13c458ec3 ::ffff:127.0.0.1 /api/registrasi/ 1745762865340 Sun Apr 27 2025 21:07:45 GMT+0700 (Western Indonesia Time) {} +GET c5fc63a7-042f-4335-aab6-814ed599c519 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745762867607 Sun Apr 27 2025 21:07:47 GMT+0700 (Western Indonesia Time) {} +GET 261d5ffd-f434-4abd-b8ab-a26699f52180 ::ffff:127.0.0.1 /api/registrasi/ 1745762935649 Sun Apr 27 2025 21:08:55 GMT+0700 (Western Indonesia Time) {} +GET dd53285f-82c3-4e24-9590-4c3481e2e31f ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745762938051 Sun Apr 27 2025 21:08:58 GMT+0700 (Western Indonesia Time) {} +GET 568c62d7-49d0-408b-b530-4553ed31b4c7 ::ffff:127.0.0.1 /api/registrasi/ 1745763024866 Sun Apr 27 2025 21:10:24 GMT+0700 (Western Indonesia Time) {} +GET 48c3d7e5-db1c-4148-a28c-1fde3bd6737e ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745763026375 Sun Apr 27 2025 21:10:26 GMT+0700 (Western Indonesia Time) {} +GET 1d17c88b-b6bf-4bcb-ba30-3286a8600a17 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745763057530 Sun Apr 27 2025 21:10:57 GMT+0700 (Western Indonesia Time) {} +GET 64c245f4-cab2-45a1-97cd-4be8dc2e27ef ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745764269434 Sun Apr 27 2025 21:31:09 GMT+0700 (Western Indonesia Time) {} +GET e3168172-a77d-41cc-acbb-4df4ef303321 ::ffff:127.0.0.1 /api/registrasi/ 1745764695605 Sun Apr 27 2025 21:38:15 GMT+0700 (Western Indonesia Time) {} +GET 40a74170-d8ae-415e-8920-3b406cbd6638 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745764773934 Sun Apr 27 2025 21:39:33 GMT+0700 (Western Indonesia Time) {} +GET 66b00597-ea2d-461a-bdc0-6103d857b66e ::ffff:127.0.0.1 /api/registrasi/ 1745765122929 Sun Apr 27 2025 21:45:22 GMT+0700 (Western Indonesia Time) {} +GET 6b93f9ec-9e73-43e2-938b-eba846999663 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745765125571 Sun Apr 27 2025 21:45:25 GMT+0700 (Western Indonesia Time) {} +GET 90fe8736-e362-4abd-b289-a41e13ea0c8b ::ffff:127.0.0.1 /api/registrasi/ 1745765205746 Sun Apr 27 2025 21:46:45 GMT+0700 (Western Indonesia Time) {} +GET 16c8f7c2-7582-4c9a-a6b2-8f166e788ee4 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745765212896 Sun Apr 27 2025 21:46:52 GMT+0700 (Western Indonesia Time) {} +GET 105ed1e9-a290-451a-8693-2d2b006775c5 ::ffff:127.0.0.1 /api/registrasi/ 1745765498940 Sun Apr 27 2025 21:51:38 GMT+0700 (Western Indonesia Time) {} +GET a4ef6faa-a5cc-4ccc-94b3-39fae9685902 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745765503777 Sun Apr 27 2025 21:51:43 GMT+0700 (Western Indonesia Time) {} +GET 36c6815c-25e1-4369-a50f-4ce26474c69a ::ffff:127.0.0.1 /api/pegawai 1745765505997 Sun Apr 27 2025 21:51:45 GMT+0700 (Western Indonesia Time) {} +GET 63201c75-05a6-4d67-ae94-a56bd6b4d484 ::ffff:127.0.0.1 /api/pegawai 1745765508246 Sun Apr 27 2025 21:51:48 GMT+0700 (Western Indonesia Time) {} +GET 339391a8-6ce6-4323-b510-d82706192a8c ::ffff:127.0.0.1 /api/registrasi/ 1745765699479 Sun Apr 27 2025 21:54:59 GMT+0700 (Western Indonesia Time) {} +GET 678486eb-1a99-4029-8db1-51a405244518 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745765702429 Sun Apr 27 2025 21:55:02 GMT+0700 (Western Indonesia Time) {} +GET 2241ec7e-8399-42b5-9db2-f40561deab43 ::ffff:127.0.0.1 /api/pegawai 1745765702485 Sun Apr 27 2025 21:55:02 GMT+0700 (Western Indonesia Time) {} +GET 6a8ad8a8-ac35-47da-942e-610f0dea52b4 ::ffff:127.0.0.1 /api/registrasi/ 1745765821339 Sun Apr 27 2025 21:57:01 GMT+0700 (Western Indonesia Time) {} +GET 7fe02d2a-325f-457b-8bed-c4799ae8fffc ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745765823362 Sun Apr 27 2025 21:57:03 GMT+0700 (Western Indonesia Time) {} +GET 40653f4f-f167-4add-a084-2dd3678942bf ::ffff:127.0.0.1 /api/pegawai 1745765823721 Sun Apr 27 2025 21:57:03 GMT+0700 (Western Indonesia Time) {} +GET e335a477-065e-495f-8fff-2370141e3516 ::ffff:127.0.0.1 /api/registrasi/ 1745765907619 Sun Apr 27 2025 21:58:27 GMT+0700 (Western Indonesia Time) {} +POST 27e00747-afde-4f34-ae12-375fcdfceb18 ::ffff:127.0.0.1 /api/login/ 1745765923096 Sun Apr 27 2025 21:58:43 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +GET 3b2f3421-b6cc-48da-b2c3-a2ed9e35857c ::ffff:127.0.0.1 /api/laporan/dashboard 1745765925397 Sun Apr 27 2025 21:58:45 GMT+0700 (Western Indonesia Time) {} +GET f58d6d95-185f-4834-87bf-ea7597ffd494 ::ffff:127.0.0.1 /api/registrasi/ 1745765928431 Sun Apr 27 2025 21:58:48 GMT+0700 (Western Indonesia Time) {} +GET faeec362-0d9b-4f54-a63b-1db37811c2d7 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745765931155 Sun Apr 27 2025 21:58:51 GMT+0700 (Western Indonesia Time) {} +GET cb71666b-00d1-4f61-b903-d0536fb7a25c ::ffff:127.0.0.1 /api/pegawai 1745765931810 Sun Apr 27 2025 21:58:51 GMT+0700 (Western Indonesia Time) {} +GET cf7d277e-2b11-49cd-a448-399cafa77afc ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745765936749 Sun Apr 27 2025 21:58:56 GMT+0700 (Western Indonesia Time) {} +GET 2ded0e27-c6a4-4698-b55a-119ad3809d70 ::ffff:127.0.0.1 /api/pegawai 1745765937250 Sun Apr 27 2025 21:58:57 GMT+0700 (Western Indonesia Time) {} +GET e0171c1f-8fe8-4699-8212-12b57a3b6619 ::ffff:127.0.0.1 /api/registrasi/ 1745766037791 Sun Apr 27 2025 22:00:37 GMT+0700 (Western Indonesia Time) {} +GET a30af261-8878-450a-b972-1067935596ce ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766039595 Sun Apr 27 2025 22:00:39 GMT+0700 (Western Indonesia Time) {} +GET 66f28e16-aec9-4112-b0ee-f083b3263ee4 ::ffff:127.0.0.1 /api/pegawai 1745766039744 Sun Apr 27 2025 22:00:39 GMT+0700 (Western Indonesia Time) {} +GET 03857448-74b9-4c41-ade1-54ca11a5d266 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/2 1745766044596 Sun Apr 27 2025 22:00:44 GMT+0700 (Western Indonesia Time) {} +GET 1b2b7870-a1cc-47ec-b716-461ad6aff828 ::ffff:127.0.0.1 /api/pegawai 1745766044998 Sun Apr 27 2025 22:00:44 GMT+0700 (Western Indonesia Time) {} +GET 80abaa95-cb47-4f3b-b179-df54ae131e88 ::ffff:127.0.0.1 /api/registrasi/ 1745766131738 Sun Apr 27 2025 22:02:11 GMT+0700 (Western Indonesia Time) {} +GET 08125fd8-3264-4de0-8a47-bc8a8c54ee29 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766133545 Sun Apr 27 2025 22:02:13 GMT+0700 (Western Indonesia Time) {} +GET 3595c684-9928-4a6f-a60d-0a229ebf9169 ::ffff:127.0.0.1 /api/pegawai 1745766133632 Sun Apr 27 2025 22:02:13 GMT+0700 (Western Indonesia Time) {} +GET 45d1ff8a-5962-4c49-8249-11efdf5eb104 ::ffff:127.0.0.1 /api/asuransi 1745766133638 Sun Apr 27 2025 22:02:13 GMT+0700 (Western Indonesia Time) {} +GET 8b51b05b-2965-43ad-a68a-c34394941ebe ::ffff:127.0.0.1 /api/registrasi/ 1745766155847 Sun Apr 27 2025 22:02:35 GMT+0700 (Western Indonesia Time) {} +GET 1e2c8c76-32b4-479f-96bb-411f7056691c ::ffff:127.0.0.1 /api/registrasi/registrasi_id/3 1745766159515 Sun Apr 27 2025 22:02:39 GMT+0700 (Western Indonesia Time) {} +GET d730272b-ac6a-4143-91c1-37e14658edcc ::ffff:127.0.0.1 /api/pegawai 1745766159621 Sun Apr 27 2025 22:02:39 GMT+0700 (Western Indonesia Time) {} +GET 9e028d4b-3fd0-4126-abf8-1e8144c0d6c6 ::ffff:127.0.0.1 /api/asuransi 1745766159628 Sun Apr 27 2025 22:02:39 GMT+0700 (Western Indonesia Time) {} +GET 94ba186c-cc97-4cec-baa9-dcd07be814a3 ::ffff:127.0.0.1 /api/asuransi 1745766159638 Sun Apr 27 2025 22:02:39 GMT+0700 (Western Indonesia Time) {} +GET 133b472d-f92c-4dd1-85a8-1110ae033d43 ::ffff:127.0.0.1 /api/registrasi/ 1745766219770 Sun Apr 27 2025 22:03:39 GMT+0700 (Western Indonesia Time) {} +GET 8410d35a-b1f0-4f03-9221-f8db73fe6ef1 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/3 1745766222681 Sun Apr 27 2025 22:03:42 GMT+0700 (Western Indonesia Time) {} +GET 5f17b618-7954-4ec9-8a5a-7b3fd9d21420 ::ffff:127.0.0.1 /api/pegawai 1745766222768 Sun Apr 27 2025 22:03:42 GMT+0700 (Western Indonesia Time) {} +GET 9d83ec8c-f316-474f-8caa-3c52e4737db5 ::ffff:127.0.0.1 /api/asuransi 1745766222776 Sun Apr 27 2025 22:03:42 GMT+0700 (Western Indonesia Time) {} +GET b1c1b108-9e1b-4514-80e8-3b5ffbb24e58 ::ffff:127.0.0.1 /api/ruangpelayanan 1745766222782 Sun Apr 27 2025 22:03:42 GMT+0700 (Western Indonesia Time) {} +GET f650717b-89be-4bf0-bca0-4be965a30005 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/2 1745766229028 Sun Apr 27 2025 22:03:49 GMT+0700 (Western Indonesia Time) {} +GET 19ea5208-1a58-4ee4-a76b-55f50ddd2f8c ::ffff:127.0.0.1 /api/pegawai 1745766229198 Sun Apr 27 2025 22:03:49 GMT+0700 (Western Indonesia Time) {} +GET 2b24b1db-ad1a-43b7-a1a2-94c44fdc3cda ::ffff:127.0.0.1 /api/asuransi 1745766229205 Sun Apr 27 2025 22:03:49 GMT+0700 (Western Indonesia Time) {} +GET 1f1aed1e-c571-4c29-aa9c-9431b79512b6 ::ffff:127.0.0.1 /api/ruangpelayanan 1745766229210 Sun Apr 27 2025 22:03:49 GMT+0700 (Western Indonesia Time) {} +GET b606f23c-d950-4e52-bf49-c560b734de06 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766233107 Sun Apr 27 2025 22:03:53 GMT+0700 (Western Indonesia Time) {} +GET 00c56c76-01a2-4506-a674-2ff0004acdb4 ::ffff:127.0.0.1 /api/pegawai 1745766233260 Sun Apr 27 2025 22:03:53 GMT+0700 (Western Indonesia Time) {} +GET 4d78b6f5-f70d-49f9-bb42-e02acf7570e5 ::ffff:127.0.0.1 /api/asuransi 1745766233269 Sun Apr 27 2025 22:03:53 GMT+0700 (Western Indonesia Time) {} +GET c1c7470e-1760-4697-be83-8de474fe7165 ::ffff:127.0.0.1 /api/ruangpelayanan 1745766233273 Sun Apr 27 2025 22:03:53 GMT+0700 (Western Indonesia Time) {} +GET 77581d09-3156-4a0a-a734-6570f9af9f6b ::ffff:127.0.0.1 /api/registrasi/registrasi_id/2 1745766248426 Sun Apr 27 2025 22:04:08 GMT+0700 (Western Indonesia Time) {} +GET 37d0f6fa-1f12-4670-a560-d4c53c5a4f11 ::ffff:127.0.0.1 /api/pegawai 1745766248538 Sun Apr 27 2025 22:04:08 GMT+0700 (Western Indonesia Time) {} +GET f5bcf121-59aa-4659-a580-8ffb67627d2e ::ffff:127.0.0.1 /api/asuransi 1745766248545 Sun Apr 27 2025 22:04:08 GMT+0700 (Western Indonesia Time) {} +GET c4e01aa6-9403-4e7d-bb78-4813136a319d ::ffff:127.0.0.1 /api/ruangpelayanan 1745766248551 Sun Apr 27 2025 22:04:08 GMT+0700 (Western Indonesia Time) {} +PUT c435fc6a-cbfc-405c-8d6a-8e3b0a4f7242 ::ffff:127.0.0.1 /api/registrasi/idregistrasi/2 1745766264073 Sun Apr 27 2025 22:04:24 GMT+0700 (Western Indonesia Time) {"tanggallahir":"27-04-2025","jeniskelamin":"Laki-Laki"} +GET a2d793ef-48e8-47ca-9db3-2ef06ff34a49 ::ffff:127.0.0.1 /api/registrasi/ 1745766304450 Sun Apr 27 2025 22:05:04 GMT+0700 (Western Indonesia Time) {} +GET b67ef6b3-a529-41ab-9af0-4e4e71252928 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766306795 Sun Apr 27 2025 22:05:06 GMT+0700 (Western Indonesia Time) {} +GET 84e6ccde-dd32-462d-8101-8c2e7d647541 ::ffff:127.0.0.1 /api/pegawai 1745766307050 Sun Apr 27 2025 22:05:07 GMT+0700 (Western Indonesia Time) {} +GET 10e86291-a7cf-4c76-8a63-23f9e41e2e98 ::ffff:127.0.0.1 /api/asuransi 1745766307054 Sun Apr 27 2025 22:05:07 GMT+0700 (Western Indonesia Time) {} +GET b23fd73a-1f29-49a4-8d14-7aad10eb5607 ::ffff:127.0.0.1 /api/ruangpelayanan 1745766307060 Sun Apr 27 2025 22:05:07 GMT+0700 (Western Indonesia Time) {} +PUT 30ec51e9-6b16-4cc5-a9d4-9aa0f5078efe ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766319140 Sun Apr 27 2025 22:05:19 GMT+0700 (Western Indonesia Time) {"tanggallahir":"27-04-2025","jeniskelamin":"Laki-Laki"} +GET 4c4cea38-a049-4cde-b5ec-964dfa6a9613 ::ffff:127.0.0.1 /api/registrasi/ 1745766530528 Sun Apr 27 2025 22:08:50 GMT+0700 (Western Indonesia Time) {} +GET 4345e55f-2dd3-457e-8310-34fc4c59ab07 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766532878 Sun Apr 27 2025 22:08:52 GMT+0700 (Western Indonesia Time) {} +GET d19ad1eb-bf08-4368-b2c6-8a4f87d70f0d ::ffff:127.0.0.1 /api/pegawai 1745766533183 Sun Apr 27 2025 22:08:53 GMT+0700 (Western Indonesia Time) {} +GET db02365b-0dae-46d8-8608-a135e9e5336f ::ffff:127.0.0.1 /api/asuransi 1745766533188 Sun Apr 27 2025 22:08:53 GMT+0700 (Western Indonesia Time) {} +GET dbed7887-e3ea-4b55-a35f-63c3cc22cab7 ::ffff:127.0.0.1 /api/ruangpelayanan 1745766533192 Sun Apr 27 2025 22:08:53 GMT+0700 (Western Indonesia Time) {} +PUT a47aa14e-d889-4b0c-a559-9328ee6fd46f ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766543389 Sun Apr 27 2025 22:09:03 GMT+0700 (Western Indonesia Time) {"idpasien":"undefined","tanggalregistrasi":"2025-04-27","idasuransi":"2","idpegawai":"6","idruangpelayanan":"8"} +GET dd88b738-e6b6-4075-a782-89d6270a2596 ::ffff:127.0.0.1 /api/registrasi/ 1745766585293 Sun Apr 27 2025 22:09:45 GMT+0700 (Western Indonesia Time) {} +GET 54152fec-5a57-4ac3-b434-8f2b2ae6be99 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766603867 Sun Apr 27 2025 22:10:03 GMT+0700 (Western Indonesia Time) {} +GET bdaacfd1-bbf6-4c69-a1b9-7f8a46e005fb ::ffff:127.0.0.1 /api/pegawai 1745766604050 Sun Apr 27 2025 22:10:04 GMT+0700 (Western Indonesia Time) {} +GET ea9b7818-5dc8-42cd-9de6-8a800d9c2fb0 ::ffff:127.0.0.1 /api/asuransi 1745766604054 Sun Apr 27 2025 22:10:04 GMT+0700 (Western Indonesia Time) {} +GET 8759f6c6-aa67-4cdd-b5e1-20e8345cb3fc ::ffff:127.0.0.1 /api/ruangpelayanan 1745766604062 Sun Apr 27 2025 22:10:04 GMT+0700 (Western Indonesia Time) {} +GET a30f3897-37bd-4e97-aefc-71e60111a993 ::ffff:127.0.0.1 /api/registrasi/ 1745766635031 Sun Apr 27 2025 22:10:35 GMT+0700 (Western Indonesia Time) {} +GET f9e37ff8-ba02-455f-b55c-fa4713bd153d ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766640838 Sun Apr 27 2025 22:10:40 GMT+0700 (Western Indonesia Time) {} +GET 68b53e93-5673-4fee-bdad-67937429e91d ::ffff:127.0.0.1 /api/pegawai 1745766640925 Sun Apr 27 2025 22:10:40 GMT+0700 (Western Indonesia Time) {} +GET e7b323c4-04db-4f0a-9708-f05f35e98bd9 ::ffff:127.0.0.1 /api/asuransi 1745766640932 Sun Apr 27 2025 22:10:40 GMT+0700 (Western Indonesia Time) {} +GET 807bfec6-f3f8-45ab-a5fd-0c7a03317e4c ::ffff:127.0.0.1 /api/ruangpelayanan 1745766640937 Sun Apr 27 2025 22:10:40 GMT+0700 (Western Indonesia Time) {} +PUT e2932d2b-6816-40af-a472-511baf82f4f7 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766648424 Sun Apr 27 2025 22:10:48 GMT+0700 (Western Indonesia Time) {"idpasien":"3","tanggalregistrasi":"2025-04-27","idasuransi":"2","idpegawai":"1","idruangpelayanan":"8"} +GET 9eed0f5d-de22-4c7f-bdc7-e94d2dbe9618 ::ffff:127.0.0.1 /api/registrasi/ 1745766694924 Sun Apr 27 2025 22:11:34 GMT+0700 (Western Indonesia Time) {} +GET 4277e807-962b-4eea-92e5-b5ae65b002d8 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766699312 Sun Apr 27 2025 22:11:39 GMT+0700 (Western Indonesia Time) {} +GET a5a7c36a-38a9-452f-9094-e4287b8c6a7e ::ffff:127.0.0.1 /api/pegawai 1745766699500 Sun Apr 27 2025 22:11:39 GMT+0700 (Western Indonesia Time) {} +GET 293bdee8-c8f3-47d0-879d-ed5047fbc01d ::ffff:127.0.0.1 /api/asuransi 1745766699506 Sun Apr 27 2025 22:11:39 GMT+0700 (Western Indonesia Time) {} +GET 961e4d7b-2e34-4881-8d6c-28514977a968 ::ffff:127.0.0.1 /api/ruangpelayanan 1745766699510 Sun Apr 27 2025 22:11:39 GMT+0700 (Western Indonesia Time) {} +PUT d51dc777-07b3-4557-9e05-f758afe83552 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766704596 Sun Apr 27 2025 22:11:44 GMT+0700 (Western Indonesia Time) {"idpasien":"3","tanggalregistrasi":"2025-04-27","nomorkartuasuransi":"22222222","idasuransi":"2","idpegawai":"1","idruangpelayanan":"8"} +GET 7daa2a96-df5b-4a1d-a4f1-b24a98712bf7 ::ffff:127.0.0.1 /api/registrasi/ 1745766797376 Sun Apr 27 2025 22:13:17 GMT+0700 (Western Indonesia Time) {} +GET 607f7f4a-9efc-46e9-af90-199efd7bbfea ::ffff:127.0.0.1 /api/registrasi/ 1745766798489 Sun Apr 27 2025 22:13:18 GMT+0700 (Western Indonesia Time) {} +GET 49fe9e8c-1212-4af3-bf19-882c737764d2 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766801906 Sun Apr 27 2025 22:13:21 GMT+0700 (Western Indonesia Time) {} +GET 0352625e-73a9-49b2-a894-5a6e67e4d32a ::ffff:127.0.0.1 /api/pegawai 1745766802035 Sun Apr 27 2025 22:13:22 GMT+0700 (Western Indonesia Time) {} +GET 0a2acb64-3857-4d4b-999a-4d0aed3e94f2 ::ffff:127.0.0.1 /api/asuransi 1745766802039 Sun Apr 27 2025 22:13:22 GMT+0700 (Western Indonesia Time) {} +GET af4ab8d3-2653-490c-97e1-31735556b5fd ::ffff:127.0.0.1 /api/ruangpelayanan 1745766802042 Sun Apr 27 2025 22:13:22 GMT+0700 (Western Indonesia Time) {} +PUT b54646a3-4dbc-483b-95e7-058a551a2524 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766806632 Sun Apr 27 2025 22:13:26 GMT+0700 (Western Indonesia Time) {"idpasien":3,"tanggalregistrasi":"2025-04-27","nomorkartuasuransi":"222222222","idasuransi":2,"idpegawai":1,"idruangpelayanan":8} +GET cd3f037b-bd67-442b-94ef-8fbddcf47ded ::ffff:127.0.0.1 /api/registrasi/ 1745766808591 Sun Apr 27 2025 22:13:28 GMT+0700 (Western Indonesia Time) {} +GET dbeca2d1-d330-4f9d-bb86-7a573a412931 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766814475 Sun Apr 27 2025 22:13:34 GMT+0700 (Western Indonesia Time) {} +GET f288d60c-aace-4656-b935-ac546b49031d ::ffff:127.0.0.1 /api/pegawai 1745766814588 Sun Apr 27 2025 22:13:34 GMT+0700 (Western Indonesia Time) {} +GET 0ef67ba6-1d41-4cbe-8a1c-8629dbd37c12 ::ffff:127.0.0.1 /api/asuransi 1745766814595 Sun Apr 27 2025 22:13:34 GMT+0700 (Western Indonesia Time) {} +GET 50ebd6cc-b29b-4af0-b4db-674d7750f688 ::ffff:127.0.0.1 /api/ruangpelayanan 1745766814601 Sun Apr 27 2025 22:13:34 GMT+0700 (Western Indonesia Time) {} +PUT 8b953d5e-de43-479c-be6e-a8c1480510ce ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766820385 Sun Apr 27 2025 22:13:40 GMT+0700 (Western Indonesia Time) {"idpasien":3,"tanggalregistrasi":"2025-04-27","nomorkartuasuransi":"222222222","idasuransi":2,"idpegawai":1,"idruangpelayanan":9} +GET c7fd871f-73f2-4baf-93fb-8e17419748e3 ::ffff:127.0.0.1 /api/registrasi/ 1745766823735 Sun Apr 27 2025 22:13:43 GMT+0700 (Western Indonesia Time) {} +GET f1c44051-f05d-4427-9fe3-394e2332c7ac ::ffff:127.0.0.1 /api/registrasi/ 1745767358785 Sun Apr 27 2025 22:22:38 GMT+0700 (Western Indonesia Time) {} +GET a952226b-0b33-45e9-903f-55e761161b66 ::ffff:127.0.0.1 /api/pegawai 1745767361094 Sun Apr 27 2025 22:22:41 GMT+0700 (Western Indonesia Time) {} +GET 0f045129-6df7-479f-8350-8a9389d3d337 ::ffff:127.0.0.1 /api/asuransi 1745767361098 Sun Apr 27 2025 22:22:41 GMT+0700 (Western Indonesia Time) {} +GET faa26e3f-f198-4d40-b47c-3785f53349c1 ::ffff:127.0.0.1 /api/ruangpelayanan 1745767361105 Sun Apr 27 2025 22:22:41 GMT+0700 (Western Indonesia Time) {} +GET 79ff73ae-3d8d-4bf6-8cb3-2b5b156d99ed ::ffff:127.0.0.1 /api/pegawai 1745767387678 Sun Apr 27 2025 22:23:07 GMT+0700 (Western Indonesia Time) {} +GET cc65f0dd-6b00-41f1-aa16-6a8875fbdb35 ::ffff:127.0.0.1 /api/asuransi 1745767387683 Sun Apr 27 2025 22:23:07 GMT+0700 (Western Indonesia Time) {} +GET c6733d80-e868-45c3-8464-fb7b266a098a ::ffff:127.0.0.1 /api/ruangpelayanan 1745767387687 Sun Apr 27 2025 22:23:07 GMT+0700 (Western Indonesia Time) {} +GET 971d65bd-97fc-4059-9fce-892b3108b5de ::ffff:127.0.0.1 /api/registrasi/ 1745767551360 Sun Apr 27 2025 22:25:51 GMT+0700 (Western Indonesia Time) {} +GET 8bf23889-110a-43b0-acca-8dae2f80500c ::ffff:127.0.0.1 /api/pegawai 1745767553326 Sun Apr 27 2025 22:25:53 GMT+0700 (Western Indonesia Time) {} +GET aa1335b3-06ce-482f-8ee5-d54aaa18a853 ::ffff:127.0.0.1 /api/asuransi 1745767553330 Sun Apr 27 2025 22:25:53 GMT+0700 (Western Indonesia Time) {} +GET f674da1c-7e1f-4bb8-87ae-3abc9ae84b2a ::ffff:127.0.0.1 /api/ruangpelayanan 1745767553334 Sun Apr 27 2025 22:25:53 GMT+0700 (Western Indonesia Time) {} +GET 0cd00f02-5d23-4c53-8df2-c2f205eb9c13 ::ffff:127.0.0.1 /api/registrasi/ 1745767561168 Sun Apr 27 2025 22:26:01 GMT+0700 (Western Indonesia Time) {} +GET b316b9e5-a339-448a-9299-b5c1e39353be ::ffff:127.0.0.1 /api/pegawai 1745767564294 Sun Apr 27 2025 22:26:04 GMT+0700 (Western Indonesia Time) {} +GET 2de50080-31a6-4c24-aff3-8c77fecb7114 ::ffff:127.0.0.1 /api/asuransi 1745767564299 Sun Apr 27 2025 22:26:04 GMT+0700 (Western Indonesia Time) {} +GET b54c4cd6-f8ee-47f6-9008-59399cfbd9de ::ffff:127.0.0.1 /api/ruangpelayanan 1745767564305 Sun Apr 27 2025 22:26:04 GMT+0700 (Western Indonesia Time) {} +GET 99144bfa-dec5-46fd-b71a-7c48f004106f ::ffff:127.0.0.1 /api/registrasi/ 1745767597978 Sun Apr 27 2025 22:26:37 GMT+0700 (Western Indonesia Time) {} +GET f098a2da-865f-4c2e-98b9-3c0279bac4a3 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/2 1745767601141 Sun Apr 27 2025 22:26:41 GMT+0700 (Western Indonesia Time) {} +GET cc94ffc2-f64d-407b-a653-8834cbf486cc ::ffff:127.0.0.1 /api/pegawai 1745767601224 Sun Apr 27 2025 22:26:41 GMT+0700 (Western Indonesia Time) {} +GET a16e9507-99a8-4c22-9def-fd69def62ae2 ::ffff:127.0.0.1 /api/asuransi 1745767601230 Sun Apr 27 2025 22:26:41 GMT+0700 (Western Indonesia Time) {} +GET 59c79076-b04c-4f06-95d5-6e631a81a758 ::ffff:127.0.0.1 /api/ruangpelayanan 1745767601235 Sun Apr 27 2025 22:26:41 GMT+0700 (Western Indonesia Time) {} +GET 06182325-8d43-46eb-885d-0e8254ef07f3 ::ffff:127.0.0.1 /api/pegawai 1745767604388 Sun Apr 27 2025 22:26:44 GMT+0700 (Western Indonesia Time) {} +GET fb62e07b-51c3-49f3-9a22-2783b988d7b5 ::ffff:127.0.0.1 /api/asuransi 1745767604392 Sun Apr 27 2025 22:26:44 GMT+0700 (Western Indonesia Time) {} +GET 23f08296-50fd-4843-a9ff-ce598b14b1d2 ::ffff:127.0.0.1 /api/ruangpelayanan 1745767604395 Sun Apr 27 2025 22:26:44 GMT+0700 (Western Indonesia Time) {} +GET 0f0278c0-640f-4430-becc-1443660084c6 ::ffff:127.0.0.1 /api/pasien/namapasien/ 1745767606039 Sun Apr 27 2025 22:26:46 GMT+0700 (Western Indonesia Time) {} +GET 357d4914-61ee-406a-bd87-d5a7e59d1841 ::ffff:127.0.0.1 /api/pasien/namapasien/ 1745767627123 Sun Apr 27 2025 22:27:07 GMT+0700 (Western Indonesia Time) {} +GET 54ccd850-c1b6-49ea-b309-1b3c60317bf1 ::ffff:127.0.0.1 /api/registrasi/ 1745767665770 Sun Apr 27 2025 22:27:45 GMT+0700 (Western Indonesia Time) {} +GET 2d61f576-c144-42b6-a90b-867cbf781a5a ::ffff:127.0.0.1 /api/pegawai 1745767667057 Sun Apr 27 2025 22:27:47 GMT+0700 (Western Indonesia Time) {} +GET ce688484-2cca-4492-9a74-8f5260892a6f ::ffff:127.0.0.1 /api/asuransi 1745767667061 Sun Apr 27 2025 22:27:47 GMT+0700 (Western Indonesia Time) {} +GET 8c1511b9-d3b1-44c8-a1df-9ff1046442e5 ::ffff:127.0.0.1 /api/ruangpelayanan 1745767667065 Sun Apr 27 2025 22:27:47 GMT+0700 (Western Indonesia Time) {} +GET 2d6b3f75-dee1-4588-867f-8f840052a2f0 ::ffff:127.0.0.1 /api/pasien/namapasien/ 1745767668114 Sun Apr 27 2025 22:27:48 GMT+0700 (Western Indonesia Time) {} +GET 54017aa3-2ae0-4bb4-91ed-09180a41ebaf ::ffff:127.0.0.1 /api/pasien/namapasien/ 1745767673208 Sun Apr 27 2025 22:27:53 GMT+0700 (Western Indonesia Time) {} +GET 560c9a86-d0a1-45f4-85f6-43d8f0d3c67a ::ffff:127.0.0.1 /api/registrasi/ 1745767722434 Sun Apr 27 2025 22:28:42 GMT+0700 (Western Indonesia Time) {} +GET fa4b937d-7857-4567-8738-5930be3ca285 ::ffff:127.0.0.1 /api/registrasi/ 1745767725795 Sun Apr 27 2025 22:28:45 GMT+0700 (Western Indonesia Time) {} +GET effb446d-6c86-419c-bd6e-2e56d907329b ::ffff:127.0.0.1 /api/pegawai 1745767728481 Sun Apr 27 2025 22:28:48 GMT+0700 (Western Indonesia Time) {} +GET 3068805a-61d2-4c4f-ab8f-6a73444fface ::ffff:127.0.0.1 /api/asuransi 1745767728486 Sun Apr 27 2025 22:28:48 GMT+0700 (Western Indonesia Time) {} +GET 9e90217a-bc1c-4d9e-8d3e-f107b250c960 ::ffff:127.0.0.1 /api/ruangpelayanan 1745767728490 Sun Apr 27 2025 22:28:48 GMT+0700 (Western Indonesia Time) {} +GET 85e9aa0a-7b95-44fb-80dd-f4ab503b95c6 ::ffff:127.0.0.1 /api/pasien/namapasien/ 1745767729734 Sun Apr 27 2025 22:28:49 GMT+0700 (Western Indonesia Time) {} +GET 75a0870a-d2a9-424a-b6f6-fed1d064e060 ::ffff:127.0.0.1 /api/pasien/namapasien/ 1745767735472 Sun Apr 27 2025 22:28:55 GMT+0700 (Western Indonesia Time) {} +GET 3b7604be-710c-41bd-bc9f-1317079a6e11 ::ffff:127.0.0.1 /api/pasien/namapasien/ 1745767737125 Sun Apr 27 2025 22:28:57 GMT+0700 (Western Indonesia Time) {} +GET ca0cf730-af49-4745-9872-146f065e720d ::ffff:127.0.0.1 /api/registrasi/ 1745767765082 Sun Apr 27 2025 22:29:25 GMT+0700 (Western Indonesia Time) {} +GET 6a3a5f4e-6bd6-4b4f-b1af-5906033c7fb9 ::ffff:127.0.0.1 /api/pegawai 1745767767843 Sun Apr 27 2025 22:29:27 GMT+0700 (Western Indonesia Time) {} +GET ca5e58fe-d32d-4dc9-8fde-9ce5e97e4c3b ::ffff:127.0.0.1 /api/asuransi 1745767767848 Sun Apr 27 2025 22:29:27 GMT+0700 (Western Indonesia Time) {} +GET fb2d00ba-2b74-4a94-b2fe-956031009da9 ::ffff:127.0.0.1 /api/ruangpelayanan 1745767767852 Sun Apr 27 2025 22:29:27 GMT+0700 (Western Indonesia Time) {} +GET 4b3c12bd-34fc-4d00-9b79-afb1f4f7ae21 ::ffff:127.0.0.1 /api/registrasi/ 1745767862803 Sun Apr 27 2025 22:31:02 GMT+0700 (Western Indonesia Time) {} +GET 6611ae19-a5b9-48de-8fcc-f447face80a9 ::ffff:127.0.0.1 /api/pegawai 1745767865007 Sun Apr 27 2025 22:31:05 GMT+0700 (Western Indonesia Time) {} +GET ca70ffd3-209e-46e3-8edd-a077b1d60d00 ::ffff:127.0.0.1 /api/asuransi 1745767865012 Sun Apr 27 2025 22:31:05 GMT+0700 (Western Indonesia Time) {} +GET c0b98984-ca37-4981-8c70-928bd4ca7776 ::ffff:127.0.0.1 /api/ruangpelayanan 1745767865015 Sun Apr 27 2025 22:31:05 GMT+0700 (Western Indonesia Time) {} +POST 67b954df-88ba-4fb0-a744-b2aa67707d03 ::ffff:127.0.0.1 /api/pasien/ 1745767878044 Sun Apr 27 2025 22:31:18 GMT+0700 (Western Indonesia Time) {} +GET 7d8a65b2-ae53-448a-8e5e-86ab5db607c6 ::ffff:127.0.0.1 /api/registrasi/ 1745768019271 Sun Apr 27 2025 22:33:39 GMT+0700 (Western Indonesia Time) {} +GET baf8284a-27e5-463c-bac6-3772139d88ef ::ffff:127.0.0.1 /api/pegawai 1745768020954 Sun Apr 27 2025 22:33:40 GMT+0700 (Western Indonesia Time) {} +GET 0de22ba4-e578-4ec1-bd96-d1f3ae1456d7 ::ffff:127.0.0.1 /api/asuransi 1745768020959 Sun Apr 27 2025 22:33:40 GMT+0700 (Western Indonesia Time) {} +GET efcc1870-bdf2-48f0-9247-14ccae01bd06 ::ffff:127.0.0.1 /api/ruangpelayanan 1745768020962 Sun Apr 27 2025 22:33:40 GMT+0700 (Western Indonesia Time) {} +POST c52bae84-9ff5-4236-8ba2-8d466db46cc3 ::ffff:127.0.0.1 /api/registrasi/ 1745768051968 Sun Apr 27 2025 22:34:11 GMT+0700 (Western Indonesia Time) {"idpasien":6,"idpegawai":2,"idasuransi":3,"nomorkartuasuransi":"88888888","idruangpelayanan":2,"tanggalregistrasi":"2025-04-27"} +GET 591a6a98-7719-4bcd-aee1-66ff591b7388 ::ffff:127.0.0.1 /api/registrasi/ 1745768055325 Sun Apr 27 2025 22:34:15 GMT+0700 (Western Indonesia Time) {} +GET 94ec069c-cce6-4185-a598-027e73f006d2 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/6 1745768077353 Sun Apr 27 2025 22:34:37 GMT+0700 (Western Indonesia Time) {} +GET 80e530e7-f6c2-4d99-a70c-a816d3f34a33 ::ffff:127.0.0.1 /api/pegawai 1745768077493 Sun Apr 27 2025 22:34:37 GMT+0700 (Western Indonesia Time) {} +GET d26f91bf-c4fd-42f9-aac9-e18719dbc6ce ::ffff:127.0.0.1 /api/asuransi 1745768077499 Sun Apr 27 2025 22:34:37 GMT+0700 (Western Indonesia Time) {} +GET fe339079-293d-4e83-81b6-8f73c151a09e ::ffff:127.0.0.1 /api/ruangpelayanan 1745768077505 Sun Apr 27 2025 22:34:37 GMT+0700 (Western Indonesia Time) {} +PUT bc2421fe-f64c-4e6e-befb-39893fbabdd1 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/6 1745768082467 Sun Apr 27 2025 22:34:42 GMT+0700 (Western Indonesia Time) {"idpasien":6,"tanggalregistrasi":"2025-04-27","nomorkartuasuransi":"77777777","idasuransi":3,"idpegawai":2,"idruangpelayanan":2} +GET 34cf3367-b554-4adc-ac1b-1dfaf6a97e47 ::ffff:127.0.0.1 /api/registrasi/ 1745768084018 Sun Apr 27 2025 22:34:44 GMT+0700 (Western Indonesia Time) {} +GET 55886f7a-8b15-4ce5-a955-61beca57820a ::ffff:127.0.0.1 /api/pegawai 1745768209955 Sun Apr 27 2025 22:36:49 GMT+0700 (Western Indonesia Time) {} +GET 409e6e20-14d9-4f8f-95c6-4c5feef4c0b9 ::ffff:127.0.0.1 /api/asuransi 1745768209963 Sun Apr 27 2025 22:36:49 GMT+0700 (Western Indonesia Time) {} +GET a235ee5a-d4ee-455c-a51e-ac1a9cf85173 ::ffff:127.0.0.1 /api/ruangpelayanan 1745768209967 Sun Apr 27 2025 22:36:49 GMT+0700 (Western Indonesia Time) {} +POST 6a49a64c-4db8-4807-b03d-f56d19637f49 ::ffff:127.0.0.1 /api/registrasi/ 1745768224032 Sun Apr 27 2025 22:37:04 GMT+0700 (Western Indonesia Time) {"idpasien":7,"idpegawai":4,"idasuransi":3,"nomorkartuasuransi":"56565656","idruangpelayanan":2,"tanggalregistrasi":"2025-04-27"} +GET e4e92fa3-fc7c-49b7-98f4-8bc585a57d0d ::ffff:127.0.0.1 /api/registrasi/ 1745768227127 Sun Apr 27 2025 22:37:07 GMT+0700 (Western Indonesia Time) {} +GET 0e50d499-7231-438e-942c-bc38f5efee89 ::ffff:127.0.0.1 /api/registrasi/ 1745768322060 Sun Apr 27 2025 22:38:42 GMT+0700 (Western Indonesia Time) {} +DELETE a749ff0f-6e85-449f-a27d-5a5638170c0d ::ffff:127.0.0.1 /api/registrasi/registrasi_id/7 1745768326669 Sun Apr 27 2025 22:38:46 GMT+0700 (Western Indonesia Time) {} +GET c2d5191b-ffdb-4178-b1ed-9b27c1762ff4 ::ffff:127.0.0.1 /api/transaksi/ 1745768852900 Sun Apr 27 2025 22:47:32 GMT+0700 (Western Indonesia Time) {} +GET 9d5ff790-b13a-44c7-90db-0cefe26fff2f ::ffff:127.0.0.1 /api/transaksi/transaksi_id/2 1745768856481 Sun Apr 27 2025 22:47:36 GMT+0700 (Western Indonesia Time) {} +GET b66b9c02-e569-4485-b89e-afedae9bef48 ::ffff:127.0.0.1 /api/registrasi/ 1745769203118 Sun Apr 27 2025 22:53:23 GMT+0700 (Western Indonesia Time) {} +GET 854cbf7c-3e01-4f76-bd98-1762d0b478b6 ::ffff:127.0.0.1 /api/transaksi/registrasi_id/7 1745769207185 Sun Apr 27 2025 22:53:27 GMT+0700 (Western Indonesia Time) {} +POST 49ea276e-8951-4bed-b8ea-d0559b1c7788 ::ffff:127.0.0.1 /api/login/ 1745769242607 Sun Apr 27 2025 22:54:02 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +POST aec6f0f4-c40e-48e9-9fc1-8a191aafdefe ::ffff:127.0.0.1 /api/transaksi/ 1745769277466 Sun Apr 27 2025 22:54:37 GMT+0700 (Western Indonesia Time) {"idregistrasi":7,"idtindakan":2,"jmltindakan":1,"idpegawai":4} +POST ef6de756-1dca-4f47-a32c-434ca99ab703 ::ffff:127.0.0.1 /api/transaksi/ 1745769284207 Sun Apr 27 2025 22:54:44 GMT+0700 (Western Indonesia Time) {"idregistrasi":7,"idtindakan":5,"jmltindakan":1,"idpegawai":4} +POST 1d2b3123-3dbe-4171-acb5-99480565ca72 ::ffff:127.0.0.1 /api/transaksi/ 1745769290415 Sun Apr 27 2025 22:54:50 GMT+0700 (Western Indonesia Time) {"idregistrasi":7,"idtindakan":6,"jmltindakan":1,"idpegawai":4} +GET 6dad006b-05cc-47b5-b6d6-159de915db75 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/7 1745769298649 Sun Apr 27 2025 22:54:58 GMT+0700 (Western Indonesia Time) {} +GET 3a489232-a06b-45e0-b0f7-944afcb568c6 ::ffff:127.0.0.1 /api/pegawai 1745769298724 Sun Apr 27 2025 22:54:58 GMT+0700 (Western Indonesia Time) {} +GET 1c17474a-b745-4229-9e62-707d0ff0f1d6 ::ffff:127.0.0.1 /api/asuransi 1745769298730 Sun Apr 27 2025 22:54:58 GMT+0700 (Western Indonesia Time) {} +GET abd338b0-7018-4d4f-9f48-eaf9845c9ca8 ::ffff:127.0.0.1 /api/ruangpelayanan 1745769298738 Sun Apr 27 2025 22:54:58 GMT+0700 (Western Indonesia Time) {} +GET d42ab771-709d-465c-b063-58b58a7ef209 ::ffff:127.0.0.1 /api/transaksi/registrasi_id/7 1745769302157 Sun Apr 27 2025 22:55:02 GMT+0700 (Western Indonesia Time) {} +GET 0439ae16-47cb-46a4-9bce-67aab7af0e5e ::ffff:127.0.0.1 /api/registrasi/ 1745769686209 Sun Apr 27 2025 23:01:26 GMT+0700 (Western Indonesia Time) {} +POST bb2ac228-26f4-40fb-a167-81faed5e9200 ::ffff:127.0.0.1 /api/login/ 1745769709150 Sun Apr 27 2025 23:01:49 GMT+0700 (Western Indonesia Time) {"username":"madkur10","password":"123madkur"} +GET d7303e0e-6b14-4d19-8a00-2dd92a77500b ::ffff:127.0.0.1 /api/laporan/dashboard 1745769710986 Sun Apr 27 2025 23:01:50 GMT+0700 (Western Indonesia Time) {} +GET 2c0d1e10-82c9-4ece-8b28-9a948f6d7ed7 ::ffff:127.0.0.1 /api/registrasi/ 1745769718385 Sun Apr 27 2025 23:01:58 GMT+0700 (Western Indonesia Time) {} +GET 13e95f17-07bb-4089-bd3f-b74a66e2fa71 ::ffff:127.0.0.1 /api/transaksi/registrasi_id/7 1745769721273 Sun Apr 27 2025 23:02:01 GMT+0700 (Western Indonesia Time) {} +GET 65c1bcb5-4ede-4999-bf8a-0cf8417420cd ::ffff:127.0.0.1 /api/registrasi/ 1745769778602 Sun Apr 27 2025 23:02:58 GMT+0700 (Western Indonesia Time) {} +GET edf0c512-57be-4de7-93e0-2b518107fcbd ::ffff:127.0.0.1 /api/transaksi/registrasi_id/7 1745769780687 Sun Apr 27 2025 23:03:00 GMT+0700 (Western Indonesia Time) {} +GET 0d0cc77a-b9c8-4044-a5f9-6fd08d41c2fc ::ffff:127.0.0.1 /api/transaksi/registrasi_id/7 1745769818294 Sun Apr 27 2025 23:03:38 GMT+0700 (Western Indonesia Time) {} +GET e8f326e9-67e7-4749-8441-82add2e10f42 ::ffff:127.0.0.1 /api/transaksi/registrasi_id/6 1745769820225 Sun Apr 27 2025 23:03:40 GMT+0700 (Western Indonesia Time) {} +GET 9a82382c-84ad-4934-8970-5720f2b21039 ::ffff:127.0.0.1 /api/transaksi/registrasi_id/1 1745769822021 Sun Apr 27 2025 23:03:42 GMT+0700 (Western Indonesia Time) {} +GET fefb116f-b9c8-4a04-8b73-918aebf0de31 ::ffff:127.0.0.1 /api/registrasi/ 1745769859605 Sun Apr 27 2025 23:04:19 GMT+0700 (Western Indonesia Time) {} +GET 48404c2b-035a-4ac9-ac0d-1d558f93387c ::ffff:127.0.0.1 /api/transaksi/registrasi_id/7 1745769861410 Sun Apr 27 2025 23:04:21 GMT+0700 (Western Indonesia Time) {} +GET c3ffe948-029f-4a93-84f0-a5dce957153f ::ffff:127.0.0.1 /api/transaksi/registrasi_id/6 1745769864941 Sun Apr 27 2025 23:04:24 GMT+0700 (Western Indonesia Time) {} +GET 7be9e4ee-fd21-4b1e-b353-909d525c2d8c ::ffff:127.0.0.1 /api/transaksi/registrasi_id/1 1745769868679 Sun Apr 27 2025 23:04:28 GMT+0700 (Western Indonesia Time) {} +GET 95dfd9dd-c60b-48d0-aa20-604f5901efd6 ::ffff:127.0.0.1 /api/transaksi/registrasi_id/3 1745769871528 Sun Apr 27 2025 23:04:31 GMT+0700 (Western Indonesia Time) {} +GET 6514e67a-7494-478a-8860-91b258c0cde9 ::ffff:127.0.0.1 /api/transaksi/registrasi_id/2 1745769874542 Sun Apr 27 2025 23:04:34 GMT+0700 (Western Indonesia Time) {} +GET 388aff96-f4c4-418f-bd31-ba2d9ad1dbd1 ::ffff:127.0.0.1 /api/registrasi/ 1745769929472 Sun Apr 27 2025 23:05:29 GMT+0700 (Western Indonesia Time) {} +GET 94fcfd3c-b8c5-4cfb-b346-14eaf490922f ::ffff:127.0.0.1 /api/registrasi/ 1745770075212 Sun Apr 27 2025 23:07:55 GMT+0700 (Western Indonesia Time) {} +GET 6882ec98-2f55-4a1f-9efe-0bd17d93f6f4 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/7 1745770077473 Sun Apr 27 2025 23:07:57 GMT+0700 (Western Indonesia Time) {} +GET 315eb0d0-305d-43a1-8e03-1afc892a2799 ::ffff:127.0.0.1 /api/pegawai 1745770077563 Sun Apr 27 2025 23:07:57 GMT+0700 (Western Indonesia Time) {} +GET 45bb6d73-feba-4a3f-929f-340ee4ec2718 ::ffff:127.0.0.1 /api/asuransi 1745770077567 Sun Apr 27 2025 23:07:57 GMT+0700 (Western Indonesia Time) {} +GET 8572f30a-7d8a-46b2-a335-ea516a2047af ::ffff:127.0.0.1 /api/ruangpelayanan 1745770077573 Sun Apr 27 2025 23:07:57 GMT+0700 (Western Indonesia Time) {} +GET 9c262074-2c73-4a28-a4b5-8169c9ec79dc ::ffff:127.0.0.1 /api/registrasi/ 1745770316095 Sun Apr 27 2025 23:11:56 GMT+0700 (Western Indonesia Time) {} +GET 2adc917a-405a-43d3-a7d2-447ecb8fe94a ::ffff:127.0.0.1 /api/registrasi/registrasi_id/7 1745770318303 Sun Apr 27 2025 23:11:58 GMT+0700 (Western Indonesia Time) {} +GET 3aef9eaa-2dec-43f8-9764-05cf4f4e7a83 ::ffff:127.0.0.1 /api/tindakan 1745770318342 Sun Apr 27 2025 23:11:58 GMT+0700 (Western Indonesia Time) {} +GET ebb2d309-7e8b-4b88-9dad-0b4f893f5128 ::ffff:127.0.0.1 /api/registrasi/ 1745770475190 Sun Apr 27 2025 23:14:35 GMT+0700 (Western Indonesia Time) {} +GET 9c761453-c782-4101-8cbd-6dad6fb5b338 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/7 1745770477602 Sun Apr 27 2025 23:14:37 GMT+0700 (Western Indonesia Time) {} +GET 9cd1b4cb-fba3-4f59-87c7-9e13b884b7c5 ::ffff:127.0.0.1 /api/pegawai 1745770477639 Sun Apr 27 2025 23:14:37 GMT+0700 (Western Indonesia Time) {} +GET c5c7c4cb-75b4-41cc-b7e4-75571a182ab7 ::ffff:127.0.0.1 /api/tindakan 1745770477643 Sun Apr 27 2025 23:14:37 GMT+0700 (Western Indonesia Time) {} +GET 962423ce-2508-42ec-9ff9-7d6362934268 ::ffff:127.0.0.1 /api/registrasi/ 1745770719888 Sun Apr 27 2025 23:18:39 GMT+0700 (Western Indonesia Time) {} +GET 802122ee-babd-4b40-9b63-e114e454a7a9 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/7 1745770721955 Sun Apr 27 2025 23:18:41 GMT+0700 (Western Indonesia Time) {} +GET 8054a376-1f3d-4398-8e28-1042782c8169 ::ffff:127.0.0.1 /api/pegawai 1745770721987 Sun Apr 27 2025 23:18:41 GMT+0700 (Western Indonesia Time) {} +GET b391c04b-e2e7-4912-b0fb-31c99a76f71b ::ffff:127.0.0.1 /api/tindakan 1745770721990 Sun Apr 27 2025 23:18:41 GMT+0700 (Western Indonesia Time) {} +POST a62c97e3-5b31-4e29-8e05-e27489159943 ::ffff:127.0.0.1 /api/transaksi/ 1745770730025 Sun Apr 27 2025 23:18:50 GMT+0700 (Western Indonesia Time) {"idtindakan":18,"jmltindakan":3,"idpegawai":4,"idregistrasi":7} +GET 17eeea1d-1b69-49a5-9ba3-34436c77db94 ::ffff:127.0.0.1 /api/registrasi/ 1745770731734 Sun Apr 27 2025 23:18:51 GMT+0700 (Western Indonesia Time) {} +GET 2f2cfaad-47ec-49a7-8bb5-46050efd5d5c ::ffff:127.0.0.1 /api/transaksi/registrasi_id/7 1745770733557 Sun Apr 27 2025 23:18:53 GMT+0700 (Western Indonesia Time) {} +GET 95241c20-a4c4-49c5-9422-60595a8573b4 ::ffff:127.0.0.1 /api/users/ 1745770803258 Sun Apr 27 2025 23:20:03 GMT+0700 (Western Indonesia Time) {} +GET df042f6a-1ecb-401a-8703-1d0aa4048a5d ::ffff:127.0.0.1 /api/pegawai/ 1745770806133 Sun Apr 27 2025 23:20:06 GMT+0700 (Western Indonesia Time) {} +GET 5254cf89-2c85-46e6-aa77-283352e81586 ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745770814510 Sun Apr 27 2025 23:20:14 GMT+0700 (Western Indonesia Time) {} +GET 03284a86-ec5e-433f-84b3-6e8b740cebf7 ::ffff:127.0.0.1 /api/pasien/ 1745770817250 Sun Apr 27 2025 23:20:17 GMT+0700 (Western Indonesia Time) {} +GET e78d4f1d-c709-4328-9060-08455bc14f98 ::ffff:127.0.0.1 /api/tindakan/ 1745770820313 Sun Apr 27 2025 23:20:20 GMT+0700 (Western Indonesia Time) {} \ No newline at end of file diff --git a/backend/dist/log/error/log_2025-04-25.txt b/backend/dist/log/error/log_2025-04-25.txt new file mode 100644 index 0000000..4885663 --- /dev/null +++ b/backend/dist/log/error/log_2025-04-25.txt @@ -0,0 +1,11 @@ +POST 34e0b4e9-2cb1-49d7-a3de-fc794c5fdae9 ::ffff:127.0.0.1 /api/users 1745593805186 Fri Apr 25 2025 22:10:05 GMT+0700 (Western Indonesia Time) SyntaxError: Expected property name or '}' in JSON at position 3 {} +POST a3f087b2-ff96-40b8-b5a4-2ec6d25695e4 ::ffff:127.0.0.1 /api/users 1745593807707 Fri Apr 25 2025 22:10:07 GMT+0700 (Western Indonesia Time) SyntaxError: Expected property name or '}' in JSON at position 3 {} +POST e8a09f83-85fe-4857-aae5-65608fa1fe45 ::ffff:127.0.0.1 /api/users 1745593810897 Fri Apr 25 2025 22:10:10 GMT+0700 (Western Indonesia Time) SyntaxError: Expected property name or '}' in JSON at position 3 {} +POST d8adac05-0f4d-4d2b-a86c-77f0b046b1f0 ::ffff:127.0.0.1 /api/users 1745593812133 Fri Apr 25 2025 22:10:12 GMT+0700 (Western Indonesia Time) SyntaxError: Expected property name or '}' in JSON at position 3 {} +POST b7244ce5-0a6d-43f2-afa7-51c2e581ae28 ::ffff:127.0.0.1 /api/users 1745593869299 Fri Apr 25 2025 22:11:09 GMT+0700 (Western Indonesia Time) SyntaxError: Expected property name or '}' in JSON at position 3 {} +POST a565a973-96f1-4a9e-ad91-769757d89349 ::ffff:127.0.0.1 /api/users 1745593875463 Fri Apr 25 2025 22:11:15 GMT+0700 (Western Indonesia Time) SyntaxError: Expected property name or '}' in JSON at position 3 {} +POST f8ed9da4-7e87-4e8a-9787-c3530b2d5e2d ::ffff:127.0.0.1 /api/users 1745593884827 Fri Apr 25 2025 22:11:24 GMT+0700 (Western Indonesia Time) SyntaxError: Expected property name or '}' in JSON at position 3 {} +POST eb7be2f1-a0a4-4e66-8e64-c86439fc0900 ::ffff:127.0.0.1 /api/users 1745593909967 Fri Apr 25 2025 22:11:49 GMT+0700 (Western Indonesia Time) SyntaxError: Expected property name or '}' in JSON at position 3 {} +POST 3f49644f-34c9-4d39-b1ab-da6398c21772 ::ffff:127.0.0.1 /api/users 1745593923287 Fri Apr 25 2025 22:12:03 GMT+0700 (Western Indonesia Time) SyntaxError: Expected property name or '}' in JSON at position 3 {} +PUT 61abdc2f-c395-423d-a47c-7ffae2f3b701 ::ffff:127.0.0.1 /api/users/user_id/1 1745597619889 Fri Apr 25 2025 23:13:39 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.msusers.update()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/users/users.repository.js:80:53 77 }); 78 exports.checkDataUsername = checkDataUsername; 79 const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { → 80 const updateUser = yield db_1.prismaDb1.msusers.update( An operation failed because it depends on one or more records that were required but not found. Record to update not found. {"username":"madkur102","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} +PUT b61112af-f902-4814-be3b-d453e38d7443 ::ffff:127.0.0.1 /api/users/user_id/1 1745597955991 Fri Apr 25 2025 23:19:15 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.msusers.update()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/users/users.repository.js:96:53 93 }); 94 exports.checkDataUsername = checkDataUsername; 95 const updateUserDataAllRepository = (username, password, fullname, email, user_id) => __awaiter(void 0, void 0, void 0, function* () { → 96 const updateUser = yield db_1.prismaDb1.msusers.update( An operation failed because it depends on one or more records that were required but not found. Record to update not found. {"username":"madkur102","password":"123madkur","fullname":"Muhammad Kurniawan","email":"muhammadmadkur41@gmail.com"} \ No newline at end of file diff --git a/backend/dist/log/error/log_2025-04-26.txt b/backend/dist/log/error/log_2025-04-26.txt new file mode 100644 index 0000000..02a498f --- /dev/null +++ b/backend/dist/log/error/log_2025-04-26.txt @@ -0,0 +1,8 @@ +POST e7e470f0-598c-426f-a8a4-9a9d3500641d ::ffff:127.0.0.1 /api/users/ 1745631332283 Sat Apr 26 2025 08:35:32 GMT+0700 (Western Indonesia Time) SyntaxError: Unexpected string in JSON at position 40 {} +POST 9d5d3b75-6b9b-4848-8cea-5670bf1ca30c ::ffff:127.0.0.1 /api/users/ 1745631365436 Sat Apr 26 2025 08:36:05 GMT+0700 (Western Indonesia Time) SyntaxError: Unexpected string in JSON at position 40 {} +GET 593749d7-1b55-46bf-8497-5e46231b5af6 ::ffff:127.0.0.1 /api/users/ 1745655150784 Sat Apr 26 2025 15:12:30 GMT+0700 (Western Indonesia Time) (0 , users_repository_1.checkDataUserId) is not a function {} +PUT 37a4dc46-b73a-49dd-a710-68c68fa63230 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/4 1745658228536 Sat Apr 26 2025 16:03:48 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.mspegawai.update()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/master/pegawai/pegawai.repository.js:92:58 89 }); 90 exports.getDataPegawaiAll = getDataPegawaiAll; 91 const updatePegawaiDataAllRepository = (namapegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { → 92 const updatePegawai = yield db_1.prismaDb1.mspegawai.update({ where: { idpegawai: 4 }, data: { modified_at: "2025-04-26T16:03:48.521Z", modified_by: 1, namapegawai: { namapegawai: "dr. Tulus Gajah Thailand", ~~~~~~~~~~~ ? set?: String | Null } }, select: { idpegawai: true, created_at: true, created_by: true, namapegawai: true } }) Unknown argument `namapegawai`. Available options are marked with ?. {"namapegawai":"dr. Tulus Gajah Thailand"} +POST a93d0dd6-3a85-405a-9bb1-f7d95463630d ::ffff:127.0.0.1 /api/ruangpelayanan/ 1745670877206 Sat Apr 26 2025 19:34:37 GMT+0700 (Western Indonesia Time) Invalid `prisma.$queryRawUnsafe()` invocation: Raw query failed. Code: `42P01`. Message: `relation "ms_ruangpelayanan_id_seq" does not exist` {"namaruangpelayanan":"Klinik Anak"} +POST 705d6253-2929-4863-a0aa-c722593cd6e5 ::ffff:127.0.0.1 /api/pasien/ 1745674810923 Sat Apr 26 2025 20:40:10 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.mspasien.create()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/master/pasien/pasien.repository.js:44:56 41 const createPasienRepository = (namapasien, tanggallahir, jeniskelamin) => __awaiter(void 0, void 0, void 0, function* () { 42 const maxPasienId = yield (0, database_handler_1.generateMaxDb1)("ms_pasien_id_seq", "pasien_id"); 43 const nomrpasien = maxPasienId.toString().padStart(8, "0"); → 44 const createPasien = yield db_1.prismaDb1.mspasien.create({ data: { idpasien: 1, created_at: "2025-04-26T20:40:10.909Z", created_by: 1, mrpasien: "00000001", namapasien: "Cristiano Ronaldo", tanggallahir: "1985-09-21", ~~~~~~~~~~~~ jeniskelamin: "Laki-Laki" }, select: { idpasien: true, created_at: true, created_by: true, mrpasien: true, namapasien: true, tanggallahir: true, jeniskelamin: true } }) Invalid value for argument `tanggallahir`: premature end of input. Expected ISO-8601 DateTime. {"namapasien":"Cristiano Ronaldo","tanggallahir":"1985-09-21","jeniskelamin":"L"} +POST 51513609-3d26-4d4c-aaba-f02a28eec311 ::ffff:127.0.0.1 /api/pasien/ 1745674890083 Sat Apr 26 2025 20:41:30 GMT+0700 (Western Indonesia Time) createPasien is not defined {"namapasien":"Cristiano Ronaldo","tanggallahir":"1985-09-21","jeniskelamin":"L"} +GET 025fcd4c-ad3b-4c02-bdab-cb48e5b5ce79 ::ffff:127.0.0.1 /api/pasien/namapasien/lionel 1745675914104 Sat Apr 26 2025 20:58:34 GMT+0700 (Western Indonesia Time) getNamaPasienRepository is not defined {} \ No newline at end of file diff --git a/backend/dist/log/error/log_2025-04-27.txt b/backend/dist/log/error/log_2025-04-27.txt new file mode 100644 index 0000000..6b15181 --- /dev/null +++ b/backend/dist/log/error/log_2025-04-27.txt @@ -0,0 +1,17 @@ +POST ca6570f2-3812-479a-b7aa-0ca3b373190d ::ffff:127.0.0.1 /api/registrasi/ 1745713710047 Sun Apr 27 2025 07:28:30 GMT+0700 (Western Indonesia Time) Invalid `prisma.$queryRawUnsafe()` invocation: Raw query failed. Code: `42P01`. Message: `relation "ms_registrasi_id_seq" does not exist` {"tanggalregistrasi":"2025-04-27","idpasien":3,"nomorkartuasuransi":"0123456789","idasuransi":2,"idpegawai":1,"idruangpelayanan":8} +POST c30d0a8e-8c2a-4f6b-820f-5f95c8d6fac3 ::ffff:127.0.0.1 /api/login/ 1745745048576 Sun Apr 27 2025 16:10:48 GMT+0700 (Western Indonesia Time) data and hash arguments required {"username":"madkur10","password":"123madkur"} +POST ee203307-4f08-4a24-93cc-6bb2d51792fd ::ffff:127.0.0.1 /api/login/ 1745746245274 Sun Apr 27 2025 16:30:45 GMT+0700 (Western Indonesia Time) data and hash arguments required {"username":"madkur10","password":"123madkur"} +OPTIONS 302b909e-9364-4d79-98af-26f82e68be0b ::ffff:127.0.0.1 /api/login/ 1745748632331 Sun Apr 27 2025 17:10:32 GMT+0700 (Western Indonesia Time) Error: Not allowed by CORS undefined +OPTIONS 58394d35-08ff-4e67-9f94-4320b027619d ::ffff:127.0.0.1 /api/login/ 1745748643916 Sun Apr 27 2025 17:10:43 GMT+0700 (Western Indonesia Time) Error: Not allowed by CORS undefined +OPTIONS 64e0ef5b-95c0-46b6-a022-3b085f39fe98 ::ffff:127.0.0.1 /api/login/ 1745748776401 Sun Apr 27 2025 17:12:56 GMT+0700 (Western Indonesia Time) Error: Not allowed by CORS undefined +OPTIONS 8820f578-5329-4ebc-a88a-798e0dba4ab4 ::ffff:127.0.0.1 /api/login/ 1745748790438 Sun Apr 27 2025 17:13:10 GMT+0700 (Western Indonesia Time) Error: Not allowed by CORS undefined +OPTIONS ac8a35ba-902c-4df9-98cf-fb6b16a69e7b ::ffff:127.0.0.1 /api/login/ 1745748953192 Sun Apr 27 2025 17:15:53 GMT+0700 (Western Indonesia Time) Error: Not allowed by CORS undefined +PATCH 320f8ad9-3f91-49e6-a1be-60650204ef0a ::ffff:127.0.0.1 /api/users/user_id/6 1745757903916 Sun Apr 27 2025 19:45:03 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.msusers.update()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/master/users/users.repository.js:144:53 141 }); 142 exports.updateUserDataAllRepository = updateUserDataAllRepository; 143 const updateUserDataPartRepository = (updateField, user_id, created_by) => __awaiter(void 0, void 0, void 0, function* () { → 144 const updateUser = yield db_1.prismaDb1.msusers.update({ where: { user_id: 6 }, data: { username: "lamine200", email: "lamineyamal@gmail.com", full_name: "Lamine Yamal Jamet", is_active: "1", ~~~ created_by: 2, modified_at: "2025-04-27T19:45:03.906Z", modified_by: 2 }, select: { user_id: true, created_at: true, created_by: true, username: true, full_name: true, email: true, is_active: true } }) Argument `is_active`: Invalid value provided. Expected Boolean, NullableBoolFieldUpdateOperationsInput or Null, provided String. {"username":"lamine200","email":"lamineyamal@gmail.com","full_name":"Lamine Yamal Jamet","is_active":"1","created_by":2} +PATCH ad454ccf-5701-4033-be30-0efc30c0a399 ::ffff:127.0.0.1 /api/users/user_id/6 1745758066478 Sun Apr 27 2025 19:47:46 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.msusers.update()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/master/users/users.repository.js:144:53 141 }); 142 exports.updateUserDataAllRepository = updateUserDataAllRepository; 143 const updateUserDataPartRepository = (updateField, user_id, created_by) => __awaiter(void 0, void 0, void 0, function* () { → 144 const updateUser = yield db_1.prismaDb1.msusers.update({ where: { user_id: 6 }, data: { username: "lamine200", email: "lamineyamal@gmail.com", fullname: "Lamine Yamal", ~~~~~~~~ is_active: "1", created_by: 2, modified_at: "2025-04-27T19:47:46.474Z", modified_by: 2, ? user_id?: Int | IntFieldUpdateOperationsInput, ? created_at?: DateTime | NullableDateTimeFieldUpdateOperationsInput | Null, ? deleted_at?: DateTime | NullableDateTimeFieldUpdateOperationsInput | Null, ? deleted_by?: Int | NullableIntFieldUpdateOperationsInput | Null, ? password?: String | StringFieldUpdateOperationsInput, ? full_name?: String | NullableStringFieldUpdateOperationsInput | Null }, select: { user_id: true, created_at: true, created_by: true, username: true, full_name: true, email: true, is_active: true } }) Unknown argument `fullname`. Did you mean `full_name`? Available options are marked with ?. {"username":"lamine200","email":"lamineyamal@gmail.com","fullname":"Lamine Yamal","is_active":"1","created_by":2} +PATCH 11374613-a494-4897-aa05-287930f831ef ::ffff:127.0.0.1 /api/users/user_id/6 1745758127404 Sun Apr 27 2025 19:48:47 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.msusers.update()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/master/users/users.repository.js:144:53 141 }); 142 exports.updateUserDataAllRepository = updateUserDataAllRepository; 143 const updateUserDataPartRepository = (updateField, user_id, created_by) => __awaiter(void 0, void 0, void 0, function* () { → 144 const updateUser = yield db_1.prismaDb1.msusers.update({ where: { user_id: 6 }, data: { username: "lamine200", email: "lamineyamal@gmail.com", full_name: "Lamine Yamal", is_active: "1", ~~~ created_by: 2, modified_at: "2025-04-27T19:48:47.402Z", modified_by: 2 }, select: { user_id: true, created_at: true, created_by: true, username: true, full_name: true, email: true, is_active: true } }) Argument `is_active`: Invalid value provided. Expected Boolean, NullableBoolFieldUpdateOperationsInput or Null, provided String. {"username":"lamine200","email":"lamineyamal@gmail.com","full_name":"Lamine Yamal","is_active":"1","created_by":2} +PATCH 0ad86334-312a-4473-8a82-0a3ebe4928fe ::ffff:127.0.0.1 /api/users/user_id/6 1745758172122 Sun Apr 27 2025 19:49:32 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.msusers.update()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/master/users/users.repository.js:144:53 141 }); 142 exports.updateUserDataAllRepository = updateUserDataAllRepository; 143 const updateUserDataPartRepository = (updateField, user_id, created_by) => __awaiter(void 0, void 0, void 0, function* () { → 144 const updateUser = yield db_1.prismaDb1.msusers.update({ where: { user_id: 6 }, data: { username: "lamine200", email: "lamineyamal@gmail.com", full_name: "Lamine Yamal", is_active: 1, ~ created_by: 2, modified_at: "2025-04-27T19:49:32.119Z", modified_by: 2 }, select: { user_id: true, created_at: true, created_by: true, username: true, full_name: true, email: true, is_active: true } }) Argument `is_active`: Invalid value provided. Expected Boolean, NullableBoolFieldUpdateOperationsInput or Null, provided Int. {"username":"lamine200","email":"lamineyamal@gmail.com","full_name":"Lamine Yamal","is_active":1,"created_by":2} +GET 62478d49-b8cb-4808-9f95-e074c958b9d3 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/undefined 1745758729113 Sun Apr 27 2025 19:58:49 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.mspegawai.findFirst()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/master/pegawai/pegawai.repository.js:61:52 58 }); 59 exports.createPegawaiRepository = createPegawaiRepository; 60 const getDataPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { → 61 const pegawai = yield db_1.prismaDb1.mspegawai.findFirst({ where: { deleted_at: null, + idpegawai: { + equals: Int | IntFieldRefInput, + in: Int[] | ListIntFieldRefInput, + notIn: Int[] | ListIntFieldRefInput, + lt: Int | IntFieldRefInput, + lte: Int | IntFieldRefInput, + gt: Int | IntFieldRefInput, + gte: Int | IntFieldRefInput, + not: Int | NestedIntFilter + } }, select: { idpegawai: true, created_at: true, created_by: true, namapegawai: true } }) Argument `idpegawai` is missing. {"created_by":2} +GET 78219ca5-d2ee-4a42-a91c-ae284decf684 ::ffff:127.0.0.1 /api/pegawai/pegawai_id/undefined 1745758786902 Sun Apr 27 2025 19:59:46 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.mspegawai.findFirst()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/master/pegawai/pegawai.repository.js:61:52 58 }); 59 exports.createPegawaiRepository = createPegawaiRepository; 60 const getDataPegawaiId = (pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { → 61 const pegawai = yield db_1.prismaDb1.mspegawai.findFirst({ where: { deleted_at: null, + idpegawai: { + equals: Int | IntFieldRefInput, + in: Int[] | ListIntFieldRefInput, + notIn: Int[] | ListIntFieldRefInput, + lt: Int | IntFieldRefInput, + lte: Int | IntFieldRefInput, + gt: Int | IntFieldRefInput, + gte: Int | IntFieldRefInput, + not: Int | NestedIntFilter + } }, select: { idpegawai: true, created_at: true, created_by: true, namapegawai: true } }) Argument `idpegawai` is missing. {"created_by":2} +PUT dd647079-3efa-4d19-84c7-ad0dc37f8b3c ::ffff:127.0.0.1 /api/pegawai/pegawai_id/2 1745758913472 Sun Apr 27 2025 20:01:53 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.mspegawai.update()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/master/pegawai/pegawai.repository.js:92:58 89 }); 90 exports.getDataPegawaiAll = getDataPegawaiAll; 91 const updatePegawaiDataAllRepository = (namapegawai, pegawai_id) => __awaiter(void 0, void 0, void 0, function* () { → 92 const updatePegawai = yield db_1.prismaDb1.mspegawai.update({ where: { idpegawai: 2 }, data: { modified_at: "2025-04-27T20:01:53.468Z", modified_by: 1, namapegawai: { 0: {}, ~ length: 1, ? set?: String | Null } }, select: { idpegawai: true, created_at: true, created_by: true, namapegawai: true } }) Unknown argument `0`. Did you mean `set`? Available options are marked with ?. {"namapegawai":{"0":{},"length":1},"created_by":2} +GET 6a9174e1-1123-4b79-ac1b-fc2209e38281 ::ffff:127.0.0.1 /api/pasien/pasien_id/undefined 1745762745582 Sun Apr 27 2025 21:05:45 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.mspasien.findFirst()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/master/pasien/pasien.repository.js:107:53 104 }); 105 exports.getNamaPasienRepository = getNamaPasienRepository; 106 const getDataPasienIdRepository = (idpasien) => __awaiter(void 0, void 0, void 0, function* () { → 107 const getPasien = yield db_1.prismaDb1.mspasien.findFirst({ where: { deleted_by: null, + idpasien: { + equals: Int | IntFieldRefInput, + in: Int[] | ListIntFieldRefInput, + notIn: Int[] | ListIntFieldRefInput, + lt: Int | IntFieldRefInput, + lte: Int | IntFieldRefInput, + gt: Int | IntFieldRefInput, + gte: Int | IntFieldRefInput, + not: Int | NestedIntFilter + } }, select: { idpasien: true, created_at: true, created_by: true, mrpasien: true, namapasien: true, tanggallahir: true, jeniskelamin: true } }) Argument `idpasien` is missing. {"created_by":2} +PUT 9bad4f7b-672e-4720-af8a-9d882eb3c2a8 ::ffff:127.0.0.1 /api/registrasi/registrasi_id/1 1745766704636 Sun Apr 27 2025 22:11:44 GMT+0700 (Western Indonesia Time) Invalid `db_1.prismaDb1.trregistrasi.update()` invocation in /Users/mac/Documents/test_rsab/backend/dist/api/transaction/registrasi/registrasi.repository.js:89:64 86 }); 87 exports.createRegistrasiRepository = createRegistrasiRepository; 88 const updateRegistrasiDataRepository = (tanggalregistrasi, idpasien, nomorkartuasuransi, idasuransi, idpegawai, idruangpelayanan, idregistrasi) => __awaiter(void 0, void 0, void 0, function* () { → 89 const createRegistrasi = yield db_1.prismaDb1.trregistrasi.update({ where: { idregistrasi: 1 }, data: { modified_at: "2025-04-27T22:11:44.628Z", modified_by: 1, tanggalregistrasi: new Date("2025-04-27T00:00:00.000Z"), idpasien: "3", ~~~ nomorkartuasuransi: "22222222", idasuransi: "2", idpegawai: "1", idruangpelayanan: "8" }, select: { idregistrasi: true, created_at: true, created_by: true, tanggalregistrasi: true, nomorkartuasuransi: true, idasuransi: true, idpasien: true, idpegawai: true, idruangpelayanan: true, msasuransi: { select: { namaasuransi: true } }, mspegawai: { select: { namapegawai: true } }, msruangpelayanan: { select: { namaruangpelayanan: true } }, mspasien: { select: { namapasien: true, mrpasien: true, jeniskelamin: true } } } }) Argument `idpasien`: Invalid value provided. Expected Int, NullableIntFieldUpdateOperationsInput or Null, provided String. {"idpasien":"3","tanggalregistrasi":"2025-04-27","nomorkartuasuransi":"22222222","idasuransi":"2","idpegawai":"1","idruangpelayanan":"8","created_by":2} \ No newline at end of file diff --git a/backend/dist/middlewares/auth.js b/backend/dist/middlewares/auth.js new file mode 100644 index 0000000..0f68ef0 --- /dev/null +++ b/backend/dist/middlewares/auth.js @@ -0,0 +1,91 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.loginAuthentication = exports.authenticateToken = void 0; +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const secretKey = process.env.secretKey; +const secretKeyLogin = process.env.secretKeyLogin; +const jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); +const authenticateToken = (req, res, next) => { + const authHeader = req.headers["authorization"]; + const token = authHeader && authHeader.split(" ")[1]; + let data = {}; + if (token == null) { + data.metadata = { + code: 401, + msg: "Token Tidak Ditemukan", + }; + data.response = []; + return res.status(401).json(data); + } + jsonwebtoken_1.default.verify(token, secretKey, (err, user) => { + if (err) { + data.metadata = { + code: 403, + msg: "Token Tidak Sesuai atau token sudah kadarluwarsa", + }; + data.response = []; + return res.status(403).json(data); + } + const newAccessToken = jsonwebtoken_1.default.sign({ id: user.id }, secretKey, { + expiresIn: "15m", + }); + res.setHeader("x-new-token", newAccessToken); + req.body.created_by = user.id; + next(); + }); +}; +exports.authenticateToken = authenticateToken; +const loginAuthentication = (req, res, next) => { + const authHeader = req.headers["authorization"]; + const token = authHeader && authHeader.split(" ")[1]; + let data = {}; + if (token) { + if (secretKeyLogin === token) { + next(); + } + else { + data.metadata = { + code: 401, + msg: "Authentication Tidak Sesuai", + }; + data.response = []; + return res.status(401).json(data); + } + } + else { + data.metadata = { + code: 401, + msg: "Authentication Tidak Ditemukan", + }; + data.response = []; + return res.status(401).json(data); + } +}; +exports.loginAuthentication = loginAuthentication; diff --git a/backend/dist/middlewares/credential.js b/backend/dist/middlewares/credential.js new file mode 100644 index 0000000..c3024b1 --- /dev/null +++ b/backend/dist/middlewares/credential.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.credentials = void 0; +const allowedOrigins_1 = require("../config/allowedOrigins"); +const credentials = (req, res, next) => { + const origin = req.headers.origin; + if (allowedOrigins_1.allowedOrigins.includes(origin)) { + res.header("Access-Control-Allow-Credentials", "true"); + } + next(); +}; +exports.credentials = credentials; diff --git a/backend/dist/middlewares/error.js b/backend/dist/middlewares/error.js new file mode 100644 index 0000000..0dea92a --- /dev/null +++ b/backend/dist/middlewares/error.js @@ -0,0 +1,49 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.errLogger = void 0; +const fs_1 = __importDefault(require("fs")); +const path_1 = __importDefault(require("path")); +const uuid_1 = require("uuid"); +function errLogger(error, req, res, next) { + const dataLog = `${req.method}\t${(0, uuid_1.v4)()}\t${req.ip}\t${req.originalUrl}\t${Date.now()}\t${new Date()}\t${error}\t${JSON.stringify(req.body)}`; + const pathFolderLog = path_1.default.join(__dirname, "../log"); + const filePath = `${pathFolderLog}/error/log_${getCurrentDate()}.txt`; + if (fs_1.default.existsSync(pathFolderLog) === true) { + if (fs_1.default.existsSync(`${pathFolderLog}/error`) === true) { + if (fs_1.default.existsSync(filePath) === true) { + fs_1.default.appendFileSync(filePath, `\n${dataLog}`); + } + else { + fs_1.default.writeFileSync(filePath, dataLog); + } + } + else { + fs_1.default.mkdirSync(`${pathFolderLog}/error`, { recursive: true }); + fs_1.default.writeFileSync(filePath, dataLog); + } + } + else { + fs_1.default.mkdirSync(`${pathFolderLog}/error`, { recursive: true }); + fs_1.default.writeFileSync(filePath, dataLog); + } + res.status(error.status || 500).json({ + metadata: { + msg: error.msg || "Internal Server Error", + code: error.code || 500, + }, + }); +} +exports.errLogger = errLogger; +function getCurrentDate() { + const currentDate = new Date(); + const year = currentDate.getUTCFullYear(); + let month = currentDate.getUTCMonth() + 1; + month = month < 10 ? "0" + month : month; + let day = currentDate.getUTCDate(); + day = day < 10 ? "0" + day : day; + const formattedDate = `${year}-${month}-${day}`; + return formattedDate; +} diff --git a/backend/dist/middlewares/index.js b/backend/dist/middlewares/index.js new file mode 100644 index 0000000..d7ac736 --- /dev/null +++ b/backend/dist/middlewares/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./log"), exports); +__exportStar(require("./credential"), exports); +__exportStar(require("./auth"), exports); +__exportStar(require("./error"), exports); +__exportStar(require("./time"), exports); diff --git a/backend/dist/middlewares/log.js b/backend/dist/middlewares/log.js new file mode 100644 index 0000000..28e1fff --- /dev/null +++ b/backend/dist/middlewares/log.js @@ -0,0 +1,44 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = void 0; +const fs_1 = __importDefault(require("fs")); +const path_1 = __importDefault(require("path")); +const uuid_1 = require("uuid"); +function logger(req, res, next) { + const dataLog = `${req.method}\t${(0, uuid_1.v4)()}\t${req.ip}\t${req.originalUrl}\t${Date.now()}\t${new Date()}\t${JSON.stringify(req.body)}`; + const pathFolderLog = path_1.default.join(__dirname, "../log"); + const filePath = `${pathFolderLog}/access/log_${getCurrentDate()}.txt`; + if (fs_1.default.existsSync(pathFolderLog) === true) { + if (fs_1.default.existsSync(`${pathFolderLog}/access`) === true) { + if (fs_1.default.existsSync(filePath) === true) { + fs_1.default.appendFileSync(filePath, `\n${dataLog}`); + } + else { + fs_1.default.writeFileSync(filePath, dataLog); + } + } + else { + fs_1.default.mkdirSync(`${pathFolderLog}/access`, { recursive: true }); + fs_1.default.writeFileSync(filePath, dataLog); + } + } + else { + fs_1.default.mkdirSync(`${pathFolderLog}/access`, { recursive: true }); + fs_1.default.writeFileSync(filePath, dataLog); + } + next(); +} +exports.logger = logger; +function getCurrentDate() { + const currentDate = new Date(); + const year = currentDate.getUTCFullYear(); + let month = currentDate.getUTCMonth() + 1; + month = month < 10 ? "0" + month : month; + let day = currentDate.getUTCDate(); + day = day < 10 ? "0" + day : day; + const formattedDate = `${year}-${month}-${day}`; + return formattedDate; +} diff --git a/backend/dist/middlewares/time.js b/backend/dist/middlewares/time.js new file mode 100644 index 0000000..4f13afe --- /dev/null +++ b/backend/dist/middlewares/time.js @@ -0,0 +1,45 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.formatTanggalLokal = exports.dateNow = void 0; +const moment_timezone_1 = __importDefault(require("moment-timezone")); +const dateNow = (date) => { + let now; + if (date) { + now = moment_timezone_1.default + .tz(date, "Asia/Jakarta") + .format("YYYY-MM-DDTHH:mm:ss.SSS[Z]"); + } + else { + now = moment_timezone_1.default.tz("Asia/Jakarta").format("YYYY-MM-DDTHH:mm:ss.SSS[Z]"); + } + return now; +}; +exports.dateNow = dateNow; +const formatTanggalLokal = (dateStr) => { + const options = { + weekday: "long", + year: "numeric", + month: "long", + day: "numeric", + }; + const locale = "id-ID"; + const date = new Date(dateStr); + let formattedDate = date.toLocaleDateString(locale, options); + const daysMap = { + Senin: "Senin", + Selasa: "Selasa", + Rabu: "Rabu", + Kamis: "Kamis", + Jumat: "Jum'at", + Sabtu: "Sabtu", + Minggu: "Minggu", + }; + Object.keys(daysMap).forEach((day) => { + formattedDate = formattedDate.replace(day, daysMap[day]); + }); + return formattedDate; +}; +exports.formatTanggalLokal = formatTanggalLokal; diff --git a/backend/dist/utils/axiosClient.js b/backend/dist/utils/axiosClient.js new file mode 100644 index 0000000..c56a91d --- /dev/null +++ b/backend/dist/utils/axiosClient.js @@ -0,0 +1,49 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.requestAxios = void 0; +const axios_1 = __importDefault(require("axios")); +const requestAxios = (headersData, url, method, xmldata) => __awaiter(void 0, void 0, void 0, function* () { + try { + let reqOptions = {}; + if (method === "POST") { + let bodyContent; + if (headersData["Content-Type"] === "application/json") { + bodyContent = JSON.stringify(xmldata); + } + else { + bodyContent = xmldata; + } + reqOptions = { + url: url, + method: method, + headers: headersData, + data: bodyContent, + }; + } + else { + reqOptions = { + url: url, + method: method, + headers: headersData, + }; + } + let response = yield axios_1.default.request(reqOptions); + return response; + } + catch (error) { + return error.response; + } +}); +exports.requestAxios = requestAxios; diff --git a/backend/dist/utils/config.js b/backend/dist/utils/config.js new file mode 100644 index 0000000..e93a109 --- /dev/null +++ b/backend/dist/utils/config.js @@ -0,0 +1,21 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.environment = void 0; +const dotenv_1 = __importDefault(require("dotenv")); +dotenv_1.default.config(); +exports.environment = { + nodeEnv: process.env.NODE_ENV || "dev", + port: parseInt(process.env.PORT || "3000", 10), + apiBaseUrl: process.env.API_BASE_URL || "http://localhost:3000", + timezone: process.env.TZ || "Asia/Jakarta", + satusehat: { + url_auth: (process.env.NODE_ENV === "dev") ? process.env.urlAuthSatuSehatDev : process.env.urlAuthSatuSehat, + url_base: (process.env.NODE_ENV === "dev") ? process.env.urlBaseSatuSehatDev : process.env.urlBaseSatuSehat, + client_id: (process.env.NODE_ENV === "dev") ? process.env.clientIdSatuSehatDev : process.env.clientIdSatuSehat, + client_secret: (process.env.NODE_ENV === "dev") ? process.env.clientSecretSatuSehatDev : process.env.clientSecretSatuSehat, + org_id: (process.env.NODE_ENV === "dev") ? process.env.OrganizationIDDev : process.env.OrganizationID, + }, +}; diff --git a/backend/dist/views/404.html b/backend/dist/views/404.html new file mode 100644 index 0000000..eecf549 --- /dev/null +++ b/backend/dist/views/404.html @@ -0,0 +1,29 @@ + + + + + + + 404 - Not Found + + + +

404 - Not Found

+

Maaf, Endpoint yang Anda cari tidak ditemukan.

+ + diff --git a/backend/dist/views/index.html b/backend/dist/views/index.html new file mode 100644 index 0000000..34f9cc8 --- /dev/null +++ b/backend/dist/views/index.html @@ -0,0 +1,15 @@ + + + + + + + Welcome to Bridging BPJS + + +
+

Welcome to Backend Phis2nd

+

Discover something amazing

+
+ + diff --git a/backend/dist/welcome.js b/backend/dist/welcome.js new file mode 100644 index 0000000..642d48c --- /dev/null +++ b/backend/dist/welcome.js @@ -0,0 +1,37 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.router = void 0; +const express_1 = require("express"); +const path_1 = __importDefault(require("path")); +const fs_1 = __importDefault(require("fs")); +exports.router = (0, express_1.Router)(); +const htmlIndex = ` + + + + + + Welcome to Bridging BPJS + + +
+

Welcome to Backend Phis2nd

+

Discover something amazing

+
+ + +`; +exports.router.get("/", (req, res) => { + if (fs_1.default.existsSync(path_1.default.join(__dirname, "./views")) === true) { + fs_1.default.writeFileSync(path_1.default.join(__dirname, "./views/index.html"), htmlIndex); + res.sendFile(path_1.default.join(__dirname, "./views", "index.html")); + } + else { + fs_1.default.mkdirSync(path_1.default.join(__dirname, "./views")); + fs_1.default.writeFileSync(path_1.default.join(__dirname, "./views/index.html"), htmlIndex); + res.sendFile(path_1.default.join(__dirname, "./views", "index.html")); + } +}); diff --git a/backend/env.template b/backend/env.template new file mode 100644 index 0000000..5da29c7 --- /dev/null +++ b/backend/env.template @@ -0,0 +1,14 @@ +DATABASE_URL= + +PORT=4400 +secretKey= +TZ= +secretKeyLogin= + +npx prisma db pull --schema=prisma/db1/schema.prisma +npx prisma db pull --schema=prisma/db2/schema.prisma +npx prisma db pull --schema=prisma/db3/schema.prisma + +npx prisma generate --schema=prisma/db1/schema.prisma +npx prisma generate --schema=prisma/db2/schema.prisma +npx prisma generate --schema=prisma/db3/schema.prisma \ No newline at end of file diff --git a/backend/package-lock.json b/backend/package-lock.json new file mode 100644 index 0000000..21d9783 --- /dev/null +++ b/backend/package-lock.json @@ -0,0 +1,3429 @@ +{ + "name": "backend-phis2nd-ts", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "backend-phis2nd-ts", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/client": "^5.10.2", + "@types/morgan": "^1.9.9", + "@types/uuid": "^9.0.8", + "axios": "^1.6.7", + "body-parser": "^1.20.2", + "cookie-parser": "^1.4.6", + "cors": "^2.8.5", + "date-fns-tz": "^3.1.3", + "dotenv": "^16.4.5", + "express": "^4.18.2", + "express-validator": "^7.0.1", + "googleapis": "^135.0.0", + "jsonwebtoken": "^9.0.2", + "moment-timezone": "^0.5.45", + "morgan": "^1.10.0", + "nodemailer": "^6.9.13", + "path": "^0.12.7", + "uuid": "^9.0.1" + }, + "devDependencies": { + "@types/bcrypt": "^5.0.2", + "@types/cookie-parser": "^1.4.7", + "@types/cors": "^2.8.17", + "@types/dotenv": "^8.2.0", + "@types/express": "^4.17.21", + "@types/express-validator": "^3.0.0", + "@types/jsonwebtoken": "^9.0.6", + "@types/multer": "^1.4.11", + "@types/nodemailer": "^6.4.15", + "@types/swagger-jsdoc": "^6.0.4", + "@types/swagger-ui-express": "^4.1.6", + "bcrypt": "^5.1.1", + "concurrently": "^9.0.1", + "crypto": "^1.0.1", + "multer": "^1.4.5-lts.1", + "nodemon": "^3.1.0", + "prisma": "^5.10.2", + "swagger-jsdoc": "^6.2.8", + "swagger-ui-express": "^5.0.0", + "ts-node": "^10.9.2", + "typescript": "^5.3.3" + } + }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", + "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", + "dev": true, + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", + "dev": true + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", + "dev": true, + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@apidevtools/openapi-schemas": "^2.0.4", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "z-schema": "^5.0.1" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@prisma/client": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.10.2.tgz", + "integrity": "sha512-ef49hzB2yJZCvM5gFHMxSFL9KYrIP9udpT5rYo0CsHD4P9IKj473MbhU1gjKKftiwWBTIyrt9jukprzZXazyag==", + "hasInstallScript": true, + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/debug": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.10.2.tgz", + "integrity": "sha512-bkBOmH9dpEBbMKFJj8V+Zp8IZHIBjy3fSyhLhxj4FmKGb/UBSt9doyfA6k1UeUREsMJft7xgPYBbHSOYBr8XCA==", + "devOptional": true + }, + "node_modules/@prisma/engines": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.10.2.tgz", + "integrity": "sha512-HkSJvix6PW8YqEEt3zHfCYYJY69CXsNdhU+wna+4Y7EZ+AwzeupMnUThmvaDA7uqswiHkgm5/SZ6/4CStjaGmw==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/debug": "5.10.2", + "@prisma/engines-version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", + "@prisma/fetch-engine": "5.10.2", + "@prisma/get-platform": "5.10.2" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9.tgz", + "integrity": "sha512-uCy/++3Jx/O3ufM+qv2H1L4tOemTNqcP/gyEVOlZqTpBvYJUe0tWtW0y3o2Ueq04mll4aM5X3f6ugQftOSLdFQ==", + "devOptional": true + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.10.2.tgz", + "integrity": "sha512-dSmXcqSt6DpTmMaLQ9K8ZKzVAMH3qwGCmYEZr/uVnzVhxRJ1EbT/w2MMwIdBNq1zT69Rvh0h75WMIi0mrIw7Hg==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.10.2", + "@prisma/engines-version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", + "@prisma/get-platform": "5.10.2" + } + }, + "node_modules/@prisma/get-platform": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.10.2.tgz", + "integrity": "sha512-nqXP6vHiY2PIsebBAuDeWiUYg8h8mfjBckHh6Jezuwej0QJNnjDiOq30uesmg+JXxGk99nqyG3B7wpcOODzXvg==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.10.2" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/bcrypt": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.2.tgz", + "integrity": "sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookie-parser": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.7.tgz", + "integrity": "sha512-Fvuyi354Z+uayxzIGCwYTayFKocfV7TuDYZClCdIP9ckhvAu/ixDtCB6qx2TT0FKjPLf1f3P/J1rgf6lPs64mw==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", + "deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "dotenv": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/express-validator/-/express-validator-3.0.0.tgz", + "integrity": "sha512-LusnB0YhTXpBT25PXyGPQlK7leE1e41Vezq1hHEUwjfkopM1Pkv2X2Ppxqh9c+w/HZ6Udzki8AJotKNjDTGdkQ==", + "deprecated": "This is a stub types definition for express-validator (https://github.com/ctavan/express-validator). express-validator provides its own type definitions, so you don't need @types/express-validator installed!", + "dev": true, + "dependencies": { + "express-validator": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", + "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/morgan": { + "version": "1.9.9", + "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.9.tgz", + "integrity": "sha512-iRYSDKVaC6FkGSpEVVIvrRGw0DfJMiQzIn3qr2G5B3C//AWkulhXgaBd7tS9/J79GWSYMTHGs7PfI5b3Y8m+RQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/multer": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.11.tgz", + "integrity": "sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/node": { + "version": "20.11.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.21.tgz", + "integrity": "sha512-/ySDLGscFPNasfqStUuWWPfL78jompfIoVzLJPVVAHBh6rpG68+pI2Gk+fNLeI8/f1yPYL4s46EleVIc20F1Ow==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/nodemailer": { + "version": "6.4.15", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.15.tgz", + "integrity": "sha512-0EBJxawVNjPkng1zm2vopRctuWVCxk34JcIlRuXSf54habUWdz1FB7wHDqOqvDa8Mtpt0Q3LTXQkAs2LNyK5jQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.12", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.12.tgz", + "integrity": "sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/swagger-jsdoc": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/swagger-jsdoc/-/swagger-jsdoc-6.0.4.tgz", + "integrity": "sha512-W+Xw5epcOZrF/AooUM/PccNMSAFOKWZA5dasNyMujTwsBkU74njSJBpvCCJhHAJ95XRMzQrrW844Btu0uoetwQ==", + "dev": true + }, + "node_modules/@types/swagger-ui-express": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/swagger-ui-express/-/swagger-ui-express-4.1.6.tgz", + "integrity": "sha512-UVSiGYXa5IzdJJG3hrc86e8KdZWLYxyEsVoUI4iPXc7CO4VZ3AfNP8d/8+hrDRIqz+HAaSMtZSqAsF3Nq2X/Dg==", + "dev": true, + "dependencies": { + "@types/express": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "dev": true + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/bcrypt": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.11", + "node-addon-api": "^5.0.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concurrently": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.0.1.tgz", + "integrity": "sha512-wYKvCd/f54sTXJMSfV6Ln/B8UrfLBKOYa+lzc6CHay3Qek+LorVSBdMVfyewFhRbH0Rbabsk4D+3PL/VjQ5gzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dependencies": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", + "dev": true, + "license": "ISC" + }, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/date-fns-tz": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-3.1.3.tgz", + "integrity": "sha512-ZfbMu+nbzW0mEzC8VZrLiSWvUIaI3aRHeq33mTe7Y38UctKukgqPR4nTDwcwS4d64Gf8GghnVsroBuMY3eiTeA==", + "license": "MIT", + "peerDependencies": { + "date-fns": "^3.0.0" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-validator": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.0.1.tgz", + "integrity": "sha512-oB+z9QOzQIE8FnlINqyIFA8eIckahC6qc8KtqLdLJcU3/phVyuhXH3bA4qzcrhme+1RYaCSwrq+TlZ/kAKIARA==", + "dependencies": { + "lodash": "^4.17.21", + "validator": "^13.9.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gaxios": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.5.0.tgz", + "integrity": "sha512-R9QGdv8j4/dlNoQbX3hSaK/S0rkMijqjVvW3YM06CoBdbU/VdKd159j4hePpng0KuE6Lh6JJ7UdmVGJZFcAG1w==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/google-auth-library": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.9.0.tgz", + "integrity": "sha512-9l+zO07h1tDJdIHN74SpnWIlNR+OuOemXlWJlLP9pXy6vFtizgpEzMuwJa4lqY9UAdiAv5DVd5ql0Am916I+aA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-auth-library/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/google-auth-library/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/googleapis": { + "version": "135.0.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-135.0.0.tgz", + "integrity": "sha512-gIbhO1ptjgg74DEO5WIiyO1l4zLL7Lssab0XoIdZ+TYArib4SwQbKObpidRBdYAixf/fmQd00JIYYx6JtpZzew==", + "dependencies": { + "google-auth-library": "^9.0.0", + "googleapis-common": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis-common": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.1.0.tgz", + "integrity": "sha512-p3KHiWDBBWJEXk6SYauBEvxw5+UmRy7k2scxGtsNv9eHsTbpopJ3/7If4OrNnzJ9XMLg3IlyQXpVp8YPQsStiw==", + "dependencies": { + "extend": "^3.0.2", + "gaxios": "^6.0.3", + "google-auth-library": "^9.7.0", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/gtoken/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/gtoken/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dev": true, + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nodemailer": { + "version": "6.9.13", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz", + "integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/nodemon": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", + "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "dev": true, + "peer": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prisma": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.10.2.tgz", + "integrity": "sha512-hqb/JMz9/kymRE25pMWCxkdyhbnIWrq+h7S6WysJpdnCvhstbJSNP/S6mScEcqiB8Qv2F+0R3yG+osRaWqZacQ==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "5.10.2" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/swagger-jsdoc": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz", + "integrity": "sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==", + "dev": true, + "dependencies": { + "commander": "6.2.0", + "doctrine": "3.0.0", + "glob": "7.1.6", + "lodash.mergewith": "^4.6.2", + "swagger-parser": "^10.0.3", + "yaml": "2.0.0-1" + }, + "bin": { + "swagger-jsdoc": "bin/swagger-jsdoc.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==", + "dev": true, + "dependencies": { + "@apidevtools/swagger-parser": "10.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/swagger-ui-dist": { + "version": "5.11.10", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.11.10.tgz", + "integrity": "sha512-wAHf32iFqJCBkdQRBYB1pR8kJuliJbgCXcdgkU7GkDvrOfD2gVmyEwdTi9rERCur/OrufifnH5UecOzlQ07CYg==", + "dev": true + }, + "node_modules/swagger-ui-express": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.0.tgz", + "integrity": "sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==", + "dev": true, + "dependencies": { + "swagger-ui-dist": ">=5.0.0" + }, + "engines": { + "node": ">= v0.10.32" + }, + "peerDependencies": { + "express": ">=4.0.0 || >=5.0.0-beta" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "2.0.0-1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-1.tgz", + "integrity": "sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "dev": true, + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } + }, + "node_modules/z-schema/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + } + } +} diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 0000000..3a764b9 --- /dev/null +++ b/backend/package.json @@ -0,0 +1,56 @@ +{ + "name": "backend-phis2nd-ts", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "concurrently \"tsc -w\" \"nodemon dist/app.js\"", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@prisma/client": "^5.10.2", + "@types/morgan": "^1.9.9", + "@types/uuid": "^9.0.8", + "axios": "^1.6.7", + "body-parser": "^1.20.2", + "cookie-parser": "^1.4.6", + "cors": "^2.8.5", + "date-fns-tz": "^3.1.3", + "dotenv": "^16.4.5", + "express": "^4.18.2", + "express-validator": "^7.0.1", + "googleapis": "^135.0.0", + "jsonwebtoken": "^9.0.2", + "moment-timezone": "^0.5.45", + "morgan": "^1.10.0", + "nodemailer": "^6.9.13", + "path": "^0.12.7", + "uuid": "^9.0.1" + }, + "devDependencies": { + "@types/bcrypt": "^5.0.2", + "@types/cookie-parser": "^1.4.7", + "@types/cors": "^2.8.17", + "@types/dotenv": "^8.2.0", + "@types/express": "^4.17.21", + "@types/express-validator": "^3.0.0", + "@types/jsonwebtoken": "^9.0.6", + "@types/multer": "^1.4.11", + "@types/nodemailer": "^6.4.15", + "@types/swagger-jsdoc": "^6.0.4", + "@types/swagger-ui-express": "^4.1.6", + "bcrypt": "^5.1.1", + "concurrently": "^9.0.1", + "crypto": "^1.0.1", + "multer": "^1.4.5-lts.1", + "nodemon": "^3.1.0", + "prisma": "^5.10.2", + "swagger-jsdoc": "^6.2.8", + "swagger-ui-express": "^5.0.0", + "ts-node": "^10.9.2", + "typescript": "^5.3.3" + } +} diff --git a/backend/prisma/.DS_Store b/backend/prisma/.DS_Store new file mode 100644 index 0000000..9eeb7bf Binary files /dev/null and b/backend/prisma/.DS_Store differ diff --git a/backend/prisma/db1/schema.prisma b/backend/prisma/db1/schema.prisma new file mode 100644 index 0000000..1f0d531 --- /dev/null +++ b/backend/prisma/db1/schema.prisma @@ -0,0 +1,127 @@ +generator client { + provider = "prisma-client-js" + output = "../generated/client-db1" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model msasuransi { + idasuransi Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + namaasuransi String? @db.VarChar(255) + trregistrasi trregistrasi[] +} + +model mspasien { + idpasien Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + mrpasien String? @db.VarChar(50) + namapasien String? @db.VarChar(255) + tanggallahir DateTime? @db.Date + jeniskelamin String? @db.VarChar(10) + trregistrasi trregistrasi[] +} + +model mspegawai { + idpegawai Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + namapegawai String? @db.VarChar(255) + trregistrasi trregistrasi[] + trtransaksi trtransaksi[] +} + +model msruangpelayanan { + idruangpelayanan Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + namaruangpelayanan String? @db.VarChar(255) + trregistrasi trregistrasi[] +} + +model mstindakan { + idtindakan Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + namatindakan String? @db.VarChar(255) + tariftindakan Decimal? @db.Decimal(18, 2) + trtransaksi trtransaksi[] +} + +model trregistrasi { + idregistrasi Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + tanggalregistrasi DateTime? @db.Timestamp(6) + idpasien Int? + nomorkartuasuransi String? @db.VarChar(100) + idasuransi Int? + idpegawai Int? + idruangpelayanan Int? + msasuransi msasuransi? @relation(fields: [idasuransi], references: [idasuransi], onDelete: NoAction, onUpdate: NoAction) + mspasien mspasien? @relation(fields: [idpasien], references: [idpasien], onDelete: NoAction, onUpdate: NoAction) + mspegawai mspegawai? @relation(fields: [idpegawai], references: [idpegawai], onDelete: NoAction, onUpdate: NoAction) + msruangpelayanan msruangpelayanan? @relation(fields: [idruangpelayanan], references: [idruangpelayanan], onDelete: NoAction, onUpdate: NoAction) + trtransaksi trtransaksi[] +} + +model trtransaksi { + idtransaksi Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + idregistrasi Int? + idtindakan Int? + jmltindakan Int? + idpegawai Int? + mspegawai mspegawai? @relation(fields: [idpegawai], references: [idpegawai], onDelete: NoAction, onUpdate: NoAction) + trregistrasi trregistrasi? @relation(fields: [idregistrasi], references: [idregistrasi], onDelete: NoAction, onUpdate: NoAction) + mstindakan mstindakan? @relation(fields: [idtindakan], references: [idtindakan], onDelete: NoAction, onUpdate: NoAction) +} + +model msusers { + user_id Int @id(map: "users_pkey") + created_at DateTime? @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + username String @unique(map: "users_username_key") @db.VarChar(50) + password String + full_name String? @db.VarChar(100) + email String? @db.VarChar(100) + is_active Boolean? @default(true) +} diff --git a/backend/prisma/generated/client-db1/default.d.ts b/backend/prisma/generated/client-db1/default.d.ts new file mode 100644 index 0000000..34c6161 --- /dev/null +++ b/backend/prisma/generated/client-db1/default.d.ts @@ -0,0 +1 @@ +export * from './index' \ No newline at end of file diff --git a/backend/prisma/generated/client-db1/default.js b/backend/prisma/generated/client-db1/default.js new file mode 100644 index 0000000..a434000 --- /dev/null +++ b/backend/prisma/generated/client-db1/default.js @@ -0,0 +1 @@ +module.exports = { ...require('./index.js') } \ No newline at end of file diff --git a/backend/prisma/generated/client-db1/edge.d.ts b/backend/prisma/generated/client-db1/edge.d.ts new file mode 100644 index 0000000..479a9ab --- /dev/null +++ b/backend/prisma/generated/client-db1/edge.d.ts @@ -0,0 +1 @@ +export * from './default' \ No newline at end of file diff --git a/backend/prisma/generated/client-db1/edge.js b/backend/prisma/generated/client-db1/edge.js new file mode 100644 index 0000000..076ada0 --- /dev/null +++ b/backend/prisma/generated/client-db1/edge.js @@ -0,0 +1,290 @@ + +Object.defineProperty(exports, "__esModule", { value: true }); + +const { + PrismaClientKnownRequestError, + PrismaClientUnknownRequestError, + PrismaClientRustPanicError, + PrismaClientInitializationError, + PrismaClientValidationError, + NotFoundError, + getPrismaClient, + sqltag, + empty, + join, + raw, + Decimal, + Debug, + objectEnumValues, + makeStrictEnum, + Extensions, + warnOnce, + defineDmmfProperty, + Public, + detectRuntime, +} = require('./runtime/edge.js') + + +const Prisma = {} + +exports.Prisma = Prisma +exports.$Enums = {} + +/** + * Prisma Client JS version: 5.10.2 + * Query Engine version: 5a9203d0590c951969e85a7d07215503f4672eb9 + */ +Prisma.prismaVersion = { + client: "5.10.2", + engine: "5a9203d0590c951969e85a7d07215503f4672eb9" +} + +Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError; +Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError +Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError +Prisma.PrismaClientInitializationError = PrismaClientInitializationError +Prisma.PrismaClientValidationError = PrismaClientValidationError +Prisma.NotFoundError = NotFoundError +Prisma.Decimal = Decimal + +/** + * Re-export of sql-template-tag + */ +Prisma.sql = sqltag +Prisma.empty = empty +Prisma.join = join +Prisma.raw = raw +Prisma.validator = Public.validator + +/** +* Extensions +*/ +Prisma.getExtensionContext = Extensions.getExtensionContext +Prisma.defineExtension = Extensions.defineExtension + +/** + * Shorthand utilities for JSON filtering + */ +Prisma.DbNull = objectEnumValues.instances.DbNull +Prisma.JsonNull = objectEnumValues.instances.JsonNull +Prisma.AnyNull = objectEnumValues.instances.AnyNull + +Prisma.NullTypes = { + DbNull: objectEnumValues.classes.DbNull, + JsonNull: objectEnumValues.classes.JsonNull, + AnyNull: objectEnumValues.classes.AnyNull +} + + + +/** + * Enums + */ +exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ + ReadUncommitted: 'ReadUncommitted', + ReadCommitted: 'ReadCommitted', + RepeatableRead: 'RepeatableRead', + Serializable: 'Serializable' +}); + +exports.Prisma.MsasuransiScalarFieldEnum = { + idasuransi: 'idasuransi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namaasuransi: 'namaasuransi' +}; + +exports.Prisma.MspasienScalarFieldEnum = { + idpasien: 'idpasien', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + mrpasien: 'mrpasien', + namapasien: 'namapasien', + tanggallahir: 'tanggallahir', + jeniskelamin: 'jeniskelamin' +}; + +exports.Prisma.MspegawaiScalarFieldEnum = { + idpegawai: 'idpegawai', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namapegawai: 'namapegawai' +}; + +exports.Prisma.MsruangpelayananScalarFieldEnum = { + idruangpelayanan: 'idruangpelayanan', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namaruangpelayanan: 'namaruangpelayanan' +}; + +exports.Prisma.MstindakanScalarFieldEnum = { + idtindakan: 'idtindakan', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namatindakan: 'namatindakan', + tariftindakan: 'tariftindakan' +}; + +exports.Prisma.TrregistrasiScalarFieldEnum = { + idregistrasi: 'idregistrasi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + tanggalregistrasi: 'tanggalregistrasi', + idpasien: 'idpasien', + nomorkartuasuransi: 'nomorkartuasuransi', + idasuransi: 'idasuransi', + idpegawai: 'idpegawai', + idruangpelayanan: 'idruangpelayanan' +}; + +exports.Prisma.TrtransaksiScalarFieldEnum = { + idtransaksi: 'idtransaksi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + idregistrasi: 'idregistrasi', + idtindakan: 'idtindakan', + jmltindakan: 'jmltindakan', + idpegawai: 'idpegawai' +}; + +exports.Prisma.MsusersScalarFieldEnum = { + user_id: 'user_id', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + username: 'username', + password: 'password', + full_name: 'full_name', + email: 'email', + is_active: 'is_active' +}; + +exports.Prisma.SortOrder = { + asc: 'asc', + desc: 'desc' +}; + +exports.Prisma.QueryMode = { + default: 'default', + insensitive: 'insensitive' +}; + +exports.Prisma.NullsOrder = { + first: 'first', + last: 'last' +}; + + +exports.Prisma.ModelName = { + msasuransi: 'msasuransi', + mspasien: 'mspasien', + mspegawai: 'mspegawai', + msruangpelayanan: 'msruangpelayanan', + mstindakan: 'mstindakan', + trregistrasi: 'trregistrasi', + trtransaksi: 'trtransaksi', + msusers: 'msusers' +}; +/** + * Create the Client + */ +const config = { + "generator": { + "name": "client", + "provider": { + "fromEnvVar": null, + "value": "prisma-client-js" + }, + "output": { + "value": "/Users/mac/Documents/test_rsab/backend/prisma/generated/client-db1", + "fromEnvVar": null + }, + "config": { + "engineType": "library" + }, + "binaryTargets": [ + { + "fromEnvVar": null, + "value": "darwin", + "native": true + } + ], + "previewFeatures": [], + "isCustomOutput": true + }, + "relativeEnvPaths": { + "rootEnvPath": null, + "schemaEnvPath": "../../../.env" + }, + "relativePath": "../../db1", + "clientVersion": "5.10.2", + "engineVersion": "5a9203d0590c951969e85a7d07215503f4672eb9", + "datasourceNames": [ + "db" + ], + "activeProvider": "postgresql", + "postinstall": false, + "inlineDatasources": { + "db": { + "url": { + "fromEnvVar": "DATABASE_URL", + "value": null + } + } + }, + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../generated/client-db1\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel msasuransi {\n idasuransi Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n namaasuransi String? @db.VarChar(255)\n trregistrasi trregistrasi[]\n}\n\nmodel mspasien {\n idpasien Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n mrpasien String? @db.VarChar(50)\n namapasien String? @db.VarChar(255)\n tanggallahir DateTime? @db.Date\n jeniskelamin String? @db.VarChar(10)\n trregistrasi trregistrasi[]\n}\n\nmodel mspegawai {\n idpegawai Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n namapegawai String? @db.VarChar(255)\n trregistrasi trregistrasi[]\n trtransaksi trtransaksi[]\n}\n\nmodel msruangpelayanan {\n idruangpelayanan Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n namaruangpelayanan String? @db.VarChar(255)\n trregistrasi trregistrasi[]\n}\n\nmodel mstindakan {\n idtindakan Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n namatindakan String? @db.VarChar(255)\n tariftindakan Decimal? @db.Decimal(18, 2)\n trtransaksi trtransaksi[]\n}\n\nmodel trregistrasi {\n idregistrasi Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n tanggalregistrasi DateTime? @db.Timestamp(6)\n idpasien Int?\n nomorkartuasuransi String? @db.VarChar(100)\n idasuransi Int?\n idpegawai Int?\n idruangpelayanan Int?\n msasuransi msasuransi? @relation(fields: [idasuransi], references: [idasuransi], onDelete: NoAction, onUpdate: NoAction)\n mspasien mspasien? @relation(fields: [idpasien], references: [idpasien], onDelete: NoAction, onUpdate: NoAction)\n mspegawai mspegawai? @relation(fields: [idpegawai], references: [idpegawai], onDelete: NoAction, onUpdate: NoAction)\n msruangpelayanan msruangpelayanan? @relation(fields: [idruangpelayanan], references: [idruangpelayanan], onDelete: NoAction, onUpdate: NoAction)\n trtransaksi trtransaksi[]\n}\n\nmodel trtransaksi {\n idtransaksi Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n idregistrasi Int?\n idtindakan Int?\n jmltindakan Int?\n idpegawai Int?\n mspegawai mspegawai? @relation(fields: [idpegawai], references: [idpegawai], onDelete: NoAction, onUpdate: NoAction)\n trregistrasi trregistrasi? @relation(fields: [idregistrasi], references: [idregistrasi], onDelete: NoAction, onUpdate: NoAction)\n mstindakan mstindakan? @relation(fields: [idtindakan], references: [idtindakan], onDelete: NoAction, onUpdate: NoAction)\n}\n\nmodel msusers {\n user_id Int @id(map: \"users_pkey\")\n created_at DateTime? @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n username String @unique(map: \"users_username_key\") @db.VarChar(50)\n password String\n full_name String? @db.VarChar(100)\n email String? @db.VarChar(100)\n is_active Boolean? @default(true)\n}\n", + "inlineSchemaHash": "8d9a5cfa1ad73b70f9c180db017652729f6f6b67b7b899e0be1e9bb40632f680", + "copyEngine": true +} +config.dirname = '/' + +config.runtimeDataModel = JSON.parse("{\"models\":{\"msasuransi\":{\"dbName\":null,\"fields\":[{\"name\":\"idasuransi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"namaasuransi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trregistrasi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trregistrasi\",\"relationName\":\"msasuransiTotrregistrasi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"mspasien\":{\"dbName\":null,\"fields\":[{\"name\":\"idpasien\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mrpasien\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"namapasien\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tanggallahir\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jeniskelamin\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trregistrasi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trregistrasi\",\"relationName\":\"mspasienTotrregistrasi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"mspegawai\":{\"dbName\":null,\"fields\":[{\"name\":\"idpegawai\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"namapegawai\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trregistrasi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trregistrasi\",\"relationName\":\"mspegawaiTotrregistrasi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trtransaksi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trtransaksi\",\"relationName\":\"mspegawaiTotrtransaksi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"msruangpelayanan\":{\"dbName\":null,\"fields\":[{\"name\":\"idruangpelayanan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"namaruangpelayanan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trregistrasi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trregistrasi\",\"relationName\":\"msruangpelayananTotrregistrasi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"mstindakan\":{\"dbName\":null,\"fields\":[{\"name\":\"idtindakan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"namatindakan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tariftindakan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trtransaksi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trtransaksi\",\"relationName\":\"mstindakanTotrtransaksi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"trregistrasi\":{\"dbName\":null,\"fields\":[{\"name\":\"idregistrasi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tanggalregistrasi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idpasien\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nomorkartuasuransi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idasuransi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idpegawai\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idruangpelayanan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"msasuransi\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"msasuransi\",\"relationName\":\"msasuransiTotrregistrasi\",\"relationFromFields\":[\"idasuransi\"],\"relationToFields\":[\"idasuransi\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mspasien\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"mspasien\",\"relationName\":\"mspasienTotrregistrasi\",\"relationFromFields\":[\"idpasien\"],\"relationToFields\":[\"idpasien\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mspegawai\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"mspegawai\",\"relationName\":\"mspegawaiTotrregistrasi\",\"relationFromFields\":[\"idpegawai\"],\"relationToFields\":[\"idpegawai\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"msruangpelayanan\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"msruangpelayanan\",\"relationName\":\"msruangpelayananTotrregistrasi\",\"relationFromFields\":[\"idruangpelayanan\"],\"relationToFields\":[\"idruangpelayanan\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trtransaksi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trtransaksi\",\"relationName\":\"trregistrasiTotrtransaksi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"trtransaksi\":{\"dbName\":null,\"fields\":[{\"name\":\"idtransaksi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idregistrasi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idtindakan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jmltindakan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idpegawai\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mspegawai\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"mspegawai\",\"relationName\":\"mspegawaiTotrtransaksi\",\"relationFromFields\":[\"idpegawai\"],\"relationToFields\":[\"idpegawai\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trregistrasi\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trregistrasi\",\"relationName\":\"trregistrasiTotrtransaksi\",\"relationFromFields\":[\"idregistrasi\"],\"relationToFields\":[\"idregistrasi\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mstindakan\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"mstindakan\",\"relationName\":\"mstindakanTotrtransaksi\",\"relationFromFields\":[\"idtindakan\"],\"relationToFields\":[\"idtindakan\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"msusers\":{\"dbName\":null,\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"username\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"full_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"is_active\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") +defineDmmfProperty(exports.Prisma, config.runtimeDataModel) +config.engineWasm = undefined + +config.injectableEdgeEnv = () => ({ + parsed: { + DATABASE_URL: typeof globalThis !== 'undefined' && globalThis['DATABASE_URL'] || typeof process !== 'undefined' && process.env && process.env.DATABASE_URL || undefined + } +}) + +if (typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined) { + Debug.enable(typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined) +} + +const PrismaClient = getPrismaClient(config) +exports.PrismaClient = PrismaClient +Object.assign(exports, Prisma) + diff --git a/backend/prisma/generated/client-db1/index-browser.js b/backend/prisma/generated/client-db1/index-browser.js new file mode 100644 index 0000000..792568a --- /dev/null +++ b/backend/prisma/generated/client-db1/index-browser.js @@ -0,0 +1,274 @@ + +Object.defineProperty(exports, "__esModule", { value: true }); + +const { + Decimal, + objectEnumValues, + makeStrictEnum, + Public, + detectRuntime, +} = require('./runtime/index-browser.js') + + +const Prisma = {} + +exports.Prisma = Prisma +exports.$Enums = {} + +/** + * Prisma Client JS version: 5.10.2 + * Query Engine version: 5a9203d0590c951969e85a7d07215503f4672eb9 + */ +Prisma.prismaVersion = { + client: "5.10.2", + engine: "5a9203d0590c951969e85a7d07215503f4672eb9" +} + +Prisma.PrismaClientKnownRequestError = () => { + throw new Error(`PrismaClientKnownRequestError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)}; +Prisma.PrismaClientUnknownRequestError = () => { + throw new Error(`PrismaClientUnknownRequestError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.PrismaClientRustPanicError = () => { + throw new Error(`PrismaClientRustPanicError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.PrismaClientInitializationError = () => { + throw new Error(`PrismaClientInitializationError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.PrismaClientValidationError = () => { + throw new Error(`PrismaClientValidationError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.NotFoundError = () => { + throw new Error(`NotFoundError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.Decimal = Decimal + +/** + * Re-export of sql-template-tag + */ +Prisma.sql = () => { + throw new Error(`sqltag is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.empty = () => { + throw new Error(`empty is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.join = () => { + throw new Error(`join is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.raw = () => { + throw new Error(`raw is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.validator = Public.validator + +/** +* Extensions +*/ +Prisma.getExtensionContext = () => { + throw new Error(`Extensions.getExtensionContext is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.defineExtension = () => { + throw new Error(`Extensions.defineExtension is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} + +/** + * Shorthand utilities for JSON filtering + */ +Prisma.DbNull = objectEnumValues.instances.DbNull +Prisma.JsonNull = objectEnumValues.instances.JsonNull +Prisma.AnyNull = objectEnumValues.instances.AnyNull + +Prisma.NullTypes = { + DbNull: objectEnumValues.classes.DbNull, + JsonNull: objectEnumValues.classes.JsonNull, + AnyNull: objectEnumValues.classes.AnyNull +} + +/** + * Enums + */ + +exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ + ReadUncommitted: 'ReadUncommitted', + ReadCommitted: 'ReadCommitted', + RepeatableRead: 'RepeatableRead', + Serializable: 'Serializable' +}); + +exports.Prisma.MsasuransiScalarFieldEnum = { + idasuransi: 'idasuransi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namaasuransi: 'namaasuransi' +}; + +exports.Prisma.MspasienScalarFieldEnum = { + idpasien: 'idpasien', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + mrpasien: 'mrpasien', + namapasien: 'namapasien', + tanggallahir: 'tanggallahir', + jeniskelamin: 'jeniskelamin' +}; + +exports.Prisma.MspegawaiScalarFieldEnum = { + idpegawai: 'idpegawai', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namapegawai: 'namapegawai' +}; + +exports.Prisma.MsruangpelayananScalarFieldEnum = { + idruangpelayanan: 'idruangpelayanan', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namaruangpelayanan: 'namaruangpelayanan' +}; + +exports.Prisma.MstindakanScalarFieldEnum = { + idtindakan: 'idtindakan', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namatindakan: 'namatindakan', + tariftindakan: 'tariftindakan' +}; + +exports.Prisma.TrregistrasiScalarFieldEnum = { + idregistrasi: 'idregistrasi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + tanggalregistrasi: 'tanggalregistrasi', + idpasien: 'idpasien', + nomorkartuasuransi: 'nomorkartuasuransi', + idasuransi: 'idasuransi', + idpegawai: 'idpegawai', + idruangpelayanan: 'idruangpelayanan' +}; + +exports.Prisma.TrtransaksiScalarFieldEnum = { + idtransaksi: 'idtransaksi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + idregistrasi: 'idregistrasi', + idtindakan: 'idtindakan', + jmltindakan: 'jmltindakan', + idpegawai: 'idpegawai' +}; + +exports.Prisma.MsusersScalarFieldEnum = { + user_id: 'user_id', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + username: 'username', + password: 'password', + full_name: 'full_name', + email: 'email', + is_active: 'is_active' +}; + +exports.Prisma.SortOrder = { + asc: 'asc', + desc: 'desc' +}; + +exports.Prisma.QueryMode = { + default: 'default', + insensitive: 'insensitive' +}; + +exports.Prisma.NullsOrder = { + first: 'first', + last: 'last' +}; + + +exports.Prisma.ModelName = { + msasuransi: 'msasuransi', + mspasien: 'mspasien', + mspegawai: 'mspegawai', + msruangpelayanan: 'msruangpelayanan', + mstindakan: 'mstindakan', + trregistrasi: 'trregistrasi', + trtransaksi: 'trtransaksi', + msusers: 'msusers' +}; + +/** + * This is a stub Prisma Client that will error at runtime if called. + */ +class PrismaClient { + constructor() { + return new Proxy(this, { + get(target, prop) { + const runtime = detectRuntime() + const edgeRuntimeName = { + 'workerd': 'Cloudflare Workers', + 'deno': 'Deno and Deno Deploy', + 'netlify': 'Netlify Edge Functions', + 'edge-light': 'Vercel Edge Functions or Edge Middleware', + }[runtime] + + let message = 'PrismaClient is unable to run in ' + if (edgeRuntimeName !== undefined) { + message += edgeRuntimeName + '. As an alternative, try Accelerate: https://pris.ly/d/accelerate.' + } else { + message += 'this browser environment, or has been bundled for the browser (running in `' + runtime + '`).' + } + + message += ` +If this is unexpected, please open an issue: https://pris.ly/prisma-prisma-bug-report` + + throw new Error(message) + } + }) + } +} + +exports.PrismaClient = PrismaClient + +Object.assign(exports, Prisma) diff --git a/backend/prisma/generated/client-db1/index.d.ts b/backend/prisma/generated/client-db1/index.d.ts new file mode 100644 index 0000000..9ab2926 --- /dev/null +++ b/backend/prisma/generated/client-db1/index.d.ts @@ -0,0 +1,14473 @@ + +/** + * Client +**/ + +import * as runtime from './runtime/library.js'; +import $Types = runtime.Types // general types +import $Public = runtime.Types.Public +import $Utils = runtime.Types.Utils +import $Extensions = runtime.Types.Extensions +import $Result = runtime.Types.Result + +export type PrismaPromise = $Public.PrismaPromise + + +/** + * Model msasuransi + * + */ +export type msasuransi = $Result.DefaultSelection +/** + * Model mspasien + * + */ +export type mspasien = $Result.DefaultSelection +/** + * Model mspegawai + * + */ +export type mspegawai = $Result.DefaultSelection +/** + * Model msruangpelayanan + * + */ +export type msruangpelayanan = $Result.DefaultSelection +/** + * Model mstindakan + * + */ +export type mstindakan = $Result.DefaultSelection +/** + * Model trregistrasi + * + */ +export type trregistrasi = $Result.DefaultSelection +/** + * Model trtransaksi + * + */ +export type trtransaksi = $Result.DefaultSelection +/** + * Model msusers + * + */ +export type msusers = $Result.DefaultSelection + +/** + * ## Prisma Client ʲˢ + * + * Type-safe database client for TypeScript & Node.js + * @example + * ``` + * const prisma = new PrismaClient() + * // Fetch zero or more Msasuransis + * const msasuransis = await prisma.msasuransi.findMany() + * ``` + * + * + * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client). + */ +export class PrismaClient< + T extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions, + U = 'log' extends keyof T ? T['log'] extends Array ? Prisma.GetEvents : never : never, + ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs +> { + [K: symbol]: { types: Prisma.TypeMap['other'] } + + /** + * ## Prisma Client ʲˢ + * + * Type-safe database client for TypeScript & Node.js + * @example + * ``` + * const prisma = new PrismaClient() + * // Fetch zero or more Msasuransis + * const msasuransis = await prisma.msasuransi.findMany() + * ``` + * + * + * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client). + */ + + constructor(optionsArg ?: Prisma.Subset); + $on(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): void; + + /** + * Connect with the database + */ + $connect(): $Utils.JsPromise; + + /** + * Disconnect from the database + */ + $disconnect(): $Utils.JsPromise; + + /** + * Add a middleware + * @deprecated since 4.16.0. For new code, prefer client extensions instead. + * @see https://pris.ly/d/extensions + */ + $use(cb: Prisma.Middleware): void + +/** + * Executes a prepared raw query and returns the number of affected rows. + * @example + * ``` + * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};` + * ``` + * + * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access). + */ + $executeRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; + + /** + * Executes a raw query and returns the number of affected rows. + * Susceptible to SQL injections, see documentation. + * @example + * ``` + * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com') + * ``` + * + * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access). + */ + $executeRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; + + /** + * Performs a prepared raw query and returns the `SELECT` data. + * @example + * ``` + * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};` + * ``` + * + * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access). + */ + $queryRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; + + /** + * Performs a raw query and returns the `SELECT` data. + * Susceptible to SQL injections, see documentation. + * @example + * ``` + * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com') + * ``` + * + * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access). + */ + $queryRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; + + /** + * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole. + * @example + * ``` + * const [george, bob, alice] = await prisma.$transaction([ + * prisma.user.create({ data: { name: 'George' } }), + * prisma.user.create({ data: { name: 'Bob' } }), + * prisma.user.create({ data: { name: 'Alice' } }), + * ]) + * ``` + * + * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions). + */ + $transaction

[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): $Utils.JsPromise> + + $transaction(fn: (prisma: Omit) => $Utils.JsPromise, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): $Utils.JsPromise + + + $extends: $Extensions.ExtendsHook<'extends', Prisma.TypeMapCb, ExtArgs> + + /** + * `prisma.msasuransi`: Exposes CRUD operations for the **msasuransi** model. + * Example usage: + * ```ts + * // Fetch zero or more Msasuransis + * const msasuransis = await prisma.msasuransi.findMany() + * ``` + */ + get msasuransi(): Prisma.msasuransiDelegate; + + /** + * `prisma.mspasien`: Exposes CRUD operations for the **mspasien** model. + * Example usage: + * ```ts + * // Fetch zero or more Mspasiens + * const mspasiens = await prisma.mspasien.findMany() + * ``` + */ + get mspasien(): Prisma.mspasienDelegate; + + /** + * `prisma.mspegawai`: Exposes CRUD operations for the **mspegawai** model. + * Example usage: + * ```ts + * // Fetch zero or more Mspegawais + * const mspegawais = await prisma.mspegawai.findMany() + * ``` + */ + get mspegawai(): Prisma.mspegawaiDelegate; + + /** + * `prisma.msruangpelayanan`: Exposes CRUD operations for the **msruangpelayanan** model. + * Example usage: + * ```ts + * // Fetch zero or more Msruangpelayanans + * const msruangpelayanans = await prisma.msruangpelayanan.findMany() + * ``` + */ + get msruangpelayanan(): Prisma.msruangpelayananDelegate; + + /** + * `prisma.mstindakan`: Exposes CRUD operations for the **mstindakan** model. + * Example usage: + * ```ts + * // Fetch zero or more Mstindakans + * const mstindakans = await prisma.mstindakan.findMany() + * ``` + */ + get mstindakan(): Prisma.mstindakanDelegate; + + /** + * `prisma.trregistrasi`: Exposes CRUD operations for the **trregistrasi** model. + * Example usage: + * ```ts + * // Fetch zero or more Trregistrasis + * const trregistrasis = await prisma.trregistrasi.findMany() + * ``` + */ + get trregistrasi(): Prisma.trregistrasiDelegate; + + /** + * `prisma.trtransaksi`: Exposes CRUD operations for the **trtransaksi** model. + * Example usage: + * ```ts + * // Fetch zero or more Trtransaksis + * const trtransaksis = await prisma.trtransaksi.findMany() + * ``` + */ + get trtransaksi(): Prisma.trtransaksiDelegate; + + /** + * `prisma.msusers`: Exposes CRUD operations for the **msusers** model. + * Example usage: + * ```ts + * // Fetch zero or more Msusers + * const msusers = await prisma.msusers.findMany() + * ``` + */ + get msusers(): Prisma.msusersDelegate; +} + +export namespace Prisma { + export import DMMF = runtime.DMMF + + export type PrismaPromise = $Public.PrismaPromise + + /** + * Validator + */ + export import validator = runtime.Public.validator + + /** + * Prisma Errors + */ + export import PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError + export import PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError + export import PrismaClientRustPanicError = runtime.PrismaClientRustPanicError + export import PrismaClientInitializationError = runtime.PrismaClientInitializationError + export import PrismaClientValidationError = runtime.PrismaClientValidationError + export import NotFoundError = runtime.NotFoundError + + /** + * Re-export of sql-template-tag + */ + export import sql = runtime.sqltag + export import empty = runtime.empty + export import join = runtime.join + export import raw = runtime.raw + export import Sql = runtime.Sql + + /** + * Decimal.js + */ + export import Decimal = runtime.Decimal + + export type DecimalJsLike = runtime.DecimalJsLike + + /** + * Metrics + */ + export type Metrics = runtime.Metrics + export type Metric = runtime.Metric + export type MetricHistogram = runtime.MetricHistogram + export type MetricHistogramBucket = runtime.MetricHistogramBucket + + /** + * Extensions + */ + export import Extension = $Extensions.UserArgs + export import getExtensionContext = runtime.Extensions.getExtensionContext + export import Args = $Public.Args + export import Payload = $Public.Payload + export import Result = $Public.Result + export import Exact = $Public.Exact + + /** + * Prisma Client JS version: 5.10.2 + * Query Engine version: 5a9203d0590c951969e85a7d07215503f4672eb9 + */ + export type PrismaVersion = { + client: string + } + + export const prismaVersion: PrismaVersion + + /** + * Utility Types + */ + + /** + * From https://github.com/sindresorhus/type-fest/ + * Matches a JSON object. + * This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from. + */ + export type JsonObject = {[Key in string]?: JsonValue} + + /** + * From https://github.com/sindresorhus/type-fest/ + * Matches a JSON array. + */ + export interface JsonArray extends Array {} + + /** + * From https://github.com/sindresorhus/type-fest/ + * Matches any valid JSON value. + */ + export type JsonValue = string | number | boolean | JsonObject | JsonArray | null + + /** + * Matches a JSON object. + * Unlike `JsonObject`, this type allows undefined and read-only properties. + */ + export type InputJsonObject = {readonly [Key in string]?: InputJsonValue | null} + + /** + * Matches a JSON array. + * Unlike `JsonArray`, readonly arrays are assignable to this type. + */ + export interface InputJsonArray extends ReadonlyArray {} + + /** + * Matches any valid value that can be used as an input for operations like + * create and update as the value of a JSON field. Unlike `JsonValue`, this + * type allows read-only arrays and read-only object properties and disallows + * `null` at the top level. + * + * `null` cannot be used as the value of a JSON field because its meaning + * would be ambiguous. Use `Prisma.JsonNull` to store the JSON null value or + * `Prisma.DbNull` to clear the JSON value and set the field to the database + * NULL value instead. + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-by-null-values + */ + export type InputJsonValue = string | number | boolean | InputJsonObject | InputJsonArray | { toJSON(): unknown } + + /** + * Types of the values used to represent different kinds of `null` values when working with JSON fields. + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + namespace NullTypes { + /** + * Type of `Prisma.DbNull`. + * + * You cannot use other instances of this class. Please use the `Prisma.DbNull` value. + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + class DbNull { + private DbNull: never + private constructor() + } + + /** + * Type of `Prisma.JsonNull`. + * + * You cannot use other instances of this class. Please use the `Prisma.JsonNull` value. + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + class JsonNull { + private JsonNull: never + private constructor() + } + + /** + * Type of `Prisma.AnyNull`. + * + * You cannot use other instances of this class. Please use the `Prisma.AnyNull` value. + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + class AnyNull { + private AnyNull: never + private constructor() + } + } + + /** + * Helper for filtering JSON entries that have `null` on the database (empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + export const DbNull: NullTypes.DbNull + + /** + * Helper for filtering JSON entries that have JSON `null` values (not empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + export const JsonNull: NullTypes.JsonNull + + /** + * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull` + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + export const AnyNull: NullTypes.AnyNull + + type SelectAndInclude = { + select: any + include: any + } + + /** + * Get the type of the value, that the Promise holds. + */ + export type PromiseType> = T extends PromiseLike ? U : T; + + /** + * Get the return type of a function which returns a Promise. + */ + export type PromiseReturnType $Utils.JsPromise> = PromiseType> + + /** + * From T, pick a set of properties whose keys are in the union K + */ + type Prisma__Pick = { + [P in K]: T[P]; + }; + + + export type Enumerable = T | Array; + + export type RequiredKeys = { + [K in keyof T]-?: {} extends Prisma__Pick ? never : K + }[keyof T] + + export type TruthyKeys = keyof { + [K in keyof T as T[K] extends false | undefined | null ? never : K]: K + } + + export type TrueKeys = TruthyKeys>> + + /** + * Subset + * @desc From `T` pick properties that exist in `U`. Simple version of Intersection + */ + export type Subset = { + [key in keyof T]: key extends keyof U ? T[key] : never; + }; + + /** + * SelectSubset + * @desc From `T` pick properties that exist in `U`. Simple version of Intersection. + * Additionally, it validates, if both select and include are present. If the case, it errors. + */ + export type SelectSubset = { + [key in keyof T]: key extends keyof U ? T[key] : never + } & + (T extends SelectAndInclude + ? 'Please either choose `select` or `include`.' + : {}) + + /** + * Subset + Intersection + * @desc From `T` pick properties that exist in `U` and intersect `K` + */ + export type SubsetIntersection = { + [key in keyof T]: key extends keyof U ? T[key] : never + } & + K + + type Without = { [P in Exclude]?: never }; + + /** + * XOR is needed to have a real mutually exclusive union type + * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types + */ + type XOR = + T extends object ? + U extends object ? + (Without & U) | (Without & T) + : U : T + + + /** + * Is T a Record? + */ + type IsObject = T extends Array + ? False + : T extends Date + ? False + : T extends Uint8Array + ? False + : T extends BigInt + ? False + : T extends object + ? True + : False + + + /** + * If it's T[], return T + */ + export type UnEnumerate = T extends Array ? U : T + + /** + * From ts-toolbelt + */ + + type __Either = Omit & + { + // Merge all but K + [P in K]: Prisma__Pick // With K possibilities + }[K] + + type EitherStrict = Strict<__Either> + + type EitherLoose = ComputeRaw<__Either> + + type _Either< + O extends object, + K extends Key, + strict extends Boolean + > = { + 1: EitherStrict + 0: EitherLoose + }[strict] + + type Either< + O extends object, + K extends Key, + strict extends Boolean = 1 + > = O extends unknown ? _Either : never + + export type Union = any + + type PatchUndefined = { + [K in keyof O]: O[K] extends undefined ? At : O[K] + } & {} + + /** Helper Types for "Merge" **/ + export type IntersectOf = ( + U extends unknown ? (k: U) => void : never + ) extends (k: infer I) => void + ? I + : never + + export type Overwrite = { + [K in keyof O]: K extends keyof O1 ? O1[K] : O[K]; + } & {}; + + type _Merge = IntersectOf; + }>>; + + type Key = string | number | symbol; + type AtBasic = K extends keyof O ? O[K] : never; + type AtStrict = O[K & keyof O]; + type AtLoose = O extends unknown ? AtStrict : never; + export type At = { + 1: AtStrict; + 0: AtLoose; + }[strict]; + + export type ComputeRaw = A extends Function ? A : { + [K in keyof A]: A[K]; + } & {}; + + export type OptionalFlat = { + [K in keyof O]?: O[K]; + } & {}; + + type _Record = { + [P in K]: T; + }; + + // cause typescript not to expand types and preserve names + type NoExpand = T extends unknown ? T : never; + + // this type assumes the passed object is entirely optional + type AtLeast = NoExpand< + O extends unknown + ? | (K extends keyof O ? { [P in K]: O[P] } & O : O) + | {[P in keyof O as P extends K ? K : never]-?: O[P]} & O + : never>; + + type _Strict = U extends unknown ? U & OptionalFlat<_Record, keyof U>, never>> : never; + + export type Strict = ComputeRaw<_Strict>; + /** End Helper Types for "Merge" **/ + + export type Merge = ComputeRaw<_Merge>>; + + /** + A [[Boolean]] + */ + export type Boolean = True | False + + // /** + // 1 + // */ + export type True = 1 + + /** + 0 + */ + export type False = 0 + + export type Not = { + 0: 1 + 1: 0 + }[B] + + export type Extends = [A1] extends [never] + ? 0 // anything `never` is false + : A1 extends A2 + ? 1 + : 0 + + export type Has = Not< + Extends, U1> + > + + export type Or = { + 0: { + 0: 0 + 1: 1 + } + 1: { + 0: 1 + 1: 1 + } + }[B1][B2] + + export type Keys = U extends unknown ? keyof U : never + + type Cast = A extends B ? A : B; + + export const type: unique symbol; + + + + /** + * Used by group by + */ + + export type GetScalarType = O extends object ? { + [P in keyof T]: P extends keyof O + ? O[P] + : never + } : never + + type FieldPaths< + T, + U = Omit + > = IsObject extends True ? U : T + + type GetHavingFields = { + [K in keyof T]: Or< + Or, Extends<'AND', K>>, + Extends<'NOT', K> + > extends True + ? // infer is only needed to not hit TS limit + // based on the brilliant idea of Pierre-Antoine Mills + // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437 + T[K] extends infer TK + ? GetHavingFields extends object ? Merge> : never> + : never + : {} extends FieldPaths + ? never + : K + }[keyof T] + + /** + * Convert tuple to union + */ + type _TupleToUnion = T extends (infer E)[] ? E : never + type TupleToUnion = _TupleToUnion + type MaybeTupleToUnion = T extends any[] ? TupleToUnion : T + + /** + * Like `Pick`, but additionally can also accept an array of keys + */ + type PickEnumerable | keyof T> = Prisma__Pick> + + /** + * Exclude all keys with underscores + */ + type ExcludeUnderscoreKeys = T extends `_${string}` ? never : T + + + export type FieldRef = runtime.FieldRef + + type FieldRefInputType = Model extends never ? never : FieldRef + + + export const ModelName: { + msasuransi: 'msasuransi', + mspasien: 'mspasien', + mspegawai: 'mspegawai', + msruangpelayanan: 'msruangpelayanan', + mstindakan: 'mstindakan', + trregistrasi: 'trregistrasi', + trtransaksi: 'trtransaksi', + msusers: 'msusers' + }; + + export type ModelName = (typeof ModelName)[keyof typeof ModelName] + + + export type Datasources = { + db?: Datasource + } + + + interface TypeMapCb extends $Utils.Fn<{extArgs: $Extensions.InternalArgs}, $Utils.Record> { + returns: Prisma.TypeMap + } + + export type TypeMap = { + meta: { + modelProps: 'msasuransi' | 'mspasien' | 'mspegawai' | 'msruangpelayanan' | 'mstindakan' | 'trregistrasi' | 'trtransaksi' | 'msusers' + txIsolationLevel: Prisma.TransactionIsolationLevel + }, + model: { + msasuransi: { + payload: Prisma.$msasuransiPayload + fields: Prisma.msasuransiFieldRefs + operations: { + findUnique: { + args: Prisma.msasuransiFindUniqueArgs, + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.msasuransiFindUniqueOrThrowArgs, + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.msasuransiFindFirstArgs, + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.msasuransiFindFirstOrThrowArgs, + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.msasuransiFindManyArgs, + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.msasuransiCreateArgs, + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.msasuransiCreateManyArgs, + result: Prisma.BatchPayload + } + delete: { + args: Prisma.msasuransiDeleteArgs, + result: $Utils.PayloadToResult + } + update: { + args: Prisma.msasuransiUpdateArgs, + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.msasuransiDeleteManyArgs, + result: Prisma.BatchPayload + } + updateMany: { + args: Prisma.msasuransiUpdateManyArgs, + result: Prisma.BatchPayload + } + upsert: { + args: Prisma.msasuransiUpsertArgs, + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.MsasuransiAggregateArgs, + result: $Utils.Optional + } + groupBy: { + args: Prisma.msasuransiGroupByArgs, + result: $Utils.Optional[] + } + count: { + args: Prisma.msasuransiCountArgs, + result: $Utils.Optional | number + } + } + } + mspasien: { + payload: Prisma.$mspasienPayload + fields: Prisma.mspasienFieldRefs + operations: { + findUnique: { + args: Prisma.mspasienFindUniqueArgs, + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.mspasienFindUniqueOrThrowArgs, + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.mspasienFindFirstArgs, + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.mspasienFindFirstOrThrowArgs, + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.mspasienFindManyArgs, + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.mspasienCreateArgs, + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.mspasienCreateManyArgs, + result: Prisma.BatchPayload + } + delete: { + args: Prisma.mspasienDeleteArgs, + result: $Utils.PayloadToResult + } + update: { + args: Prisma.mspasienUpdateArgs, + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.mspasienDeleteManyArgs, + result: Prisma.BatchPayload + } + updateMany: { + args: Prisma.mspasienUpdateManyArgs, + result: Prisma.BatchPayload + } + upsert: { + args: Prisma.mspasienUpsertArgs, + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.MspasienAggregateArgs, + result: $Utils.Optional + } + groupBy: { + args: Prisma.mspasienGroupByArgs, + result: $Utils.Optional[] + } + count: { + args: Prisma.mspasienCountArgs, + result: $Utils.Optional | number + } + } + } + mspegawai: { + payload: Prisma.$mspegawaiPayload + fields: Prisma.mspegawaiFieldRefs + operations: { + findUnique: { + args: Prisma.mspegawaiFindUniqueArgs, + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.mspegawaiFindUniqueOrThrowArgs, + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.mspegawaiFindFirstArgs, + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.mspegawaiFindFirstOrThrowArgs, + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.mspegawaiFindManyArgs, + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.mspegawaiCreateArgs, + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.mspegawaiCreateManyArgs, + result: Prisma.BatchPayload + } + delete: { + args: Prisma.mspegawaiDeleteArgs, + result: $Utils.PayloadToResult + } + update: { + args: Prisma.mspegawaiUpdateArgs, + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.mspegawaiDeleteManyArgs, + result: Prisma.BatchPayload + } + updateMany: { + args: Prisma.mspegawaiUpdateManyArgs, + result: Prisma.BatchPayload + } + upsert: { + args: Prisma.mspegawaiUpsertArgs, + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.MspegawaiAggregateArgs, + result: $Utils.Optional + } + groupBy: { + args: Prisma.mspegawaiGroupByArgs, + result: $Utils.Optional[] + } + count: { + args: Prisma.mspegawaiCountArgs, + result: $Utils.Optional | number + } + } + } + msruangpelayanan: { + payload: Prisma.$msruangpelayananPayload + fields: Prisma.msruangpelayananFieldRefs + operations: { + findUnique: { + args: Prisma.msruangpelayananFindUniqueArgs, + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.msruangpelayananFindUniqueOrThrowArgs, + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.msruangpelayananFindFirstArgs, + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.msruangpelayananFindFirstOrThrowArgs, + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.msruangpelayananFindManyArgs, + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.msruangpelayananCreateArgs, + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.msruangpelayananCreateManyArgs, + result: Prisma.BatchPayload + } + delete: { + args: Prisma.msruangpelayananDeleteArgs, + result: $Utils.PayloadToResult + } + update: { + args: Prisma.msruangpelayananUpdateArgs, + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.msruangpelayananDeleteManyArgs, + result: Prisma.BatchPayload + } + updateMany: { + args: Prisma.msruangpelayananUpdateManyArgs, + result: Prisma.BatchPayload + } + upsert: { + args: Prisma.msruangpelayananUpsertArgs, + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.MsruangpelayananAggregateArgs, + result: $Utils.Optional + } + groupBy: { + args: Prisma.msruangpelayananGroupByArgs, + result: $Utils.Optional[] + } + count: { + args: Prisma.msruangpelayananCountArgs, + result: $Utils.Optional | number + } + } + } + mstindakan: { + payload: Prisma.$mstindakanPayload + fields: Prisma.mstindakanFieldRefs + operations: { + findUnique: { + args: Prisma.mstindakanFindUniqueArgs, + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.mstindakanFindUniqueOrThrowArgs, + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.mstindakanFindFirstArgs, + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.mstindakanFindFirstOrThrowArgs, + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.mstindakanFindManyArgs, + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.mstindakanCreateArgs, + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.mstindakanCreateManyArgs, + result: Prisma.BatchPayload + } + delete: { + args: Prisma.mstindakanDeleteArgs, + result: $Utils.PayloadToResult + } + update: { + args: Prisma.mstindakanUpdateArgs, + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.mstindakanDeleteManyArgs, + result: Prisma.BatchPayload + } + updateMany: { + args: Prisma.mstindakanUpdateManyArgs, + result: Prisma.BatchPayload + } + upsert: { + args: Prisma.mstindakanUpsertArgs, + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.MstindakanAggregateArgs, + result: $Utils.Optional + } + groupBy: { + args: Prisma.mstindakanGroupByArgs, + result: $Utils.Optional[] + } + count: { + args: Prisma.mstindakanCountArgs, + result: $Utils.Optional | number + } + } + } + trregistrasi: { + payload: Prisma.$trregistrasiPayload + fields: Prisma.trregistrasiFieldRefs + operations: { + findUnique: { + args: Prisma.trregistrasiFindUniqueArgs, + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.trregistrasiFindUniqueOrThrowArgs, + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.trregistrasiFindFirstArgs, + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.trregistrasiFindFirstOrThrowArgs, + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.trregistrasiFindManyArgs, + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.trregistrasiCreateArgs, + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.trregistrasiCreateManyArgs, + result: Prisma.BatchPayload + } + delete: { + args: Prisma.trregistrasiDeleteArgs, + result: $Utils.PayloadToResult + } + update: { + args: Prisma.trregistrasiUpdateArgs, + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.trregistrasiDeleteManyArgs, + result: Prisma.BatchPayload + } + updateMany: { + args: Prisma.trregistrasiUpdateManyArgs, + result: Prisma.BatchPayload + } + upsert: { + args: Prisma.trregistrasiUpsertArgs, + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.TrregistrasiAggregateArgs, + result: $Utils.Optional + } + groupBy: { + args: Prisma.trregistrasiGroupByArgs, + result: $Utils.Optional[] + } + count: { + args: Prisma.trregistrasiCountArgs, + result: $Utils.Optional | number + } + } + } + trtransaksi: { + payload: Prisma.$trtransaksiPayload + fields: Prisma.trtransaksiFieldRefs + operations: { + findUnique: { + args: Prisma.trtransaksiFindUniqueArgs, + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.trtransaksiFindUniqueOrThrowArgs, + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.trtransaksiFindFirstArgs, + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.trtransaksiFindFirstOrThrowArgs, + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.trtransaksiFindManyArgs, + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.trtransaksiCreateArgs, + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.trtransaksiCreateManyArgs, + result: Prisma.BatchPayload + } + delete: { + args: Prisma.trtransaksiDeleteArgs, + result: $Utils.PayloadToResult + } + update: { + args: Prisma.trtransaksiUpdateArgs, + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.trtransaksiDeleteManyArgs, + result: Prisma.BatchPayload + } + updateMany: { + args: Prisma.trtransaksiUpdateManyArgs, + result: Prisma.BatchPayload + } + upsert: { + args: Prisma.trtransaksiUpsertArgs, + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.TrtransaksiAggregateArgs, + result: $Utils.Optional + } + groupBy: { + args: Prisma.trtransaksiGroupByArgs, + result: $Utils.Optional[] + } + count: { + args: Prisma.trtransaksiCountArgs, + result: $Utils.Optional | number + } + } + } + msusers: { + payload: Prisma.$msusersPayload + fields: Prisma.msusersFieldRefs + operations: { + findUnique: { + args: Prisma.msusersFindUniqueArgs, + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.msusersFindUniqueOrThrowArgs, + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.msusersFindFirstArgs, + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.msusersFindFirstOrThrowArgs, + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.msusersFindManyArgs, + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.msusersCreateArgs, + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.msusersCreateManyArgs, + result: Prisma.BatchPayload + } + delete: { + args: Prisma.msusersDeleteArgs, + result: $Utils.PayloadToResult + } + update: { + args: Prisma.msusersUpdateArgs, + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.msusersDeleteManyArgs, + result: Prisma.BatchPayload + } + updateMany: { + args: Prisma.msusersUpdateManyArgs, + result: Prisma.BatchPayload + } + upsert: { + args: Prisma.msusersUpsertArgs, + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.MsusersAggregateArgs, + result: $Utils.Optional + } + groupBy: { + args: Prisma.msusersGroupByArgs, + result: $Utils.Optional[] + } + count: { + args: Prisma.msusersCountArgs, + result: $Utils.Optional | number + } + } + } + } + } & { + other: { + payload: any + operations: { + $executeRawUnsafe: { + args: [query: string, ...values: any[]], + result: any + } + $executeRaw: { + args: [query: TemplateStringsArray | Prisma.Sql, ...values: any[]], + result: any + } + $queryRawUnsafe: { + args: [query: string, ...values: any[]], + result: any + } + $queryRaw: { + args: [query: TemplateStringsArray | Prisma.Sql, ...values: any[]], + result: any + } + } + } + } + export const defineExtension: $Extensions.ExtendsHook<'define', Prisma.TypeMapCb, $Extensions.DefaultArgs> + export type DefaultPrismaClient = PrismaClient + export type ErrorFormat = 'pretty' | 'colorless' | 'minimal' + export interface PrismaClientOptions { + /** + * Overwrites the datasource url from your schema.prisma file + */ + datasources?: Datasources + /** + * Overwrites the datasource url from your schema.prisma file + */ + datasourceUrl?: string + /** + * @default "colorless" + */ + errorFormat?: ErrorFormat + /** + * @example + * ``` + * // Defaults to stdout + * log: ['query', 'info', 'warn', 'error'] + * + * // Emit as events + * log: [ + * { emit: 'stdout', level: 'query' }, + * { emit: 'stdout', level: 'info' }, + * { emit: 'stdout', level: 'warn' } + * { emit: 'stdout', level: 'error' } + * ] + * ``` + * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/logging#the-log-option). + */ + log?: (LogLevel | LogDefinition)[] + /** + * The default values for transactionOptions + * maxWait ?= 2000 + * timeout ?= 5000 + */ + transactionOptions?: { + maxWait?: number + timeout?: number + isolationLevel?: Prisma.TransactionIsolationLevel + } + } + + /* Types for Logging */ + export type LogLevel = 'info' | 'query' | 'warn' | 'error' + export type LogDefinition = { + level: LogLevel + emit: 'stdout' | 'event' + } + + export type GetLogType = T extends LogDefinition ? T['emit'] extends 'event' ? T['level'] : never : never + export type GetEvents = T extends Array ? + GetLogType | GetLogType | GetLogType | GetLogType + : never + + export type QueryEvent = { + timestamp: Date + query: string + params: string + duration: number + target: string + } + + export type LogEvent = { + timestamp: Date + message: string + target: string + } + /* End Types for Logging */ + + + export type PrismaAction = + | 'findUnique' + | 'findUniqueOrThrow' + | 'findMany' + | 'findFirst' + | 'findFirstOrThrow' + | 'create' + | 'createMany' + | 'update' + | 'updateMany' + | 'upsert' + | 'delete' + | 'deleteMany' + | 'executeRaw' + | 'queryRaw' + | 'aggregate' + | 'count' + | 'runCommandRaw' + | 'findRaw' + | 'groupBy' + + /** + * These options are being passed into the middleware as "params" + */ + export type MiddlewareParams = { + model?: ModelName + action: PrismaAction + args: any + dataPath: string[] + runInTransaction: boolean + } + + /** + * The `T` type makes sure, that the `return proceed` is not forgotten in the middleware implementation + */ + export type Middleware = ( + params: MiddlewareParams, + next: (params: MiddlewareParams) => $Utils.JsPromise, + ) => $Utils.JsPromise + + // tested in getLogLevel.test.ts + export function getLogLevel(log: Array): LogLevel | undefined; + + /** + * `PrismaClient` proxy available in interactive transactions. + */ + export type TransactionClient = Omit + + export type Datasource = { + url?: string + } + + /** + * Count Types + */ + + + /** + * Count Type MsasuransiCountOutputType + */ + + export type MsasuransiCountOutputType = { + trregistrasi: number + } + + export type MsasuransiCountOutputTypeSelect = { + trregistrasi?: boolean | MsasuransiCountOutputTypeCountTrregistrasiArgs + } + + // Custom InputTypes + + /** + * MsasuransiCountOutputType without action + */ + export type MsasuransiCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the MsasuransiCountOutputType + */ + select?: MsasuransiCountOutputTypeSelect | null + } + + + /** + * MsasuransiCountOutputType without action + */ + export type MsasuransiCountOutputTypeCountTrregistrasiArgs = { + where?: trregistrasiWhereInput + } + + + + /** + * Count Type MspasienCountOutputType + */ + + export type MspasienCountOutputType = { + trregistrasi: number + } + + export type MspasienCountOutputTypeSelect = { + trregistrasi?: boolean | MspasienCountOutputTypeCountTrregistrasiArgs + } + + // Custom InputTypes + + /** + * MspasienCountOutputType without action + */ + export type MspasienCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the MspasienCountOutputType + */ + select?: MspasienCountOutputTypeSelect | null + } + + + /** + * MspasienCountOutputType without action + */ + export type MspasienCountOutputTypeCountTrregistrasiArgs = { + where?: trregistrasiWhereInput + } + + + + /** + * Count Type MspegawaiCountOutputType + */ + + export type MspegawaiCountOutputType = { + trregistrasi: number + trtransaksi: number + } + + export type MspegawaiCountOutputTypeSelect = { + trregistrasi?: boolean | MspegawaiCountOutputTypeCountTrregistrasiArgs + trtransaksi?: boolean | MspegawaiCountOutputTypeCountTrtransaksiArgs + } + + // Custom InputTypes + + /** + * MspegawaiCountOutputType without action + */ + export type MspegawaiCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the MspegawaiCountOutputType + */ + select?: MspegawaiCountOutputTypeSelect | null + } + + + /** + * MspegawaiCountOutputType without action + */ + export type MspegawaiCountOutputTypeCountTrregistrasiArgs = { + where?: trregistrasiWhereInput + } + + + /** + * MspegawaiCountOutputType without action + */ + export type MspegawaiCountOutputTypeCountTrtransaksiArgs = { + where?: trtransaksiWhereInput + } + + + + /** + * Count Type MsruangpelayananCountOutputType + */ + + export type MsruangpelayananCountOutputType = { + trregistrasi: number + } + + export type MsruangpelayananCountOutputTypeSelect = { + trregistrasi?: boolean | MsruangpelayananCountOutputTypeCountTrregistrasiArgs + } + + // Custom InputTypes + + /** + * MsruangpelayananCountOutputType without action + */ + export type MsruangpelayananCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the MsruangpelayananCountOutputType + */ + select?: MsruangpelayananCountOutputTypeSelect | null + } + + + /** + * MsruangpelayananCountOutputType without action + */ + export type MsruangpelayananCountOutputTypeCountTrregistrasiArgs = { + where?: trregistrasiWhereInput + } + + + + /** + * Count Type MstindakanCountOutputType + */ + + export type MstindakanCountOutputType = { + trtransaksi: number + } + + export type MstindakanCountOutputTypeSelect = { + trtransaksi?: boolean | MstindakanCountOutputTypeCountTrtransaksiArgs + } + + // Custom InputTypes + + /** + * MstindakanCountOutputType without action + */ + export type MstindakanCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the MstindakanCountOutputType + */ + select?: MstindakanCountOutputTypeSelect | null + } + + + /** + * MstindakanCountOutputType without action + */ + export type MstindakanCountOutputTypeCountTrtransaksiArgs = { + where?: trtransaksiWhereInput + } + + + + /** + * Count Type TrregistrasiCountOutputType + */ + + export type TrregistrasiCountOutputType = { + trtransaksi: number + } + + export type TrregistrasiCountOutputTypeSelect = { + trtransaksi?: boolean | TrregistrasiCountOutputTypeCountTrtransaksiArgs + } + + // Custom InputTypes + + /** + * TrregistrasiCountOutputType without action + */ + export type TrregistrasiCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the TrregistrasiCountOutputType + */ + select?: TrregistrasiCountOutputTypeSelect | null + } + + + /** + * TrregistrasiCountOutputType without action + */ + export type TrregistrasiCountOutputTypeCountTrtransaksiArgs = { + where?: trtransaksiWhereInput + } + + + + /** + * Models + */ + + /** + * Model msasuransi + */ + + export type AggregateMsasuransi = { + _count: MsasuransiCountAggregateOutputType | null + _avg: MsasuransiAvgAggregateOutputType | null + _sum: MsasuransiSumAggregateOutputType | null + _min: MsasuransiMinAggregateOutputType | null + _max: MsasuransiMaxAggregateOutputType | null + } + + export type MsasuransiAvgAggregateOutputType = { + idasuransi: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + } + + export type MsasuransiSumAggregateOutputType = { + idasuransi: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + } + + export type MsasuransiMinAggregateOutputType = { + idasuransi: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namaasuransi: string | null + } + + export type MsasuransiMaxAggregateOutputType = { + idasuransi: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namaasuransi: string | null + } + + export type MsasuransiCountAggregateOutputType = { + idasuransi: number + created_at: number + created_by: number + modified_at: number + modified_by: number + deleted_at: number + deleted_by: number + namaasuransi: number + _all: number + } + + + export type MsasuransiAvgAggregateInputType = { + idasuransi?: true + created_by?: true + modified_by?: true + deleted_by?: true + } + + export type MsasuransiSumAggregateInputType = { + idasuransi?: true + created_by?: true + modified_by?: true + deleted_by?: true + } + + export type MsasuransiMinAggregateInputType = { + idasuransi?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namaasuransi?: true + } + + export type MsasuransiMaxAggregateInputType = { + idasuransi?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namaasuransi?: true + } + + export type MsasuransiCountAggregateInputType = { + idasuransi?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namaasuransi?: true + _all?: true + } + + export type MsasuransiAggregateArgs = { + /** + * Filter which msasuransi to aggregate. + */ + where?: msasuransiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msasuransis to fetch. + */ + orderBy?: msasuransiOrderByWithRelationInput | msasuransiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: msasuransiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msasuransis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msasuransis. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned msasuransis + **/ + _count?: true | MsasuransiCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: MsasuransiAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: MsasuransiSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: MsasuransiMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: MsasuransiMaxAggregateInputType + } + + export type GetMsasuransiAggregateType = { + [P in keyof T & keyof AggregateMsasuransi]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type msasuransiGroupByArgs = { + where?: msasuransiWhereInput + orderBy?: msasuransiOrderByWithAggregationInput | msasuransiOrderByWithAggregationInput[] + by: MsasuransiScalarFieldEnum[] | MsasuransiScalarFieldEnum + having?: msasuransiScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: MsasuransiCountAggregateInputType | true + _avg?: MsasuransiAvgAggregateInputType + _sum?: MsasuransiSumAggregateInputType + _min?: MsasuransiMinAggregateInputType + _max?: MsasuransiMaxAggregateInputType + } + + export type MsasuransiGroupByOutputType = { + idasuransi: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namaasuransi: string | null + _count: MsasuransiCountAggregateOutputType | null + _avg: MsasuransiAvgAggregateOutputType | null + _sum: MsasuransiSumAggregateOutputType | null + _min: MsasuransiMinAggregateOutputType | null + _max: MsasuransiMaxAggregateOutputType | null + } + + type GetMsasuransiGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof MsasuransiGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type msasuransiSelect = $Extensions.GetSelect<{ + idasuransi?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + namaasuransi?: boolean + trregistrasi?: boolean | msasuransi$trregistrasiArgs + _count?: boolean | MsasuransiCountOutputTypeDefaultArgs + }, ExtArgs["result"]["msasuransi"]> + + export type msasuransiSelectScalar = { + idasuransi?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + namaasuransi?: boolean + } + + export type msasuransiInclude = { + trregistrasi?: boolean | msasuransi$trregistrasiArgs + _count?: boolean | MsasuransiCountOutputTypeDefaultArgs + } + + + export type $msasuransiPayload = { + name: "msasuransi" + objects: { + trregistrasi: Prisma.$trregistrasiPayload[] + } + scalars: $Extensions.GetPayloadResult<{ + idasuransi: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namaasuransi: string | null + }, ExtArgs["result"]["msasuransi"]> + composites: {} + } + + + type msasuransiGetPayload = $Result.GetResult + + type msasuransiCountArgs = + Omit & { + select?: MsasuransiCountAggregateInputType | true + } + + export interface msasuransiDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['msasuransi'], meta: { name: 'msasuransi' } } + /** + * Find zero or one Msasuransi that matches the filter. + * @param {msasuransiFindUniqueArgs} args - Arguments to find a Msasuransi + * @example + * // Get one Msasuransi + * const msasuransi = await prisma.msasuransi.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUnique>( + args: SelectSubset> + ): Prisma__msasuransiClient<$Result.GetResult, T, 'findUnique'> | null, null, ExtArgs> + + /** + * Find one Msasuransi that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {msasuransiFindUniqueOrThrowArgs} args - Arguments to find a Msasuransi + * @example + * // Get one Msasuransi + * const msasuransi = await prisma.msasuransi.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUniqueOrThrow>( + args?: SelectSubset> + ): Prisma__msasuransiClient<$Result.GetResult, T, 'findUniqueOrThrow'>, never, ExtArgs> + + /** + * Find the first Msasuransi that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msasuransiFindFirstArgs} args - Arguments to find a Msasuransi + * @example + * // Get one Msasuransi + * const msasuransi = await prisma.msasuransi.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirst>( + args?: SelectSubset> + ): Prisma__msasuransiClient<$Result.GetResult, T, 'findFirst'> | null, null, ExtArgs> + + /** + * Find the first Msasuransi that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msasuransiFindFirstOrThrowArgs} args - Arguments to find a Msasuransi + * @example + * // Get one Msasuransi + * const msasuransi = await prisma.msasuransi.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirstOrThrow>( + args?: SelectSubset> + ): Prisma__msasuransiClient<$Result.GetResult, T, 'findFirstOrThrow'>, never, ExtArgs> + + /** + * Find zero or more Msasuransis that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msasuransiFindManyArgs=} args - Arguments to filter and select certain fields only. + * @example + * // Get all Msasuransis + * const msasuransis = await prisma.msasuransi.findMany() + * + * // Get first 10 Msasuransis + * const msasuransis = await prisma.msasuransi.findMany({ take: 10 }) + * + * // Only select the `idasuransi` + * const msasuransiWithIdasuransiOnly = await prisma.msasuransi.findMany({ select: { idasuransi: true } }) + * + **/ + findMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'>> + + /** + * Create a Msasuransi. + * @param {msasuransiCreateArgs} args - Arguments to create a Msasuransi. + * @example + * // Create one Msasuransi + * const Msasuransi = await prisma.msasuransi.create({ + * data: { + * // ... data to create a Msasuransi + * } + * }) + * + **/ + create>( + args: SelectSubset> + ): Prisma__msasuransiClient<$Result.GetResult, T, 'create'>, never, ExtArgs> + + /** + * Create many Msasuransis. + * @param {msasuransiCreateManyArgs} args - Arguments to create many Msasuransis. + * @example + * // Create many Msasuransis + * const msasuransi = await prisma.msasuransi.createMany({ + * data: { + * // ... provide data here + * } + * }) + * + **/ + createMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Delete a Msasuransi. + * @param {msasuransiDeleteArgs} args - Arguments to delete one Msasuransi. + * @example + * // Delete one Msasuransi + * const Msasuransi = await prisma.msasuransi.delete({ + * where: { + * // ... filter to delete one Msasuransi + * } + * }) + * + **/ + delete>( + args: SelectSubset> + ): Prisma__msasuransiClient<$Result.GetResult, T, 'delete'>, never, ExtArgs> + + /** + * Update one Msasuransi. + * @param {msasuransiUpdateArgs} args - Arguments to update one Msasuransi. + * @example + * // Update one Msasuransi + * const msasuransi = await prisma.msasuransi.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + update>( + args: SelectSubset> + ): Prisma__msasuransiClient<$Result.GetResult, T, 'update'>, never, ExtArgs> + + /** + * Delete zero or more Msasuransis. + * @param {msasuransiDeleteManyArgs} args - Arguments to filter Msasuransis to delete. + * @example + * // Delete a few Msasuransis + * const { count } = await prisma.msasuransi.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + **/ + deleteMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Update zero or more Msasuransis. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msasuransiUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Msasuransis + * const msasuransi = await prisma.msasuransi.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + updateMany>( + args: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Create or update one Msasuransi. + * @param {msasuransiUpsertArgs} args - Arguments to update or create a Msasuransi. + * @example + * // Update or create a Msasuransi + * const msasuransi = await prisma.msasuransi.upsert({ + * create: { + * // ... data to create a Msasuransi + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Msasuransi we want to update + * } + * }) + **/ + upsert>( + args: SelectSubset> + ): Prisma__msasuransiClient<$Result.GetResult, T, 'upsert'>, never, ExtArgs> + + /** + * Count the number of Msasuransis. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msasuransiCountArgs} args - Arguments to filter Msasuransis to count. + * @example + * // Count the number of Msasuransis + * const count = await prisma.msasuransi.count({ + * where: { + * // ... the filter for the Msasuransis we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Msasuransi. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {MsasuransiAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Msasuransi. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msasuransiGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends msasuransiGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: msasuransiGroupByArgs['orderBy'] } + : { orderBy?: msasuransiGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetMsasuransiGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the msasuransi model + */ + readonly fields: msasuransiFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for msasuransi. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__msasuransiClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: 'PrismaPromise'; + + trregistrasi = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'> | Null>; + + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise; + } + + + + /** + * Fields of the msasuransi model + */ + interface msasuransiFieldRefs { + readonly idasuransi: FieldRef<"msasuransi", 'Int'> + readonly created_at: FieldRef<"msasuransi", 'DateTime'> + readonly created_by: FieldRef<"msasuransi", 'Int'> + readonly modified_at: FieldRef<"msasuransi", 'DateTime'> + readonly modified_by: FieldRef<"msasuransi", 'Int'> + readonly deleted_at: FieldRef<"msasuransi", 'DateTime'> + readonly deleted_by: FieldRef<"msasuransi", 'Int'> + readonly namaasuransi: FieldRef<"msasuransi", 'String'> + } + + + // Custom InputTypes + + /** + * msasuransi findUnique + */ + export type msasuransiFindUniqueArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + /** + * Filter, which msasuransi to fetch. + */ + where: msasuransiWhereUniqueInput + } + + + /** + * msasuransi findUniqueOrThrow + */ + export type msasuransiFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + /** + * Filter, which msasuransi to fetch. + */ + where: msasuransiWhereUniqueInput + } + + + /** + * msasuransi findFirst + */ + export type msasuransiFindFirstArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + /** + * Filter, which msasuransi to fetch. + */ + where?: msasuransiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msasuransis to fetch. + */ + orderBy?: msasuransiOrderByWithRelationInput | msasuransiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for msasuransis. + */ + cursor?: msasuransiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msasuransis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msasuransis. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of msasuransis. + */ + distinct?: MsasuransiScalarFieldEnum | MsasuransiScalarFieldEnum[] + } + + + /** + * msasuransi findFirstOrThrow + */ + export type msasuransiFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + /** + * Filter, which msasuransi to fetch. + */ + where?: msasuransiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msasuransis to fetch. + */ + orderBy?: msasuransiOrderByWithRelationInput | msasuransiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for msasuransis. + */ + cursor?: msasuransiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msasuransis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msasuransis. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of msasuransis. + */ + distinct?: MsasuransiScalarFieldEnum | MsasuransiScalarFieldEnum[] + } + + + /** + * msasuransi findMany + */ + export type msasuransiFindManyArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + /** + * Filter, which msasuransis to fetch. + */ + where?: msasuransiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msasuransis to fetch. + */ + orderBy?: msasuransiOrderByWithRelationInput | msasuransiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing msasuransis. + */ + cursor?: msasuransiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msasuransis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msasuransis. + */ + skip?: number + distinct?: MsasuransiScalarFieldEnum | MsasuransiScalarFieldEnum[] + } + + + /** + * msasuransi create + */ + export type msasuransiCreateArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + /** + * The data needed to create a msasuransi. + */ + data: XOR + } + + + /** + * msasuransi createMany + */ + export type msasuransiCreateManyArgs = { + /** + * The data used to create many msasuransis. + */ + data: msasuransiCreateManyInput | msasuransiCreateManyInput[] + skipDuplicates?: boolean + } + + + /** + * msasuransi update + */ + export type msasuransiUpdateArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + /** + * The data needed to update a msasuransi. + */ + data: XOR + /** + * Choose, which msasuransi to update. + */ + where: msasuransiWhereUniqueInput + } + + + /** + * msasuransi updateMany + */ + export type msasuransiUpdateManyArgs = { + /** + * The data used to update msasuransis. + */ + data: XOR + /** + * Filter which msasuransis to update + */ + where?: msasuransiWhereInput + } + + + /** + * msasuransi upsert + */ + export type msasuransiUpsertArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + /** + * The filter to search for the msasuransi to update in case it exists. + */ + where: msasuransiWhereUniqueInput + /** + * In case the msasuransi found by the `where` argument doesn't exist, create a new msasuransi with this data. + */ + create: XOR + /** + * In case the msasuransi was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + + /** + * msasuransi delete + */ + export type msasuransiDeleteArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + /** + * Filter which msasuransi to delete. + */ + where: msasuransiWhereUniqueInput + } + + + /** + * msasuransi deleteMany + */ + export type msasuransiDeleteManyArgs = { + /** + * Filter which msasuransis to delete + */ + where?: msasuransiWhereInput + } + + + /** + * msasuransi.trregistrasi + */ + export type msasuransi$trregistrasiArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + where?: trregistrasiWhereInput + orderBy?: trregistrasiOrderByWithRelationInput | trregistrasiOrderByWithRelationInput[] + cursor?: trregistrasiWhereUniqueInput + take?: number + skip?: number + distinct?: TrregistrasiScalarFieldEnum | TrregistrasiScalarFieldEnum[] + } + + + /** + * msasuransi without action + */ + export type msasuransiDefaultArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + } + + + + /** + * Model mspasien + */ + + export type AggregateMspasien = { + _count: MspasienCountAggregateOutputType | null + _avg: MspasienAvgAggregateOutputType | null + _sum: MspasienSumAggregateOutputType | null + _min: MspasienMinAggregateOutputType | null + _max: MspasienMaxAggregateOutputType | null + } + + export type MspasienAvgAggregateOutputType = { + idpasien: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + } + + export type MspasienSumAggregateOutputType = { + idpasien: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + } + + export type MspasienMinAggregateOutputType = { + idpasien: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + mrpasien: string | null + namapasien: string | null + tanggallahir: Date | null + jeniskelamin: string | null + } + + export type MspasienMaxAggregateOutputType = { + idpasien: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + mrpasien: string | null + namapasien: string | null + tanggallahir: Date | null + jeniskelamin: string | null + } + + export type MspasienCountAggregateOutputType = { + idpasien: number + created_at: number + created_by: number + modified_at: number + modified_by: number + deleted_at: number + deleted_by: number + mrpasien: number + namapasien: number + tanggallahir: number + jeniskelamin: number + _all: number + } + + + export type MspasienAvgAggregateInputType = { + idpasien?: true + created_by?: true + modified_by?: true + deleted_by?: true + } + + export type MspasienSumAggregateInputType = { + idpasien?: true + created_by?: true + modified_by?: true + deleted_by?: true + } + + export type MspasienMinAggregateInputType = { + idpasien?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + mrpasien?: true + namapasien?: true + tanggallahir?: true + jeniskelamin?: true + } + + export type MspasienMaxAggregateInputType = { + idpasien?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + mrpasien?: true + namapasien?: true + tanggallahir?: true + jeniskelamin?: true + } + + export type MspasienCountAggregateInputType = { + idpasien?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + mrpasien?: true + namapasien?: true + tanggallahir?: true + jeniskelamin?: true + _all?: true + } + + export type MspasienAggregateArgs = { + /** + * Filter which mspasien to aggregate. + */ + where?: mspasienWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mspasiens to fetch. + */ + orderBy?: mspasienOrderByWithRelationInput | mspasienOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: mspasienWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mspasiens from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mspasiens. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned mspasiens + **/ + _count?: true | MspasienCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: MspasienAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: MspasienSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: MspasienMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: MspasienMaxAggregateInputType + } + + export type GetMspasienAggregateType = { + [P in keyof T & keyof AggregateMspasien]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type mspasienGroupByArgs = { + where?: mspasienWhereInput + orderBy?: mspasienOrderByWithAggregationInput | mspasienOrderByWithAggregationInput[] + by: MspasienScalarFieldEnum[] | MspasienScalarFieldEnum + having?: mspasienScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: MspasienCountAggregateInputType | true + _avg?: MspasienAvgAggregateInputType + _sum?: MspasienSumAggregateInputType + _min?: MspasienMinAggregateInputType + _max?: MspasienMaxAggregateInputType + } + + export type MspasienGroupByOutputType = { + idpasien: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + mrpasien: string | null + namapasien: string | null + tanggallahir: Date | null + jeniskelamin: string | null + _count: MspasienCountAggregateOutputType | null + _avg: MspasienAvgAggregateOutputType | null + _sum: MspasienSumAggregateOutputType | null + _min: MspasienMinAggregateOutputType | null + _max: MspasienMaxAggregateOutputType | null + } + + type GetMspasienGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof MspasienGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type mspasienSelect = $Extensions.GetSelect<{ + idpasien?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + mrpasien?: boolean + namapasien?: boolean + tanggallahir?: boolean + jeniskelamin?: boolean + trregistrasi?: boolean | mspasien$trregistrasiArgs + _count?: boolean | MspasienCountOutputTypeDefaultArgs + }, ExtArgs["result"]["mspasien"]> + + export type mspasienSelectScalar = { + idpasien?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + mrpasien?: boolean + namapasien?: boolean + tanggallahir?: boolean + jeniskelamin?: boolean + } + + export type mspasienInclude = { + trregistrasi?: boolean | mspasien$trregistrasiArgs + _count?: boolean | MspasienCountOutputTypeDefaultArgs + } + + + export type $mspasienPayload = { + name: "mspasien" + objects: { + trregistrasi: Prisma.$trregistrasiPayload[] + } + scalars: $Extensions.GetPayloadResult<{ + idpasien: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + mrpasien: string | null + namapasien: string | null + tanggallahir: Date | null + jeniskelamin: string | null + }, ExtArgs["result"]["mspasien"]> + composites: {} + } + + + type mspasienGetPayload = $Result.GetResult + + type mspasienCountArgs = + Omit & { + select?: MspasienCountAggregateInputType | true + } + + export interface mspasienDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['mspasien'], meta: { name: 'mspasien' } } + /** + * Find zero or one Mspasien that matches the filter. + * @param {mspasienFindUniqueArgs} args - Arguments to find a Mspasien + * @example + * // Get one Mspasien + * const mspasien = await prisma.mspasien.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUnique>( + args: SelectSubset> + ): Prisma__mspasienClient<$Result.GetResult, T, 'findUnique'> | null, null, ExtArgs> + + /** + * Find one Mspasien that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {mspasienFindUniqueOrThrowArgs} args - Arguments to find a Mspasien + * @example + * // Get one Mspasien + * const mspasien = await prisma.mspasien.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUniqueOrThrow>( + args?: SelectSubset> + ): Prisma__mspasienClient<$Result.GetResult, T, 'findUniqueOrThrow'>, never, ExtArgs> + + /** + * Find the first Mspasien that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspasienFindFirstArgs} args - Arguments to find a Mspasien + * @example + * // Get one Mspasien + * const mspasien = await prisma.mspasien.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirst>( + args?: SelectSubset> + ): Prisma__mspasienClient<$Result.GetResult, T, 'findFirst'> | null, null, ExtArgs> + + /** + * Find the first Mspasien that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspasienFindFirstOrThrowArgs} args - Arguments to find a Mspasien + * @example + * // Get one Mspasien + * const mspasien = await prisma.mspasien.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirstOrThrow>( + args?: SelectSubset> + ): Prisma__mspasienClient<$Result.GetResult, T, 'findFirstOrThrow'>, never, ExtArgs> + + /** + * Find zero or more Mspasiens that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspasienFindManyArgs=} args - Arguments to filter and select certain fields only. + * @example + * // Get all Mspasiens + * const mspasiens = await prisma.mspasien.findMany() + * + * // Get first 10 Mspasiens + * const mspasiens = await prisma.mspasien.findMany({ take: 10 }) + * + * // Only select the `idpasien` + * const mspasienWithIdpasienOnly = await prisma.mspasien.findMany({ select: { idpasien: true } }) + * + **/ + findMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'>> + + /** + * Create a Mspasien. + * @param {mspasienCreateArgs} args - Arguments to create a Mspasien. + * @example + * // Create one Mspasien + * const Mspasien = await prisma.mspasien.create({ + * data: { + * // ... data to create a Mspasien + * } + * }) + * + **/ + create>( + args: SelectSubset> + ): Prisma__mspasienClient<$Result.GetResult, T, 'create'>, never, ExtArgs> + + /** + * Create many Mspasiens. + * @param {mspasienCreateManyArgs} args - Arguments to create many Mspasiens. + * @example + * // Create many Mspasiens + * const mspasien = await prisma.mspasien.createMany({ + * data: { + * // ... provide data here + * } + * }) + * + **/ + createMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Delete a Mspasien. + * @param {mspasienDeleteArgs} args - Arguments to delete one Mspasien. + * @example + * // Delete one Mspasien + * const Mspasien = await prisma.mspasien.delete({ + * where: { + * // ... filter to delete one Mspasien + * } + * }) + * + **/ + delete>( + args: SelectSubset> + ): Prisma__mspasienClient<$Result.GetResult, T, 'delete'>, never, ExtArgs> + + /** + * Update one Mspasien. + * @param {mspasienUpdateArgs} args - Arguments to update one Mspasien. + * @example + * // Update one Mspasien + * const mspasien = await prisma.mspasien.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + update>( + args: SelectSubset> + ): Prisma__mspasienClient<$Result.GetResult, T, 'update'>, never, ExtArgs> + + /** + * Delete zero or more Mspasiens. + * @param {mspasienDeleteManyArgs} args - Arguments to filter Mspasiens to delete. + * @example + * // Delete a few Mspasiens + * const { count } = await prisma.mspasien.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + **/ + deleteMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Update zero or more Mspasiens. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspasienUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Mspasiens + * const mspasien = await prisma.mspasien.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + updateMany>( + args: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Create or update one Mspasien. + * @param {mspasienUpsertArgs} args - Arguments to update or create a Mspasien. + * @example + * // Update or create a Mspasien + * const mspasien = await prisma.mspasien.upsert({ + * create: { + * // ... data to create a Mspasien + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Mspasien we want to update + * } + * }) + **/ + upsert>( + args: SelectSubset> + ): Prisma__mspasienClient<$Result.GetResult, T, 'upsert'>, never, ExtArgs> + + /** + * Count the number of Mspasiens. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspasienCountArgs} args - Arguments to filter Mspasiens to count. + * @example + * // Count the number of Mspasiens + * const count = await prisma.mspasien.count({ + * where: { + * // ... the filter for the Mspasiens we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Mspasien. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {MspasienAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Mspasien. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspasienGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends mspasienGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: mspasienGroupByArgs['orderBy'] } + : { orderBy?: mspasienGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetMspasienGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the mspasien model + */ + readonly fields: mspasienFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for mspasien. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__mspasienClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: 'PrismaPromise'; + + trregistrasi = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'> | Null>; + + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise; + } + + + + /** + * Fields of the mspasien model + */ + interface mspasienFieldRefs { + readonly idpasien: FieldRef<"mspasien", 'Int'> + readonly created_at: FieldRef<"mspasien", 'DateTime'> + readonly created_by: FieldRef<"mspasien", 'Int'> + readonly modified_at: FieldRef<"mspasien", 'DateTime'> + readonly modified_by: FieldRef<"mspasien", 'Int'> + readonly deleted_at: FieldRef<"mspasien", 'DateTime'> + readonly deleted_by: FieldRef<"mspasien", 'Int'> + readonly mrpasien: FieldRef<"mspasien", 'String'> + readonly namapasien: FieldRef<"mspasien", 'String'> + readonly tanggallahir: FieldRef<"mspasien", 'DateTime'> + readonly jeniskelamin: FieldRef<"mspasien", 'String'> + } + + + // Custom InputTypes + + /** + * mspasien findUnique + */ + export type mspasienFindUniqueArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + /** + * Filter, which mspasien to fetch. + */ + where: mspasienWhereUniqueInput + } + + + /** + * mspasien findUniqueOrThrow + */ + export type mspasienFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + /** + * Filter, which mspasien to fetch. + */ + where: mspasienWhereUniqueInput + } + + + /** + * mspasien findFirst + */ + export type mspasienFindFirstArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + /** + * Filter, which mspasien to fetch. + */ + where?: mspasienWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mspasiens to fetch. + */ + orderBy?: mspasienOrderByWithRelationInput | mspasienOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for mspasiens. + */ + cursor?: mspasienWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mspasiens from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mspasiens. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of mspasiens. + */ + distinct?: MspasienScalarFieldEnum | MspasienScalarFieldEnum[] + } + + + /** + * mspasien findFirstOrThrow + */ + export type mspasienFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + /** + * Filter, which mspasien to fetch. + */ + where?: mspasienWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mspasiens to fetch. + */ + orderBy?: mspasienOrderByWithRelationInput | mspasienOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for mspasiens. + */ + cursor?: mspasienWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mspasiens from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mspasiens. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of mspasiens. + */ + distinct?: MspasienScalarFieldEnum | MspasienScalarFieldEnum[] + } + + + /** + * mspasien findMany + */ + export type mspasienFindManyArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + /** + * Filter, which mspasiens to fetch. + */ + where?: mspasienWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mspasiens to fetch. + */ + orderBy?: mspasienOrderByWithRelationInput | mspasienOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing mspasiens. + */ + cursor?: mspasienWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mspasiens from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mspasiens. + */ + skip?: number + distinct?: MspasienScalarFieldEnum | MspasienScalarFieldEnum[] + } + + + /** + * mspasien create + */ + export type mspasienCreateArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + /** + * The data needed to create a mspasien. + */ + data: XOR + } + + + /** + * mspasien createMany + */ + export type mspasienCreateManyArgs = { + /** + * The data used to create many mspasiens. + */ + data: mspasienCreateManyInput | mspasienCreateManyInput[] + skipDuplicates?: boolean + } + + + /** + * mspasien update + */ + export type mspasienUpdateArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + /** + * The data needed to update a mspasien. + */ + data: XOR + /** + * Choose, which mspasien to update. + */ + where: mspasienWhereUniqueInput + } + + + /** + * mspasien updateMany + */ + export type mspasienUpdateManyArgs = { + /** + * The data used to update mspasiens. + */ + data: XOR + /** + * Filter which mspasiens to update + */ + where?: mspasienWhereInput + } + + + /** + * mspasien upsert + */ + export type mspasienUpsertArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + /** + * The filter to search for the mspasien to update in case it exists. + */ + where: mspasienWhereUniqueInput + /** + * In case the mspasien found by the `where` argument doesn't exist, create a new mspasien with this data. + */ + create: XOR + /** + * In case the mspasien was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + + /** + * mspasien delete + */ + export type mspasienDeleteArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + /** + * Filter which mspasien to delete. + */ + where: mspasienWhereUniqueInput + } + + + /** + * mspasien deleteMany + */ + export type mspasienDeleteManyArgs = { + /** + * Filter which mspasiens to delete + */ + where?: mspasienWhereInput + } + + + /** + * mspasien.trregistrasi + */ + export type mspasien$trregistrasiArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + where?: trregistrasiWhereInput + orderBy?: trregistrasiOrderByWithRelationInput | trregistrasiOrderByWithRelationInput[] + cursor?: trregistrasiWhereUniqueInput + take?: number + skip?: number + distinct?: TrregistrasiScalarFieldEnum | TrregistrasiScalarFieldEnum[] + } + + + /** + * mspasien without action + */ + export type mspasienDefaultArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + } + + + + /** + * Model mspegawai + */ + + export type AggregateMspegawai = { + _count: MspegawaiCountAggregateOutputType | null + _avg: MspegawaiAvgAggregateOutputType | null + _sum: MspegawaiSumAggregateOutputType | null + _min: MspegawaiMinAggregateOutputType | null + _max: MspegawaiMaxAggregateOutputType | null + } + + export type MspegawaiAvgAggregateOutputType = { + idpegawai: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + } + + export type MspegawaiSumAggregateOutputType = { + idpegawai: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + } + + export type MspegawaiMinAggregateOutputType = { + idpegawai: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namapegawai: string | null + } + + export type MspegawaiMaxAggregateOutputType = { + idpegawai: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namapegawai: string | null + } + + export type MspegawaiCountAggregateOutputType = { + idpegawai: number + created_at: number + created_by: number + modified_at: number + modified_by: number + deleted_at: number + deleted_by: number + namapegawai: number + _all: number + } + + + export type MspegawaiAvgAggregateInputType = { + idpegawai?: true + created_by?: true + modified_by?: true + deleted_by?: true + } + + export type MspegawaiSumAggregateInputType = { + idpegawai?: true + created_by?: true + modified_by?: true + deleted_by?: true + } + + export type MspegawaiMinAggregateInputType = { + idpegawai?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namapegawai?: true + } + + export type MspegawaiMaxAggregateInputType = { + idpegawai?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namapegawai?: true + } + + export type MspegawaiCountAggregateInputType = { + idpegawai?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namapegawai?: true + _all?: true + } + + export type MspegawaiAggregateArgs = { + /** + * Filter which mspegawai to aggregate. + */ + where?: mspegawaiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mspegawais to fetch. + */ + orderBy?: mspegawaiOrderByWithRelationInput | mspegawaiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: mspegawaiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mspegawais from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mspegawais. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned mspegawais + **/ + _count?: true | MspegawaiCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: MspegawaiAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: MspegawaiSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: MspegawaiMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: MspegawaiMaxAggregateInputType + } + + export type GetMspegawaiAggregateType = { + [P in keyof T & keyof AggregateMspegawai]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type mspegawaiGroupByArgs = { + where?: mspegawaiWhereInput + orderBy?: mspegawaiOrderByWithAggregationInput | mspegawaiOrderByWithAggregationInput[] + by: MspegawaiScalarFieldEnum[] | MspegawaiScalarFieldEnum + having?: mspegawaiScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: MspegawaiCountAggregateInputType | true + _avg?: MspegawaiAvgAggregateInputType + _sum?: MspegawaiSumAggregateInputType + _min?: MspegawaiMinAggregateInputType + _max?: MspegawaiMaxAggregateInputType + } + + export type MspegawaiGroupByOutputType = { + idpegawai: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namapegawai: string | null + _count: MspegawaiCountAggregateOutputType | null + _avg: MspegawaiAvgAggregateOutputType | null + _sum: MspegawaiSumAggregateOutputType | null + _min: MspegawaiMinAggregateOutputType | null + _max: MspegawaiMaxAggregateOutputType | null + } + + type GetMspegawaiGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof MspegawaiGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type mspegawaiSelect = $Extensions.GetSelect<{ + idpegawai?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + namapegawai?: boolean + trregistrasi?: boolean | mspegawai$trregistrasiArgs + trtransaksi?: boolean | mspegawai$trtransaksiArgs + _count?: boolean | MspegawaiCountOutputTypeDefaultArgs + }, ExtArgs["result"]["mspegawai"]> + + export type mspegawaiSelectScalar = { + idpegawai?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + namapegawai?: boolean + } + + export type mspegawaiInclude = { + trregistrasi?: boolean | mspegawai$trregistrasiArgs + trtransaksi?: boolean | mspegawai$trtransaksiArgs + _count?: boolean | MspegawaiCountOutputTypeDefaultArgs + } + + + export type $mspegawaiPayload = { + name: "mspegawai" + objects: { + trregistrasi: Prisma.$trregistrasiPayload[] + trtransaksi: Prisma.$trtransaksiPayload[] + } + scalars: $Extensions.GetPayloadResult<{ + idpegawai: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namapegawai: string | null + }, ExtArgs["result"]["mspegawai"]> + composites: {} + } + + + type mspegawaiGetPayload = $Result.GetResult + + type mspegawaiCountArgs = + Omit & { + select?: MspegawaiCountAggregateInputType | true + } + + export interface mspegawaiDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['mspegawai'], meta: { name: 'mspegawai' } } + /** + * Find zero or one Mspegawai that matches the filter. + * @param {mspegawaiFindUniqueArgs} args - Arguments to find a Mspegawai + * @example + * // Get one Mspegawai + * const mspegawai = await prisma.mspegawai.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUnique>( + args: SelectSubset> + ): Prisma__mspegawaiClient<$Result.GetResult, T, 'findUnique'> | null, null, ExtArgs> + + /** + * Find one Mspegawai that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {mspegawaiFindUniqueOrThrowArgs} args - Arguments to find a Mspegawai + * @example + * // Get one Mspegawai + * const mspegawai = await prisma.mspegawai.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUniqueOrThrow>( + args?: SelectSubset> + ): Prisma__mspegawaiClient<$Result.GetResult, T, 'findUniqueOrThrow'>, never, ExtArgs> + + /** + * Find the first Mspegawai that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspegawaiFindFirstArgs} args - Arguments to find a Mspegawai + * @example + * // Get one Mspegawai + * const mspegawai = await prisma.mspegawai.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirst>( + args?: SelectSubset> + ): Prisma__mspegawaiClient<$Result.GetResult, T, 'findFirst'> | null, null, ExtArgs> + + /** + * Find the first Mspegawai that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspegawaiFindFirstOrThrowArgs} args - Arguments to find a Mspegawai + * @example + * // Get one Mspegawai + * const mspegawai = await prisma.mspegawai.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirstOrThrow>( + args?: SelectSubset> + ): Prisma__mspegawaiClient<$Result.GetResult, T, 'findFirstOrThrow'>, never, ExtArgs> + + /** + * Find zero or more Mspegawais that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspegawaiFindManyArgs=} args - Arguments to filter and select certain fields only. + * @example + * // Get all Mspegawais + * const mspegawais = await prisma.mspegawai.findMany() + * + * // Get first 10 Mspegawais + * const mspegawais = await prisma.mspegawai.findMany({ take: 10 }) + * + * // Only select the `idpegawai` + * const mspegawaiWithIdpegawaiOnly = await prisma.mspegawai.findMany({ select: { idpegawai: true } }) + * + **/ + findMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'>> + + /** + * Create a Mspegawai. + * @param {mspegawaiCreateArgs} args - Arguments to create a Mspegawai. + * @example + * // Create one Mspegawai + * const Mspegawai = await prisma.mspegawai.create({ + * data: { + * // ... data to create a Mspegawai + * } + * }) + * + **/ + create>( + args: SelectSubset> + ): Prisma__mspegawaiClient<$Result.GetResult, T, 'create'>, never, ExtArgs> + + /** + * Create many Mspegawais. + * @param {mspegawaiCreateManyArgs} args - Arguments to create many Mspegawais. + * @example + * // Create many Mspegawais + * const mspegawai = await prisma.mspegawai.createMany({ + * data: { + * // ... provide data here + * } + * }) + * + **/ + createMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Delete a Mspegawai. + * @param {mspegawaiDeleteArgs} args - Arguments to delete one Mspegawai. + * @example + * // Delete one Mspegawai + * const Mspegawai = await prisma.mspegawai.delete({ + * where: { + * // ... filter to delete one Mspegawai + * } + * }) + * + **/ + delete>( + args: SelectSubset> + ): Prisma__mspegawaiClient<$Result.GetResult, T, 'delete'>, never, ExtArgs> + + /** + * Update one Mspegawai. + * @param {mspegawaiUpdateArgs} args - Arguments to update one Mspegawai. + * @example + * // Update one Mspegawai + * const mspegawai = await prisma.mspegawai.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + update>( + args: SelectSubset> + ): Prisma__mspegawaiClient<$Result.GetResult, T, 'update'>, never, ExtArgs> + + /** + * Delete zero or more Mspegawais. + * @param {mspegawaiDeleteManyArgs} args - Arguments to filter Mspegawais to delete. + * @example + * // Delete a few Mspegawais + * const { count } = await prisma.mspegawai.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + **/ + deleteMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Update zero or more Mspegawais. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspegawaiUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Mspegawais + * const mspegawai = await prisma.mspegawai.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + updateMany>( + args: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Create or update one Mspegawai. + * @param {mspegawaiUpsertArgs} args - Arguments to update or create a Mspegawai. + * @example + * // Update or create a Mspegawai + * const mspegawai = await prisma.mspegawai.upsert({ + * create: { + * // ... data to create a Mspegawai + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Mspegawai we want to update + * } + * }) + **/ + upsert>( + args: SelectSubset> + ): Prisma__mspegawaiClient<$Result.GetResult, T, 'upsert'>, never, ExtArgs> + + /** + * Count the number of Mspegawais. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspegawaiCountArgs} args - Arguments to filter Mspegawais to count. + * @example + * // Count the number of Mspegawais + * const count = await prisma.mspegawai.count({ + * where: { + * // ... the filter for the Mspegawais we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Mspegawai. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {MspegawaiAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Mspegawai. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mspegawaiGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends mspegawaiGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: mspegawaiGroupByArgs['orderBy'] } + : { orderBy?: mspegawaiGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetMspegawaiGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the mspegawai model + */ + readonly fields: mspegawaiFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for mspegawai. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__mspegawaiClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: 'PrismaPromise'; + + trregistrasi = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'> | Null>; + + trtransaksi = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'> | Null>; + + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise; + } + + + + /** + * Fields of the mspegawai model + */ + interface mspegawaiFieldRefs { + readonly idpegawai: FieldRef<"mspegawai", 'Int'> + readonly created_at: FieldRef<"mspegawai", 'DateTime'> + readonly created_by: FieldRef<"mspegawai", 'Int'> + readonly modified_at: FieldRef<"mspegawai", 'DateTime'> + readonly modified_by: FieldRef<"mspegawai", 'Int'> + readonly deleted_at: FieldRef<"mspegawai", 'DateTime'> + readonly deleted_by: FieldRef<"mspegawai", 'Int'> + readonly namapegawai: FieldRef<"mspegawai", 'String'> + } + + + // Custom InputTypes + + /** + * mspegawai findUnique + */ + export type mspegawaiFindUniqueArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + /** + * Filter, which mspegawai to fetch. + */ + where: mspegawaiWhereUniqueInput + } + + + /** + * mspegawai findUniqueOrThrow + */ + export type mspegawaiFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + /** + * Filter, which mspegawai to fetch. + */ + where: mspegawaiWhereUniqueInput + } + + + /** + * mspegawai findFirst + */ + export type mspegawaiFindFirstArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + /** + * Filter, which mspegawai to fetch. + */ + where?: mspegawaiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mspegawais to fetch. + */ + orderBy?: mspegawaiOrderByWithRelationInput | mspegawaiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for mspegawais. + */ + cursor?: mspegawaiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mspegawais from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mspegawais. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of mspegawais. + */ + distinct?: MspegawaiScalarFieldEnum | MspegawaiScalarFieldEnum[] + } + + + /** + * mspegawai findFirstOrThrow + */ + export type mspegawaiFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + /** + * Filter, which mspegawai to fetch. + */ + where?: mspegawaiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mspegawais to fetch. + */ + orderBy?: mspegawaiOrderByWithRelationInput | mspegawaiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for mspegawais. + */ + cursor?: mspegawaiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mspegawais from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mspegawais. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of mspegawais. + */ + distinct?: MspegawaiScalarFieldEnum | MspegawaiScalarFieldEnum[] + } + + + /** + * mspegawai findMany + */ + export type mspegawaiFindManyArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + /** + * Filter, which mspegawais to fetch. + */ + where?: mspegawaiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mspegawais to fetch. + */ + orderBy?: mspegawaiOrderByWithRelationInput | mspegawaiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing mspegawais. + */ + cursor?: mspegawaiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mspegawais from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mspegawais. + */ + skip?: number + distinct?: MspegawaiScalarFieldEnum | MspegawaiScalarFieldEnum[] + } + + + /** + * mspegawai create + */ + export type mspegawaiCreateArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + /** + * The data needed to create a mspegawai. + */ + data: XOR + } + + + /** + * mspegawai createMany + */ + export type mspegawaiCreateManyArgs = { + /** + * The data used to create many mspegawais. + */ + data: mspegawaiCreateManyInput | mspegawaiCreateManyInput[] + skipDuplicates?: boolean + } + + + /** + * mspegawai update + */ + export type mspegawaiUpdateArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + /** + * The data needed to update a mspegawai. + */ + data: XOR + /** + * Choose, which mspegawai to update. + */ + where: mspegawaiWhereUniqueInput + } + + + /** + * mspegawai updateMany + */ + export type mspegawaiUpdateManyArgs = { + /** + * The data used to update mspegawais. + */ + data: XOR + /** + * Filter which mspegawais to update + */ + where?: mspegawaiWhereInput + } + + + /** + * mspegawai upsert + */ + export type mspegawaiUpsertArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + /** + * The filter to search for the mspegawai to update in case it exists. + */ + where: mspegawaiWhereUniqueInput + /** + * In case the mspegawai found by the `where` argument doesn't exist, create a new mspegawai with this data. + */ + create: XOR + /** + * In case the mspegawai was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + + /** + * mspegawai delete + */ + export type mspegawaiDeleteArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + /** + * Filter which mspegawai to delete. + */ + where: mspegawaiWhereUniqueInput + } + + + /** + * mspegawai deleteMany + */ + export type mspegawaiDeleteManyArgs = { + /** + * Filter which mspegawais to delete + */ + where?: mspegawaiWhereInput + } + + + /** + * mspegawai.trregistrasi + */ + export type mspegawai$trregistrasiArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + where?: trregistrasiWhereInput + orderBy?: trregistrasiOrderByWithRelationInput | trregistrasiOrderByWithRelationInput[] + cursor?: trregistrasiWhereUniqueInput + take?: number + skip?: number + distinct?: TrregistrasiScalarFieldEnum | TrregistrasiScalarFieldEnum[] + } + + + /** + * mspegawai.trtransaksi + */ + export type mspegawai$trtransaksiArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + where?: trtransaksiWhereInput + orderBy?: trtransaksiOrderByWithRelationInput | trtransaksiOrderByWithRelationInput[] + cursor?: trtransaksiWhereUniqueInput + take?: number + skip?: number + distinct?: TrtransaksiScalarFieldEnum | TrtransaksiScalarFieldEnum[] + } + + + /** + * mspegawai without action + */ + export type mspegawaiDefaultArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + } + + + + /** + * Model msruangpelayanan + */ + + export type AggregateMsruangpelayanan = { + _count: MsruangpelayananCountAggregateOutputType | null + _avg: MsruangpelayananAvgAggregateOutputType | null + _sum: MsruangpelayananSumAggregateOutputType | null + _min: MsruangpelayananMinAggregateOutputType | null + _max: MsruangpelayananMaxAggregateOutputType | null + } + + export type MsruangpelayananAvgAggregateOutputType = { + idruangpelayanan: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + } + + export type MsruangpelayananSumAggregateOutputType = { + idruangpelayanan: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + } + + export type MsruangpelayananMinAggregateOutputType = { + idruangpelayanan: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namaruangpelayanan: string | null + } + + export type MsruangpelayananMaxAggregateOutputType = { + idruangpelayanan: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namaruangpelayanan: string | null + } + + export type MsruangpelayananCountAggregateOutputType = { + idruangpelayanan: number + created_at: number + created_by: number + modified_at: number + modified_by: number + deleted_at: number + deleted_by: number + namaruangpelayanan: number + _all: number + } + + + export type MsruangpelayananAvgAggregateInputType = { + idruangpelayanan?: true + created_by?: true + modified_by?: true + deleted_by?: true + } + + export type MsruangpelayananSumAggregateInputType = { + idruangpelayanan?: true + created_by?: true + modified_by?: true + deleted_by?: true + } + + export type MsruangpelayananMinAggregateInputType = { + idruangpelayanan?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namaruangpelayanan?: true + } + + export type MsruangpelayananMaxAggregateInputType = { + idruangpelayanan?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namaruangpelayanan?: true + } + + export type MsruangpelayananCountAggregateInputType = { + idruangpelayanan?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namaruangpelayanan?: true + _all?: true + } + + export type MsruangpelayananAggregateArgs = { + /** + * Filter which msruangpelayanan to aggregate. + */ + where?: msruangpelayananWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msruangpelayanans to fetch. + */ + orderBy?: msruangpelayananOrderByWithRelationInput | msruangpelayananOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: msruangpelayananWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msruangpelayanans from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msruangpelayanans. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned msruangpelayanans + **/ + _count?: true | MsruangpelayananCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: MsruangpelayananAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: MsruangpelayananSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: MsruangpelayananMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: MsruangpelayananMaxAggregateInputType + } + + export type GetMsruangpelayananAggregateType = { + [P in keyof T & keyof AggregateMsruangpelayanan]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type msruangpelayananGroupByArgs = { + where?: msruangpelayananWhereInput + orderBy?: msruangpelayananOrderByWithAggregationInput | msruangpelayananOrderByWithAggregationInput[] + by: MsruangpelayananScalarFieldEnum[] | MsruangpelayananScalarFieldEnum + having?: msruangpelayananScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: MsruangpelayananCountAggregateInputType | true + _avg?: MsruangpelayananAvgAggregateInputType + _sum?: MsruangpelayananSumAggregateInputType + _min?: MsruangpelayananMinAggregateInputType + _max?: MsruangpelayananMaxAggregateInputType + } + + export type MsruangpelayananGroupByOutputType = { + idruangpelayanan: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namaruangpelayanan: string | null + _count: MsruangpelayananCountAggregateOutputType | null + _avg: MsruangpelayananAvgAggregateOutputType | null + _sum: MsruangpelayananSumAggregateOutputType | null + _min: MsruangpelayananMinAggregateOutputType | null + _max: MsruangpelayananMaxAggregateOutputType | null + } + + type GetMsruangpelayananGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof MsruangpelayananGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type msruangpelayananSelect = $Extensions.GetSelect<{ + idruangpelayanan?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + namaruangpelayanan?: boolean + trregistrasi?: boolean | msruangpelayanan$trregistrasiArgs + _count?: boolean | MsruangpelayananCountOutputTypeDefaultArgs + }, ExtArgs["result"]["msruangpelayanan"]> + + export type msruangpelayananSelectScalar = { + idruangpelayanan?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + namaruangpelayanan?: boolean + } + + export type msruangpelayananInclude = { + trregistrasi?: boolean | msruangpelayanan$trregistrasiArgs + _count?: boolean | MsruangpelayananCountOutputTypeDefaultArgs + } + + + export type $msruangpelayananPayload = { + name: "msruangpelayanan" + objects: { + trregistrasi: Prisma.$trregistrasiPayload[] + } + scalars: $Extensions.GetPayloadResult<{ + idruangpelayanan: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namaruangpelayanan: string | null + }, ExtArgs["result"]["msruangpelayanan"]> + composites: {} + } + + + type msruangpelayananGetPayload = $Result.GetResult + + type msruangpelayananCountArgs = + Omit & { + select?: MsruangpelayananCountAggregateInputType | true + } + + export interface msruangpelayananDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['msruangpelayanan'], meta: { name: 'msruangpelayanan' } } + /** + * Find zero or one Msruangpelayanan that matches the filter. + * @param {msruangpelayananFindUniqueArgs} args - Arguments to find a Msruangpelayanan + * @example + * // Get one Msruangpelayanan + * const msruangpelayanan = await prisma.msruangpelayanan.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUnique>( + args: SelectSubset> + ): Prisma__msruangpelayananClient<$Result.GetResult, T, 'findUnique'> | null, null, ExtArgs> + + /** + * Find one Msruangpelayanan that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {msruangpelayananFindUniqueOrThrowArgs} args - Arguments to find a Msruangpelayanan + * @example + * // Get one Msruangpelayanan + * const msruangpelayanan = await prisma.msruangpelayanan.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUniqueOrThrow>( + args?: SelectSubset> + ): Prisma__msruangpelayananClient<$Result.GetResult, T, 'findUniqueOrThrow'>, never, ExtArgs> + + /** + * Find the first Msruangpelayanan that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msruangpelayananFindFirstArgs} args - Arguments to find a Msruangpelayanan + * @example + * // Get one Msruangpelayanan + * const msruangpelayanan = await prisma.msruangpelayanan.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirst>( + args?: SelectSubset> + ): Prisma__msruangpelayananClient<$Result.GetResult, T, 'findFirst'> | null, null, ExtArgs> + + /** + * Find the first Msruangpelayanan that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msruangpelayananFindFirstOrThrowArgs} args - Arguments to find a Msruangpelayanan + * @example + * // Get one Msruangpelayanan + * const msruangpelayanan = await prisma.msruangpelayanan.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirstOrThrow>( + args?: SelectSubset> + ): Prisma__msruangpelayananClient<$Result.GetResult, T, 'findFirstOrThrow'>, never, ExtArgs> + + /** + * Find zero or more Msruangpelayanans that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msruangpelayananFindManyArgs=} args - Arguments to filter and select certain fields only. + * @example + * // Get all Msruangpelayanans + * const msruangpelayanans = await prisma.msruangpelayanan.findMany() + * + * // Get first 10 Msruangpelayanans + * const msruangpelayanans = await prisma.msruangpelayanan.findMany({ take: 10 }) + * + * // Only select the `idruangpelayanan` + * const msruangpelayananWithIdruangpelayananOnly = await prisma.msruangpelayanan.findMany({ select: { idruangpelayanan: true } }) + * + **/ + findMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'>> + + /** + * Create a Msruangpelayanan. + * @param {msruangpelayananCreateArgs} args - Arguments to create a Msruangpelayanan. + * @example + * // Create one Msruangpelayanan + * const Msruangpelayanan = await prisma.msruangpelayanan.create({ + * data: { + * // ... data to create a Msruangpelayanan + * } + * }) + * + **/ + create>( + args: SelectSubset> + ): Prisma__msruangpelayananClient<$Result.GetResult, T, 'create'>, never, ExtArgs> + + /** + * Create many Msruangpelayanans. + * @param {msruangpelayananCreateManyArgs} args - Arguments to create many Msruangpelayanans. + * @example + * // Create many Msruangpelayanans + * const msruangpelayanan = await prisma.msruangpelayanan.createMany({ + * data: { + * // ... provide data here + * } + * }) + * + **/ + createMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Delete a Msruangpelayanan. + * @param {msruangpelayananDeleteArgs} args - Arguments to delete one Msruangpelayanan. + * @example + * // Delete one Msruangpelayanan + * const Msruangpelayanan = await prisma.msruangpelayanan.delete({ + * where: { + * // ... filter to delete one Msruangpelayanan + * } + * }) + * + **/ + delete>( + args: SelectSubset> + ): Prisma__msruangpelayananClient<$Result.GetResult, T, 'delete'>, never, ExtArgs> + + /** + * Update one Msruangpelayanan. + * @param {msruangpelayananUpdateArgs} args - Arguments to update one Msruangpelayanan. + * @example + * // Update one Msruangpelayanan + * const msruangpelayanan = await prisma.msruangpelayanan.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + update>( + args: SelectSubset> + ): Prisma__msruangpelayananClient<$Result.GetResult, T, 'update'>, never, ExtArgs> + + /** + * Delete zero or more Msruangpelayanans. + * @param {msruangpelayananDeleteManyArgs} args - Arguments to filter Msruangpelayanans to delete. + * @example + * // Delete a few Msruangpelayanans + * const { count } = await prisma.msruangpelayanan.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + **/ + deleteMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Update zero or more Msruangpelayanans. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msruangpelayananUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Msruangpelayanans + * const msruangpelayanan = await prisma.msruangpelayanan.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + updateMany>( + args: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Create or update one Msruangpelayanan. + * @param {msruangpelayananUpsertArgs} args - Arguments to update or create a Msruangpelayanan. + * @example + * // Update or create a Msruangpelayanan + * const msruangpelayanan = await prisma.msruangpelayanan.upsert({ + * create: { + * // ... data to create a Msruangpelayanan + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Msruangpelayanan we want to update + * } + * }) + **/ + upsert>( + args: SelectSubset> + ): Prisma__msruangpelayananClient<$Result.GetResult, T, 'upsert'>, never, ExtArgs> + + /** + * Count the number of Msruangpelayanans. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msruangpelayananCountArgs} args - Arguments to filter Msruangpelayanans to count. + * @example + * // Count the number of Msruangpelayanans + * const count = await prisma.msruangpelayanan.count({ + * where: { + * // ... the filter for the Msruangpelayanans we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Msruangpelayanan. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {MsruangpelayananAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Msruangpelayanan. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msruangpelayananGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends msruangpelayananGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: msruangpelayananGroupByArgs['orderBy'] } + : { orderBy?: msruangpelayananGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetMsruangpelayananGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the msruangpelayanan model + */ + readonly fields: msruangpelayananFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for msruangpelayanan. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__msruangpelayananClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: 'PrismaPromise'; + + trregistrasi = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'> | Null>; + + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise; + } + + + + /** + * Fields of the msruangpelayanan model + */ + interface msruangpelayananFieldRefs { + readonly idruangpelayanan: FieldRef<"msruangpelayanan", 'Int'> + readonly created_at: FieldRef<"msruangpelayanan", 'DateTime'> + readonly created_by: FieldRef<"msruangpelayanan", 'Int'> + readonly modified_at: FieldRef<"msruangpelayanan", 'DateTime'> + readonly modified_by: FieldRef<"msruangpelayanan", 'Int'> + readonly deleted_at: FieldRef<"msruangpelayanan", 'DateTime'> + readonly deleted_by: FieldRef<"msruangpelayanan", 'Int'> + readonly namaruangpelayanan: FieldRef<"msruangpelayanan", 'String'> + } + + + // Custom InputTypes + + /** + * msruangpelayanan findUnique + */ + export type msruangpelayananFindUniqueArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + /** + * Filter, which msruangpelayanan to fetch. + */ + where: msruangpelayananWhereUniqueInput + } + + + /** + * msruangpelayanan findUniqueOrThrow + */ + export type msruangpelayananFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + /** + * Filter, which msruangpelayanan to fetch. + */ + where: msruangpelayananWhereUniqueInput + } + + + /** + * msruangpelayanan findFirst + */ + export type msruangpelayananFindFirstArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + /** + * Filter, which msruangpelayanan to fetch. + */ + where?: msruangpelayananWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msruangpelayanans to fetch. + */ + orderBy?: msruangpelayananOrderByWithRelationInput | msruangpelayananOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for msruangpelayanans. + */ + cursor?: msruangpelayananWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msruangpelayanans from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msruangpelayanans. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of msruangpelayanans. + */ + distinct?: MsruangpelayananScalarFieldEnum | MsruangpelayananScalarFieldEnum[] + } + + + /** + * msruangpelayanan findFirstOrThrow + */ + export type msruangpelayananFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + /** + * Filter, which msruangpelayanan to fetch. + */ + where?: msruangpelayananWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msruangpelayanans to fetch. + */ + orderBy?: msruangpelayananOrderByWithRelationInput | msruangpelayananOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for msruangpelayanans. + */ + cursor?: msruangpelayananWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msruangpelayanans from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msruangpelayanans. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of msruangpelayanans. + */ + distinct?: MsruangpelayananScalarFieldEnum | MsruangpelayananScalarFieldEnum[] + } + + + /** + * msruangpelayanan findMany + */ + export type msruangpelayananFindManyArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + /** + * Filter, which msruangpelayanans to fetch. + */ + where?: msruangpelayananWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msruangpelayanans to fetch. + */ + orderBy?: msruangpelayananOrderByWithRelationInput | msruangpelayananOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing msruangpelayanans. + */ + cursor?: msruangpelayananWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msruangpelayanans from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msruangpelayanans. + */ + skip?: number + distinct?: MsruangpelayananScalarFieldEnum | MsruangpelayananScalarFieldEnum[] + } + + + /** + * msruangpelayanan create + */ + export type msruangpelayananCreateArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + /** + * The data needed to create a msruangpelayanan. + */ + data: XOR + } + + + /** + * msruangpelayanan createMany + */ + export type msruangpelayananCreateManyArgs = { + /** + * The data used to create many msruangpelayanans. + */ + data: msruangpelayananCreateManyInput | msruangpelayananCreateManyInput[] + skipDuplicates?: boolean + } + + + /** + * msruangpelayanan update + */ + export type msruangpelayananUpdateArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + /** + * The data needed to update a msruangpelayanan. + */ + data: XOR + /** + * Choose, which msruangpelayanan to update. + */ + where: msruangpelayananWhereUniqueInput + } + + + /** + * msruangpelayanan updateMany + */ + export type msruangpelayananUpdateManyArgs = { + /** + * The data used to update msruangpelayanans. + */ + data: XOR + /** + * Filter which msruangpelayanans to update + */ + where?: msruangpelayananWhereInput + } + + + /** + * msruangpelayanan upsert + */ + export type msruangpelayananUpsertArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + /** + * The filter to search for the msruangpelayanan to update in case it exists. + */ + where: msruangpelayananWhereUniqueInput + /** + * In case the msruangpelayanan found by the `where` argument doesn't exist, create a new msruangpelayanan with this data. + */ + create: XOR + /** + * In case the msruangpelayanan was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + + /** + * msruangpelayanan delete + */ + export type msruangpelayananDeleteArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + /** + * Filter which msruangpelayanan to delete. + */ + where: msruangpelayananWhereUniqueInput + } + + + /** + * msruangpelayanan deleteMany + */ + export type msruangpelayananDeleteManyArgs = { + /** + * Filter which msruangpelayanans to delete + */ + where?: msruangpelayananWhereInput + } + + + /** + * msruangpelayanan.trregistrasi + */ + export type msruangpelayanan$trregistrasiArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + where?: trregistrasiWhereInput + orderBy?: trregistrasiOrderByWithRelationInput | trregistrasiOrderByWithRelationInput[] + cursor?: trregistrasiWhereUniqueInput + take?: number + skip?: number + distinct?: TrregistrasiScalarFieldEnum | TrregistrasiScalarFieldEnum[] + } + + + /** + * msruangpelayanan without action + */ + export type msruangpelayananDefaultArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + } + + + + /** + * Model mstindakan + */ + + export type AggregateMstindakan = { + _count: MstindakanCountAggregateOutputType | null + _avg: MstindakanAvgAggregateOutputType | null + _sum: MstindakanSumAggregateOutputType | null + _min: MstindakanMinAggregateOutputType | null + _max: MstindakanMaxAggregateOutputType | null + } + + export type MstindakanAvgAggregateOutputType = { + idtindakan: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + tariftindakan: Decimal | null + } + + export type MstindakanSumAggregateOutputType = { + idtindakan: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + tariftindakan: Decimal | null + } + + export type MstindakanMinAggregateOutputType = { + idtindakan: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namatindakan: string | null + tariftindakan: Decimal | null + } + + export type MstindakanMaxAggregateOutputType = { + idtindakan: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namatindakan: string | null + tariftindakan: Decimal | null + } + + export type MstindakanCountAggregateOutputType = { + idtindakan: number + created_at: number + created_by: number + modified_at: number + modified_by: number + deleted_at: number + deleted_by: number + namatindakan: number + tariftindakan: number + _all: number + } + + + export type MstindakanAvgAggregateInputType = { + idtindakan?: true + created_by?: true + modified_by?: true + deleted_by?: true + tariftindakan?: true + } + + export type MstindakanSumAggregateInputType = { + idtindakan?: true + created_by?: true + modified_by?: true + deleted_by?: true + tariftindakan?: true + } + + export type MstindakanMinAggregateInputType = { + idtindakan?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namatindakan?: true + tariftindakan?: true + } + + export type MstindakanMaxAggregateInputType = { + idtindakan?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namatindakan?: true + tariftindakan?: true + } + + export type MstindakanCountAggregateInputType = { + idtindakan?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + namatindakan?: true + tariftindakan?: true + _all?: true + } + + export type MstindakanAggregateArgs = { + /** + * Filter which mstindakan to aggregate. + */ + where?: mstindakanWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mstindakans to fetch. + */ + orderBy?: mstindakanOrderByWithRelationInput | mstindakanOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: mstindakanWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mstindakans from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mstindakans. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned mstindakans + **/ + _count?: true | MstindakanCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: MstindakanAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: MstindakanSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: MstindakanMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: MstindakanMaxAggregateInputType + } + + export type GetMstindakanAggregateType = { + [P in keyof T & keyof AggregateMstindakan]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type mstindakanGroupByArgs = { + where?: mstindakanWhereInput + orderBy?: mstindakanOrderByWithAggregationInput | mstindakanOrderByWithAggregationInput[] + by: MstindakanScalarFieldEnum[] | MstindakanScalarFieldEnum + having?: mstindakanScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: MstindakanCountAggregateInputType | true + _avg?: MstindakanAvgAggregateInputType + _sum?: MstindakanSumAggregateInputType + _min?: MstindakanMinAggregateInputType + _max?: MstindakanMaxAggregateInputType + } + + export type MstindakanGroupByOutputType = { + idtindakan: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namatindakan: string | null + tariftindakan: Decimal | null + _count: MstindakanCountAggregateOutputType | null + _avg: MstindakanAvgAggregateOutputType | null + _sum: MstindakanSumAggregateOutputType | null + _min: MstindakanMinAggregateOutputType | null + _max: MstindakanMaxAggregateOutputType | null + } + + type GetMstindakanGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof MstindakanGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type mstindakanSelect = $Extensions.GetSelect<{ + idtindakan?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + namatindakan?: boolean + tariftindakan?: boolean + trtransaksi?: boolean | mstindakan$trtransaksiArgs + _count?: boolean | MstindakanCountOutputTypeDefaultArgs + }, ExtArgs["result"]["mstindakan"]> + + export type mstindakanSelectScalar = { + idtindakan?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + namatindakan?: boolean + tariftindakan?: boolean + } + + export type mstindakanInclude = { + trtransaksi?: boolean | mstindakan$trtransaksiArgs + _count?: boolean | MstindakanCountOutputTypeDefaultArgs + } + + + export type $mstindakanPayload = { + name: "mstindakan" + objects: { + trtransaksi: Prisma.$trtransaksiPayload[] + } + scalars: $Extensions.GetPayloadResult<{ + idtindakan: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + namatindakan: string | null + tariftindakan: Prisma.Decimal | null + }, ExtArgs["result"]["mstindakan"]> + composites: {} + } + + + type mstindakanGetPayload = $Result.GetResult + + type mstindakanCountArgs = + Omit & { + select?: MstindakanCountAggregateInputType | true + } + + export interface mstindakanDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['mstindakan'], meta: { name: 'mstindakan' } } + /** + * Find zero or one Mstindakan that matches the filter. + * @param {mstindakanFindUniqueArgs} args - Arguments to find a Mstindakan + * @example + * // Get one Mstindakan + * const mstindakan = await prisma.mstindakan.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUnique>( + args: SelectSubset> + ): Prisma__mstindakanClient<$Result.GetResult, T, 'findUnique'> | null, null, ExtArgs> + + /** + * Find one Mstindakan that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {mstindakanFindUniqueOrThrowArgs} args - Arguments to find a Mstindakan + * @example + * // Get one Mstindakan + * const mstindakan = await prisma.mstindakan.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUniqueOrThrow>( + args?: SelectSubset> + ): Prisma__mstindakanClient<$Result.GetResult, T, 'findUniqueOrThrow'>, never, ExtArgs> + + /** + * Find the first Mstindakan that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mstindakanFindFirstArgs} args - Arguments to find a Mstindakan + * @example + * // Get one Mstindakan + * const mstindakan = await prisma.mstindakan.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirst>( + args?: SelectSubset> + ): Prisma__mstindakanClient<$Result.GetResult, T, 'findFirst'> | null, null, ExtArgs> + + /** + * Find the first Mstindakan that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mstindakanFindFirstOrThrowArgs} args - Arguments to find a Mstindakan + * @example + * // Get one Mstindakan + * const mstindakan = await prisma.mstindakan.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirstOrThrow>( + args?: SelectSubset> + ): Prisma__mstindakanClient<$Result.GetResult, T, 'findFirstOrThrow'>, never, ExtArgs> + + /** + * Find zero or more Mstindakans that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mstindakanFindManyArgs=} args - Arguments to filter and select certain fields only. + * @example + * // Get all Mstindakans + * const mstindakans = await prisma.mstindakan.findMany() + * + * // Get first 10 Mstindakans + * const mstindakans = await prisma.mstindakan.findMany({ take: 10 }) + * + * // Only select the `idtindakan` + * const mstindakanWithIdtindakanOnly = await prisma.mstindakan.findMany({ select: { idtindakan: true } }) + * + **/ + findMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'>> + + /** + * Create a Mstindakan. + * @param {mstindakanCreateArgs} args - Arguments to create a Mstindakan. + * @example + * // Create one Mstindakan + * const Mstindakan = await prisma.mstindakan.create({ + * data: { + * // ... data to create a Mstindakan + * } + * }) + * + **/ + create>( + args: SelectSubset> + ): Prisma__mstindakanClient<$Result.GetResult, T, 'create'>, never, ExtArgs> + + /** + * Create many Mstindakans. + * @param {mstindakanCreateManyArgs} args - Arguments to create many Mstindakans. + * @example + * // Create many Mstindakans + * const mstindakan = await prisma.mstindakan.createMany({ + * data: { + * // ... provide data here + * } + * }) + * + **/ + createMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Delete a Mstindakan. + * @param {mstindakanDeleteArgs} args - Arguments to delete one Mstindakan. + * @example + * // Delete one Mstindakan + * const Mstindakan = await prisma.mstindakan.delete({ + * where: { + * // ... filter to delete one Mstindakan + * } + * }) + * + **/ + delete>( + args: SelectSubset> + ): Prisma__mstindakanClient<$Result.GetResult, T, 'delete'>, never, ExtArgs> + + /** + * Update one Mstindakan. + * @param {mstindakanUpdateArgs} args - Arguments to update one Mstindakan. + * @example + * // Update one Mstindakan + * const mstindakan = await prisma.mstindakan.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + update>( + args: SelectSubset> + ): Prisma__mstindakanClient<$Result.GetResult, T, 'update'>, never, ExtArgs> + + /** + * Delete zero or more Mstindakans. + * @param {mstindakanDeleteManyArgs} args - Arguments to filter Mstindakans to delete. + * @example + * // Delete a few Mstindakans + * const { count } = await prisma.mstindakan.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + **/ + deleteMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Update zero or more Mstindakans. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mstindakanUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Mstindakans + * const mstindakan = await prisma.mstindakan.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + updateMany>( + args: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Create or update one Mstindakan. + * @param {mstindakanUpsertArgs} args - Arguments to update or create a Mstindakan. + * @example + * // Update or create a Mstindakan + * const mstindakan = await prisma.mstindakan.upsert({ + * create: { + * // ... data to create a Mstindakan + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Mstindakan we want to update + * } + * }) + **/ + upsert>( + args: SelectSubset> + ): Prisma__mstindakanClient<$Result.GetResult, T, 'upsert'>, never, ExtArgs> + + /** + * Count the number of Mstindakans. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mstindakanCountArgs} args - Arguments to filter Mstindakans to count. + * @example + * // Count the number of Mstindakans + * const count = await prisma.mstindakan.count({ + * where: { + * // ... the filter for the Mstindakans we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Mstindakan. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {MstindakanAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Mstindakan. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {mstindakanGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends mstindakanGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: mstindakanGroupByArgs['orderBy'] } + : { orderBy?: mstindakanGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetMstindakanGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the mstindakan model + */ + readonly fields: mstindakanFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for mstindakan. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__mstindakanClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: 'PrismaPromise'; + + trtransaksi = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'> | Null>; + + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise; + } + + + + /** + * Fields of the mstindakan model + */ + interface mstindakanFieldRefs { + readonly idtindakan: FieldRef<"mstindakan", 'Int'> + readonly created_at: FieldRef<"mstindakan", 'DateTime'> + readonly created_by: FieldRef<"mstindakan", 'Int'> + readonly modified_at: FieldRef<"mstindakan", 'DateTime'> + readonly modified_by: FieldRef<"mstindakan", 'Int'> + readonly deleted_at: FieldRef<"mstindakan", 'DateTime'> + readonly deleted_by: FieldRef<"mstindakan", 'Int'> + readonly namatindakan: FieldRef<"mstindakan", 'String'> + readonly tariftindakan: FieldRef<"mstindakan", 'Decimal'> + } + + + // Custom InputTypes + + /** + * mstindakan findUnique + */ + export type mstindakanFindUniqueArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + /** + * Filter, which mstindakan to fetch. + */ + where: mstindakanWhereUniqueInput + } + + + /** + * mstindakan findUniqueOrThrow + */ + export type mstindakanFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + /** + * Filter, which mstindakan to fetch. + */ + where: mstindakanWhereUniqueInput + } + + + /** + * mstindakan findFirst + */ + export type mstindakanFindFirstArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + /** + * Filter, which mstindakan to fetch. + */ + where?: mstindakanWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mstindakans to fetch. + */ + orderBy?: mstindakanOrderByWithRelationInput | mstindakanOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for mstindakans. + */ + cursor?: mstindakanWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mstindakans from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mstindakans. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of mstindakans. + */ + distinct?: MstindakanScalarFieldEnum | MstindakanScalarFieldEnum[] + } + + + /** + * mstindakan findFirstOrThrow + */ + export type mstindakanFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + /** + * Filter, which mstindakan to fetch. + */ + where?: mstindakanWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mstindakans to fetch. + */ + orderBy?: mstindakanOrderByWithRelationInput | mstindakanOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for mstindakans. + */ + cursor?: mstindakanWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mstindakans from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mstindakans. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of mstindakans. + */ + distinct?: MstindakanScalarFieldEnum | MstindakanScalarFieldEnum[] + } + + + /** + * mstindakan findMany + */ + export type mstindakanFindManyArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + /** + * Filter, which mstindakans to fetch. + */ + where?: mstindakanWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of mstindakans to fetch. + */ + orderBy?: mstindakanOrderByWithRelationInput | mstindakanOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing mstindakans. + */ + cursor?: mstindakanWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` mstindakans from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` mstindakans. + */ + skip?: number + distinct?: MstindakanScalarFieldEnum | MstindakanScalarFieldEnum[] + } + + + /** + * mstindakan create + */ + export type mstindakanCreateArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + /** + * The data needed to create a mstindakan. + */ + data: XOR + } + + + /** + * mstindakan createMany + */ + export type mstindakanCreateManyArgs = { + /** + * The data used to create many mstindakans. + */ + data: mstindakanCreateManyInput | mstindakanCreateManyInput[] + skipDuplicates?: boolean + } + + + /** + * mstindakan update + */ + export type mstindakanUpdateArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + /** + * The data needed to update a mstindakan. + */ + data: XOR + /** + * Choose, which mstindakan to update. + */ + where: mstindakanWhereUniqueInput + } + + + /** + * mstindakan updateMany + */ + export type mstindakanUpdateManyArgs = { + /** + * The data used to update mstindakans. + */ + data: XOR + /** + * Filter which mstindakans to update + */ + where?: mstindakanWhereInput + } + + + /** + * mstindakan upsert + */ + export type mstindakanUpsertArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + /** + * The filter to search for the mstindakan to update in case it exists. + */ + where: mstindakanWhereUniqueInput + /** + * In case the mstindakan found by the `where` argument doesn't exist, create a new mstindakan with this data. + */ + create: XOR + /** + * In case the mstindakan was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + + /** + * mstindakan delete + */ + export type mstindakanDeleteArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + /** + * Filter which mstindakan to delete. + */ + where: mstindakanWhereUniqueInput + } + + + /** + * mstindakan deleteMany + */ + export type mstindakanDeleteManyArgs = { + /** + * Filter which mstindakans to delete + */ + where?: mstindakanWhereInput + } + + + /** + * mstindakan.trtransaksi + */ + export type mstindakan$trtransaksiArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + where?: trtransaksiWhereInput + orderBy?: trtransaksiOrderByWithRelationInput | trtransaksiOrderByWithRelationInput[] + cursor?: trtransaksiWhereUniqueInput + take?: number + skip?: number + distinct?: TrtransaksiScalarFieldEnum | TrtransaksiScalarFieldEnum[] + } + + + /** + * mstindakan without action + */ + export type mstindakanDefaultArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + } + + + + /** + * Model trregistrasi + */ + + export type AggregateTrregistrasi = { + _count: TrregistrasiCountAggregateOutputType | null + _avg: TrregistrasiAvgAggregateOutputType | null + _sum: TrregistrasiSumAggregateOutputType | null + _min: TrregistrasiMinAggregateOutputType | null + _max: TrregistrasiMaxAggregateOutputType | null + } + + export type TrregistrasiAvgAggregateOutputType = { + idregistrasi: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + idpasien: number | null + idasuransi: number | null + idpegawai: number | null + idruangpelayanan: number | null + } + + export type TrregistrasiSumAggregateOutputType = { + idregistrasi: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + idpasien: number | null + idasuransi: number | null + idpegawai: number | null + idruangpelayanan: number | null + } + + export type TrregistrasiMinAggregateOutputType = { + idregistrasi: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + tanggalregistrasi: Date | null + idpasien: number | null + nomorkartuasuransi: string | null + idasuransi: number | null + idpegawai: number | null + idruangpelayanan: number | null + } + + export type TrregistrasiMaxAggregateOutputType = { + idregistrasi: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + tanggalregistrasi: Date | null + idpasien: number | null + nomorkartuasuransi: string | null + idasuransi: number | null + idpegawai: number | null + idruangpelayanan: number | null + } + + export type TrregistrasiCountAggregateOutputType = { + idregistrasi: number + created_at: number + created_by: number + modified_at: number + modified_by: number + deleted_at: number + deleted_by: number + tanggalregistrasi: number + idpasien: number + nomorkartuasuransi: number + idasuransi: number + idpegawai: number + idruangpelayanan: number + _all: number + } + + + export type TrregistrasiAvgAggregateInputType = { + idregistrasi?: true + created_by?: true + modified_by?: true + deleted_by?: true + idpasien?: true + idasuransi?: true + idpegawai?: true + idruangpelayanan?: true + } + + export type TrregistrasiSumAggregateInputType = { + idregistrasi?: true + created_by?: true + modified_by?: true + deleted_by?: true + idpasien?: true + idasuransi?: true + idpegawai?: true + idruangpelayanan?: true + } + + export type TrregistrasiMinAggregateInputType = { + idregistrasi?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + tanggalregistrasi?: true + idpasien?: true + nomorkartuasuransi?: true + idasuransi?: true + idpegawai?: true + idruangpelayanan?: true + } + + export type TrregistrasiMaxAggregateInputType = { + idregistrasi?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + tanggalregistrasi?: true + idpasien?: true + nomorkartuasuransi?: true + idasuransi?: true + idpegawai?: true + idruangpelayanan?: true + } + + export type TrregistrasiCountAggregateInputType = { + idregistrasi?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + tanggalregistrasi?: true + idpasien?: true + nomorkartuasuransi?: true + idasuransi?: true + idpegawai?: true + idruangpelayanan?: true + _all?: true + } + + export type TrregistrasiAggregateArgs = { + /** + * Filter which trregistrasi to aggregate. + */ + where?: trregistrasiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of trregistrasis to fetch. + */ + orderBy?: trregistrasiOrderByWithRelationInput | trregistrasiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: trregistrasiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` trregistrasis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` trregistrasis. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned trregistrasis + **/ + _count?: true | TrregistrasiCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: TrregistrasiAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: TrregistrasiSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: TrregistrasiMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: TrregistrasiMaxAggregateInputType + } + + export type GetTrregistrasiAggregateType = { + [P in keyof T & keyof AggregateTrregistrasi]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type trregistrasiGroupByArgs = { + where?: trregistrasiWhereInput + orderBy?: trregistrasiOrderByWithAggregationInput | trregistrasiOrderByWithAggregationInput[] + by: TrregistrasiScalarFieldEnum[] | TrregistrasiScalarFieldEnum + having?: trregistrasiScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: TrregistrasiCountAggregateInputType | true + _avg?: TrregistrasiAvgAggregateInputType + _sum?: TrregistrasiSumAggregateInputType + _min?: TrregistrasiMinAggregateInputType + _max?: TrregistrasiMaxAggregateInputType + } + + export type TrregistrasiGroupByOutputType = { + idregistrasi: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + tanggalregistrasi: Date | null + idpasien: number | null + nomorkartuasuransi: string | null + idasuransi: number | null + idpegawai: number | null + idruangpelayanan: number | null + _count: TrregistrasiCountAggregateOutputType | null + _avg: TrregistrasiAvgAggregateOutputType | null + _sum: TrregistrasiSumAggregateOutputType | null + _min: TrregistrasiMinAggregateOutputType | null + _max: TrregistrasiMaxAggregateOutputType | null + } + + type GetTrregistrasiGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof TrregistrasiGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type trregistrasiSelect = $Extensions.GetSelect<{ + idregistrasi?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + tanggalregistrasi?: boolean + idpasien?: boolean + nomorkartuasuransi?: boolean + idasuransi?: boolean + idpegawai?: boolean + idruangpelayanan?: boolean + msasuransi?: boolean | trregistrasi$msasuransiArgs + mspasien?: boolean | trregistrasi$mspasienArgs + mspegawai?: boolean | trregistrasi$mspegawaiArgs + msruangpelayanan?: boolean | trregistrasi$msruangpelayananArgs + trtransaksi?: boolean | trregistrasi$trtransaksiArgs + _count?: boolean | TrregistrasiCountOutputTypeDefaultArgs + }, ExtArgs["result"]["trregistrasi"]> + + export type trregistrasiSelectScalar = { + idregistrasi?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + tanggalregistrasi?: boolean + idpasien?: boolean + nomorkartuasuransi?: boolean + idasuransi?: boolean + idpegawai?: boolean + idruangpelayanan?: boolean + } + + export type trregistrasiInclude = { + msasuransi?: boolean | trregistrasi$msasuransiArgs + mspasien?: boolean | trregistrasi$mspasienArgs + mspegawai?: boolean | trregistrasi$mspegawaiArgs + msruangpelayanan?: boolean | trregistrasi$msruangpelayananArgs + trtransaksi?: boolean | trregistrasi$trtransaksiArgs + _count?: boolean | TrregistrasiCountOutputTypeDefaultArgs + } + + + export type $trregistrasiPayload = { + name: "trregistrasi" + objects: { + msasuransi: Prisma.$msasuransiPayload | null + mspasien: Prisma.$mspasienPayload | null + mspegawai: Prisma.$mspegawaiPayload | null + msruangpelayanan: Prisma.$msruangpelayananPayload | null + trtransaksi: Prisma.$trtransaksiPayload[] + } + scalars: $Extensions.GetPayloadResult<{ + idregistrasi: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + tanggalregistrasi: Date | null + idpasien: number | null + nomorkartuasuransi: string | null + idasuransi: number | null + idpegawai: number | null + idruangpelayanan: number | null + }, ExtArgs["result"]["trregistrasi"]> + composites: {} + } + + + type trregistrasiGetPayload = $Result.GetResult + + type trregistrasiCountArgs = + Omit & { + select?: TrregistrasiCountAggregateInputType | true + } + + export interface trregistrasiDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['trregistrasi'], meta: { name: 'trregistrasi' } } + /** + * Find zero or one Trregistrasi that matches the filter. + * @param {trregistrasiFindUniqueArgs} args - Arguments to find a Trregistrasi + * @example + * // Get one Trregistrasi + * const trregistrasi = await prisma.trregistrasi.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUnique>( + args: SelectSubset> + ): Prisma__trregistrasiClient<$Result.GetResult, T, 'findUnique'> | null, null, ExtArgs> + + /** + * Find one Trregistrasi that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {trregistrasiFindUniqueOrThrowArgs} args - Arguments to find a Trregistrasi + * @example + * // Get one Trregistrasi + * const trregistrasi = await prisma.trregistrasi.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUniqueOrThrow>( + args?: SelectSubset> + ): Prisma__trregistrasiClient<$Result.GetResult, T, 'findUniqueOrThrow'>, never, ExtArgs> + + /** + * Find the first Trregistrasi that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trregistrasiFindFirstArgs} args - Arguments to find a Trregistrasi + * @example + * // Get one Trregistrasi + * const trregistrasi = await prisma.trregistrasi.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirst>( + args?: SelectSubset> + ): Prisma__trregistrasiClient<$Result.GetResult, T, 'findFirst'> | null, null, ExtArgs> + + /** + * Find the first Trregistrasi that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trregistrasiFindFirstOrThrowArgs} args - Arguments to find a Trregistrasi + * @example + * // Get one Trregistrasi + * const trregistrasi = await prisma.trregistrasi.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirstOrThrow>( + args?: SelectSubset> + ): Prisma__trregistrasiClient<$Result.GetResult, T, 'findFirstOrThrow'>, never, ExtArgs> + + /** + * Find zero or more Trregistrasis that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trregistrasiFindManyArgs=} args - Arguments to filter and select certain fields only. + * @example + * // Get all Trregistrasis + * const trregistrasis = await prisma.trregistrasi.findMany() + * + * // Get first 10 Trregistrasis + * const trregistrasis = await prisma.trregistrasi.findMany({ take: 10 }) + * + * // Only select the `idregistrasi` + * const trregistrasiWithIdregistrasiOnly = await prisma.trregistrasi.findMany({ select: { idregistrasi: true } }) + * + **/ + findMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'>> + + /** + * Create a Trregistrasi. + * @param {trregistrasiCreateArgs} args - Arguments to create a Trregistrasi. + * @example + * // Create one Trregistrasi + * const Trregistrasi = await prisma.trregistrasi.create({ + * data: { + * // ... data to create a Trregistrasi + * } + * }) + * + **/ + create>( + args: SelectSubset> + ): Prisma__trregistrasiClient<$Result.GetResult, T, 'create'>, never, ExtArgs> + + /** + * Create many Trregistrasis. + * @param {trregistrasiCreateManyArgs} args - Arguments to create many Trregistrasis. + * @example + * // Create many Trregistrasis + * const trregistrasi = await prisma.trregistrasi.createMany({ + * data: { + * // ... provide data here + * } + * }) + * + **/ + createMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Delete a Trregistrasi. + * @param {trregistrasiDeleteArgs} args - Arguments to delete one Trregistrasi. + * @example + * // Delete one Trregistrasi + * const Trregistrasi = await prisma.trregistrasi.delete({ + * where: { + * // ... filter to delete one Trregistrasi + * } + * }) + * + **/ + delete>( + args: SelectSubset> + ): Prisma__trregistrasiClient<$Result.GetResult, T, 'delete'>, never, ExtArgs> + + /** + * Update one Trregistrasi. + * @param {trregistrasiUpdateArgs} args - Arguments to update one Trregistrasi. + * @example + * // Update one Trregistrasi + * const trregistrasi = await prisma.trregistrasi.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + update>( + args: SelectSubset> + ): Prisma__trregistrasiClient<$Result.GetResult, T, 'update'>, never, ExtArgs> + + /** + * Delete zero or more Trregistrasis. + * @param {trregistrasiDeleteManyArgs} args - Arguments to filter Trregistrasis to delete. + * @example + * // Delete a few Trregistrasis + * const { count } = await prisma.trregistrasi.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + **/ + deleteMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Update zero or more Trregistrasis. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trregistrasiUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Trregistrasis + * const trregistrasi = await prisma.trregistrasi.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + updateMany>( + args: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Create or update one Trregistrasi. + * @param {trregistrasiUpsertArgs} args - Arguments to update or create a Trregistrasi. + * @example + * // Update or create a Trregistrasi + * const trregistrasi = await prisma.trregistrasi.upsert({ + * create: { + * // ... data to create a Trregistrasi + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Trregistrasi we want to update + * } + * }) + **/ + upsert>( + args: SelectSubset> + ): Prisma__trregistrasiClient<$Result.GetResult, T, 'upsert'>, never, ExtArgs> + + /** + * Count the number of Trregistrasis. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trregistrasiCountArgs} args - Arguments to filter Trregistrasis to count. + * @example + * // Count the number of Trregistrasis + * const count = await prisma.trregistrasi.count({ + * where: { + * // ... the filter for the Trregistrasis we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Trregistrasi. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {TrregistrasiAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Trregistrasi. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trregistrasiGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends trregistrasiGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: trregistrasiGroupByArgs['orderBy'] } + : { orderBy?: trregistrasiGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetTrregistrasiGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the trregistrasi model + */ + readonly fields: trregistrasiFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for trregistrasi. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__trregistrasiClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: 'PrismaPromise'; + + msasuransi = {}>(args?: Subset>): Prisma__msasuransiClient<$Result.GetResult, T, 'findUniqueOrThrow'> | null, null, ExtArgs>; + + mspasien = {}>(args?: Subset>): Prisma__mspasienClient<$Result.GetResult, T, 'findUniqueOrThrow'> | null, null, ExtArgs>; + + mspegawai = {}>(args?: Subset>): Prisma__mspegawaiClient<$Result.GetResult, T, 'findUniqueOrThrow'> | null, null, ExtArgs>; + + msruangpelayanan = {}>(args?: Subset>): Prisma__msruangpelayananClient<$Result.GetResult, T, 'findUniqueOrThrow'> | null, null, ExtArgs>; + + trtransaksi = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'> | Null>; + + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise; + } + + + + /** + * Fields of the trregistrasi model + */ + interface trregistrasiFieldRefs { + readonly idregistrasi: FieldRef<"trregistrasi", 'Int'> + readonly created_at: FieldRef<"trregistrasi", 'DateTime'> + readonly created_by: FieldRef<"trregistrasi", 'Int'> + readonly modified_at: FieldRef<"trregistrasi", 'DateTime'> + readonly modified_by: FieldRef<"trregistrasi", 'Int'> + readonly deleted_at: FieldRef<"trregistrasi", 'DateTime'> + readonly deleted_by: FieldRef<"trregistrasi", 'Int'> + readonly tanggalregistrasi: FieldRef<"trregistrasi", 'DateTime'> + readonly idpasien: FieldRef<"trregistrasi", 'Int'> + readonly nomorkartuasuransi: FieldRef<"trregistrasi", 'String'> + readonly idasuransi: FieldRef<"trregistrasi", 'Int'> + readonly idpegawai: FieldRef<"trregistrasi", 'Int'> + readonly idruangpelayanan: FieldRef<"trregistrasi", 'Int'> + } + + + // Custom InputTypes + + /** + * trregistrasi findUnique + */ + export type trregistrasiFindUniqueArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + /** + * Filter, which trregistrasi to fetch. + */ + where: trregistrasiWhereUniqueInput + } + + + /** + * trregistrasi findUniqueOrThrow + */ + export type trregistrasiFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + /** + * Filter, which trregistrasi to fetch. + */ + where: trregistrasiWhereUniqueInput + } + + + /** + * trregistrasi findFirst + */ + export type trregistrasiFindFirstArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + /** + * Filter, which trregistrasi to fetch. + */ + where?: trregistrasiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of trregistrasis to fetch. + */ + orderBy?: trregistrasiOrderByWithRelationInput | trregistrasiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for trregistrasis. + */ + cursor?: trregistrasiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` trregistrasis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` trregistrasis. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of trregistrasis. + */ + distinct?: TrregistrasiScalarFieldEnum | TrregistrasiScalarFieldEnum[] + } + + + /** + * trregistrasi findFirstOrThrow + */ + export type trregistrasiFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + /** + * Filter, which trregistrasi to fetch. + */ + where?: trregistrasiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of trregistrasis to fetch. + */ + orderBy?: trregistrasiOrderByWithRelationInput | trregistrasiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for trregistrasis. + */ + cursor?: trregistrasiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` trregistrasis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` trregistrasis. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of trregistrasis. + */ + distinct?: TrregistrasiScalarFieldEnum | TrregistrasiScalarFieldEnum[] + } + + + /** + * trregistrasi findMany + */ + export type trregistrasiFindManyArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + /** + * Filter, which trregistrasis to fetch. + */ + where?: trregistrasiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of trregistrasis to fetch. + */ + orderBy?: trregistrasiOrderByWithRelationInput | trregistrasiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing trregistrasis. + */ + cursor?: trregistrasiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` trregistrasis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` trregistrasis. + */ + skip?: number + distinct?: TrregistrasiScalarFieldEnum | TrregistrasiScalarFieldEnum[] + } + + + /** + * trregistrasi create + */ + export type trregistrasiCreateArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + /** + * The data needed to create a trregistrasi. + */ + data: XOR + } + + + /** + * trregistrasi createMany + */ + export type trregistrasiCreateManyArgs = { + /** + * The data used to create many trregistrasis. + */ + data: trregistrasiCreateManyInput | trregistrasiCreateManyInput[] + skipDuplicates?: boolean + } + + + /** + * trregistrasi update + */ + export type trregistrasiUpdateArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + /** + * The data needed to update a trregistrasi. + */ + data: XOR + /** + * Choose, which trregistrasi to update. + */ + where: trregistrasiWhereUniqueInput + } + + + /** + * trregistrasi updateMany + */ + export type trregistrasiUpdateManyArgs = { + /** + * The data used to update trregistrasis. + */ + data: XOR + /** + * Filter which trregistrasis to update + */ + where?: trregistrasiWhereInput + } + + + /** + * trregistrasi upsert + */ + export type trregistrasiUpsertArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + /** + * The filter to search for the trregistrasi to update in case it exists. + */ + where: trregistrasiWhereUniqueInput + /** + * In case the trregistrasi found by the `where` argument doesn't exist, create a new trregistrasi with this data. + */ + create: XOR + /** + * In case the trregistrasi was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + + /** + * trregistrasi delete + */ + export type trregistrasiDeleteArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + /** + * Filter which trregistrasi to delete. + */ + where: trregistrasiWhereUniqueInput + } + + + /** + * trregistrasi deleteMany + */ + export type trregistrasiDeleteManyArgs = { + /** + * Filter which trregistrasis to delete + */ + where?: trregistrasiWhereInput + } + + + /** + * trregistrasi.msasuransi + */ + export type trregistrasi$msasuransiArgs = { + /** + * Select specific fields to fetch from the msasuransi + */ + select?: msasuransiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msasuransiInclude | null + where?: msasuransiWhereInput + } + + + /** + * trregistrasi.mspasien + */ + export type trregistrasi$mspasienArgs = { + /** + * Select specific fields to fetch from the mspasien + */ + select?: mspasienSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspasienInclude | null + where?: mspasienWhereInput + } + + + /** + * trregistrasi.mspegawai + */ + export type trregistrasi$mspegawaiArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + where?: mspegawaiWhereInput + } + + + /** + * trregistrasi.msruangpelayanan + */ + export type trregistrasi$msruangpelayananArgs = { + /** + * Select specific fields to fetch from the msruangpelayanan + */ + select?: msruangpelayananSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: msruangpelayananInclude | null + where?: msruangpelayananWhereInput + } + + + /** + * trregistrasi.trtransaksi + */ + export type trregistrasi$trtransaksiArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + where?: trtransaksiWhereInput + orderBy?: trtransaksiOrderByWithRelationInput | trtransaksiOrderByWithRelationInput[] + cursor?: trtransaksiWhereUniqueInput + take?: number + skip?: number + distinct?: TrtransaksiScalarFieldEnum | TrtransaksiScalarFieldEnum[] + } + + + /** + * trregistrasi without action + */ + export type trregistrasiDefaultArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + } + + + + /** + * Model trtransaksi + */ + + export type AggregateTrtransaksi = { + _count: TrtransaksiCountAggregateOutputType | null + _avg: TrtransaksiAvgAggregateOutputType | null + _sum: TrtransaksiSumAggregateOutputType | null + _min: TrtransaksiMinAggregateOutputType | null + _max: TrtransaksiMaxAggregateOutputType | null + } + + export type TrtransaksiAvgAggregateOutputType = { + idtransaksi: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + idregistrasi: number | null + idtindakan: number | null + jmltindakan: number | null + idpegawai: number | null + } + + export type TrtransaksiSumAggregateOutputType = { + idtransaksi: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + idregistrasi: number | null + idtindakan: number | null + jmltindakan: number | null + idpegawai: number | null + } + + export type TrtransaksiMinAggregateOutputType = { + idtransaksi: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + idregistrasi: number | null + idtindakan: number | null + jmltindakan: number | null + idpegawai: number | null + } + + export type TrtransaksiMaxAggregateOutputType = { + idtransaksi: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + idregistrasi: number | null + idtindakan: number | null + jmltindakan: number | null + idpegawai: number | null + } + + export type TrtransaksiCountAggregateOutputType = { + idtransaksi: number + created_at: number + created_by: number + modified_at: number + modified_by: number + deleted_at: number + deleted_by: number + idregistrasi: number + idtindakan: number + jmltindakan: number + idpegawai: number + _all: number + } + + + export type TrtransaksiAvgAggregateInputType = { + idtransaksi?: true + created_by?: true + modified_by?: true + deleted_by?: true + idregistrasi?: true + idtindakan?: true + jmltindakan?: true + idpegawai?: true + } + + export type TrtransaksiSumAggregateInputType = { + idtransaksi?: true + created_by?: true + modified_by?: true + deleted_by?: true + idregistrasi?: true + idtindakan?: true + jmltindakan?: true + idpegawai?: true + } + + export type TrtransaksiMinAggregateInputType = { + idtransaksi?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + idregistrasi?: true + idtindakan?: true + jmltindakan?: true + idpegawai?: true + } + + export type TrtransaksiMaxAggregateInputType = { + idtransaksi?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + idregistrasi?: true + idtindakan?: true + jmltindakan?: true + idpegawai?: true + } + + export type TrtransaksiCountAggregateInputType = { + idtransaksi?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + idregistrasi?: true + idtindakan?: true + jmltindakan?: true + idpegawai?: true + _all?: true + } + + export type TrtransaksiAggregateArgs = { + /** + * Filter which trtransaksi to aggregate. + */ + where?: trtransaksiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of trtransaksis to fetch. + */ + orderBy?: trtransaksiOrderByWithRelationInput | trtransaksiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: trtransaksiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` trtransaksis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` trtransaksis. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned trtransaksis + **/ + _count?: true | TrtransaksiCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: TrtransaksiAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: TrtransaksiSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: TrtransaksiMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: TrtransaksiMaxAggregateInputType + } + + export type GetTrtransaksiAggregateType = { + [P in keyof T & keyof AggregateTrtransaksi]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type trtransaksiGroupByArgs = { + where?: trtransaksiWhereInput + orderBy?: trtransaksiOrderByWithAggregationInput | trtransaksiOrderByWithAggregationInput[] + by: TrtransaksiScalarFieldEnum[] | TrtransaksiScalarFieldEnum + having?: trtransaksiScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: TrtransaksiCountAggregateInputType | true + _avg?: TrtransaksiAvgAggregateInputType + _sum?: TrtransaksiSumAggregateInputType + _min?: TrtransaksiMinAggregateInputType + _max?: TrtransaksiMaxAggregateInputType + } + + export type TrtransaksiGroupByOutputType = { + idtransaksi: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + idregistrasi: number | null + idtindakan: number | null + jmltindakan: number | null + idpegawai: number | null + _count: TrtransaksiCountAggregateOutputType | null + _avg: TrtransaksiAvgAggregateOutputType | null + _sum: TrtransaksiSumAggregateOutputType | null + _min: TrtransaksiMinAggregateOutputType | null + _max: TrtransaksiMaxAggregateOutputType | null + } + + type GetTrtransaksiGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof TrtransaksiGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type trtransaksiSelect = $Extensions.GetSelect<{ + idtransaksi?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + idregistrasi?: boolean + idtindakan?: boolean + jmltindakan?: boolean + idpegawai?: boolean + mspegawai?: boolean | trtransaksi$mspegawaiArgs + trregistrasi?: boolean | trtransaksi$trregistrasiArgs + mstindakan?: boolean | trtransaksi$mstindakanArgs + }, ExtArgs["result"]["trtransaksi"]> + + export type trtransaksiSelectScalar = { + idtransaksi?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + idregistrasi?: boolean + idtindakan?: boolean + jmltindakan?: boolean + idpegawai?: boolean + } + + export type trtransaksiInclude = { + mspegawai?: boolean | trtransaksi$mspegawaiArgs + trregistrasi?: boolean | trtransaksi$trregistrasiArgs + mstindakan?: boolean | trtransaksi$mstindakanArgs + } + + + export type $trtransaksiPayload = { + name: "trtransaksi" + objects: { + mspegawai: Prisma.$mspegawaiPayload | null + trregistrasi: Prisma.$trregistrasiPayload | null + mstindakan: Prisma.$mstindakanPayload | null + } + scalars: $Extensions.GetPayloadResult<{ + idtransaksi: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + idregistrasi: number | null + idtindakan: number | null + jmltindakan: number | null + idpegawai: number | null + }, ExtArgs["result"]["trtransaksi"]> + composites: {} + } + + + type trtransaksiGetPayload = $Result.GetResult + + type trtransaksiCountArgs = + Omit & { + select?: TrtransaksiCountAggregateInputType | true + } + + export interface trtransaksiDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['trtransaksi'], meta: { name: 'trtransaksi' } } + /** + * Find zero or one Trtransaksi that matches the filter. + * @param {trtransaksiFindUniqueArgs} args - Arguments to find a Trtransaksi + * @example + * // Get one Trtransaksi + * const trtransaksi = await prisma.trtransaksi.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUnique>( + args: SelectSubset> + ): Prisma__trtransaksiClient<$Result.GetResult, T, 'findUnique'> | null, null, ExtArgs> + + /** + * Find one Trtransaksi that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {trtransaksiFindUniqueOrThrowArgs} args - Arguments to find a Trtransaksi + * @example + * // Get one Trtransaksi + * const trtransaksi = await prisma.trtransaksi.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUniqueOrThrow>( + args?: SelectSubset> + ): Prisma__trtransaksiClient<$Result.GetResult, T, 'findUniqueOrThrow'>, never, ExtArgs> + + /** + * Find the first Trtransaksi that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trtransaksiFindFirstArgs} args - Arguments to find a Trtransaksi + * @example + * // Get one Trtransaksi + * const trtransaksi = await prisma.trtransaksi.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirst>( + args?: SelectSubset> + ): Prisma__trtransaksiClient<$Result.GetResult, T, 'findFirst'> | null, null, ExtArgs> + + /** + * Find the first Trtransaksi that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trtransaksiFindFirstOrThrowArgs} args - Arguments to find a Trtransaksi + * @example + * // Get one Trtransaksi + * const trtransaksi = await prisma.trtransaksi.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirstOrThrow>( + args?: SelectSubset> + ): Prisma__trtransaksiClient<$Result.GetResult, T, 'findFirstOrThrow'>, never, ExtArgs> + + /** + * Find zero or more Trtransaksis that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trtransaksiFindManyArgs=} args - Arguments to filter and select certain fields only. + * @example + * // Get all Trtransaksis + * const trtransaksis = await prisma.trtransaksi.findMany() + * + * // Get first 10 Trtransaksis + * const trtransaksis = await prisma.trtransaksi.findMany({ take: 10 }) + * + * // Only select the `idtransaksi` + * const trtransaksiWithIdtransaksiOnly = await prisma.trtransaksi.findMany({ select: { idtransaksi: true } }) + * + **/ + findMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'>> + + /** + * Create a Trtransaksi. + * @param {trtransaksiCreateArgs} args - Arguments to create a Trtransaksi. + * @example + * // Create one Trtransaksi + * const Trtransaksi = await prisma.trtransaksi.create({ + * data: { + * // ... data to create a Trtransaksi + * } + * }) + * + **/ + create>( + args: SelectSubset> + ): Prisma__trtransaksiClient<$Result.GetResult, T, 'create'>, never, ExtArgs> + + /** + * Create many Trtransaksis. + * @param {trtransaksiCreateManyArgs} args - Arguments to create many Trtransaksis. + * @example + * // Create many Trtransaksis + * const trtransaksi = await prisma.trtransaksi.createMany({ + * data: { + * // ... provide data here + * } + * }) + * + **/ + createMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Delete a Trtransaksi. + * @param {trtransaksiDeleteArgs} args - Arguments to delete one Trtransaksi. + * @example + * // Delete one Trtransaksi + * const Trtransaksi = await prisma.trtransaksi.delete({ + * where: { + * // ... filter to delete one Trtransaksi + * } + * }) + * + **/ + delete>( + args: SelectSubset> + ): Prisma__trtransaksiClient<$Result.GetResult, T, 'delete'>, never, ExtArgs> + + /** + * Update one Trtransaksi. + * @param {trtransaksiUpdateArgs} args - Arguments to update one Trtransaksi. + * @example + * // Update one Trtransaksi + * const trtransaksi = await prisma.trtransaksi.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + update>( + args: SelectSubset> + ): Prisma__trtransaksiClient<$Result.GetResult, T, 'update'>, never, ExtArgs> + + /** + * Delete zero or more Trtransaksis. + * @param {trtransaksiDeleteManyArgs} args - Arguments to filter Trtransaksis to delete. + * @example + * // Delete a few Trtransaksis + * const { count } = await prisma.trtransaksi.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + **/ + deleteMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Update zero or more Trtransaksis. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trtransaksiUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Trtransaksis + * const trtransaksi = await prisma.trtransaksi.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + updateMany>( + args: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Create or update one Trtransaksi. + * @param {trtransaksiUpsertArgs} args - Arguments to update or create a Trtransaksi. + * @example + * // Update or create a Trtransaksi + * const trtransaksi = await prisma.trtransaksi.upsert({ + * create: { + * // ... data to create a Trtransaksi + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Trtransaksi we want to update + * } + * }) + **/ + upsert>( + args: SelectSubset> + ): Prisma__trtransaksiClient<$Result.GetResult, T, 'upsert'>, never, ExtArgs> + + /** + * Count the number of Trtransaksis. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trtransaksiCountArgs} args - Arguments to filter Trtransaksis to count. + * @example + * // Count the number of Trtransaksis + * const count = await prisma.trtransaksi.count({ + * where: { + * // ... the filter for the Trtransaksis we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Trtransaksi. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {TrtransaksiAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Trtransaksi. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {trtransaksiGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends trtransaksiGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: trtransaksiGroupByArgs['orderBy'] } + : { orderBy?: trtransaksiGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetTrtransaksiGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the trtransaksi model + */ + readonly fields: trtransaksiFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for trtransaksi. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__trtransaksiClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: 'PrismaPromise'; + + mspegawai = {}>(args?: Subset>): Prisma__mspegawaiClient<$Result.GetResult, T, 'findUniqueOrThrow'> | null, null, ExtArgs>; + + trregistrasi = {}>(args?: Subset>): Prisma__trregistrasiClient<$Result.GetResult, T, 'findUniqueOrThrow'> | null, null, ExtArgs>; + + mstindakan = {}>(args?: Subset>): Prisma__mstindakanClient<$Result.GetResult, T, 'findUniqueOrThrow'> | null, null, ExtArgs>; + + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise; + } + + + + /** + * Fields of the trtransaksi model + */ + interface trtransaksiFieldRefs { + readonly idtransaksi: FieldRef<"trtransaksi", 'Int'> + readonly created_at: FieldRef<"trtransaksi", 'DateTime'> + readonly created_by: FieldRef<"trtransaksi", 'Int'> + readonly modified_at: FieldRef<"trtransaksi", 'DateTime'> + readonly modified_by: FieldRef<"trtransaksi", 'Int'> + readonly deleted_at: FieldRef<"trtransaksi", 'DateTime'> + readonly deleted_by: FieldRef<"trtransaksi", 'Int'> + readonly idregistrasi: FieldRef<"trtransaksi", 'Int'> + readonly idtindakan: FieldRef<"trtransaksi", 'Int'> + readonly jmltindakan: FieldRef<"trtransaksi", 'Int'> + readonly idpegawai: FieldRef<"trtransaksi", 'Int'> + } + + + // Custom InputTypes + + /** + * trtransaksi findUnique + */ + export type trtransaksiFindUniqueArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + /** + * Filter, which trtransaksi to fetch. + */ + where: trtransaksiWhereUniqueInput + } + + + /** + * trtransaksi findUniqueOrThrow + */ + export type trtransaksiFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + /** + * Filter, which trtransaksi to fetch. + */ + where: trtransaksiWhereUniqueInput + } + + + /** + * trtransaksi findFirst + */ + export type trtransaksiFindFirstArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + /** + * Filter, which trtransaksi to fetch. + */ + where?: trtransaksiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of trtransaksis to fetch. + */ + orderBy?: trtransaksiOrderByWithRelationInput | trtransaksiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for trtransaksis. + */ + cursor?: trtransaksiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` trtransaksis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` trtransaksis. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of trtransaksis. + */ + distinct?: TrtransaksiScalarFieldEnum | TrtransaksiScalarFieldEnum[] + } + + + /** + * trtransaksi findFirstOrThrow + */ + export type trtransaksiFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + /** + * Filter, which trtransaksi to fetch. + */ + where?: trtransaksiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of trtransaksis to fetch. + */ + orderBy?: trtransaksiOrderByWithRelationInput | trtransaksiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for trtransaksis. + */ + cursor?: trtransaksiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` trtransaksis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` trtransaksis. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of trtransaksis. + */ + distinct?: TrtransaksiScalarFieldEnum | TrtransaksiScalarFieldEnum[] + } + + + /** + * trtransaksi findMany + */ + export type trtransaksiFindManyArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + /** + * Filter, which trtransaksis to fetch. + */ + where?: trtransaksiWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of trtransaksis to fetch. + */ + orderBy?: trtransaksiOrderByWithRelationInput | trtransaksiOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing trtransaksis. + */ + cursor?: trtransaksiWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` trtransaksis from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` trtransaksis. + */ + skip?: number + distinct?: TrtransaksiScalarFieldEnum | TrtransaksiScalarFieldEnum[] + } + + + /** + * trtransaksi create + */ + export type trtransaksiCreateArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + /** + * The data needed to create a trtransaksi. + */ + data: XOR + } + + + /** + * trtransaksi createMany + */ + export type trtransaksiCreateManyArgs = { + /** + * The data used to create many trtransaksis. + */ + data: trtransaksiCreateManyInput | trtransaksiCreateManyInput[] + skipDuplicates?: boolean + } + + + /** + * trtransaksi update + */ + export type trtransaksiUpdateArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + /** + * The data needed to update a trtransaksi. + */ + data: XOR + /** + * Choose, which trtransaksi to update. + */ + where: trtransaksiWhereUniqueInput + } + + + /** + * trtransaksi updateMany + */ + export type trtransaksiUpdateManyArgs = { + /** + * The data used to update trtransaksis. + */ + data: XOR + /** + * Filter which trtransaksis to update + */ + where?: trtransaksiWhereInput + } + + + /** + * trtransaksi upsert + */ + export type trtransaksiUpsertArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + /** + * The filter to search for the trtransaksi to update in case it exists. + */ + where: trtransaksiWhereUniqueInput + /** + * In case the trtransaksi found by the `where` argument doesn't exist, create a new trtransaksi with this data. + */ + create: XOR + /** + * In case the trtransaksi was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + + /** + * trtransaksi delete + */ + export type trtransaksiDeleteArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + /** + * Filter which trtransaksi to delete. + */ + where: trtransaksiWhereUniqueInput + } + + + /** + * trtransaksi deleteMany + */ + export type trtransaksiDeleteManyArgs = { + /** + * Filter which trtransaksis to delete + */ + where?: trtransaksiWhereInput + } + + + /** + * trtransaksi.mspegawai + */ + export type trtransaksi$mspegawaiArgs = { + /** + * Select specific fields to fetch from the mspegawai + */ + select?: mspegawaiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mspegawaiInclude | null + where?: mspegawaiWhereInput + } + + + /** + * trtransaksi.trregistrasi + */ + export type trtransaksi$trregistrasiArgs = { + /** + * Select specific fields to fetch from the trregistrasi + */ + select?: trregistrasiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trregistrasiInclude | null + where?: trregistrasiWhereInput + } + + + /** + * trtransaksi.mstindakan + */ + export type trtransaksi$mstindakanArgs = { + /** + * Select specific fields to fetch from the mstindakan + */ + select?: mstindakanSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: mstindakanInclude | null + where?: mstindakanWhereInput + } + + + /** + * trtransaksi without action + */ + export type trtransaksiDefaultArgs = { + /** + * Select specific fields to fetch from the trtransaksi + */ + select?: trtransaksiSelect | null + /** + * Choose, which related nodes to fetch as well. + */ + include?: trtransaksiInclude | null + } + + + + /** + * Model msusers + */ + + export type AggregateMsusers = { + _count: MsusersCountAggregateOutputType | null + _avg: MsusersAvgAggregateOutputType | null + _sum: MsusersSumAggregateOutputType | null + _min: MsusersMinAggregateOutputType | null + _max: MsusersMaxAggregateOutputType | null + } + + export type MsusersAvgAggregateOutputType = { + user_id: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + } + + export type MsusersSumAggregateOutputType = { + user_id: number | null + created_by: number | null + modified_by: number | null + deleted_by: number | null + } + + export type MsusersMinAggregateOutputType = { + user_id: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + username: string | null + password: string | null + full_name: string | null + email: string | null + is_active: boolean | null + } + + export type MsusersMaxAggregateOutputType = { + user_id: number | null + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + username: string | null + password: string | null + full_name: string | null + email: string | null + is_active: boolean | null + } + + export type MsusersCountAggregateOutputType = { + user_id: number + created_at: number + created_by: number + modified_at: number + modified_by: number + deleted_at: number + deleted_by: number + username: number + password: number + full_name: number + email: number + is_active: number + _all: number + } + + + export type MsusersAvgAggregateInputType = { + user_id?: true + created_by?: true + modified_by?: true + deleted_by?: true + } + + export type MsusersSumAggregateInputType = { + user_id?: true + created_by?: true + modified_by?: true + deleted_by?: true + } + + export type MsusersMinAggregateInputType = { + user_id?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + username?: true + password?: true + full_name?: true + email?: true + is_active?: true + } + + export type MsusersMaxAggregateInputType = { + user_id?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + username?: true + password?: true + full_name?: true + email?: true + is_active?: true + } + + export type MsusersCountAggregateInputType = { + user_id?: true + created_at?: true + created_by?: true + modified_at?: true + modified_by?: true + deleted_at?: true + deleted_by?: true + username?: true + password?: true + full_name?: true + email?: true + is_active?: true + _all?: true + } + + export type MsusersAggregateArgs = { + /** + * Filter which msusers to aggregate. + */ + where?: msusersWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msusers to fetch. + */ + orderBy?: msusersOrderByWithRelationInput | msusersOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: msusersWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msusers from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msusers. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned msusers + **/ + _count?: true | MsusersCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: MsusersAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: MsusersSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: MsusersMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: MsusersMaxAggregateInputType + } + + export type GetMsusersAggregateType = { + [P in keyof T & keyof AggregateMsusers]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type msusersGroupByArgs = { + where?: msusersWhereInput + orderBy?: msusersOrderByWithAggregationInput | msusersOrderByWithAggregationInput[] + by: MsusersScalarFieldEnum[] | MsusersScalarFieldEnum + having?: msusersScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: MsusersCountAggregateInputType | true + _avg?: MsusersAvgAggregateInputType + _sum?: MsusersSumAggregateInputType + _min?: MsusersMinAggregateInputType + _max?: MsusersMaxAggregateInputType + } + + export type MsusersGroupByOutputType = { + user_id: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + username: string + password: string + full_name: string | null + email: string | null + is_active: boolean | null + _count: MsusersCountAggregateOutputType | null + _avg: MsusersAvgAggregateOutputType | null + _sum: MsusersSumAggregateOutputType | null + _min: MsusersMinAggregateOutputType | null + _max: MsusersMaxAggregateOutputType | null + } + + type GetMsusersGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof MsusersGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type msusersSelect = $Extensions.GetSelect<{ + user_id?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + username?: boolean + password?: boolean + full_name?: boolean + email?: boolean + is_active?: boolean + }, ExtArgs["result"]["msusers"]> + + export type msusersSelectScalar = { + user_id?: boolean + created_at?: boolean + created_by?: boolean + modified_at?: boolean + modified_by?: boolean + deleted_at?: boolean + deleted_by?: boolean + username?: boolean + password?: boolean + full_name?: boolean + email?: boolean + is_active?: boolean + } + + + export type $msusersPayload = { + name: "msusers" + objects: {} + scalars: $Extensions.GetPayloadResult<{ + user_id: number + created_at: Date | null + created_by: number | null + modified_at: Date | null + modified_by: number | null + deleted_at: Date | null + deleted_by: number | null + username: string + password: string + full_name: string | null + email: string | null + is_active: boolean | null + }, ExtArgs["result"]["msusers"]> + composites: {} + } + + + type msusersGetPayload = $Result.GetResult + + type msusersCountArgs = + Omit & { + select?: MsusersCountAggregateInputType | true + } + + export interface msusersDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['msusers'], meta: { name: 'msusers' } } + /** + * Find zero or one Msusers that matches the filter. + * @param {msusersFindUniqueArgs} args - Arguments to find a Msusers + * @example + * // Get one Msusers + * const msusers = await prisma.msusers.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUnique>( + args: SelectSubset> + ): Prisma__msusersClient<$Result.GetResult, T, 'findUnique'> | null, null, ExtArgs> + + /** + * Find one Msusers that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {msusersFindUniqueOrThrowArgs} args - Arguments to find a Msusers + * @example + * // Get one Msusers + * const msusers = await prisma.msusers.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findUniqueOrThrow>( + args?: SelectSubset> + ): Prisma__msusersClient<$Result.GetResult, T, 'findUniqueOrThrow'>, never, ExtArgs> + + /** + * Find the first Msusers that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msusersFindFirstArgs} args - Arguments to find a Msusers + * @example + * // Get one Msusers + * const msusers = await prisma.msusers.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirst>( + args?: SelectSubset> + ): Prisma__msusersClient<$Result.GetResult, T, 'findFirst'> | null, null, ExtArgs> + + /** + * Find the first Msusers that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msusersFindFirstOrThrowArgs} args - Arguments to find a Msusers + * @example + * // Get one Msusers + * const msusers = await prisma.msusers.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + **/ + findFirstOrThrow>( + args?: SelectSubset> + ): Prisma__msusersClient<$Result.GetResult, T, 'findFirstOrThrow'>, never, ExtArgs> + + /** + * Find zero or more Msusers that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msusersFindManyArgs=} args - Arguments to filter and select certain fields only. + * @example + * // Get all Msusers + * const msusers = await prisma.msusers.findMany() + * + * // Get first 10 Msusers + * const msusers = await prisma.msusers.findMany({ take: 10 }) + * + * // Only select the `user_id` + * const msusersWithUser_idOnly = await prisma.msusers.findMany({ select: { user_id: true } }) + * + **/ + findMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise<$Result.GetResult, T, 'findMany'>> + + /** + * Create a Msusers. + * @param {msusersCreateArgs} args - Arguments to create a Msusers. + * @example + * // Create one Msusers + * const Msusers = await prisma.msusers.create({ + * data: { + * // ... data to create a Msusers + * } + * }) + * + **/ + create>( + args: SelectSubset> + ): Prisma__msusersClient<$Result.GetResult, T, 'create'>, never, ExtArgs> + + /** + * Create many Msusers. + * @param {msusersCreateManyArgs} args - Arguments to create many Msusers. + * @example + * // Create many Msusers + * const msusers = await prisma.msusers.createMany({ + * data: { + * // ... provide data here + * } + * }) + * + **/ + createMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Delete a Msusers. + * @param {msusersDeleteArgs} args - Arguments to delete one Msusers. + * @example + * // Delete one Msusers + * const Msusers = await prisma.msusers.delete({ + * where: { + * // ... filter to delete one Msusers + * } + * }) + * + **/ + delete>( + args: SelectSubset> + ): Prisma__msusersClient<$Result.GetResult, T, 'delete'>, never, ExtArgs> + + /** + * Update one Msusers. + * @param {msusersUpdateArgs} args - Arguments to update one Msusers. + * @example + * // Update one Msusers + * const msusers = await prisma.msusers.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + update>( + args: SelectSubset> + ): Prisma__msusersClient<$Result.GetResult, T, 'update'>, never, ExtArgs> + + /** + * Delete zero or more Msusers. + * @param {msusersDeleteManyArgs} args - Arguments to filter Msusers to delete. + * @example + * // Delete a few Msusers + * const { count } = await prisma.msusers.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + **/ + deleteMany>( + args?: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Update zero or more Msusers. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msusersUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Msusers + * const msusers = await prisma.msusers.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + **/ + updateMany>( + args: SelectSubset> + ): Prisma.PrismaPromise + + /** + * Create or update one Msusers. + * @param {msusersUpsertArgs} args - Arguments to update or create a Msusers. + * @example + * // Update or create a Msusers + * const msusers = await prisma.msusers.upsert({ + * create: { + * // ... data to create a Msusers + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Msusers we want to update + * } + * }) + **/ + upsert>( + args: SelectSubset> + ): Prisma__msusersClient<$Result.GetResult, T, 'upsert'>, never, ExtArgs> + + /** + * Count the number of Msusers. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msusersCountArgs} args - Arguments to filter Msusers to count. + * @example + * // Count the number of Msusers + * const count = await prisma.msusers.count({ + * where: { + * // ... the filter for the Msusers we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Msusers. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {MsusersAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Msusers. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {msusersGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends msusersGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: msusersGroupByArgs['orderBy'] } + : { orderBy?: msusersGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetMsusersGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the msusers model + */ + readonly fields: msusersFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for msusers. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__msusersClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: 'PrismaPromise'; + + + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise; + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise; + } + + + + /** + * Fields of the msusers model + */ + interface msusersFieldRefs { + readonly user_id: FieldRef<"msusers", 'Int'> + readonly created_at: FieldRef<"msusers", 'DateTime'> + readonly created_by: FieldRef<"msusers", 'Int'> + readonly modified_at: FieldRef<"msusers", 'DateTime'> + readonly modified_by: FieldRef<"msusers", 'Int'> + readonly deleted_at: FieldRef<"msusers", 'DateTime'> + readonly deleted_by: FieldRef<"msusers", 'Int'> + readonly username: FieldRef<"msusers", 'String'> + readonly password: FieldRef<"msusers", 'String'> + readonly full_name: FieldRef<"msusers", 'String'> + readonly email: FieldRef<"msusers", 'String'> + readonly is_active: FieldRef<"msusers", 'Boolean'> + } + + + // Custom InputTypes + + /** + * msusers findUnique + */ + export type msusersFindUniqueArgs = { + /** + * Select specific fields to fetch from the msusers + */ + select?: msusersSelect | null + /** + * Filter, which msusers to fetch. + */ + where: msusersWhereUniqueInput + } + + + /** + * msusers findUniqueOrThrow + */ + export type msusersFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the msusers + */ + select?: msusersSelect | null + /** + * Filter, which msusers to fetch. + */ + where: msusersWhereUniqueInput + } + + + /** + * msusers findFirst + */ + export type msusersFindFirstArgs = { + /** + * Select specific fields to fetch from the msusers + */ + select?: msusersSelect | null + /** + * Filter, which msusers to fetch. + */ + where?: msusersWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msusers to fetch. + */ + orderBy?: msusersOrderByWithRelationInput | msusersOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for msusers. + */ + cursor?: msusersWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msusers from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msusers. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of msusers. + */ + distinct?: MsusersScalarFieldEnum | MsusersScalarFieldEnum[] + } + + + /** + * msusers findFirstOrThrow + */ + export type msusersFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the msusers + */ + select?: msusersSelect | null + /** + * Filter, which msusers to fetch. + */ + where?: msusersWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msusers to fetch. + */ + orderBy?: msusersOrderByWithRelationInput | msusersOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for msusers. + */ + cursor?: msusersWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msusers from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msusers. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of msusers. + */ + distinct?: MsusersScalarFieldEnum | MsusersScalarFieldEnum[] + } + + + /** + * msusers findMany + */ + export type msusersFindManyArgs = { + /** + * Select specific fields to fetch from the msusers + */ + select?: msusersSelect | null + /** + * Filter, which msusers to fetch. + */ + where?: msusersWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of msusers to fetch. + */ + orderBy?: msusersOrderByWithRelationInput | msusersOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing msusers. + */ + cursor?: msusersWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` msusers from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` msusers. + */ + skip?: number + distinct?: MsusersScalarFieldEnum | MsusersScalarFieldEnum[] + } + + + /** + * msusers create + */ + export type msusersCreateArgs = { + /** + * Select specific fields to fetch from the msusers + */ + select?: msusersSelect | null + /** + * The data needed to create a msusers. + */ + data: XOR + } + + + /** + * msusers createMany + */ + export type msusersCreateManyArgs = { + /** + * The data used to create many msusers. + */ + data: msusersCreateManyInput | msusersCreateManyInput[] + skipDuplicates?: boolean + } + + + /** + * msusers update + */ + export type msusersUpdateArgs = { + /** + * Select specific fields to fetch from the msusers + */ + select?: msusersSelect | null + /** + * The data needed to update a msusers. + */ + data: XOR + /** + * Choose, which msusers to update. + */ + where: msusersWhereUniqueInput + } + + + /** + * msusers updateMany + */ + export type msusersUpdateManyArgs = { + /** + * The data used to update msusers. + */ + data: XOR + /** + * Filter which msusers to update + */ + where?: msusersWhereInput + } + + + /** + * msusers upsert + */ + export type msusersUpsertArgs = { + /** + * Select specific fields to fetch from the msusers + */ + select?: msusersSelect | null + /** + * The filter to search for the msusers to update in case it exists. + */ + where: msusersWhereUniqueInput + /** + * In case the msusers found by the `where` argument doesn't exist, create a new msusers with this data. + */ + create: XOR + /** + * In case the msusers was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + + /** + * msusers delete + */ + export type msusersDeleteArgs = { + /** + * Select specific fields to fetch from the msusers + */ + select?: msusersSelect | null + /** + * Filter which msusers to delete. + */ + where: msusersWhereUniqueInput + } + + + /** + * msusers deleteMany + */ + export type msusersDeleteManyArgs = { + /** + * Filter which msusers to delete + */ + where?: msusersWhereInput + } + + + /** + * msusers without action + */ + export type msusersDefaultArgs = { + /** + * Select specific fields to fetch from the msusers + */ + select?: msusersSelect | null + } + + + + /** + * Enums + */ + + export const TransactionIsolationLevel: { + ReadUncommitted: 'ReadUncommitted', + ReadCommitted: 'ReadCommitted', + RepeatableRead: 'RepeatableRead', + Serializable: 'Serializable' + }; + + export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] + + + export const MsasuransiScalarFieldEnum: { + idasuransi: 'idasuransi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namaasuransi: 'namaasuransi' + }; + + export type MsasuransiScalarFieldEnum = (typeof MsasuransiScalarFieldEnum)[keyof typeof MsasuransiScalarFieldEnum] + + + export const MspasienScalarFieldEnum: { + idpasien: 'idpasien', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + mrpasien: 'mrpasien', + namapasien: 'namapasien', + tanggallahir: 'tanggallahir', + jeniskelamin: 'jeniskelamin' + }; + + export type MspasienScalarFieldEnum = (typeof MspasienScalarFieldEnum)[keyof typeof MspasienScalarFieldEnum] + + + export const MspegawaiScalarFieldEnum: { + idpegawai: 'idpegawai', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namapegawai: 'namapegawai' + }; + + export type MspegawaiScalarFieldEnum = (typeof MspegawaiScalarFieldEnum)[keyof typeof MspegawaiScalarFieldEnum] + + + export const MsruangpelayananScalarFieldEnum: { + idruangpelayanan: 'idruangpelayanan', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namaruangpelayanan: 'namaruangpelayanan' + }; + + export type MsruangpelayananScalarFieldEnum = (typeof MsruangpelayananScalarFieldEnum)[keyof typeof MsruangpelayananScalarFieldEnum] + + + export const MstindakanScalarFieldEnum: { + idtindakan: 'idtindakan', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namatindakan: 'namatindakan', + tariftindakan: 'tariftindakan' + }; + + export type MstindakanScalarFieldEnum = (typeof MstindakanScalarFieldEnum)[keyof typeof MstindakanScalarFieldEnum] + + + export const TrregistrasiScalarFieldEnum: { + idregistrasi: 'idregistrasi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + tanggalregistrasi: 'tanggalregistrasi', + idpasien: 'idpasien', + nomorkartuasuransi: 'nomorkartuasuransi', + idasuransi: 'idasuransi', + idpegawai: 'idpegawai', + idruangpelayanan: 'idruangpelayanan' + }; + + export type TrregistrasiScalarFieldEnum = (typeof TrregistrasiScalarFieldEnum)[keyof typeof TrregistrasiScalarFieldEnum] + + + export const TrtransaksiScalarFieldEnum: { + idtransaksi: 'idtransaksi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + idregistrasi: 'idregistrasi', + idtindakan: 'idtindakan', + jmltindakan: 'jmltindakan', + idpegawai: 'idpegawai' + }; + + export type TrtransaksiScalarFieldEnum = (typeof TrtransaksiScalarFieldEnum)[keyof typeof TrtransaksiScalarFieldEnum] + + + export const MsusersScalarFieldEnum: { + user_id: 'user_id', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + username: 'username', + password: 'password', + full_name: 'full_name', + email: 'email', + is_active: 'is_active' + }; + + export type MsusersScalarFieldEnum = (typeof MsusersScalarFieldEnum)[keyof typeof MsusersScalarFieldEnum] + + + export const SortOrder: { + asc: 'asc', + desc: 'desc' + }; + + export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] + + + export const QueryMode: { + default: 'default', + insensitive: 'insensitive' + }; + + export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] + + + export const NullsOrder: { + first: 'first', + last: 'last' + }; + + export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + + + /** + * Field references + */ + + + /** + * Reference to a field of type 'Int' + */ + export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'> + + + + /** + * Reference to a field of type 'Int[]' + */ + export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'> + + + + /** + * Reference to a field of type 'DateTime' + */ + export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'> + + + + /** + * Reference to a field of type 'DateTime[]' + */ + export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime[]'> + + + + /** + * Reference to a field of type 'String' + */ + export type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'> + + + + /** + * Reference to a field of type 'String[]' + */ + export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String[]'> + + + + /** + * Reference to a field of type 'Decimal' + */ + export type DecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal'> + + + + /** + * Reference to a field of type 'Decimal[]' + */ + export type ListDecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal[]'> + + + + /** + * Reference to a field of type 'Boolean' + */ + export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'> + + + + /** + * Reference to a field of type 'Float' + */ + export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'> + + + + /** + * Reference to a field of type 'Float[]' + */ + export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'> + + /** + * Deep Input Types + */ + + + export type msasuransiWhereInput = { + AND?: msasuransiWhereInput | msasuransiWhereInput[] + OR?: msasuransiWhereInput[] + NOT?: msasuransiWhereInput | msasuransiWhereInput[] + idasuransi?: IntFilter<"msasuransi"> | number + created_at?: DateTimeNullableFilter<"msasuransi"> | Date | string | null + created_by?: IntNullableFilter<"msasuransi"> | number | null + modified_at?: DateTimeNullableFilter<"msasuransi"> | Date | string | null + modified_by?: IntNullableFilter<"msasuransi"> | number | null + deleted_at?: DateTimeNullableFilter<"msasuransi"> | Date | string | null + deleted_by?: IntNullableFilter<"msasuransi"> | number | null + namaasuransi?: StringNullableFilter<"msasuransi"> | string | null + trregistrasi?: TrregistrasiListRelationFilter + } + + export type msasuransiOrderByWithRelationInput = { + idasuransi?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + namaasuransi?: SortOrderInput | SortOrder + trregistrasi?: trregistrasiOrderByRelationAggregateInput + } + + export type msasuransiWhereUniqueInput = Prisma.AtLeast<{ + idasuransi?: number + AND?: msasuransiWhereInput | msasuransiWhereInput[] + OR?: msasuransiWhereInput[] + NOT?: msasuransiWhereInput | msasuransiWhereInput[] + created_at?: DateTimeNullableFilter<"msasuransi"> | Date | string | null + created_by?: IntNullableFilter<"msasuransi"> | number | null + modified_at?: DateTimeNullableFilter<"msasuransi"> | Date | string | null + modified_by?: IntNullableFilter<"msasuransi"> | number | null + deleted_at?: DateTimeNullableFilter<"msasuransi"> | Date | string | null + deleted_by?: IntNullableFilter<"msasuransi"> | number | null + namaasuransi?: StringNullableFilter<"msasuransi"> | string | null + trregistrasi?: TrregistrasiListRelationFilter + }, "idasuransi"> + + export type msasuransiOrderByWithAggregationInput = { + idasuransi?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + namaasuransi?: SortOrderInput | SortOrder + _count?: msasuransiCountOrderByAggregateInput + _avg?: msasuransiAvgOrderByAggregateInput + _max?: msasuransiMaxOrderByAggregateInput + _min?: msasuransiMinOrderByAggregateInput + _sum?: msasuransiSumOrderByAggregateInput + } + + export type msasuransiScalarWhereWithAggregatesInput = { + AND?: msasuransiScalarWhereWithAggregatesInput | msasuransiScalarWhereWithAggregatesInput[] + OR?: msasuransiScalarWhereWithAggregatesInput[] + NOT?: msasuransiScalarWhereWithAggregatesInput | msasuransiScalarWhereWithAggregatesInput[] + idasuransi?: IntWithAggregatesFilter<"msasuransi"> | number + created_at?: DateTimeNullableWithAggregatesFilter<"msasuransi"> | Date | string | null + created_by?: IntNullableWithAggregatesFilter<"msasuransi"> | number | null + modified_at?: DateTimeNullableWithAggregatesFilter<"msasuransi"> | Date | string | null + modified_by?: IntNullableWithAggregatesFilter<"msasuransi"> | number | null + deleted_at?: DateTimeNullableWithAggregatesFilter<"msasuransi"> | Date | string | null + deleted_by?: IntNullableWithAggregatesFilter<"msasuransi"> | number | null + namaasuransi?: StringNullableWithAggregatesFilter<"msasuransi"> | string | null + } + + export type mspasienWhereInput = { + AND?: mspasienWhereInput | mspasienWhereInput[] + OR?: mspasienWhereInput[] + NOT?: mspasienWhereInput | mspasienWhereInput[] + idpasien?: IntFilter<"mspasien"> | number + created_at?: DateTimeNullableFilter<"mspasien"> | Date | string | null + created_by?: IntNullableFilter<"mspasien"> | number | null + modified_at?: DateTimeNullableFilter<"mspasien"> | Date | string | null + modified_by?: IntNullableFilter<"mspasien"> | number | null + deleted_at?: DateTimeNullableFilter<"mspasien"> | Date | string | null + deleted_by?: IntNullableFilter<"mspasien"> | number | null + mrpasien?: StringNullableFilter<"mspasien"> | string | null + namapasien?: StringNullableFilter<"mspasien"> | string | null + tanggallahir?: DateTimeNullableFilter<"mspasien"> | Date | string | null + jeniskelamin?: StringNullableFilter<"mspasien"> | string | null + trregistrasi?: TrregistrasiListRelationFilter + } + + export type mspasienOrderByWithRelationInput = { + idpasien?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + mrpasien?: SortOrderInput | SortOrder + namapasien?: SortOrderInput | SortOrder + tanggallahir?: SortOrderInput | SortOrder + jeniskelamin?: SortOrderInput | SortOrder + trregistrasi?: trregistrasiOrderByRelationAggregateInput + } + + export type mspasienWhereUniqueInput = Prisma.AtLeast<{ + idpasien?: number + AND?: mspasienWhereInput | mspasienWhereInput[] + OR?: mspasienWhereInput[] + NOT?: mspasienWhereInput | mspasienWhereInput[] + created_at?: DateTimeNullableFilter<"mspasien"> | Date | string | null + created_by?: IntNullableFilter<"mspasien"> | number | null + modified_at?: DateTimeNullableFilter<"mspasien"> | Date | string | null + modified_by?: IntNullableFilter<"mspasien"> | number | null + deleted_at?: DateTimeNullableFilter<"mspasien"> | Date | string | null + deleted_by?: IntNullableFilter<"mspasien"> | number | null + mrpasien?: StringNullableFilter<"mspasien"> | string | null + namapasien?: StringNullableFilter<"mspasien"> | string | null + tanggallahir?: DateTimeNullableFilter<"mspasien"> | Date | string | null + jeniskelamin?: StringNullableFilter<"mspasien"> | string | null + trregistrasi?: TrregistrasiListRelationFilter + }, "idpasien"> + + export type mspasienOrderByWithAggregationInput = { + idpasien?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + mrpasien?: SortOrderInput | SortOrder + namapasien?: SortOrderInput | SortOrder + tanggallahir?: SortOrderInput | SortOrder + jeniskelamin?: SortOrderInput | SortOrder + _count?: mspasienCountOrderByAggregateInput + _avg?: mspasienAvgOrderByAggregateInput + _max?: mspasienMaxOrderByAggregateInput + _min?: mspasienMinOrderByAggregateInput + _sum?: mspasienSumOrderByAggregateInput + } + + export type mspasienScalarWhereWithAggregatesInput = { + AND?: mspasienScalarWhereWithAggregatesInput | mspasienScalarWhereWithAggregatesInput[] + OR?: mspasienScalarWhereWithAggregatesInput[] + NOT?: mspasienScalarWhereWithAggregatesInput | mspasienScalarWhereWithAggregatesInput[] + idpasien?: IntWithAggregatesFilter<"mspasien"> | number + created_at?: DateTimeNullableWithAggregatesFilter<"mspasien"> | Date | string | null + created_by?: IntNullableWithAggregatesFilter<"mspasien"> | number | null + modified_at?: DateTimeNullableWithAggregatesFilter<"mspasien"> | Date | string | null + modified_by?: IntNullableWithAggregatesFilter<"mspasien"> | number | null + deleted_at?: DateTimeNullableWithAggregatesFilter<"mspasien"> | Date | string | null + deleted_by?: IntNullableWithAggregatesFilter<"mspasien"> | number | null + mrpasien?: StringNullableWithAggregatesFilter<"mspasien"> | string | null + namapasien?: StringNullableWithAggregatesFilter<"mspasien"> | string | null + tanggallahir?: DateTimeNullableWithAggregatesFilter<"mspasien"> | Date | string | null + jeniskelamin?: StringNullableWithAggregatesFilter<"mspasien"> | string | null + } + + export type mspegawaiWhereInput = { + AND?: mspegawaiWhereInput | mspegawaiWhereInput[] + OR?: mspegawaiWhereInput[] + NOT?: mspegawaiWhereInput | mspegawaiWhereInput[] + idpegawai?: IntFilter<"mspegawai"> | number + created_at?: DateTimeNullableFilter<"mspegawai"> | Date | string | null + created_by?: IntNullableFilter<"mspegawai"> | number | null + modified_at?: DateTimeNullableFilter<"mspegawai"> | Date | string | null + modified_by?: IntNullableFilter<"mspegawai"> | number | null + deleted_at?: DateTimeNullableFilter<"mspegawai"> | Date | string | null + deleted_by?: IntNullableFilter<"mspegawai"> | number | null + namapegawai?: StringNullableFilter<"mspegawai"> | string | null + trregistrasi?: TrregistrasiListRelationFilter + trtransaksi?: TrtransaksiListRelationFilter + } + + export type mspegawaiOrderByWithRelationInput = { + idpegawai?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + namapegawai?: SortOrderInput | SortOrder + trregistrasi?: trregistrasiOrderByRelationAggregateInput + trtransaksi?: trtransaksiOrderByRelationAggregateInput + } + + export type mspegawaiWhereUniqueInput = Prisma.AtLeast<{ + idpegawai?: number + AND?: mspegawaiWhereInput | mspegawaiWhereInput[] + OR?: mspegawaiWhereInput[] + NOT?: mspegawaiWhereInput | mspegawaiWhereInput[] + created_at?: DateTimeNullableFilter<"mspegawai"> | Date | string | null + created_by?: IntNullableFilter<"mspegawai"> | number | null + modified_at?: DateTimeNullableFilter<"mspegawai"> | Date | string | null + modified_by?: IntNullableFilter<"mspegawai"> | number | null + deleted_at?: DateTimeNullableFilter<"mspegawai"> | Date | string | null + deleted_by?: IntNullableFilter<"mspegawai"> | number | null + namapegawai?: StringNullableFilter<"mspegawai"> | string | null + trregistrasi?: TrregistrasiListRelationFilter + trtransaksi?: TrtransaksiListRelationFilter + }, "idpegawai"> + + export type mspegawaiOrderByWithAggregationInput = { + idpegawai?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + namapegawai?: SortOrderInput | SortOrder + _count?: mspegawaiCountOrderByAggregateInput + _avg?: mspegawaiAvgOrderByAggregateInput + _max?: mspegawaiMaxOrderByAggregateInput + _min?: mspegawaiMinOrderByAggregateInput + _sum?: mspegawaiSumOrderByAggregateInput + } + + export type mspegawaiScalarWhereWithAggregatesInput = { + AND?: mspegawaiScalarWhereWithAggregatesInput | mspegawaiScalarWhereWithAggregatesInput[] + OR?: mspegawaiScalarWhereWithAggregatesInput[] + NOT?: mspegawaiScalarWhereWithAggregatesInput | mspegawaiScalarWhereWithAggregatesInput[] + idpegawai?: IntWithAggregatesFilter<"mspegawai"> | number + created_at?: DateTimeNullableWithAggregatesFilter<"mspegawai"> | Date | string | null + created_by?: IntNullableWithAggregatesFilter<"mspegawai"> | number | null + modified_at?: DateTimeNullableWithAggregatesFilter<"mspegawai"> | Date | string | null + modified_by?: IntNullableWithAggregatesFilter<"mspegawai"> | number | null + deleted_at?: DateTimeNullableWithAggregatesFilter<"mspegawai"> | Date | string | null + deleted_by?: IntNullableWithAggregatesFilter<"mspegawai"> | number | null + namapegawai?: StringNullableWithAggregatesFilter<"mspegawai"> | string | null + } + + export type msruangpelayananWhereInput = { + AND?: msruangpelayananWhereInput | msruangpelayananWhereInput[] + OR?: msruangpelayananWhereInput[] + NOT?: msruangpelayananWhereInput | msruangpelayananWhereInput[] + idruangpelayanan?: IntFilter<"msruangpelayanan"> | number + created_at?: DateTimeNullableFilter<"msruangpelayanan"> | Date | string | null + created_by?: IntNullableFilter<"msruangpelayanan"> | number | null + modified_at?: DateTimeNullableFilter<"msruangpelayanan"> | Date | string | null + modified_by?: IntNullableFilter<"msruangpelayanan"> | number | null + deleted_at?: DateTimeNullableFilter<"msruangpelayanan"> | Date | string | null + deleted_by?: IntNullableFilter<"msruangpelayanan"> | number | null + namaruangpelayanan?: StringNullableFilter<"msruangpelayanan"> | string | null + trregistrasi?: TrregistrasiListRelationFilter + } + + export type msruangpelayananOrderByWithRelationInput = { + idruangpelayanan?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + namaruangpelayanan?: SortOrderInput | SortOrder + trregistrasi?: trregistrasiOrderByRelationAggregateInput + } + + export type msruangpelayananWhereUniqueInput = Prisma.AtLeast<{ + idruangpelayanan?: number + AND?: msruangpelayananWhereInput | msruangpelayananWhereInput[] + OR?: msruangpelayananWhereInput[] + NOT?: msruangpelayananWhereInput | msruangpelayananWhereInput[] + created_at?: DateTimeNullableFilter<"msruangpelayanan"> | Date | string | null + created_by?: IntNullableFilter<"msruangpelayanan"> | number | null + modified_at?: DateTimeNullableFilter<"msruangpelayanan"> | Date | string | null + modified_by?: IntNullableFilter<"msruangpelayanan"> | number | null + deleted_at?: DateTimeNullableFilter<"msruangpelayanan"> | Date | string | null + deleted_by?: IntNullableFilter<"msruangpelayanan"> | number | null + namaruangpelayanan?: StringNullableFilter<"msruangpelayanan"> | string | null + trregistrasi?: TrregistrasiListRelationFilter + }, "idruangpelayanan"> + + export type msruangpelayananOrderByWithAggregationInput = { + idruangpelayanan?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + namaruangpelayanan?: SortOrderInput | SortOrder + _count?: msruangpelayananCountOrderByAggregateInput + _avg?: msruangpelayananAvgOrderByAggregateInput + _max?: msruangpelayananMaxOrderByAggregateInput + _min?: msruangpelayananMinOrderByAggregateInput + _sum?: msruangpelayananSumOrderByAggregateInput + } + + export type msruangpelayananScalarWhereWithAggregatesInput = { + AND?: msruangpelayananScalarWhereWithAggregatesInput | msruangpelayananScalarWhereWithAggregatesInput[] + OR?: msruangpelayananScalarWhereWithAggregatesInput[] + NOT?: msruangpelayananScalarWhereWithAggregatesInput | msruangpelayananScalarWhereWithAggregatesInput[] + idruangpelayanan?: IntWithAggregatesFilter<"msruangpelayanan"> | number + created_at?: DateTimeNullableWithAggregatesFilter<"msruangpelayanan"> | Date | string | null + created_by?: IntNullableWithAggregatesFilter<"msruangpelayanan"> | number | null + modified_at?: DateTimeNullableWithAggregatesFilter<"msruangpelayanan"> | Date | string | null + modified_by?: IntNullableWithAggregatesFilter<"msruangpelayanan"> | number | null + deleted_at?: DateTimeNullableWithAggregatesFilter<"msruangpelayanan"> | Date | string | null + deleted_by?: IntNullableWithAggregatesFilter<"msruangpelayanan"> | number | null + namaruangpelayanan?: StringNullableWithAggregatesFilter<"msruangpelayanan"> | string | null + } + + export type mstindakanWhereInput = { + AND?: mstindakanWhereInput | mstindakanWhereInput[] + OR?: mstindakanWhereInput[] + NOT?: mstindakanWhereInput | mstindakanWhereInput[] + idtindakan?: IntFilter<"mstindakan"> | number + created_at?: DateTimeNullableFilter<"mstindakan"> | Date | string | null + created_by?: IntNullableFilter<"mstindakan"> | number | null + modified_at?: DateTimeNullableFilter<"mstindakan"> | Date | string | null + modified_by?: IntNullableFilter<"mstindakan"> | number | null + deleted_at?: DateTimeNullableFilter<"mstindakan"> | Date | string | null + deleted_by?: IntNullableFilter<"mstindakan"> | number | null + namatindakan?: StringNullableFilter<"mstindakan"> | string | null + tariftindakan?: DecimalNullableFilter<"mstindakan"> | Decimal | DecimalJsLike | number | string | null + trtransaksi?: TrtransaksiListRelationFilter + } + + export type mstindakanOrderByWithRelationInput = { + idtindakan?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + namatindakan?: SortOrderInput | SortOrder + tariftindakan?: SortOrderInput | SortOrder + trtransaksi?: trtransaksiOrderByRelationAggregateInput + } + + export type mstindakanWhereUniqueInput = Prisma.AtLeast<{ + idtindakan?: number + AND?: mstindakanWhereInput | mstindakanWhereInput[] + OR?: mstindakanWhereInput[] + NOT?: mstindakanWhereInput | mstindakanWhereInput[] + created_at?: DateTimeNullableFilter<"mstindakan"> | Date | string | null + created_by?: IntNullableFilter<"mstindakan"> | number | null + modified_at?: DateTimeNullableFilter<"mstindakan"> | Date | string | null + modified_by?: IntNullableFilter<"mstindakan"> | number | null + deleted_at?: DateTimeNullableFilter<"mstindakan"> | Date | string | null + deleted_by?: IntNullableFilter<"mstindakan"> | number | null + namatindakan?: StringNullableFilter<"mstindakan"> | string | null + tariftindakan?: DecimalNullableFilter<"mstindakan"> | Decimal | DecimalJsLike | number | string | null + trtransaksi?: TrtransaksiListRelationFilter + }, "idtindakan"> + + export type mstindakanOrderByWithAggregationInput = { + idtindakan?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + namatindakan?: SortOrderInput | SortOrder + tariftindakan?: SortOrderInput | SortOrder + _count?: mstindakanCountOrderByAggregateInput + _avg?: mstindakanAvgOrderByAggregateInput + _max?: mstindakanMaxOrderByAggregateInput + _min?: mstindakanMinOrderByAggregateInput + _sum?: mstindakanSumOrderByAggregateInput + } + + export type mstindakanScalarWhereWithAggregatesInput = { + AND?: mstindakanScalarWhereWithAggregatesInput | mstindakanScalarWhereWithAggregatesInput[] + OR?: mstindakanScalarWhereWithAggregatesInput[] + NOT?: mstindakanScalarWhereWithAggregatesInput | mstindakanScalarWhereWithAggregatesInput[] + idtindakan?: IntWithAggregatesFilter<"mstindakan"> | number + created_at?: DateTimeNullableWithAggregatesFilter<"mstindakan"> | Date | string | null + created_by?: IntNullableWithAggregatesFilter<"mstindakan"> | number | null + modified_at?: DateTimeNullableWithAggregatesFilter<"mstindakan"> | Date | string | null + modified_by?: IntNullableWithAggregatesFilter<"mstindakan"> | number | null + deleted_at?: DateTimeNullableWithAggregatesFilter<"mstindakan"> | Date | string | null + deleted_by?: IntNullableWithAggregatesFilter<"mstindakan"> | number | null + namatindakan?: StringNullableWithAggregatesFilter<"mstindakan"> | string | null + tariftindakan?: DecimalNullableWithAggregatesFilter<"mstindakan"> | Decimal | DecimalJsLike | number | string | null + } + + export type trregistrasiWhereInput = { + AND?: trregistrasiWhereInput | trregistrasiWhereInput[] + OR?: trregistrasiWhereInput[] + NOT?: trregistrasiWhereInput | trregistrasiWhereInput[] + idregistrasi?: IntFilter<"trregistrasi"> | number + created_at?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + created_by?: IntNullableFilter<"trregistrasi"> | number | null + modified_at?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + modified_by?: IntNullableFilter<"trregistrasi"> | number | null + deleted_at?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + deleted_by?: IntNullableFilter<"trregistrasi"> | number | null + tanggalregistrasi?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + idpasien?: IntNullableFilter<"trregistrasi"> | number | null + nomorkartuasuransi?: StringNullableFilter<"trregistrasi"> | string | null + idasuransi?: IntNullableFilter<"trregistrasi"> | number | null + idpegawai?: IntNullableFilter<"trregistrasi"> | number | null + idruangpelayanan?: IntNullableFilter<"trregistrasi"> | number | null + msasuransi?: XOR | null + mspasien?: XOR | null + mspegawai?: XOR | null + msruangpelayanan?: XOR | null + trtransaksi?: TrtransaksiListRelationFilter + } + + export type trregistrasiOrderByWithRelationInput = { + idregistrasi?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + tanggalregistrasi?: SortOrderInput | SortOrder + idpasien?: SortOrderInput | SortOrder + nomorkartuasuransi?: SortOrderInput | SortOrder + idasuransi?: SortOrderInput | SortOrder + idpegawai?: SortOrderInput | SortOrder + idruangpelayanan?: SortOrderInput | SortOrder + msasuransi?: msasuransiOrderByWithRelationInput + mspasien?: mspasienOrderByWithRelationInput + mspegawai?: mspegawaiOrderByWithRelationInput + msruangpelayanan?: msruangpelayananOrderByWithRelationInput + trtransaksi?: trtransaksiOrderByRelationAggregateInput + } + + export type trregistrasiWhereUniqueInput = Prisma.AtLeast<{ + idregistrasi?: number + AND?: trregistrasiWhereInput | trregistrasiWhereInput[] + OR?: trregistrasiWhereInput[] + NOT?: trregistrasiWhereInput | trregistrasiWhereInput[] + created_at?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + created_by?: IntNullableFilter<"trregistrasi"> | number | null + modified_at?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + modified_by?: IntNullableFilter<"trregistrasi"> | number | null + deleted_at?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + deleted_by?: IntNullableFilter<"trregistrasi"> | number | null + tanggalregistrasi?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + idpasien?: IntNullableFilter<"trregistrasi"> | number | null + nomorkartuasuransi?: StringNullableFilter<"trregistrasi"> | string | null + idasuransi?: IntNullableFilter<"trregistrasi"> | number | null + idpegawai?: IntNullableFilter<"trregistrasi"> | number | null + idruangpelayanan?: IntNullableFilter<"trregistrasi"> | number | null + msasuransi?: XOR | null + mspasien?: XOR | null + mspegawai?: XOR | null + msruangpelayanan?: XOR | null + trtransaksi?: TrtransaksiListRelationFilter + }, "idregistrasi"> + + export type trregistrasiOrderByWithAggregationInput = { + idregistrasi?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + tanggalregistrasi?: SortOrderInput | SortOrder + idpasien?: SortOrderInput | SortOrder + nomorkartuasuransi?: SortOrderInput | SortOrder + idasuransi?: SortOrderInput | SortOrder + idpegawai?: SortOrderInput | SortOrder + idruangpelayanan?: SortOrderInput | SortOrder + _count?: trregistrasiCountOrderByAggregateInput + _avg?: trregistrasiAvgOrderByAggregateInput + _max?: trregistrasiMaxOrderByAggregateInput + _min?: trregistrasiMinOrderByAggregateInput + _sum?: trregistrasiSumOrderByAggregateInput + } + + export type trregistrasiScalarWhereWithAggregatesInput = { + AND?: trregistrasiScalarWhereWithAggregatesInput | trregistrasiScalarWhereWithAggregatesInput[] + OR?: trregistrasiScalarWhereWithAggregatesInput[] + NOT?: trregistrasiScalarWhereWithAggregatesInput | trregistrasiScalarWhereWithAggregatesInput[] + idregistrasi?: IntWithAggregatesFilter<"trregistrasi"> | number + created_at?: DateTimeNullableWithAggregatesFilter<"trregistrasi"> | Date | string | null + created_by?: IntNullableWithAggregatesFilter<"trregistrasi"> | number | null + modified_at?: DateTimeNullableWithAggregatesFilter<"trregistrasi"> | Date | string | null + modified_by?: IntNullableWithAggregatesFilter<"trregistrasi"> | number | null + deleted_at?: DateTimeNullableWithAggregatesFilter<"trregistrasi"> | Date | string | null + deleted_by?: IntNullableWithAggregatesFilter<"trregistrasi"> | number | null + tanggalregistrasi?: DateTimeNullableWithAggregatesFilter<"trregistrasi"> | Date | string | null + idpasien?: IntNullableWithAggregatesFilter<"trregistrasi"> | number | null + nomorkartuasuransi?: StringNullableWithAggregatesFilter<"trregistrasi"> | string | null + idasuransi?: IntNullableWithAggregatesFilter<"trregistrasi"> | number | null + idpegawai?: IntNullableWithAggregatesFilter<"trregistrasi"> | number | null + idruangpelayanan?: IntNullableWithAggregatesFilter<"trregistrasi"> | number | null + } + + export type trtransaksiWhereInput = { + AND?: trtransaksiWhereInput | trtransaksiWhereInput[] + OR?: trtransaksiWhereInput[] + NOT?: trtransaksiWhereInput | trtransaksiWhereInput[] + idtransaksi?: IntFilter<"trtransaksi"> | number + created_at?: DateTimeNullableFilter<"trtransaksi"> | Date | string | null + created_by?: IntNullableFilter<"trtransaksi"> | number | null + modified_at?: DateTimeNullableFilter<"trtransaksi"> | Date | string | null + modified_by?: IntNullableFilter<"trtransaksi"> | number | null + deleted_at?: DateTimeNullableFilter<"trtransaksi"> | Date | string | null + deleted_by?: IntNullableFilter<"trtransaksi"> | number | null + idregistrasi?: IntNullableFilter<"trtransaksi"> | number | null + idtindakan?: IntNullableFilter<"trtransaksi"> | number | null + jmltindakan?: IntNullableFilter<"trtransaksi"> | number | null + idpegawai?: IntNullableFilter<"trtransaksi"> | number | null + mspegawai?: XOR | null + trregistrasi?: XOR | null + mstindakan?: XOR | null + } + + export type trtransaksiOrderByWithRelationInput = { + idtransaksi?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + idregistrasi?: SortOrderInput | SortOrder + idtindakan?: SortOrderInput | SortOrder + jmltindakan?: SortOrderInput | SortOrder + idpegawai?: SortOrderInput | SortOrder + mspegawai?: mspegawaiOrderByWithRelationInput + trregistrasi?: trregistrasiOrderByWithRelationInput + mstindakan?: mstindakanOrderByWithRelationInput + } + + export type trtransaksiWhereUniqueInput = Prisma.AtLeast<{ + idtransaksi?: number + AND?: trtransaksiWhereInput | trtransaksiWhereInput[] + OR?: trtransaksiWhereInput[] + NOT?: trtransaksiWhereInput | trtransaksiWhereInput[] + created_at?: DateTimeNullableFilter<"trtransaksi"> | Date | string | null + created_by?: IntNullableFilter<"trtransaksi"> | number | null + modified_at?: DateTimeNullableFilter<"trtransaksi"> | Date | string | null + modified_by?: IntNullableFilter<"trtransaksi"> | number | null + deleted_at?: DateTimeNullableFilter<"trtransaksi"> | Date | string | null + deleted_by?: IntNullableFilter<"trtransaksi"> | number | null + idregistrasi?: IntNullableFilter<"trtransaksi"> | number | null + idtindakan?: IntNullableFilter<"trtransaksi"> | number | null + jmltindakan?: IntNullableFilter<"trtransaksi"> | number | null + idpegawai?: IntNullableFilter<"trtransaksi"> | number | null + mspegawai?: XOR | null + trregistrasi?: XOR | null + mstindakan?: XOR | null + }, "idtransaksi"> + + export type trtransaksiOrderByWithAggregationInput = { + idtransaksi?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + idregistrasi?: SortOrderInput | SortOrder + idtindakan?: SortOrderInput | SortOrder + jmltindakan?: SortOrderInput | SortOrder + idpegawai?: SortOrderInput | SortOrder + _count?: trtransaksiCountOrderByAggregateInput + _avg?: trtransaksiAvgOrderByAggregateInput + _max?: trtransaksiMaxOrderByAggregateInput + _min?: trtransaksiMinOrderByAggregateInput + _sum?: trtransaksiSumOrderByAggregateInput + } + + export type trtransaksiScalarWhereWithAggregatesInput = { + AND?: trtransaksiScalarWhereWithAggregatesInput | trtransaksiScalarWhereWithAggregatesInput[] + OR?: trtransaksiScalarWhereWithAggregatesInput[] + NOT?: trtransaksiScalarWhereWithAggregatesInput | trtransaksiScalarWhereWithAggregatesInput[] + idtransaksi?: IntWithAggregatesFilter<"trtransaksi"> | number + created_at?: DateTimeNullableWithAggregatesFilter<"trtransaksi"> | Date | string | null + created_by?: IntNullableWithAggregatesFilter<"trtransaksi"> | number | null + modified_at?: DateTimeNullableWithAggregatesFilter<"trtransaksi"> | Date | string | null + modified_by?: IntNullableWithAggregatesFilter<"trtransaksi"> | number | null + deleted_at?: DateTimeNullableWithAggregatesFilter<"trtransaksi"> | Date | string | null + deleted_by?: IntNullableWithAggregatesFilter<"trtransaksi"> | number | null + idregistrasi?: IntNullableWithAggregatesFilter<"trtransaksi"> | number | null + idtindakan?: IntNullableWithAggregatesFilter<"trtransaksi"> | number | null + jmltindakan?: IntNullableWithAggregatesFilter<"trtransaksi"> | number | null + idpegawai?: IntNullableWithAggregatesFilter<"trtransaksi"> | number | null + } + + export type msusersWhereInput = { + AND?: msusersWhereInput | msusersWhereInput[] + OR?: msusersWhereInput[] + NOT?: msusersWhereInput | msusersWhereInput[] + user_id?: IntFilter<"msusers"> | number + created_at?: DateTimeNullableFilter<"msusers"> | Date | string | null + created_by?: IntNullableFilter<"msusers"> | number | null + modified_at?: DateTimeNullableFilter<"msusers"> | Date | string | null + modified_by?: IntNullableFilter<"msusers"> | number | null + deleted_at?: DateTimeNullableFilter<"msusers"> | Date | string | null + deleted_by?: IntNullableFilter<"msusers"> | number | null + username?: StringFilter<"msusers"> | string + password?: StringFilter<"msusers"> | string + full_name?: StringNullableFilter<"msusers"> | string | null + email?: StringNullableFilter<"msusers"> | string | null + is_active?: BoolNullableFilter<"msusers"> | boolean | null + } + + export type msusersOrderByWithRelationInput = { + user_id?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + username?: SortOrder + password?: SortOrder + full_name?: SortOrderInput | SortOrder + email?: SortOrderInput | SortOrder + is_active?: SortOrderInput | SortOrder + } + + export type msusersWhereUniqueInput = Prisma.AtLeast<{ + user_id?: number + username?: string + AND?: msusersWhereInput | msusersWhereInput[] + OR?: msusersWhereInput[] + NOT?: msusersWhereInput | msusersWhereInput[] + created_at?: DateTimeNullableFilter<"msusers"> | Date | string | null + created_by?: IntNullableFilter<"msusers"> | number | null + modified_at?: DateTimeNullableFilter<"msusers"> | Date | string | null + modified_by?: IntNullableFilter<"msusers"> | number | null + deleted_at?: DateTimeNullableFilter<"msusers"> | Date | string | null + deleted_by?: IntNullableFilter<"msusers"> | number | null + password?: StringFilter<"msusers"> | string + full_name?: StringNullableFilter<"msusers"> | string | null + email?: StringNullableFilter<"msusers"> | string | null + is_active?: BoolNullableFilter<"msusers"> | boolean | null + }, "user_id" | "username"> + + export type msusersOrderByWithAggregationInput = { + user_id?: SortOrder + created_at?: SortOrderInput | SortOrder + created_by?: SortOrderInput | SortOrder + modified_at?: SortOrderInput | SortOrder + modified_by?: SortOrderInput | SortOrder + deleted_at?: SortOrderInput | SortOrder + deleted_by?: SortOrderInput | SortOrder + username?: SortOrder + password?: SortOrder + full_name?: SortOrderInput | SortOrder + email?: SortOrderInput | SortOrder + is_active?: SortOrderInput | SortOrder + _count?: msusersCountOrderByAggregateInput + _avg?: msusersAvgOrderByAggregateInput + _max?: msusersMaxOrderByAggregateInput + _min?: msusersMinOrderByAggregateInput + _sum?: msusersSumOrderByAggregateInput + } + + export type msusersScalarWhereWithAggregatesInput = { + AND?: msusersScalarWhereWithAggregatesInput | msusersScalarWhereWithAggregatesInput[] + OR?: msusersScalarWhereWithAggregatesInput[] + NOT?: msusersScalarWhereWithAggregatesInput | msusersScalarWhereWithAggregatesInput[] + user_id?: IntWithAggregatesFilter<"msusers"> | number + created_at?: DateTimeNullableWithAggregatesFilter<"msusers"> | Date | string | null + created_by?: IntNullableWithAggregatesFilter<"msusers"> | number | null + modified_at?: DateTimeNullableWithAggregatesFilter<"msusers"> | Date | string | null + modified_by?: IntNullableWithAggregatesFilter<"msusers"> | number | null + deleted_at?: DateTimeNullableWithAggregatesFilter<"msusers"> | Date | string | null + deleted_by?: IntNullableWithAggregatesFilter<"msusers"> | number | null + username?: StringWithAggregatesFilter<"msusers"> | string + password?: StringWithAggregatesFilter<"msusers"> | string + full_name?: StringNullableWithAggregatesFilter<"msusers"> | string | null + email?: StringNullableWithAggregatesFilter<"msusers"> | string | null + is_active?: BoolNullableWithAggregatesFilter<"msusers"> | boolean | null + } + + export type msasuransiCreateInput = { + idasuransi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namaasuransi?: string | null + trregistrasi?: trregistrasiCreateNestedManyWithoutMsasuransiInput + } + + export type msasuransiUncheckedCreateInput = { + idasuransi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namaasuransi?: string | null + trregistrasi?: trregistrasiUncheckedCreateNestedManyWithoutMsasuransiInput + } + + export type msasuransiUpdateInput = { + idasuransi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaasuransi?: NullableStringFieldUpdateOperationsInput | string | null + trregistrasi?: trregistrasiUpdateManyWithoutMsasuransiNestedInput + } + + export type msasuransiUncheckedUpdateInput = { + idasuransi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaasuransi?: NullableStringFieldUpdateOperationsInput | string | null + trregistrasi?: trregistrasiUncheckedUpdateManyWithoutMsasuransiNestedInput + } + + export type msasuransiCreateManyInput = { + idasuransi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namaasuransi?: string | null + } + + export type msasuransiUpdateManyMutationInput = { + idasuransi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaasuransi?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type msasuransiUncheckedUpdateManyInput = { + idasuransi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaasuransi?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type mspasienCreateInput = { + idpasien: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + mrpasien?: string | null + namapasien?: string | null + tanggallahir?: Date | string | null + jeniskelamin?: string | null + trregistrasi?: trregistrasiCreateNestedManyWithoutMspasienInput + } + + export type mspasienUncheckedCreateInput = { + idpasien: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + mrpasien?: string | null + namapasien?: string | null + tanggallahir?: Date | string | null + jeniskelamin?: string | null + trregistrasi?: trregistrasiUncheckedCreateNestedManyWithoutMspasienInput + } + + export type mspasienUpdateInput = { + idpasien?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + mrpasien?: NullableStringFieldUpdateOperationsInput | string | null + namapasien?: NullableStringFieldUpdateOperationsInput | string | null + tanggallahir?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + jeniskelamin?: NullableStringFieldUpdateOperationsInput | string | null + trregistrasi?: trregistrasiUpdateManyWithoutMspasienNestedInput + } + + export type mspasienUncheckedUpdateInput = { + idpasien?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + mrpasien?: NullableStringFieldUpdateOperationsInput | string | null + namapasien?: NullableStringFieldUpdateOperationsInput | string | null + tanggallahir?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + jeniskelamin?: NullableStringFieldUpdateOperationsInput | string | null + trregistrasi?: trregistrasiUncheckedUpdateManyWithoutMspasienNestedInput + } + + export type mspasienCreateManyInput = { + idpasien: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + mrpasien?: string | null + namapasien?: string | null + tanggallahir?: Date | string | null + jeniskelamin?: string | null + } + + export type mspasienUpdateManyMutationInput = { + idpasien?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + mrpasien?: NullableStringFieldUpdateOperationsInput | string | null + namapasien?: NullableStringFieldUpdateOperationsInput | string | null + tanggallahir?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + jeniskelamin?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type mspasienUncheckedUpdateManyInput = { + idpasien?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + mrpasien?: NullableStringFieldUpdateOperationsInput | string | null + namapasien?: NullableStringFieldUpdateOperationsInput | string | null + tanggallahir?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + jeniskelamin?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type mspegawaiCreateInput = { + idpegawai: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namapegawai?: string | null + trregistrasi?: trregistrasiCreateNestedManyWithoutMspegawaiInput + trtransaksi?: trtransaksiCreateNestedManyWithoutMspegawaiInput + } + + export type mspegawaiUncheckedCreateInput = { + idpegawai: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namapegawai?: string | null + trregistrasi?: trregistrasiUncheckedCreateNestedManyWithoutMspegawaiInput + trtransaksi?: trtransaksiUncheckedCreateNestedManyWithoutMspegawaiInput + } + + export type mspegawaiUpdateInput = { + idpegawai?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namapegawai?: NullableStringFieldUpdateOperationsInput | string | null + trregistrasi?: trregistrasiUpdateManyWithoutMspegawaiNestedInput + trtransaksi?: trtransaksiUpdateManyWithoutMspegawaiNestedInput + } + + export type mspegawaiUncheckedUpdateInput = { + idpegawai?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namapegawai?: NullableStringFieldUpdateOperationsInput | string | null + trregistrasi?: trregistrasiUncheckedUpdateManyWithoutMspegawaiNestedInput + trtransaksi?: trtransaksiUncheckedUpdateManyWithoutMspegawaiNestedInput + } + + export type mspegawaiCreateManyInput = { + idpegawai: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namapegawai?: string | null + } + + export type mspegawaiUpdateManyMutationInput = { + idpegawai?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namapegawai?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type mspegawaiUncheckedUpdateManyInput = { + idpegawai?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namapegawai?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type msruangpelayananCreateInput = { + idruangpelayanan: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namaruangpelayanan?: string | null + trregistrasi?: trregistrasiCreateNestedManyWithoutMsruangpelayananInput + } + + export type msruangpelayananUncheckedCreateInput = { + idruangpelayanan: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namaruangpelayanan?: string | null + trregistrasi?: trregistrasiUncheckedCreateNestedManyWithoutMsruangpelayananInput + } + + export type msruangpelayananUpdateInput = { + idruangpelayanan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaruangpelayanan?: NullableStringFieldUpdateOperationsInput | string | null + trregistrasi?: trregistrasiUpdateManyWithoutMsruangpelayananNestedInput + } + + export type msruangpelayananUncheckedUpdateInput = { + idruangpelayanan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaruangpelayanan?: NullableStringFieldUpdateOperationsInput | string | null + trregistrasi?: trregistrasiUncheckedUpdateManyWithoutMsruangpelayananNestedInput + } + + export type msruangpelayananCreateManyInput = { + idruangpelayanan: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namaruangpelayanan?: string | null + } + + export type msruangpelayananUpdateManyMutationInput = { + idruangpelayanan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaruangpelayanan?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type msruangpelayananUncheckedUpdateManyInput = { + idruangpelayanan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaruangpelayanan?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type mstindakanCreateInput = { + idtindakan: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namatindakan?: string | null + tariftindakan?: Decimal | DecimalJsLike | number | string | null + trtransaksi?: trtransaksiCreateNestedManyWithoutMstindakanInput + } + + export type mstindakanUncheckedCreateInput = { + idtindakan: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namatindakan?: string | null + tariftindakan?: Decimal | DecimalJsLike | number | string | null + trtransaksi?: trtransaksiUncheckedCreateNestedManyWithoutMstindakanInput + } + + export type mstindakanUpdateInput = { + idtindakan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namatindakan?: NullableStringFieldUpdateOperationsInput | string | null + tariftindakan?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null + trtransaksi?: trtransaksiUpdateManyWithoutMstindakanNestedInput + } + + export type mstindakanUncheckedUpdateInput = { + idtindakan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namatindakan?: NullableStringFieldUpdateOperationsInput | string | null + tariftindakan?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null + trtransaksi?: trtransaksiUncheckedUpdateManyWithoutMstindakanNestedInput + } + + export type mstindakanCreateManyInput = { + idtindakan: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namatindakan?: string | null + tariftindakan?: Decimal | DecimalJsLike | number | string | null + } + + export type mstindakanUpdateManyMutationInput = { + idtindakan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namatindakan?: NullableStringFieldUpdateOperationsInput | string | null + tariftindakan?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null + } + + export type mstindakanUncheckedUpdateManyInput = { + idtindakan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namatindakan?: NullableStringFieldUpdateOperationsInput | string | null + tariftindakan?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null + } + + export type trregistrasiCreateInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + nomorkartuasuransi?: string | null + msasuransi?: msasuransiCreateNestedOneWithoutTrregistrasiInput + mspasien?: mspasienCreateNestedOneWithoutTrregistrasiInput + mspegawai?: mspegawaiCreateNestedOneWithoutTrregistrasiInput + msruangpelayanan?: msruangpelayananCreateNestedOneWithoutTrregistrasiInput + trtransaksi?: trtransaksiCreateNestedManyWithoutTrregistrasiInput + } + + export type trregistrasiUncheckedCreateInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + idpasien?: number | null + nomorkartuasuransi?: string | null + idasuransi?: number | null + idpegawai?: number | null + idruangpelayanan?: number | null + trtransaksi?: trtransaksiUncheckedCreateNestedManyWithoutTrregistrasiInput + } + + export type trregistrasiUpdateInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + msasuransi?: msasuransiUpdateOneWithoutTrregistrasiNestedInput + mspasien?: mspasienUpdateOneWithoutTrregistrasiNestedInput + mspegawai?: mspegawaiUpdateOneWithoutTrregistrasiNestedInput + msruangpelayanan?: msruangpelayananUpdateOneWithoutTrregistrasiNestedInput + trtransaksi?: trtransaksiUpdateManyWithoutTrregistrasiNestedInput + } + + export type trregistrasiUncheckedUpdateInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + idpasien?: NullableIntFieldUpdateOperationsInput | number | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idasuransi?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + idruangpelayanan?: NullableIntFieldUpdateOperationsInput | number | null + trtransaksi?: trtransaksiUncheckedUpdateManyWithoutTrregistrasiNestedInput + } + + export type trregistrasiCreateManyInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + idpasien?: number | null + nomorkartuasuransi?: string | null + idasuransi?: number | null + idpegawai?: number | null + idruangpelayanan?: number | null + } + + export type trregistrasiUpdateManyMutationInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type trregistrasiUncheckedUpdateManyInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + idpasien?: NullableIntFieldUpdateOperationsInput | number | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idasuransi?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + idruangpelayanan?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trtransaksiCreateInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + jmltindakan?: number | null + mspegawai?: mspegawaiCreateNestedOneWithoutTrtransaksiInput + trregistrasi?: trregistrasiCreateNestedOneWithoutTrtransaksiInput + mstindakan?: mstindakanCreateNestedOneWithoutTrtransaksiInput + } + + export type trtransaksiUncheckedCreateInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + idregistrasi?: number | null + idtindakan?: number | null + jmltindakan?: number | null + idpegawai?: number | null + } + + export type trtransaksiUpdateInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + mspegawai?: mspegawaiUpdateOneWithoutTrtransaksiNestedInput + trregistrasi?: trregistrasiUpdateOneWithoutTrtransaksiNestedInput + mstindakan?: mstindakanUpdateOneWithoutTrtransaksiNestedInput + } + + export type trtransaksiUncheckedUpdateInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + idregistrasi?: NullableIntFieldUpdateOperationsInput | number | null + idtindakan?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trtransaksiCreateManyInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + idregistrasi?: number | null + idtindakan?: number | null + jmltindakan?: number | null + idpegawai?: number | null + } + + export type trtransaksiUpdateManyMutationInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trtransaksiUncheckedUpdateManyInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + idregistrasi?: NullableIntFieldUpdateOperationsInput | number | null + idtindakan?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type msusersCreateInput = { + user_id: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + username: string + password: string + full_name?: string | null + email?: string | null + is_active?: boolean | null + } + + export type msusersUncheckedCreateInput = { + user_id: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + username: string + password: string + full_name?: string | null + email?: string | null + is_active?: boolean | null + } + + export type msusersUpdateInput = { + user_id?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + full_name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null + } + + export type msusersUncheckedUpdateInput = { + user_id?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + full_name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null + } + + export type msusersCreateManyInput = { + user_id: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + username: string + password: string + full_name?: string | null + email?: string | null + is_active?: boolean | null + } + + export type msusersUpdateManyMutationInput = { + user_id?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + full_name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null + } + + export type msusersUncheckedUpdateManyInput = { + user_id?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + full_name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null + } + + export type IntFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> + in?: number[] | ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntFilter<$PrismaModel> | number + } + + export type DateTimeNullableFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null + } + + export type IntNullableFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntNullableFilter<$PrismaModel> | number | null + } + + export type StringNullableFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + mode?: QueryMode + not?: NestedStringNullableFilter<$PrismaModel> | string | null + } + + export type TrregistrasiListRelationFilter = { + every?: trregistrasiWhereInput + some?: trregistrasiWhereInput + none?: trregistrasiWhereInput + } + + export type SortOrderInput = { + sort: SortOrder + nulls?: NullsOrder + } + + export type trregistrasiOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type msasuransiCountOrderByAggregateInput = { + idasuransi?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namaasuransi?: SortOrder + } + + export type msasuransiAvgOrderByAggregateInput = { + idasuransi?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + } + + export type msasuransiMaxOrderByAggregateInput = { + idasuransi?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namaasuransi?: SortOrder + } + + export type msasuransiMinOrderByAggregateInput = { + idasuransi?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namaasuransi?: SortOrder + } + + export type msasuransiSumOrderByAggregateInput = { + idasuransi?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + } + + export type IntWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> + in?: number[] | ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntWithAggregatesFilter<$PrismaModel> | number + _count?: NestedIntFilter<$PrismaModel> + _avg?: NestedFloatFilter<$PrismaModel> + _sum?: NestedIntFilter<$PrismaModel> + _min?: NestedIntFilter<$PrismaModel> + _max?: NestedIntFilter<$PrismaModel> + } + + export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedDateTimeNullableFilter<$PrismaModel> + _max?: NestedDateTimeNullableFilter<$PrismaModel> + } + + export type IntNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null + _count?: NestedIntNullableFilter<$PrismaModel> + _avg?: NestedFloatNullableFilter<$PrismaModel> + _sum?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedIntNullableFilter<$PrismaModel> + _max?: NestedIntNullableFilter<$PrismaModel> + } + + export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + mode?: QueryMode + not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedStringNullableFilter<$PrismaModel> + _max?: NestedStringNullableFilter<$PrismaModel> + } + + export type mspasienCountOrderByAggregateInput = { + idpasien?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + mrpasien?: SortOrder + namapasien?: SortOrder + tanggallahir?: SortOrder + jeniskelamin?: SortOrder + } + + export type mspasienAvgOrderByAggregateInput = { + idpasien?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + } + + export type mspasienMaxOrderByAggregateInput = { + idpasien?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + mrpasien?: SortOrder + namapasien?: SortOrder + tanggallahir?: SortOrder + jeniskelamin?: SortOrder + } + + export type mspasienMinOrderByAggregateInput = { + idpasien?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + mrpasien?: SortOrder + namapasien?: SortOrder + tanggallahir?: SortOrder + jeniskelamin?: SortOrder + } + + export type mspasienSumOrderByAggregateInput = { + idpasien?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + } + + export type TrtransaksiListRelationFilter = { + every?: trtransaksiWhereInput + some?: trtransaksiWhereInput + none?: trtransaksiWhereInput + } + + export type trtransaksiOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type mspegawaiCountOrderByAggregateInput = { + idpegawai?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namapegawai?: SortOrder + } + + export type mspegawaiAvgOrderByAggregateInput = { + idpegawai?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + } + + export type mspegawaiMaxOrderByAggregateInput = { + idpegawai?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namapegawai?: SortOrder + } + + export type mspegawaiMinOrderByAggregateInput = { + idpegawai?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namapegawai?: SortOrder + } + + export type mspegawaiSumOrderByAggregateInput = { + idpegawai?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + } + + export type msruangpelayananCountOrderByAggregateInput = { + idruangpelayanan?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namaruangpelayanan?: SortOrder + } + + export type msruangpelayananAvgOrderByAggregateInput = { + idruangpelayanan?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + } + + export type msruangpelayananMaxOrderByAggregateInput = { + idruangpelayanan?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namaruangpelayanan?: SortOrder + } + + export type msruangpelayananMinOrderByAggregateInput = { + idruangpelayanan?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namaruangpelayanan?: SortOrder + } + + export type msruangpelayananSumOrderByAggregateInput = { + idruangpelayanan?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + } + + export type DecimalNullableFilter<$PrismaModel = never> = { + equals?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> | null + in?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null + notIn?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null + lt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + lte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + gt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + gte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + not?: NestedDecimalNullableFilter<$PrismaModel> | Decimal | DecimalJsLike | number | string | null + } + + export type mstindakanCountOrderByAggregateInput = { + idtindakan?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namatindakan?: SortOrder + tariftindakan?: SortOrder + } + + export type mstindakanAvgOrderByAggregateInput = { + idtindakan?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + tariftindakan?: SortOrder + } + + export type mstindakanMaxOrderByAggregateInput = { + idtindakan?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namatindakan?: SortOrder + tariftindakan?: SortOrder + } + + export type mstindakanMinOrderByAggregateInput = { + idtindakan?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + namatindakan?: SortOrder + tariftindakan?: SortOrder + } + + export type mstindakanSumOrderByAggregateInput = { + idtindakan?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + tariftindakan?: SortOrder + } + + export type DecimalNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> | null + in?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null + notIn?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null + lt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + lte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + gt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + gte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + not?: NestedDecimalNullableWithAggregatesFilter<$PrismaModel> | Decimal | DecimalJsLike | number | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _avg?: NestedDecimalNullableFilter<$PrismaModel> + _sum?: NestedDecimalNullableFilter<$PrismaModel> + _min?: NestedDecimalNullableFilter<$PrismaModel> + _max?: NestedDecimalNullableFilter<$PrismaModel> + } + + export type MsasuransiNullableRelationFilter = { + is?: msasuransiWhereInput | null + isNot?: msasuransiWhereInput | null + } + + export type MspasienNullableRelationFilter = { + is?: mspasienWhereInput | null + isNot?: mspasienWhereInput | null + } + + export type MspegawaiNullableRelationFilter = { + is?: mspegawaiWhereInput | null + isNot?: mspegawaiWhereInput | null + } + + export type MsruangpelayananNullableRelationFilter = { + is?: msruangpelayananWhereInput | null + isNot?: msruangpelayananWhereInput | null + } + + export type trregistrasiCountOrderByAggregateInput = { + idregistrasi?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + tanggalregistrasi?: SortOrder + idpasien?: SortOrder + nomorkartuasuransi?: SortOrder + idasuransi?: SortOrder + idpegawai?: SortOrder + idruangpelayanan?: SortOrder + } + + export type trregistrasiAvgOrderByAggregateInput = { + idregistrasi?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + idpasien?: SortOrder + idasuransi?: SortOrder + idpegawai?: SortOrder + idruangpelayanan?: SortOrder + } + + export type trregistrasiMaxOrderByAggregateInput = { + idregistrasi?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + tanggalregistrasi?: SortOrder + idpasien?: SortOrder + nomorkartuasuransi?: SortOrder + idasuransi?: SortOrder + idpegawai?: SortOrder + idruangpelayanan?: SortOrder + } + + export type trregistrasiMinOrderByAggregateInput = { + idregistrasi?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + tanggalregistrasi?: SortOrder + idpasien?: SortOrder + nomorkartuasuransi?: SortOrder + idasuransi?: SortOrder + idpegawai?: SortOrder + idruangpelayanan?: SortOrder + } + + export type trregistrasiSumOrderByAggregateInput = { + idregistrasi?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + idpasien?: SortOrder + idasuransi?: SortOrder + idpegawai?: SortOrder + idruangpelayanan?: SortOrder + } + + export type TrregistrasiNullableRelationFilter = { + is?: trregistrasiWhereInput | null + isNot?: trregistrasiWhereInput | null + } + + export type MstindakanNullableRelationFilter = { + is?: mstindakanWhereInput | null + isNot?: mstindakanWhereInput | null + } + + export type trtransaksiCountOrderByAggregateInput = { + idtransaksi?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + idregistrasi?: SortOrder + idtindakan?: SortOrder + jmltindakan?: SortOrder + idpegawai?: SortOrder + } + + export type trtransaksiAvgOrderByAggregateInput = { + idtransaksi?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + idregistrasi?: SortOrder + idtindakan?: SortOrder + jmltindakan?: SortOrder + idpegawai?: SortOrder + } + + export type trtransaksiMaxOrderByAggregateInput = { + idtransaksi?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + idregistrasi?: SortOrder + idtindakan?: SortOrder + jmltindakan?: SortOrder + idpegawai?: SortOrder + } + + export type trtransaksiMinOrderByAggregateInput = { + idtransaksi?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + idregistrasi?: SortOrder + idtindakan?: SortOrder + jmltindakan?: SortOrder + idpegawai?: SortOrder + } + + export type trtransaksiSumOrderByAggregateInput = { + idtransaksi?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + idregistrasi?: SortOrder + idtindakan?: SortOrder + jmltindakan?: SortOrder + idpegawai?: SortOrder + } + + export type StringFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] | ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + mode?: QueryMode + not?: NestedStringFilter<$PrismaModel> | string + } + + export type BoolNullableFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null + not?: NestedBoolNullableFilter<$PrismaModel> | boolean | null + } + + export type msusersCountOrderByAggregateInput = { + user_id?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + username?: SortOrder + password?: SortOrder + full_name?: SortOrder + email?: SortOrder + is_active?: SortOrder + } + + export type msusersAvgOrderByAggregateInput = { + user_id?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + } + + export type msusersMaxOrderByAggregateInput = { + user_id?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + username?: SortOrder + password?: SortOrder + full_name?: SortOrder + email?: SortOrder + is_active?: SortOrder + } + + export type msusersMinOrderByAggregateInput = { + user_id?: SortOrder + created_at?: SortOrder + created_by?: SortOrder + modified_at?: SortOrder + modified_by?: SortOrder + deleted_at?: SortOrder + deleted_by?: SortOrder + username?: SortOrder + password?: SortOrder + full_name?: SortOrder + email?: SortOrder + is_active?: SortOrder + } + + export type msusersSumOrderByAggregateInput = { + user_id?: SortOrder + created_by?: SortOrder + modified_by?: SortOrder + deleted_by?: SortOrder + } + + export type StringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] | ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + mode?: QueryMode + not?: NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedStringFilter<$PrismaModel> + _max?: NestedStringFilter<$PrismaModel> + } + + export type BoolNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null + not?: NestedBoolNullableWithAggregatesFilter<$PrismaModel> | boolean | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedBoolNullableFilter<$PrismaModel> + _max?: NestedBoolNullableFilter<$PrismaModel> + } + + export type trregistrasiCreateNestedManyWithoutMsasuransiInput = { + create?: XOR | trregistrasiCreateWithoutMsasuransiInput[] | trregistrasiUncheckedCreateWithoutMsasuransiInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMsasuransiInput | trregistrasiCreateOrConnectWithoutMsasuransiInput[] + createMany?: trregistrasiCreateManyMsasuransiInputEnvelope + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + } + + export type trregistrasiUncheckedCreateNestedManyWithoutMsasuransiInput = { + create?: XOR | trregistrasiCreateWithoutMsasuransiInput[] | trregistrasiUncheckedCreateWithoutMsasuransiInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMsasuransiInput | trregistrasiCreateOrConnectWithoutMsasuransiInput[] + createMany?: trregistrasiCreateManyMsasuransiInputEnvelope + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + } + + export type IntFieldUpdateOperationsInput = { + set?: number + increment?: number + decrement?: number + multiply?: number + divide?: number + } + + export type NullableDateTimeFieldUpdateOperationsInput = { + set?: Date | string | null + } + + export type NullableIntFieldUpdateOperationsInput = { + set?: number | null + increment?: number + decrement?: number + multiply?: number + divide?: number + } + + export type NullableStringFieldUpdateOperationsInput = { + set?: string | null + } + + export type trregistrasiUpdateManyWithoutMsasuransiNestedInput = { + create?: XOR | trregistrasiCreateWithoutMsasuransiInput[] | trregistrasiUncheckedCreateWithoutMsasuransiInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMsasuransiInput | trregistrasiCreateOrConnectWithoutMsasuransiInput[] + upsert?: trregistrasiUpsertWithWhereUniqueWithoutMsasuransiInput | trregistrasiUpsertWithWhereUniqueWithoutMsasuransiInput[] + createMany?: trregistrasiCreateManyMsasuransiInputEnvelope + set?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + disconnect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + delete?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + update?: trregistrasiUpdateWithWhereUniqueWithoutMsasuransiInput | trregistrasiUpdateWithWhereUniqueWithoutMsasuransiInput[] + updateMany?: trregistrasiUpdateManyWithWhereWithoutMsasuransiInput | trregistrasiUpdateManyWithWhereWithoutMsasuransiInput[] + deleteMany?: trregistrasiScalarWhereInput | trregistrasiScalarWhereInput[] + } + + export type trregistrasiUncheckedUpdateManyWithoutMsasuransiNestedInput = { + create?: XOR | trregistrasiCreateWithoutMsasuransiInput[] | trregistrasiUncheckedCreateWithoutMsasuransiInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMsasuransiInput | trregistrasiCreateOrConnectWithoutMsasuransiInput[] + upsert?: trregistrasiUpsertWithWhereUniqueWithoutMsasuransiInput | trregistrasiUpsertWithWhereUniqueWithoutMsasuransiInput[] + createMany?: trregistrasiCreateManyMsasuransiInputEnvelope + set?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + disconnect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + delete?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + update?: trregistrasiUpdateWithWhereUniqueWithoutMsasuransiInput | trregistrasiUpdateWithWhereUniqueWithoutMsasuransiInput[] + updateMany?: trregistrasiUpdateManyWithWhereWithoutMsasuransiInput | trregistrasiUpdateManyWithWhereWithoutMsasuransiInput[] + deleteMany?: trregistrasiScalarWhereInput | trregistrasiScalarWhereInput[] + } + + export type trregistrasiCreateNestedManyWithoutMspasienInput = { + create?: XOR | trregistrasiCreateWithoutMspasienInput[] | trregistrasiUncheckedCreateWithoutMspasienInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMspasienInput | trregistrasiCreateOrConnectWithoutMspasienInput[] + createMany?: trregistrasiCreateManyMspasienInputEnvelope + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + } + + export type trregistrasiUncheckedCreateNestedManyWithoutMspasienInput = { + create?: XOR | trregistrasiCreateWithoutMspasienInput[] | trregistrasiUncheckedCreateWithoutMspasienInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMspasienInput | trregistrasiCreateOrConnectWithoutMspasienInput[] + createMany?: trregistrasiCreateManyMspasienInputEnvelope + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + } + + export type trregistrasiUpdateManyWithoutMspasienNestedInput = { + create?: XOR | trregistrasiCreateWithoutMspasienInput[] | trregistrasiUncheckedCreateWithoutMspasienInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMspasienInput | trregistrasiCreateOrConnectWithoutMspasienInput[] + upsert?: trregistrasiUpsertWithWhereUniqueWithoutMspasienInput | trregistrasiUpsertWithWhereUniqueWithoutMspasienInput[] + createMany?: trregistrasiCreateManyMspasienInputEnvelope + set?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + disconnect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + delete?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + update?: trregistrasiUpdateWithWhereUniqueWithoutMspasienInput | trregistrasiUpdateWithWhereUniqueWithoutMspasienInput[] + updateMany?: trregistrasiUpdateManyWithWhereWithoutMspasienInput | trregistrasiUpdateManyWithWhereWithoutMspasienInput[] + deleteMany?: trregistrasiScalarWhereInput | trregistrasiScalarWhereInput[] + } + + export type trregistrasiUncheckedUpdateManyWithoutMspasienNestedInput = { + create?: XOR | trregistrasiCreateWithoutMspasienInput[] | trregistrasiUncheckedCreateWithoutMspasienInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMspasienInput | trregistrasiCreateOrConnectWithoutMspasienInput[] + upsert?: trregistrasiUpsertWithWhereUniqueWithoutMspasienInput | trregistrasiUpsertWithWhereUniqueWithoutMspasienInput[] + createMany?: trregistrasiCreateManyMspasienInputEnvelope + set?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + disconnect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + delete?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + update?: trregistrasiUpdateWithWhereUniqueWithoutMspasienInput | trregistrasiUpdateWithWhereUniqueWithoutMspasienInput[] + updateMany?: trregistrasiUpdateManyWithWhereWithoutMspasienInput | trregistrasiUpdateManyWithWhereWithoutMspasienInput[] + deleteMany?: trregistrasiScalarWhereInput | trregistrasiScalarWhereInput[] + } + + export type trregistrasiCreateNestedManyWithoutMspegawaiInput = { + create?: XOR | trregistrasiCreateWithoutMspegawaiInput[] | trregistrasiUncheckedCreateWithoutMspegawaiInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMspegawaiInput | trregistrasiCreateOrConnectWithoutMspegawaiInput[] + createMany?: trregistrasiCreateManyMspegawaiInputEnvelope + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + } + + export type trtransaksiCreateNestedManyWithoutMspegawaiInput = { + create?: XOR | trtransaksiCreateWithoutMspegawaiInput[] | trtransaksiUncheckedCreateWithoutMspegawaiInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutMspegawaiInput | trtransaksiCreateOrConnectWithoutMspegawaiInput[] + createMany?: trtransaksiCreateManyMspegawaiInputEnvelope + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + } + + export type trregistrasiUncheckedCreateNestedManyWithoutMspegawaiInput = { + create?: XOR | trregistrasiCreateWithoutMspegawaiInput[] | trregistrasiUncheckedCreateWithoutMspegawaiInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMspegawaiInput | trregistrasiCreateOrConnectWithoutMspegawaiInput[] + createMany?: trregistrasiCreateManyMspegawaiInputEnvelope + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + } + + export type trtransaksiUncheckedCreateNestedManyWithoutMspegawaiInput = { + create?: XOR | trtransaksiCreateWithoutMspegawaiInput[] | trtransaksiUncheckedCreateWithoutMspegawaiInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutMspegawaiInput | trtransaksiCreateOrConnectWithoutMspegawaiInput[] + createMany?: trtransaksiCreateManyMspegawaiInputEnvelope + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + } + + export type trregistrasiUpdateManyWithoutMspegawaiNestedInput = { + create?: XOR | trregistrasiCreateWithoutMspegawaiInput[] | trregistrasiUncheckedCreateWithoutMspegawaiInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMspegawaiInput | trregistrasiCreateOrConnectWithoutMspegawaiInput[] + upsert?: trregistrasiUpsertWithWhereUniqueWithoutMspegawaiInput | trregistrasiUpsertWithWhereUniqueWithoutMspegawaiInput[] + createMany?: trregistrasiCreateManyMspegawaiInputEnvelope + set?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + disconnect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + delete?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + update?: trregistrasiUpdateWithWhereUniqueWithoutMspegawaiInput | trregistrasiUpdateWithWhereUniqueWithoutMspegawaiInput[] + updateMany?: trregistrasiUpdateManyWithWhereWithoutMspegawaiInput | trregistrasiUpdateManyWithWhereWithoutMspegawaiInput[] + deleteMany?: trregistrasiScalarWhereInput | trregistrasiScalarWhereInput[] + } + + export type trtransaksiUpdateManyWithoutMspegawaiNestedInput = { + create?: XOR | trtransaksiCreateWithoutMspegawaiInput[] | trtransaksiUncheckedCreateWithoutMspegawaiInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutMspegawaiInput | trtransaksiCreateOrConnectWithoutMspegawaiInput[] + upsert?: trtransaksiUpsertWithWhereUniqueWithoutMspegawaiInput | trtransaksiUpsertWithWhereUniqueWithoutMspegawaiInput[] + createMany?: trtransaksiCreateManyMspegawaiInputEnvelope + set?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + disconnect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + delete?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + update?: trtransaksiUpdateWithWhereUniqueWithoutMspegawaiInput | trtransaksiUpdateWithWhereUniqueWithoutMspegawaiInput[] + updateMany?: trtransaksiUpdateManyWithWhereWithoutMspegawaiInput | trtransaksiUpdateManyWithWhereWithoutMspegawaiInput[] + deleteMany?: trtransaksiScalarWhereInput | trtransaksiScalarWhereInput[] + } + + export type trregistrasiUncheckedUpdateManyWithoutMspegawaiNestedInput = { + create?: XOR | trregistrasiCreateWithoutMspegawaiInput[] | trregistrasiUncheckedCreateWithoutMspegawaiInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMspegawaiInput | trregistrasiCreateOrConnectWithoutMspegawaiInput[] + upsert?: trregistrasiUpsertWithWhereUniqueWithoutMspegawaiInput | trregistrasiUpsertWithWhereUniqueWithoutMspegawaiInput[] + createMany?: trregistrasiCreateManyMspegawaiInputEnvelope + set?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + disconnect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + delete?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + update?: trregistrasiUpdateWithWhereUniqueWithoutMspegawaiInput | trregistrasiUpdateWithWhereUniqueWithoutMspegawaiInput[] + updateMany?: trregistrasiUpdateManyWithWhereWithoutMspegawaiInput | trregistrasiUpdateManyWithWhereWithoutMspegawaiInput[] + deleteMany?: trregistrasiScalarWhereInput | trregistrasiScalarWhereInput[] + } + + export type trtransaksiUncheckedUpdateManyWithoutMspegawaiNestedInput = { + create?: XOR | trtransaksiCreateWithoutMspegawaiInput[] | trtransaksiUncheckedCreateWithoutMspegawaiInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutMspegawaiInput | trtransaksiCreateOrConnectWithoutMspegawaiInput[] + upsert?: trtransaksiUpsertWithWhereUniqueWithoutMspegawaiInput | trtransaksiUpsertWithWhereUniqueWithoutMspegawaiInput[] + createMany?: trtransaksiCreateManyMspegawaiInputEnvelope + set?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + disconnect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + delete?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + update?: trtransaksiUpdateWithWhereUniqueWithoutMspegawaiInput | trtransaksiUpdateWithWhereUniqueWithoutMspegawaiInput[] + updateMany?: trtransaksiUpdateManyWithWhereWithoutMspegawaiInput | trtransaksiUpdateManyWithWhereWithoutMspegawaiInput[] + deleteMany?: trtransaksiScalarWhereInput | trtransaksiScalarWhereInput[] + } + + export type trregistrasiCreateNestedManyWithoutMsruangpelayananInput = { + create?: XOR | trregistrasiCreateWithoutMsruangpelayananInput[] | trregistrasiUncheckedCreateWithoutMsruangpelayananInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMsruangpelayananInput | trregistrasiCreateOrConnectWithoutMsruangpelayananInput[] + createMany?: trregistrasiCreateManyMsruangpelayananInputEnvelope + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + } + + export type trregistrasiUncheckedCreateNestedManyWithoutMsruangpelayananInput = { + create?: XOR | trregistrasiCreateWithoutMsruangpelayananInput[] | trregistrasiUncheckedCreateWithoutMsruangpelayananInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMsruangpelayananInput | trregistrasiCreateOrConnectWithoutMsruangpelayananInput[] + createMany?: trregistrasiCreateManyMsruangpelayananInputEnvelope + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + } + + export type trregistrasiUpdateManyWithoutMsruangpelayananNestedInput = { + create?: XOR | trregistrasiCreateWithoutMsruangpelayananInput[] | trregistrasiUncheckedCreateWithoutMsruangpelayananInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMsruangpelayananInput | trregistrasiCreateOrConnectWithoutMsruangpelayananInput[] + upsert?: trregistrasiUpsertWithWhereUniqueWithoutMsruangpelayananInput | trregistrasiUpsertWithWhereUniqueWithoutMsruangpelayananInput[] + createMany?: trregistrasiCreateManyMsruangpelayananInputEnvelope + set?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + disconnect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + delete?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + update?: trregistrasiUpdateWithWhereUniqueWithoutMsruangpelayananInput | trregistrasiUpdateWithWhereUniqueWithoutMsruangpelayananInput[] + updateMany?: trregistrasiUpdateManyWithWhereWithoutMsruangpelayananInput | trregistrasiUpdateManyWithWhereWithoutMsruangpelayananInput[] + deleteMany?: trregistrasiScalarWhereInput | trregistrasiScalarWhereInput[] + } + + export type trregistrasiUncheckedUpdateManyWithoutMsruangpelayananNestedInput = { + create?: XOR | trregistrasiCreateWithoutMsruangpelayananInput[] | trregistrasiUncheckedCreateWithoutMsruangpelayananInput[] + connectOrCreate?: trregistrasiCreateOrConnectWithoutMsruangpelayananInput | trregistrasiCreateOrConnectWithoutMsruangpelayananInput[] + upsert?: trregistrasiUpsertWithWhereUniqueWithoutMsruangpelayananInput | trregistrasiUpsertWithWhereUniqueWithoutMsruangpelayananInput[] + createMany?: trregistrasiCreateManyMsruangpelayananInputEnvelope + set?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + disconnect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + delete?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + connect?: trregistrasiWhereUniqueInput | trregistrasiWhereUniqueInput[] + update?: trregistrasiUpdateWithWhereUniqueWithoutMsruangpelayananInput | trregistrasiUpdateWithWhereUniqueWithoutMsruangpelayananInput[] + updateMany?: trregistrasiUpdateManyWithWhereWithoutMsruangpelayananInput | trregistrasiUpdateManyWithWhereWithoutMsruangpelayananInput[] + deleteMany?: trregistrasiScalarWhereInput | trregistrasiScalarWhereInput[] + } + + export type trtransaksiCreateNestedManyWithoutMstindakanInput = { + create?: XOR | trtransaksiCreateWithoutMstindakanInput[] | trtransaksiUncheckedCreateWithoutMstindakanInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutMstindakanInput | trtransaksiCreateOrConnectWithoutMstindakanInput[] + createMany?: trtransaksiCreateManyMstindakanInputEnvelope + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + } + + export type trtransaksiUncheckedCreateNestedManyWithoutMstindakanInput = { + create?: XOR | trtransaksiCreateWithoutMstindakanInput[] | trtransaksiUncheckedCreateWithoutMstindakanInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutMstindakanInput | trtransaksiCreateOrConnectWithoutMstindakanInput[] + createMany?: trtransaksiCreateManyMstindakanInputEnvelope + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + } + + export type NullableDecimalFieldUpdateOperationsInput = { + set?: Decimal | DecimalJsLike | number | string | null + increment?: Decimal | DecimalJsLike | number | string + decrement?: Decimal | DecimalJsLike | number | string + multiply?: Decimal | DecimalJsLike | number | string + divide?: Decimal | DecimalJsLike | number | string + } + + export type trtransaksiUpdateManyWithoutMstindakanNestedInput = { + create?: XOR | trtransaksiCreateWithoutMstindakanInput[] | trtransaksiUncheckedCreateWithoutMstindakanInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutMstindakanInput | trtransaksiCreateOrConnectWithoutMstindakanInput[] + upsert?: trtransaksiUpsertWithWhereUniqueWithoutMstindakanInput | trtransaksiUpsertWithWhereUniqueWithoutMstindakanInput[] + createMany?: trtransaksiCreateManyMstindakanInputEnvelope + set?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + disconnect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + delete?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + update?: trtransaksiUpdateWithWhereUniqueWithoutMstindakanInput | trtransaksiUpdateWithWhereUniqueWithoutMstindakanInput[] + updateMany?: trtransaksiUpdateManyWithWhereWithoutMstindakanInput | trtransaksiUpdateManyWithWhereWithoutMstindakanInput[] + deleteMany?: trtransaksiScalarWhereInput | trtransaksiScalarWhereInput[] + } + + export type trtransaksiUncheckedUpdateManyWithoutMstindakanNestedInput = { + create?: XOR | trtransaksiCreateWithoutMstindakanInput[] | trtransaksiUncheckedCreateWithoutMstindakanInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutMstindakanInput | trtransaksiCreateOrConnectWithoutMstindakanInput[] + upsert?: trtransaksiUpsertWithWhereUniqueWithoutMstindakanInput | trtransaksiUpsertWithWhereUniqueWithoutMstindakanInput[] + createMany?: trtransaksiCreateManyMstindakanInputEnvelope + set?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + disconnect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + delete?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + update?: trtransaksiUpdateWithWhereUniqueWithoutMstindakanInput | trtransaksiUpdateWithWhereUniqueWithoutMstindakanInput[] + updateMany?: trtransaksiUpdateManyWithWhereWithoutMstindakanInput | trtransaksiUpdateManyWithWhereWithoutMstindakanInput[] + deleteMany?: trtransaksiScalarWhereInput | trtransaksiScalarWhereInput[] + } + + export type msasuransiCreateNestedOneWithoutTrregistrasiInput = { + create?: XOR + connectOrCreate?: msasuransiCreateOrConnectWithoutTrregistrasiInput + connect?: msasuransiWhereUniqueInput + } + + export type mspasienCreateNestedOneWithoutTrregistrasiInput = { + create?: XOR + connectOrCreate?: mspasienCreateOrConnectWithoutTrregistrasiInput + connect?: mspasienWhereUniqueInput + } + + export type mspegawaiCreateNestedOneWithoutTrregistrasiInput = { + create?: XOR + connectOrCreate?: mspegawaiCreateOrConnectWithoutTrregistrasiInput + connect?: mspegawaiWhereUniqueInput + } + + export type msruangpelayananCreateNestedOneWithoutTrregistrasiInput = { + create?: XOR + connectOrCreate?: msruangpelayananCreateOrConnectWithoutTrregistrasiInput + connect?: msruangpelayananWhereUniqueInput + } + + export type trtransaksiCreateNestedManyWithoutTrregistrasiInput = { + create?: XOR | trtransaksiCreateWithoutTrregistrasiInput[] | trtransaksiUncheckedCreateWithoutTrregistrasiInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutTrregistrasiInput | trtransaksiCreateOrConnectWithoutTrregistrasiInput[] + createMany?: trtransaksiCreateManyTrregistrasiInputEnvelope + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + } + + export type trtransaksiUncheckedCreateNestedManyWithoutTrregistrasiInput = { + create?: XOR | trtransaksiCreateWithoutTrregistrasiInput[] | trtransaksiUncheckedCreateWithoutTrregistrasiInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutTrregistrasiInput | trtransaksiCreateOrConnectWithoutTrregistrasiInput[] + createMany?: trtransaksiCreateManyTrregistrasiInputEnvelope + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + } + + export type msasuransiUpdateOneWithoutTrregistrasiNestedInput = { + create?: XOR + connectOrCreate?: msasuransiCreateOrConnectWithoutTrregistrasiInput + upsert?: msasuransiUpsertWithoutTrregistrasiInput + disconnect?: msasuransiWhereInput | boolean + delete?: msasuransiWhereInput | boolean + connect?: msasuransiWhereUniqueInput + update?: XOR, msasuransiUncheckedUpdateWithoutTrregistrasiInput> + } + + export type mspasienUpdateOneWithoutTrregistrasiNestedInput = { + create?: XOR + connectOrCreate?: mspasienCreateOrConnectWithoutTrregistrasiInput + upsert?: mspasienUpsertWithoutTrregistrasiInput + disconnect?: mspasienWhereInput | boolean + delete?: mspasienWhereInput | boolean + connect?: mspasienWhereUniqueInput + update?: XOR, mspasienUncheckedUpdateWithoutTrregistrasiInput> + } + + export type mspegawaiUpdateOneWithoutTrregistrasiNestedInput = { + create?: XOR + connectOrCreate?: mspegawaiCreateOrConnectWithoutTrregistrasiInput + upsert?: mspegawaiUpsertWithoutTrregistrasiInput + disconnect?: mspegawaiWhereInput | boolean + delete?: mspegawaiWhereInput | boolean + connect?: mspegawaiWhereUniqueInput + update?: XOR, mspegawaiUncheckedUpdateWithoutTrregistrasiInput> + } + + export type msruangpelayananUpdateOneWithoutTrregistrasiNestedInput = { + create?: XOR + connectOrCreate?: msruangpelayananCreateOrConnectWithoutTrregistrasiInput + upsert?: msruangpelayananUpsertWithoutTrregistrasiInput + disconnect?: msruangpelayananWhereInput | boolean + delete?: msruangpelayananWhereInput | boolean + connect?: msruangpelayananWhereUniqueInput + update?: XOR, msruangpelayananUncheckedUpdateWithoutTrregistrasiInput> + } + + export type trtransaksiUpdateManyWithoutTrregistrasiNestedInput = { + create?: XOR | trtransaksiCreateWithoutTrregistrasiInput[] | trtransaksiUncheckedCreateWithoutTrregistrasiInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutTrregistrasiInput | trtransaksiCreateOrConnectWithoutTrregistrasiInput[] + upsert?: trtransaksiUpsertWithWhereUniqueWithoutTrregistrasiInput | trtransaksiUpsertWithWhereUniqueWithoutTrregistrasiInput[] + createMany?: trtransaksiCreateManyTrregistrasiInputEnvelope + set?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + disconnect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + delete?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + update?: trtransaksiUpdateWithWhereUniqueWithoutTrregistrasiInput | trtransaksiUpdateWithWhereUniqueWithoutTrregistrasiInput[] + updateMany?: trtransaksiUpdateManyWithWhereWithoutTrregistrasiInput | trtransaksiUpdateManyWithWhereWithoutTrregistrasiInput[] + deleteMany?: trtransaksiScalarWhereInput | trtransaksiScalarWhereInput[] + } + + export type trtransaksiUncheckedUpdateManyWithoutTrregistrasiNestedInput = { + create?: XOR | trtransaksiCreateWithoutTrregistrasiInput[] | trtransaksiUncheckedCreateWithoutTrregistrasiInput[] + connectOrCreate?: trtransaksiCreateOrConnectWithoutTrregistrasiInput | trtransaksiCreateOrConnectWithoutTrregistrasiInput[] + upsert?: trtransaksiUpsertWithWhereUniqueWithoutTrregistrasiInput | trtransaksiUpsertWithWhereUniqueWithoutTrregistrasiInput[] + createMany?: trtransaksiCreateManyTrregistrasiInputEnvelope + set?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + disconnect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + delete?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + connect?: trtransaksiWhereUniqueInput | trtransaksiWhereUniqueInput[] + update?: trtransaksiUpdateWithWhereUniqueWithoutTrregistrasiInput | trtransaksiUpdateWithWhereUniqueWithoutTrregistrasiInput[] + updateMany?: trtransaksiUpdateManyWithWhereWithoutTrregistrasiInput | trtransaksiUpdateManyWithWhereWithoutTrregistrasiInput[] + deleteMany?: trtransaksiScalarWhereInput | trtransaksiScalarWhereInput[] + } + + export type mspegawaiCreateNestedOneWithoutTrtransaksiInput = { + create?: XOR + connectOrCreate?: mspegawaiCreateOrConnectWithoutTrtransaksiInput + connect?: mspegawaiWhereUniqueInput + } + + export type trregistrasiCreateNestedOneWithoutTrtransaksiInput = { + create?: XOR + connectOrCreate?: trregistrasiCreateOrConnectWithoutTrtransaksiInput + connect?: trregistrasiWhereUniqueInput + } + + export type mstindakanCreateNestedOneWithoutTrtransaksiInput = { + create?: XOR + connectOrCreate?: mstindakanCreateOrConnectWithoutTrtransaksiInput + connect?: mstindakanWhereUniqueInput + } + + export type mspegawaiUpdateOneWithoutTrtransaksiNestedInput = { + create?: XOR + connectOrCreate?: mspegawaiCreateOrConnectWithoutTrtransaksiInput + upsert?: mspegawaiUpsertWithoutTrtransaksiInput + disconnect?: mspegawaiWhereInput | boolean + delete?: mspegawaiWhereInput | boolean + connect?: mspegawaiWhereUniqueInput + update?: XOR, mspegawaiUncheckedUpdateWithoutTrtransaksiInput> + } + + export type trregistrasiUpdateOneWithoutTrtransaksiNestedInput = { + create?: XOR + connectOrCreate?: trregistrasiCreateOrConnectWithoutTrtransaksiInput + upsert?: trregistrasiUpsertWithoutTrtransaksiInput + disconnect?: trregistrasiWhereInput | boolean + delete?: trregistrasiWhereInput | boolean + connect?: trregistrasiWhereUniqueInput + update?: XOR, trregistrasiUncheckedUpdateWithoutTrtransaksiInput> + } + + export type mstindakanUpdateOneWithoutTrtransaksiNestedInput = { + create?: XOR + connectOrCreate?: mstindakanCreateOrConnectWithoutTrtransaksiInput + upsert?: mstindakanUpsertWithoutTrtransaksiInput + disconnect?: mstindakanWhereInput | boolean + delete?: mstindakanWhereInput | boolean + connect?: mstindakanWhereUniqueInput + update?: XOR, mstindakanUncheckedUpdateWithoutTrtransaksiInput> + } + + export type StringFieldUpdateOperationsInput = { + set?: string + } + + export type NullableBoolFieldUpdateOperationsInput = { + set?: boolean | null + } + + export type NestedIntFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> + in?: number[] | ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntFilter<$PrismaModel> | number + } + + export type NestedDateTimeNullableFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null + } + + export type NestedIntNullableFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntNullableFilter<$PrismaModel> | number | null + } + + export type NestedStringNullableFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringNullableFilter<$PrismaModel> | string | null + } + + export type NestedIntWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> + in?: number[] | ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntWithAggregatesFilter<$PrismaModel> | number + _count?: NestedIntFilter<$PrismaModel> + _avg?: NestedFloatFilter<$PrismaModel> + _sum?: NestedIntFilter<$PrismaModel> + _min?: NestedIntFilter<$PrismaModel> + _max?: NestedIntFilter<$PrismaModel> + } + + export type NestedFloatFilter<$PrismaModel = never> = { + equals?: number | FloatFieldRefInput<$PrismaModel> + in?: number[] | ListFloatFieldRefInput<$PrismaModel> + notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> + lt?: number | FloatFieldRefInput<$PrismaModel> + lte?: number | FloatFieldRefInput<$PrismaModel> + gt?: number | FloatFieldRefInput<$PrismaModel> + gte?: number | FloatFieldRefInput<$PrismaModel> + not?: NestedFloatFilter<$PrismaModel> | number + } + + export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedDateTimeNullableFilter<$PrismaModel> + _max?: NestedDateTimeNullableFilter<$PrismaModel> + } + + export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null + _count?: NestedIntNullableFilter<$PrismaModel> + _avg?: NestedFloatNullableFilter<$PrismaModel> + _sum?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedIntNullableFilter<$PrismaModel> + _max?: NestedIntNullableFilter<$PrismaModel> + } + + export type NestedFloatNullableFilter<$PrismaModel = never> = { + equals?: number | FloatFieldRefInput<$PrismaModel> | null + in?: number[] | ListFloatFieldRefInput<$PrismaModel> | null + notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> | null + lt?: number | FloatFieldRefInput<$PrismaModel> + lte?: number | FloatFieldRefInput<$PrismaModel> + gt?: number | FloatFieldRefInput<$PrismaModel> + gte?: number | FloatFieldRefInput<$PrismaModel> + not?: NestedFloatNullableFilter<$PrismaModel> | number | null + } + + export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedStringNullableFilter<$PrismaModel> + _max?: NestedStringNullableFilter<$PrismaModel> + } + + export type NestedDecimalNullableFilter<$PrismaModel = never> = { + equals?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> | null + in?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null + notIn?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null + lt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + lte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + gt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + gte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + not?: NestedDecimalNullableFilter<$PrismaModel> | Decimal | DecimalJsLike | number | string | null + } + + export type NestedDecimalNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> | null + in?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null + notIn?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null + lt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + lte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + gt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + gte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> + not?: NestedDecimalNullableWithAggregatesFilter<$PrismaModel> | Decimal | DecimalJsLike | number | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _avg?: NestedDecimalNullableFilter<$PrismaModel> + _sum?: NestedDecimalNullableFilter<$PrismaModel> + _min?: NestedDecimalNullableFilter<$PrismaModel> + _max?: NestedDecimalNullableFilter<$PrismaModel> + } + + export type NestedStringFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] | ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringFilter<$PrismaModel> | string + } + + export type NestedBoolNullableFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null + not?: NestedBoolNullableFilter<$PrismaModel> | boolean | null + } + + export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] | ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedStringFilter<$PrismaModel> + _max?: NestedStringFilter<$PrismaModel> + } + + export type NestedBoolNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null + not?: NestedBoolNullableWithAggregatesFilter<$PrismaModel> | boolean | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedBoolNullableFilter<$PrismaModel> + _max?: NestedBoolNullableFilter<$PrismaModel> + } + + export type trregistrasiCreateWithoutMsasuransiInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + nomorkartuasuransi?: string | null + mspasien?: mspasienCreateNestedOneWithoutTrregistrasiInput + mspegawai?: mspegawaiCreateNestedOneWithoutTrregistrasiInput + msruangpelayanan?: msruangpelayananCreateNestedOneWithoutTrregistrasiInput + trtransaksi?: trtransaksiCreateNestedManyWithoutTrregistrasiInput + } + + export type trregistrasiUncheckedCreateWithoutMsasuransiInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + idpasien?: number | null + nomorkartuasuransi?: string | null + idpegawai?: number | null + idruangpelayanan?: number | null + trtransaksi?: trtransaksiUncheckedCreateNestedManyWithoutTrregistrasiInput + } + + export type trregistrasiCreateOrConnectWithoutMsasuransiInput = { + where: trregistrasiWhereUniqueInput + create: XOR + } + + export type trregistrasiCreateManyMsasuransiInputEnvelope = { + data: trregistrasiCreateManyMsasuransiInput | trregistrasiCreateManyMsasuransiInput[] + skipDuplicates?: boolean + } + + export type trregistrasiUpsertWithWhereUniqueWithoutMsasuransiInput = { + where: trregistrasiWhereUniqueInput + update: XOR + create: XOR + } + + export type trregistrasiUpdateWithWhereUniqueWithoutMsasuransiInput = { + where: trregistrasiWhereUniqueInput + data: XOR + } + + export type trregistrasiUpdateManyWithWhereWithoutMsasuransiInput = { + where: trregistrasiScalarWhereInput + data: XOR + } + + export type trregistrasiScalarWhereInput = { + AND?: trregistrasiScalarWhereInput | trregistrasiScalarWhereInput[] + OR?: trregistrasiScalarWhereInput[] + NOT?: trregistrasiScalarWhereInput | trregistrasiScalarWhereInput[] + idregistrasi?: IntFilter<"trregistrasi"> | number + created_at?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + created_by?: IntNullableFilter<"trregistrasi"> | number | null + modified_at?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + modified_by?: IntNullableFilter<"trregistrasi"> | number | null + deleted_at?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + deleted_by?: IntNullableFilter<"trregistrasi"> | number | null + tanggalregistrasi?: DateTimeNullableFilter<"trregistrasi"> | Date | string | null + idpasien?: IntNullableFilter<"trregistrasi"> | number | null + nomorkartuasuransi?: StringNullableFilter<"trregistrasi"> | string | null + idasuransi?: IntNullableFilter<"trregistrasi"> | number | null + idpegawai?: IntNullableFilter<"trregistrasi"> | number | null + idruangpelayanan?: IntNullableFilter<"trregistrasi"> | number | null + } + + export type trregistrasiCreateWithoutMspasienInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + nomorkartuasuransi?: string | null + msasuransi?: msasuransiCreateNestedOneWithoutTrregistrasiInput + mspegawai?: mspegawaiCreateNestedOneWithoutTrregistrasiInput + msruangpelayanan?: msruangpelayananCreateNestedOneWithoutTrregistrasiInput + trtransaksi?: trtransaksiCreateNestedManyWithoutTrregistrasiInput + } + + export type trregistrasiUncheckedCreateWithoutMspasienInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + nomorkartuasuransi?: string | null + idasuransi?: number | null + idpegawai?: number | null + idruangpelayanan?: number | null + trtransaksi?: trtransaksiUncheckedCreateNestedManyWithoutTrregistrasiInput + } + + export type trregistrasiCreateOrConnectWithoutMspasienInput = { + where: trregistrasiWhereUniqueInput + create: XOR + } + + export type trregistrasiCreateManyMspasienInputEnvelope = { + data: trregistrasiCreateManyMspasienInput | trregistrasiCreateManyMspasienInput[] + skipDuplicates?: boolean + } + + export type trregistrasiUpsertWithWhereUniqueWithoutMspasienInput = { + where: trregistrasiWhereUniqueInput + update: XOR + create: XOR + } + + export type trregistrasiUpdateWithWhereUniqueWithoutMspasienInput = { + where: trregistrasiWhereUniqueInput + data: XOR + } + + export type trregistrasiUpdateManyWithWhereWithoutMspasienInput = { + where: trregistrasiScalarWhereInput + data: XOR + } + + export type trregistrasiCreateWithoutMspegawaiInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + nomorkartuasuransi?: string | null + msasuransi?: msasuransiCreateNestedOneWithoutTrregistrasiInput + mspasien?: mspasienCreateNestedOneWithoutTrregistrasiInput + msruangpelayanan?: msruangpelayananCreateNestedOneWithoutTrregistrasiInput + trtransaksi?: trtransaksiCreateNestedManyWithoutTrregistrasiInput + } + + export type trregistrasiUncheckedCreateWithoutMspegawaiInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + idpasien?: number | null + nomorkartuasuransi?: string | null + idasuransi?: number | null + idruangpelayanan?: number | null + trtransaksi?: trtransaksiUncheckedCreateNestedManyWithoutTrregistrasiInput + } + + export type trregistrasiCreateOrConnectWithoutMspegawaiInput = { + where: trregistrasiWhereUniqueInput + create: XOR + } + + export type trregistrasiCreateManyMspegawaiInputEnvelope = { + data: trregistrasiCreateManyMspegawaiInput | trregistrasiCreateManyMspegawaiInput[] + skipDuplicates?: boolean + } + + export type trtransaksiCreateWithoutMspegawaiInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + jmltindakan?: number | null + trregistrasi?: trregistrasiCreateNestedOneWithoutTrtransaksiInput + mstindakan?: mstindakanCreateNestedOneWithoutTrtransaksiInput + } + + export type trtransaksiUncheckedCreateWithoutMspegawaiInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + idregistrasi?: number | null + idtindakan?: number | null + jmltindakan?: number | null + } + + export type trtransaksiCreateOrConnectWithoutMspegawaiInput = { + where: trtransaksiWhereUniqueInput + create: XOR + } + + export type trtransaksiCreateManyMspegawaiInputEnvelope = { + data: trtransaksiCreateManyMspegawaiInput | trtransaksiCreateManyMspegawaiInput[] + skipDuplicates?: boolean + } + + export type trregistrasiUpsertWithWhereUniqueWithoutMspegawaiInput = { + where: trregistrasiWhereUniqueInput + update: XOR + create: XOR + } + + export type trregistrasiUpdateWithWhereUniqueWithoutMspegawaiInput = { + where: trregistrasiWhereUniqueInput + data: XOR + } + + export type trregistrasiUpdateManyWithWhereWithoutMspegawaiInput = { + where: trregistrasiScalarWhereInput + data: XOR + } + + export type trtransaksiUpsertWithWhereUniqueWithoutMspegawaiInput = { + where: trtransaksiWhereUniqueInput + update: XOR + create: XOR + } + + export type trtransaksiUpdateWithWhereUniqueWithoutMspegawaiInput = { + where: trtransaksiWhereUniqueInput + data: XOR + } + + export type trtransaksiUpdateManyWithWhereWithoutMspegawaiInput = { + where: trtransaksiScalarWhereInput + data: XOR + } + + export type trtransaksiScalarWhereInput = { + AND?: trtransaksiScalarWhereInput | trtransaksiScalarWhereInput[] + OR?: trtransaksiScalarWhereInput[] + NOT?: trtransaksiScalarWhereInput | trtransaksiScalarWhereInput[] + idtransaksi?: IntFilter<"trtransaksi"> | number + created_at?: DateTimeNullableFilter<"trtransaksi"> | Date | string | null + created_by?: IntNullableFilter<"trtransaksi"> | number | null + modified_at?: DateTimeNullableFilter<"trtransaksi"> | Date | string | null + modified_by?: IntNullableFilter<"trtransaksi"> | number | null + deleted_at?: DateTimeNullableFilter<"trtransaksi"> | Date | string | null + deleted_by?: IntNullableFilter<"trtransaksi"> | number | null + idregistrasi?: IntNullableFilter<"trtransaksi"> | number | null + idtindakan?: IntNullableFilter<"trtransaksi"> | number | null + jmltindakan?: IntNullableFilter<"trtransaksi"> | number | null + idpegawai?: IntNullableFilter<"trtransaksi"> | number | null + } + + export type trregistrasiCreateWithoutMsruangpelayananInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + nomorkartuasuransi?: string | null + msasuransi?: msasuransiCreateNestedOneWithoutTrregistrasiInput + mspasien?: mspasienCreateNestedOneWithoutTrregistrasiInput + mspegawai?: mspegawaiCreateNestedOneWithoutTrregistrasiInput + trtransaksi?: trtransaksiCreateNestedManyWithoutTrregistrasiInput + } + + export type trregistrasiUncheckedCreateWithoutMsruangpelayananInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + idpasien?: number | null + nomorkartuasuransi?: string | null + idasuransi?: number | null + idpegawai?: number | null + trtransaksi?: trtransaksiUncheckedCreateNestedManyWithoutTrregistrasiInput + } + + export type trregistrasiCreateOrConnectWithoutMsruangpelayananInput = { + where: trregistrasiWhereUniqueInput + create: XOR + } + + export type trregistrasiCreateManyMsruangpelayananInputEnvelope = { + data: trregistrasiCreateManyMsruangpelayananInput | trregistrasiCreateManyMsruangpelayananInput[] + skipDuplicates?: boolean + } + + export type trregistrasiUpsertWithWhereUniqueWithoutMsruangpelayananInput = { + where: trregistrasiWhereUniqueInput + update: XOR + create: XOR + } + + export type trregistrasiUpdateWithWhereUniqueWithoutMsruangpelayananInput = { + where: trregistrasiWhereUniqueInput + data: XOR + } + + export type trregistrasiUpdateManyWithWhereWithoutMsruangpelayananInput = { + where: trregistrasiScalarWhereInput + data: XOR + } + + export type trtransaksiCreateWithoutMstindakanInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + jmltindakan?: number | null + mspegawai?: mspegawaiCreateNestedOneWithoutTrtransaksiInput + trregistrasi?: trregistrasiCreateNestedOneWithoutTrtransaksiInput + } + + export type trtransaksiUncheckedCreateWithoutMstindakanInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + idregistrasi?: number | null + jmltindakan?: number | null + idpegawai?: number | null + } + + export type trtransaksiCreateOrConnectWithoutMstindakanInput = { + where: trtransaksiWhereUniqueInput + create: XOR + } + + export type trtransaksiCreateManyMstindakanInputEnvelope = { + data: trtransaksiCreateManyMstindakanInput | trtransaksiCreateManyMstindakanInput[] + skipDuplicates?: boolean + } + + export type trtransaksiUpsertWithWhereUniqueWithoutMstindakanInput = { + where: trtransaksiWhereUniqueInput + update: XOR + create: XOR + } + + export type trtransaksiUpdateWithWhereUniqueWithoutMstindakanInput = { + where: trtransaksiWhereUniqueInput + data: XOR + } + + export type trtransaksiUpdateManyWithWhereWithoutMstindakanInput = { + where: trtransaksiScalarWhereInput + data: XOR + } + + export type msasuransiCreateWithoutTrregistrasiInput = { + idasuransi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namaasuransi?: string | null + } + + export type msasuransiUncheckedCreateWithoutTrregistrasiInput = { + idasuransi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namaasuransi?: string | null + } + + export type msasuransiCreateOrConnectWithoutTrregistrasiInput = { + where: msasuransiWhereUniqueInput + create: XOR + } + + export type mspasienCreateWithoutTrregistrasiInput = { + idpasien: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + mrpasien?: string | null + namapasien?: string | null + tanggallahir?: Date | string | null + jeniskelamin?: string | null + } + + export type mspasienUncheckedCreateWithoutTrregistrasiInput = { + idpasien: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + mrpasien?: string | null + namapasien?: string | null + tanggallahir?: Date | string | null + jeniskelamin?: string | null + } + + export type mspasienCreateOrConnectWithoutTrregistrasiInput = { + where: mspasienWhereUniqueInput + create: XOR + } + + export type mspegawaiCreateWithoutTrregistrasiInput = { + idpegawai: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namapegawai?: string | null + trtransaksi?: trtransaksiCreateNestedManyWithoutMspegawaiInput + } + + export type mspegawaiUncheckedCreateWithoutTrregistrasiInput = { + idpegawai: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namapegawai?: string | null + trtransaksi?: trtransaksiUncheckedCreateNestedManyWithoutMspegawaiInput + } + + export type mspegawaiCreateOrConnectWithoutTrregistrasiInput = { + where: mspegawaiWhereUniqueInput + create: XOR + } + + export type msruangpelayananCreateWithoutTrregistrasiInput = { + idruangpelayanan: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namaruangpelayanan?: string | null + } + + export type msruangpelayananUncheckedCreateWithoutTrregistrasiInput = { + idruangpelayanan: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namaruangpelayanan?: string | null + } + + export type msruangpelayananCreateOrConnectWithoutTrregistrasiInput = { + where: msruangpelayananWhereUniqueInput + create: XOR + } + + export type trtransaksiCreateWithoutTrregistrasiInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + jmltindakan?: number | null + mspegawai?: mspegawaiCreateNestedOneWithoutTrtransaksiInput + mstindakan?: mstindakanCreateNestedOneWithoutTrtransaksiInput + } + + export type trtransaksiUncheckedCreateWithoutTrregistrasiInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + idtindakan?: number | null + jmltindakan?: number | null + idpegawai?: number | null + } + + export type trtransaksiCreateOrConnectWithoutTrregistrasiInput = { + where: trtransaksiWhereUniqueInput + create: XOR + } + + export type trtransaksiCreateManyTrregistrasiInputEnvelope = { + data: trtransaksiCreateManyTrregistrasiInput | trtransaksiCreateManyTrregistrasiInput[] + skipDuplicates?: boolean + } + + export type msasuransiUpsertWithoutTrregistrasiInput = { + update: XOR + create: XOR + where?: msasuransiWhereInput + } + + export type msasuransiUpdateToOneWithWhereWithoutTrregistrasiInput = { + where?: msasuransiWhereInput + data: XOR + } + + export type msasuransiUpdateWithoutTrregistrasiInput = { + idasuransi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaasuransi?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type msasuransiUncheckedUpdateWithoutTrregistrasiInput = { + idasuransi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaasuransi?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type mspasienUpsertWithoutTrregistrasiInput = { + update: XOR + create: XOR + where?: mspasienWhereInput + } + + export type mspasienUpdateToOneWithWhereWithoutTrregistrasiInput = { + where?: mspasienWhereInput + data: XOR + } + + export type mspasienUpdateWithoutTrregistrasiInput = { + idpasien?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + mrpasien?: NullableStringFieldUpdateOperationsInput | string | null + namapasien?: NullableStringFieldUpdateOperationsInput | string | null + tanggallahir?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + jeniskelamin?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type mspasienUncheckedUpdateWithoutTrregistrasiInput = { + idpasien?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + mrpasien?: NullableStringFieldUpdateOperationsInput | string | null + namapasien?: NullableStringFieldUpdateOperationsInput | string | null + tanggallahir?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + jeniskelamin?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type mspegawaiUpsertWithoutTrregistrasiInput = { + update: XOR + create: XOR + where?: mspegawaiWhereInput + } + + export type mspegawaiUpdateToOneWithWhereWithoutTrregistrasiInput = { + where?: mspegawaiWhereInput + data: XOR + } + + export type mspegawaiUpdateWithoutTrregistrasiInput = { + idpegawai?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namapegawai?: NullableStringFieldUpdateOperationsInput | string | null + trtransaksi?: trtransaksiUpdateManyWithoutMspegawaiNestedInput + } + + export type mspegawaiUncheckedUpdateWithoutTrregistrasiInput = { + idpegawai?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namapegawai?: NullableStringFieldUpdateOperationsInput | string | null + trtransaksi?: trtransaksiUncheckedUpdateManyWithoutMspegawaiNestedInput + } + + export type msruangpelayananUpsertWithoutTrregistrasiInput = { + update: XOR + create: XOR + where?: msruangpelayananWhereInput + } + + export type msruangpelayananUpdateToOneWithWhereWithoutTrregistrasiInput = { + where?: msruangpelayananWhereInput + data: XOR + } + + export type msruangpelayananUpdateWithoutTrregistrasiInput = { + idruangpelayanan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaruangpelayanan?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type msruangpelayananUncheckedUpdateWithoutTrregistrasiInput = { + idruangpelayanan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namaruangpelayanan?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type trtransaksiUpsertWithWhereUniqueWithoutTrregistrasiInput = { + where: trtransaksiWhereUniqueInput + update: XOR + create: XOR + } + + export type trtransaksiUpdateWithWhereUniqueWithoutTrregistrasiInput = { + where: trtransaksiWhereUniqueInput + data: XOR + } + + export type trtransaksiUpdateManyWithWhereWithoutTrregistrasiInput = { + where: trtransaksiScalarWhereInput + data: XOR + } + + export type mspegawaiCreateWithoutTrtransaksiInput = { + idpegawai: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namapegawai?: string | null + trregistrasi?: trregistrasiCreateNestedManyWithoutMspegawaiInput + } + + export type mspegawaiUncheckedCreateWithoutTrtransaksiInput = { + idpegawai: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namapegawai?: string | null + trregistrasi?: trregistrasiUncheckedCreateNestedManyWithoutMspegawaiInput + } + + export type mspegawaiCreateOrConnectWithoutTrtransaksiInput = { + where: mspegawaiWhereUniqueInput + create: XOR + } + + export type trregistrasiCreateWithoutTrtransaksiInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + nomorkartuasuransi?: string | null + msasuransi?: msasuransiCreateNestedOneWithoutTrregistrasiInput + mspasien?: mspasienCreateNestedOneWithoutTrregistrasiInput + mspegawai?: mspegawaiCreateNestedOneWithoutTrregistrasiInput + msruangpelayanan?: msruangpelayananCreateNestedOneWithoutTrregistrasiInput + } + + export type trregistrasiUncheckedCreateWithoutTrtransaksiInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + idpasien?: number | null + nomorkartuasuransi?: string | null + idasuransi?: number | null + idpegawai?: number | null + idruangpelayanan?: number | null + } + + export type trregistrasiCreateOrConnectWithoutTrtransaksiInput = { + where: trregistrasiWhereUniqueInput + create: XOR + } + + export type mstindakanCreateWithoutTrtransaksiInput = { + idtindakan: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namatindakan?: string | null + tariftindakan?: Decimal | DecimalJsLike | number | string | null + } + + export type mstindakanUncheckedCreateWithoutTrtransaksiInput = { + idtindakan: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + namatindakan?: string | null + tariftindakan?: Decimal | DecimalJsLike | number | string | null + } + + export type mstindakanCreateOrConnectWithoutTrtransaksiInput = { + where: mstindakanWhereUniqueInput + create: XOR + } + + export type mspegawaiUpsertWithoutTrtransaksiInput = { + update: XOR + create: XOR + where?: mspegawaiWhereInput + } + + export type mspegawaiUpdateToOneWithWhereWithoutTrtransaksiInput = { + where?: mspegawaiWhereInput + data: XOR + } + + export type mspegawaiUpdateWithoutTrtransaksiInput = { + idpegawai?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namapegawai?: NullableStringFieldUpdateOperationsInput | string | null + trregistrasi?: trregistrasiUpdateManyWithoutMspegawaiNestedInput + } + + export type mspegawaiUncheckedUpdateWithoutTrtransaksiInput = { + idpegawai?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namapegawai?: NullableStringFieldUpdateOperationsInput | string | null + trregistrasi?: trregistrasiUncheckedUpdateManyWithoutMspegawaiNestedInput + } + + export type trregistrasiUpsertWithoutTrtransaksiInput = { + update: XOR + create: XOR + where?: trregistrasiWhereInput + } + + export type trregistrasiUpdateToOneWithWhereWithoutTrtransaksiInput = { + where?: trregistrasiWhereInput + data: XOR + } + + export type trregistrasiUpdateWithoutTrtransaksiInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + msasuransi?: msasuransiUpdateOneWithoutTrregistrasiNestedInput + mspasien?: mspasienUpdateOneWithoutTrregistrasiNestedInput + mspegawai?: mspegawaiUpdateOneWithoutTrregistrasiNestedInput + msruangpelayanan?: msruangpelayananUpdateOneWithoutTrregistrasiNestedInput + } + + export type trregistrasiUncheckedUpdateWithoutTrtransaksiInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + idpasien?: NullableIntFieldUpdateOperationsInput | number | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idasuransi?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + idruangpelayanan?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type mstindakanUpsertWithoutTrtransaksiInput = { + update: XOR + create: XOR + where?: mstindakanWhereInput + } + + export type mstindakanUpdateToOneWithWhereWithoutTrtransaksiInput = { + where?: mstindakanWhereInput + data: XOR + } + + export type mstindakanUpdateWithoutTrtransaksiInput = { + idtindakan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namatindakan?: NullableStringFieldUpdateOperationsInput | string | null + tariftindakan?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null + } + + export type mstindakanUncheckedUpdateWithoutTrtransaksiInput = { + idtindakan?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + namatindakan?: NullableStringFieldUpdateOperationsInput | string | null + tariftindakan?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null + } + + export type trregistrasiCreateManyMsasuransiInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + idpasien?: number | null + nomorkartuasuransi?: string | null + idpegawai?: number | null + idruangpelayanan?: number | null + } + + export type trregistrasiUpdateWithoutMsasuransiInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + mspasien?: mspasienUpdateOneWithoutTrregistrasiNestedInput + mspegawai?: mspegawaiUpdateOneWithoutTrregistrasiNestedInput + msruangpelayanan?: msruangpelayananUpdateOneWithoutTrregistrasiNestedInput + trtransaksi?: trtransaksiUpdateManyWithoutTrregistrasiNestedInput + } + + export type trregistrasiUncheckedUpdateWithoutMsasuransiInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + idpasien?: NullableIntFieldUpdateOperationsInput | number | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + idruangpelayanan?: NullableIntFieldUpdateOperationsInput | number | null + trtransaksi?: trtransaksiUncheckedUpdateManyWithoutTrregistrasiNestedInput + } + + export type trregistrasiUncheckedUpdateManyWithoutMsasuransiInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + idpasien?: NullableIntFieldUpdateOperationsInput | number | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + idruangpelayanan?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trregistrasiCreateManyMspasienInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + nomorkartuasuransi?: string | null + idasuransi?: number | null + idpegawai?: number | null + idruangpelayanan?: number | null + } + + export type trregistrasiUpdateWithoutMspasienInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + msasuransi?: msasuransiUpdateOneWithoutTrregistrasiNestedInput + mspegawai?: mspegawaiUpdateOneWithoutTrregistrasiNestedInput + msruangpelayanan?: msruangpelayananUpdateOneWithoutTrregistrasiNestedInput + trtransaksi?: trtransaksiUpdateManyWithoutTrregistrasiNestedInput + } + + export type trregistrasiUncheckedUpdateWithoutMspasienInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idasuransi?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + idruangpelayanan?: NullableIntFieldUpdateOperationsInput | number | null + trtransaksi?: trtransaksiUncheckedUpdateManyWithoutTrregistrasiNestedInput + } + + export type trregistrasiUncheckedUpdateManyWithoutMspasienInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idasuransi?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + idruangpelayanan?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trregistrasiCreateManyMspegawaiInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + idpasien?: number | null + nomorkartuasuransi?: string | null + idasuransi?: number | null + idruangpelayanan?: number | null + } + + export type trtransaksiCreateManyMspegawaiInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + idregistrasi?: number | null + idtindakan?: number | null + jmltindakan?: number | null + } + + export type trregistrasiUpdateWithoutMspegawaiInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + msasuransi?: msasuransiUpdateOneWithoutTrregistrasiNestedInput + mspasien?: mspasienUpdateOneWithoutTrregistrasiNestedInput + msruangpelayanan?: msruangpelayananUpdateOneWithoutTrregistrasiNestedInput + trtransaksi?: trtransaksiUpdateManyWithoutTrregistrasiNestedInput + } + + export type trregistrasiUncheckedUpdateWithoutMspegawaiInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + idpasien?: NullableIntFieldUpdateOperationsInput | number | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idasuransi?: NullableIntFieldUpdateOperationsInput | number | null + idruangpelayanan?: NullableIntFieldUpdateOperationsInput | number | null + trtransaksi?: trtransaksiUncheckedUpdateManyWithoutTrregistrasiNestedInput + } + + export type trregistrasiUncheckedUpdateManyWithoutMspegawaiInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + idpasien?: NullableIntFieldUpdateOperationsInput | number | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idasuransi?: NullableIntFieldUpdateOperationsInput | number | null + idruangpelayanan?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trtransaksiUpdateWithoutMspegawaiInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + trregistrasi?: trregistrasiUpdateOneWithoutTrtransaksiNestedInput + mstindakan?: mstindakanUpdateOneWithoutTrtransaksiNestedInput + } + + export type trtransaksiUncheckedUpdateWithoutMspegawaiInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + idregistrasi?: NullableIntFieldUpdateOperationsInput | number | null + idtindakan?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trtransaksiUncheckedUpdateManyWithoutMspegawaiInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + idregistrasi?: NullableIntFieldUpdateOperationsInput | number | null + idtindakan?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trregistrasiCreateManyMsruangpelayananInput = { + idregistrasi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + tanggalregistrasi?: Date | string | null + idpasien?: number | null + nomorkartuasuransi?: string | null + idasuransi?: number | null + idpegawai?: number | null + } + + export type trregistrasiUpdateWithoutMsruangpelayananInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + msasuransi?: msasuransiUpdateOneWithoutTrregistrasiNestedInput + mspasien?: mspasienUpdateOneWithoutTrregistrasiNestedInput + mspegawai?: mspegawaiUpdateOneWithoutTrregistrasiNestedInput + trtransaksi?: trtransaksiUpdateManyWithoutTrregistrasiNestedInput + } + + export type trregistrasiUncheckedUpdateWithoutMsruangpelayananInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + idpasien?: NullableIntFieldUpdateOperationsInput | number | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idasuransi?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + trtransaksi?: trtransaksiUncheckedUpdateManyWithoutTrregistrasiNestedInput + } + + export type trregistrasiUncheckedUpdateManyWithoutMsruangpelayananInput = { + idregistrasi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + tanggalregistrasi?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + idpasien?: NullableIntFieldUpdateOperationsInput | number | null + nomorkartuasuransi?: NullableStringFieldUpdateOperationsInput | string | null + idasuransi?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trtransaksiCreateManyMstindakanInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + idregistrasi?: number | null + jmltindakan?: number | null + idpegawai?: number | null + } + + export type trtransaksiUpdateWithoutMstindakanInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + mspegawai?: mspegawaiUpdateOneWithoutTrtransaksiNestedInput + trregistrasi?: trregistrasiUpdateOneWithoutTrtransaksiNestedInput + } + + export type trtransaksiUncheckedUpdateWithoutMstindakanInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + idregistrasi?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trtransaksiUncheckedUpdateManyWithoutMstindakanInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + idregistrasi?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trtransaksiCreateManyTrregistrasiInput = { + idtransaksi: number + created_at?: Date | string | null + created_by?: number | null + modified_at?: Date | string | null + modified_by?: number | null + deleted_at?: Date | string | null + deleted_by?: number | null + idtindakan?: number | null + jmltindakan?: number | null + idpegawai?: number | null + } + + export type trtransaksiUpdateWithoutTrregistrasiInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + mspegawai?: mspegawaiUpdateOneWithoutTrtransaksiNestedInput + mstindakan?: mstindakanUpdateOneWithoutTrtransaksiNestedInput + } + + export type trtransaksiUncheckedUpdateWithoutTrregistrasiInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + idtindakan?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + } + + export type trtransaksiUncheckedUpdateManyWithoutTrregistrasiInput = { + idtransaksi?: IntFieldUpdateOperationsInput | number + created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + created_by?: NullableIntFieldUpdateOperationsInput | number | null + modified_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + modified_by?: NullableIntFieldUpdateOperationsInput | number | null + deleted_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deleted_by?: NullableIntFieldUpdateOperationsInput | number | null + idtindakan?: NullableIntFieldUpdateOperationsInput | number | null + jmltindakan?: NullableIntFieldUpdateOperationsInput | number | null + idpegawai?: NullableIntFieldUpdateOperationsInput | number | null + } + + + + /** + * Aliases for legacy arg types + */ + /** + * @deprecated Use MsasuransiCountOutputTypeDefaultArgs instead + */ + export type MsasuransiCountOutputTypeArgs = MsasuransiCountOutputTypeDefaultArgs + /** + * @deprecated Use MspasienCountOutputTypeDefaultArgs instead + */ + export type MspasienCountOutputTypeArgs = MspasienCountOutputTypeDefaultArgs + /** + * @deprecated Use MspegawaiCountOutputTypeDefaultArgs instead + */ + export type MspegawaiCountOutputTypeArgs = MspegawaiCountOutputTypeDefaultArgs + /** + * @deprecated Use MsruangpelayananCountOutputTypeDefaultArgs instead + */ + export type MsruangpelayananCountOutputTypeArgs = MsruangpelayananCountOutputTypeDefaultArgs + /** + * @deprecated Use MstindakanCountOutputTypeDefaultArgs instead + */ + export type MstindakanCountOutputTypeArgs = MstindakanCountOutputTypeDefaultArgs + /** + * @deprecated Use TrregistrasiCountOutputTypeDefaultArgs instead + */ + export type TrregistrasiCountOutputTypeArgs = TrregistrasiCountOutputTypeDefaultArgs + /** + * @deprecated Use msasuransiDefaultArgs instead + */ + export type msasuransiArgs = msasuransiDefaultArgs + /** + * @deprecated Use mspasienDefaultArgs instead + */ + export type mspasienArgs = mspasienDefaultArgs + /** + * @deprecated Use mspegawaiDefaultArgs instead + */ + export type mspegawaiArgs = mspegawaiDefaultArgs + /** + * @deprecated Use msruangpelayananDefaultArgs instead + */ + export type msruangpelayananArgs = msruangpelayananDefaultArgs + /** + * @deprecated Use mstindakanDefaultArgs instead + */ + export type mstindakanArgs = mstindakanDefaultArgs + /** + * @deprecated Use trregistrasiDefaultArgs instead + */ + export type trregistrasiArgs = trregistrasiDefaultArgs + /** + * @deprecated Use trtransaksiDefaultArgs instead + */ + export type trtransaksiArgs = trtransaksiDefaultArgs + /** + * @deprecated Use msusersDefaultArgs instead + */ + export type msusersArgs = msusersDefaultArgs + + /** + * Batch Payload for updateMany & deleteMany & createMany + */ + + export type BatchPayload = { + count: number + } + + /** + * DMMF + */ + export const dmmf: runtime.BaseDMMF +} \ No newline at end of file diff --git a/backend/prisma/generated/client-db1/index.js b/backend/prisma/generated/client-db1/index.js new file mode 100644 index 0000000..b926d77 --- /dev/null +++ b/backend/prisma/generated/client-db1/index.js @@ -0,0 +1,311 @@ + +Object.defineProperty(exports, "__esModule", { value: true }); + +const { + PrismaClientKnownRequestError, + PrismaClientUnknownRequestError, + PrismaClientRustPanicError, + PrismaClientInitializationError, + PrismaClientValidationError, + NotFoundError, + getPrismaClient, + sqltag, + empty, + join, + raw, + Decimal, + Debug, + objectEnumValues, + makeStrictEnum, + Extensions, + warnOnce, + defineDmmfProperty, + Public, + detectRuntime, +} = require('./runtime/library.js') + + +const Prisma = {} + +exports.Prisma = Prisma +exports.$Enums = {} + +/** + * Prisma Client JS version: 5.10.2 + * Query Engine version: 5a9203d0590c951969e85a7d07215503f4672eb9 + */ +Prisma.prismaVersion = { + client: "5.10.2", + engine: "5a9203d0590c951969e85a7d07215503f4672eb9" +} + +Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError; +Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError +Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError +Prisma.PrismaClientInitializationError = PrismaClientInitializationError +Prisma.PrismaClientValidationError = PrismaClientValidationError +Prisma.NotFoundError = NotFoundError +Prisma.Decimal = Decimal + +/** + * Re-export of sql-template-tag + */ +Prisma.sql = sqltag +Prisma.empty = empty +Prisma.join = join +Prisma.raw = raw +Prisma.validator = Public.validator + +/** +* Extensions +*/ +Prisma.getExtensionContext = Extensions.getExtensionContext +Prisma.defineExtension = Extensions.defineExtension + +/** + * Shorthand utilities for JSON filtering + */ +Prisma.DbNull = objectEnumValues.instances.DbNull +Prisma.JsonNull = objectEnumValues.instances.JsonNull +Prisma.AnyNull = objectEnumValues.instances.AnyNull + +Prisma.NullTypes = { + DbNull: objectEnumValues.classes.DbNull, + JsonNull: objectEnumValues.classes.JsonNull, + AnyNull: objectEnumValues.classes.AnyNull +} + + + const path = require('path') + +/** + * Enums + */ +exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ + ReadUncommitted: 'ReadUncommitted', + ReadCommitted: 'ReadCommitted', + RepeatableRead: 'RepeatableRead', + Serializable: 'Serializable' +}); + +exports.Prisma.MsasuransiScalarFieldEnum = { + idasuransi: 'idasuransi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namaasuransi: 'namaasuransi' +}; + +exports.Prisma.MspasienScalarFieldEnum = { + idpasien: 'idpasien', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + mrpasien: 'mrpasien', + namapasien: 'namapasien', + tanggallahir: 'tanggallahir', + jeniskelamin: 'jeniskelamin' +}; + +exports.Prisma.MspegawaiScalarFieldEnum = { + idpegawai: 'idpegawai', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namapegawai: 'namapegawai' +}; + +exports.Prisma.MsruangpelayananScalarFieldEnum = { + idruangpelayanan: 'idruangpelayanan', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namaruangpelayanan: 'namaruangpelayanan' +}; + +exports.Prisma.MstindakanScalarFieldEnum = { + idtindakan: 'idtindakan', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namatindakan: 'namatindakan', + tariftindakan: 'tariftindakan' +}; + +exports.Prisma.TrregistrasiScalarFieldEnum = { + idregistrasi: 'idregistrasi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + tanggalregistrasi: 'tanggalregistrasi', + idpasien: 'idpasien', + nomorkartuasuransi: 'nomorkartuasuransi', + idasuransi: 'idasuransi', + idpegawai: 'idpegawai', + idruangpelayanan: 'idruangpelayanan' +}; + +exports.Prisma.TrtransaksiScalarFieldEnum = { + idtransaksi: 'idtransaksi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + idregistrasi: 'idregistrasi', + idtindakan: 'idtindakan', + jmltindakan: 'jmltindakan', + idpegawai: 'idpegawai' +}; + +exports.Prisma.MsusersScalarFieldEnum = { + user_id: 'user_id', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + username: 'username', + password: 'password', + full_name: 'full_name', + email: 'email', + is_active: 'is_active' +}; + +exports.Prisma.SortOrder = { + asc: 'asc', + desc: 'desc' +}; + +exports.Prisma.QueryMode = { + default: 'default', + insensitive: 'insensitive' +}; + +exports.Prisma.NullsOrder = { + first: 'first', + last: 'last' +}; + + +exports.Prisma.ModelName = { + msasuransi: 'msasuransi', + mspasien: 'mspasien', + mspegawai: 'mspegawai', + msruangpelayanan: 'msruangpelayanan', + mstindakan: 'mstindakan', + trregistrasi: 'trregistrasi', + trtransaksi: 'trtransaksi', + msusers: 'msusers' +}; +/** + * Create the Client + */ +const config = { + "generator": { + "name": "client", + "provider": { + "fromEnvVar": null, + "value": "prisma-client-js" + }, + "output": { + "value": "/Users/mac/Documents/test_rsab/backend/prisma/generated/client-db1", + "fromEnvVar": null + }, + "config": { + "engineType": "library" + }, + "binaryTargets": [ + { + "fromEnvVar": null, + "value": "darwin", + "native": true + } + ], + "previewFeatures": [], + "isCustomOutput": true + }, + "relativeEnvPaths": { + "rootEnvPath": null, + "schemaEnvPath": "../../../.env" + }, + "relativePath": "../../db1", + "clientVersion": "5.10.2", + "engineVersion": "5a9203d0590c951969e85a7d07215503f4672eb9", + "datasourceNames": [ + "db" + ], + "activeProvider": "postgresql", + "postinstall": false, + "inlineDatasources": { + "db": { + "url": { + "fromEnvVar": "DATABASE_URL", + "value": null + } + } + }, + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../generated/client-db1\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel msasuransi {\n idasuransi Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n namaasuransi String? @db.VarChar(255)\n trregistrasi trregistrasi[]\n}\n\nmodel mspasien {\n idpasien Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n mrpasien String? @db.VarChar(50)\n namapasien String? @db.VarChar(255)\n tanggallahir DateTime? @db.Date\n jeniskelamin String? @db.VarChar(10)\n trregistrasi trregistrasi[]\n}\n\nmodel mspegawai {\n idpegawai Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n namapegawai String? @db.VarChar(255)\n trregistrasi trregistrasi[]\n trtransaksi trtransaksi[]\n}\n\nmodel msruangpelayanan {\n idruangpelayanan Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n namaruangpelayanan String? @db.VarChar(255)\n trregistrasi trregistrasi[]\n}\n\nmodel mstindakan {\n idtindakan Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n namatindakan String? @db.VarChar(255)\n tariftindakan Decimal? @db.Decimal(18, 2)\n trtransaksi trtransaksi[]\n}\n\nmodel trregistrasi {\n idregistrasi Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n tanggalregistrasi DateTime? @db.Timestamp(6)\n idpasien Int?\n nomorkartuasuransi String? @db.VarChar(100)\n idasuransi Int?\n idpegawai Int?\n idruangpelayanan Int?\n msasuransi msasuransi? @relation(fields: [idasuransi], references: [idasuransi], onDelete: NoAction, onUpdate: NoAction)\n mspasien mspasien? @relation(fields: [idpasien], references: [idpasien], onDelete: NoAction, onUpdate: NoAction)\n mspegawai mspegawai? @relation(fields: [idpegawai], references: [idpegawai], onDelete: NoAction, onUpdate: NoAction)\n msruangpelayanan msruangpelayanan? @relation(fields: [idruangpelayanan], references: [idruangpelayanan], onDelete: NoAction, onUpdate: NoAction)\n trtransaksi trtransaksi[]\n}\n\nmodel trtransaksi {\n idtransaksi Int @id\n created_at DateTime? @default(now()) @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n idregistrasi Int?\n idtindakan Int?\n jmltindakan Int?\n idpegawai Int?\n mspegawai mspegawai? @relation(fields: [idpegawai], references: [idpegawai], onDelete: NoAction, onUpdate: NoAction)\n trregistrasi trregistrasi? @relation(fields: [idregistrasi], references: [idregistrasi], onDelete: NoAction, onUpdate: NoAction)\n mstindakan mstindakan? @relation(fields: [idtindakan], references: [idtindakan], onDelete: NoAction, onUpdate: NoAction)\n}\n\nmodel msusers {\n user_id Int @id(map: \"users_pkey\")\n created_at DateTime? @db.Timestamp(6)\n created_by Int?\n modified_at DateTime? @db.Timestamp(6)\n modified_by Int?\n deleted_at DateTime? @db.Timestamp(6)\n deleted_by Int?\n username String @unique(map: \"users_username_key\") @db.VarChar(50)\n password String\n full_name String? @db.VarChar(100)\n email String? @db.VarChar(100)\n is_active Boolean? @default(true)\n}\n", + "inlineSchemaHash": "8d9a5cfa1ad73b70f9c180db017652729f6f6b67b7b899e0be1e9bb40632f680", + "copyEngine": true +} + +const fs = require('fs') + +config.dirname = __dirname +if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) { + const alternativePaths = [ + "prisma/generated/client-db1", + "generated/client-db1", + ] + + const alternativePath = alternativePaths.find((altPath) => { + return fs.existsSync(path.join(process.cwd(), altPath, 'schema.prisma')) + }) ?? alternativePaths[0] + + config.dirname = path.join(process.cwd(), alternativePath) + config.isBundled = true +} + +config.runtimeDataModel = JSON.parse("{\"models\":{\"msasuransi\":{\"dbName\":null,\"fields\":[{\"name\":\"idasuransi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"namaasuransi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trregistrasi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trregistrasi\",\"relationName\":\"msasuransiTotrregistrasi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"mspasien\":{\"dbName\":null,\"fields\":[{\"name\":\"idpasien\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mrpasien\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"namapasien\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tanggallahir\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jeniskelamin\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trregistrasi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trregistrasi\",\"relationName\":\"mspasienTotrregistrasi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"mspegawai\":{\"dbName\":null,\"fields\":[{\"name\":\"idpegawai\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"namapegawai\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trregistrasi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trregistrasi\",\"relationName\":\"mspegawaiTotrregistrasi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trtransaksi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trtransaksi\",\"relationName\":\"mspegawaiTotrtransaksi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"msruangpelayanan\":{\"dbName\":null,\"fields\":[{\"name\":\"idruangpelayanan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"namaruangpelayanan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trregistrasi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trregistrasi\",\"relationName\":\"msruangpelayananTotrregistrasi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"mstindakan\":{\"dbName\":null,\"fields\":[{\"name\":\"idtindakan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"namatindakan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tariftindakan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trtransaksi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trtransaksi\",\"relationName\":\"mstindakanTotrtransaksi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"trregistrasi\":{\"dbName\":null,\"fields\":[{\"name\":\"idregistrasi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tanggalregistrasi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idpasien\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nomorkartuasuransi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idasuransi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idpegawai\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idruangpelayanan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"msasuransi\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"msasuransi\",\"relationName\":\"msasuransiTotrregistrasi\",\"relationFromFields\":[\"idasuransi\"],\"relationToFields\":[\"idasuransi\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mspasien\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"mspasien\",\"relationName\":\"mspasienTotrregistrasi\",\"relationFromFields\":[\"idpasien\"],\"relationToFields\":[\"idpasien\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mspegawai\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"mspegawai\",\"relationName\":\"mspegawaiTotrregistrasi\",\"relationFromFields\":[\"idpegawai\"],\"relationToFields\":[\"idpegawai\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"msruangpelayanan\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"msruangpelayanan\",\"relationName\":\"msruangpelayananTotrregistrasi\",\"relationFromFields\":[\"idruangpelayanan\"],\"relationToFields\":[\"idruangpelayanan\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trtransaksi\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trtransaksi\",\"relationName\":\"trregistrasiTotrtransaksi\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"trtransaksi\":{\"dbName\":null,\"fields\":[{\"name\":\"idtransaksi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idregistrasi\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idtindakan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jmltindakan\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"idpegawai\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mspegawai\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"mspegawai\",\"relationName\":\"mspegawaiTotrtransaksi\",\"relationFromFields\":[\"idpegawai\"],\"relationToFields\":[\"idpegawai\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trregistrasi\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"trregistrasi\",\"relationName\":\"trregistrasiTotrtransaksi\",\"relationFromFields\":[\"idregistrasi\"],\"relationToFields\":[\"idregistrasi\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mstindakan\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"mstindakan\",\"relationName\":\"mstindakanTotrtransaksi\",\"relationFromFields\":[\"idtindakan\"],\"relationToFields\":[\"idtindakan\"],\"relationOnDelete\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"msusers\":{\"dbName\":null,\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deleted_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"username\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"full_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"is_active\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") +defineDmmfProperty(exports.Prisma, config.runtimeDataModel) +config.engineWasm = undefined + + +const { warnEnvConflicts } = require('./runtime/library.js') + +warnEnvConflicts({ + rootEnvPath: config.relativeEnvPaths.rootEnvPath && path.resolve(config.dirname, config.relativeEnvPaths.rootEnvPath), + schemaEnvPath: config.relativeEnvPaths.schemaEnvPath && path.resolve(config.dirname, config.relativeEnvPaths.schemaEnvPath) +}) + +const PrismaClient = getPrismaClient(config) +exports.PrismaClient = PrismaClient +Object.assign(exports, Prisma) + +// file annotations for bundling tools to include these files +path.join(__dirname, "libquery_engine-darwin.dylib.node"); +path.join(process.cwd(), "prisma/generated/client-db1/libquery_engine-darwin.dylib.node") +// file annotations for bundling tools to include these files +path.join(__dirname, "schema.prisma"); +path.join(process.cwd(), "prisma/generated/client-db1/schema.prisma") diff --git a/backend/prisma/generated/client-db1/libquery_engine-darwin.dylib.node b/backend/prisma/generated/client-db1/libquery_engine-darwin.dylib.node new file mode 100755 index 0000000..3dde31e Binary files /dev/null and b/backend/prisma/generated/client-db1/libquery_engine-darwin.dylib.node differ diff --git a/backend/prisma/generated/client-db1/package.json b/backend/prisma/generated/client-db1/package.json new file mode 100644 index 0000000..ab4390f --- /dev/null +++ b/backend/prisma/generated/client-db1/package.json @@ -0,0 +1,78 @@ +{ + "name": "prisma-client-ef5f8649680142c6d7396536765226473614e01ca4161892e9d9f399f2df14dd", + "main": "index.js", + "types": "index.d.ts", + "browser": "index-browser.js", + "exports": { + "./package.json": "./package.json", + ".": { + "require": { + "types": "./default.d.ts", + "node": "./default.js", + "edge-light": "./wasm.js", + "workerd": "./wasm.js", + "worker": "./wasm.js", + "browser": "./index-browser.js" + }, + "import": { + "types": "./default.d.ts", + "node": "./default.js", + "edge-light": "./wasm.js", + "workerd": "./wasm.js", + "worker": "./wasm.js", + "browser": "./index-browser.js" + }, + "default": "./default.js" + }, + "./edge": { + "types": "./edge.d.ts", + "require": "./edge.js", + "import": "./edge.js", + "default": "./edge.js" + }, + "./extension": { + "types": "./extension.d.ts", + "require": "./extension.js", + "import": "./extension.js", + "default": "./extension.js" + }, + "./index-browser": { + "types": "./default.d.ts", + "require": "./index-browser.js", + "import": "./index-browser.js", + "default": "./index-browser.js" + }, + "./index": { + "types": "./default.d.ts", + "require": "./default.js", + "import": "./default.js", + "default": "./default.js" + }, + "./wasm": { + "types": "./wasm.d.ts", + "require": "./wasm.js", + "import": "./wasm.js", + "default": "./wasm.js" + }, + "./runtime/library": { + "types": "./runtime/library.d.ts", + "require": "./runtime/library.js", + "import": "./runtime/library.js", + "default": "./runtime/library.js" + }, + "./runtime/binary": { + "types": "./runtime/binary.d.ts", + "require": "./runtime/binary.js", + "import": "./runtime/binary.js", + "default": "./runtime/binary.js" + }, + "./generator-build": { + "require": "./generator-build/index.js", + "import": "./generator-build/index.js", + "default": "./generator-build/index.js" + }, + "./*": "./*" + }, + "version": "5.10.2", + "sideEffects": false +} \ No newline at end of file diff --git a/backend/prisma/generated/client-db1/runtime/edge-esm.js b/backend/prisma/generated/client-db1/runtime/edge-esm.js new file mode 100644 index 0000000..67366d3 --- /dev/null +++ b/backend/prisma/generated/client-db1/runtime/edge-esm.js @@ -0,0 +1,28 @@ +var ta=Object.create;var nr=Object.defineProperty;var ra=Object.getOwnPropertyDescriptor;var na=Object.getOwnPropertyNames;var ia=Object.getPrototypeOf,oa=Object.prototype.hasOwnProperty;var Pt=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(t,r)=>(typeof require!="undefined"?require:t)[r]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Ee=(e,t)=>()=>(e&&(t=e(e=0)),t);var Re=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ir=(e,t)=>{for(var r in t)nr(e,r,{get:t[r],enumerable:!0})},Qn=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of na(t))!oa.call(e,i)&&i!==r&&nr(e,i,{get:()=>t[i],enumerable:!(n=ra(t,i))||n.enumerable});return e};var Ve=(e,t,r)=>(r=e!=null?ta(ia(e)):{},Qn(t||!e||!e.__esModule?nr(r,"default",{value:e,enumerable:!0}):r,e)),Gn=e=>Qn(nr({},"__esModule",{value:!0}),e);var y,c=Ee(()=>{"use strict";y={nextTick:(e,...t)=>{setTimeout(()=>{e(...t)},0)},env:{},version:"",cwd:()=>"/",stderr:{},argv:["/bin/node"]}});var Hn,b,p=Ee(()=>{"use strict";b=(Hn=globalThis.performance)!=null?Hn:(()=>{let e=Date.now();return{now:()=>Date.now()-e}})()});var E,f=Ee(()=>{"use strict";E=()=>{};E.prototype=E});var m=Ee(()=>{"use strict"});var fi=Re(nt=>{"use strict";d();c();p();f();m();var Zn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),sa=Zn(e=>{"use strict";e.byteLength=u,e.toByteArray=g,e.fromByteArray=S;var t=[],r=[],n=typeof Uint8Array<"u"?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(o=0,s=i.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var D=A.indexOf("=");D===-1&&(D=R);var M=D===R?0:4-D%4;return[D,M]}function u(A){var R=a(A),D=R[0],M=R[1];return(D+M)*3/4-M}function l(A,R,D){return(R+D)*3/4-D}function g(A){var R,D=a(A),M=D[0],B=D[1],I=new n(l(A,M,B)),L=0,X=B>0?M-4:M,F;for(F=0;F>16&255,I[L++]=R>>8&255,I[L++]=R&255;return B===2&&(R=r[A.charCodeAt(F)]<<2|r[A.charCodeAt(F+1)]>>4,I[L++]=R&255),B===1&&(R=r[A.charCodeAt(F)]<<10|r[A.charCodeAt(F+1)]<<4|r[A.charCodeAt(F+2)]>>2,I[L++]=R>>8&255,I[L++]=R&255),I}function h(A){return t[A>>18&63]+t[A>>12&63]+t[A>>6&63]+t[A&63]}function v(A,R,D){for(var M,B=[],I=R;IX?X:L+I));return M===1?(R=A[D-1],B.push(t[R>>2]+t[R<<4&63]+"==")):M===2&&(R=(A[D-2]<<8)+A[D-1],B.push(t[R>>10]+t[R>>4&63]+t[R<<2&63]+"=")),B.join("")}}),aa=Zn(e=>{e.read=function(t,r,n,i,o){var s,a,u=o*8-i-1,l=(1<>1,h=-7,v=n?o-1:0,S=n?-1:1,A=t[r+v];for(v+=S,s=A&(1<<-h)-1,A>>=-h,h+=u;h>0;s=s*256+t[r+v],v+=S,h-=8);for(a=s&(1<<-h)-1,s>>=-h,h+=i;h>0;a=a*256+t[r+v],v+=S,h-=8);if(s===0)s=1-g;else{if(s===l)return a?NaN:(A?-1:1)*(1/0);a=a+Math.pow(2,i),s=s-g}return(A?-1:1)*a*Math.pow(2,s-i)},e.write=function(t,r,n,i,o,s){var a,u,l,g=s*8-o-1,h=(1<>1,S=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,A=i?0:s-1,R=i?1:-1,D=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(u=isNaN(r)?1:0,a=h):(a=Math.floor(Math.log(r)/Math.LN2),r*(l=Math.pow(2,-a))<1&&(a--,l*=2),a+v>=1?r+=S/l:r+=S*Math.pow(2,1-v),r*l>=2&&(a++,l/=2),a+v>=h?(u=0,a=h):a+v>=1?(u=(r*l-1)*Math.pow(2,o),a=a+v):(u=r*Math.pow(2,v-1)*Math.pow(2,o),a=0));o>=8;t[n+A]=u&255,A+=R,u/=256,o-=8);for(a=a<0;t[n+A]=a&255,A+=R,a/=256,g-=8);t[n+A-R]|=D*128}}),Hr=sa(),tt=aa(),Wn=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;nt.Buffer=T;nt.SlowBuffer=ma;nt.INSPECT_MAX_BYTES=50;var or=2147483647;nt.kMaxLength=or;T.TYPED_ARRAY_SUPPORT=ua();!T.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function ua(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch(e){return!1}}Object.defineProperty(T.prototype,"parent",{enumerable:!0,get:function(){if(T.isBuffer(this))return this.buffer}});Object.defineProperty(T.prototype,"offset",{enumerable:!0,get:function(){if(T.isBuffer(this))return this.byteOffset}});function be(e){if(e>or)throw new RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,T.prototype),t}function T(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return zr(e)}return Xn(e,t,r)}T.poolSize=8192;function Xn(e,t,r){if(typeof e=="string")return ca(e,t);if(ArrayBuffer.isView(e))return pa(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(me(e,ArrayBuffer)||e&&me(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(me(e,SharedArrayBuffer)||e&&me(e.buffer,SharedArrayBuffer)))return ti(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return T.from(n,t,r);let i=fa(e);if(i)return i;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return T.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}T.from=function(e,t,r){return Xn(e,t,r)};Object.setPrototypeOf(T.prototype,Uint8Array.prototype);Object.setPrototypeOf(T,Uint8Array);function ei(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function la(e,t,r){return ei(e),e<=0?be(e):t!==void 0?typeof r=="string"?be(e).fill(t,r):be(e).fill(t):be(e)}T.alloc=function(e,t,r){return la(e,t,r)};function zr(e){return ei(e),be(e<0?0:Yr(e)|0)}T.allocUnsafe=function(e){return zr(e)};T.allocUnsafeSlow=function(e){return zr(e)};function ca(e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!T.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let r=ri(e,t)|0,n=be(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}function Wr(e){let t=e.length<0?0:Yr(e.length)|0,r=be(t);for(let n=0;n=or)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+or.toString(16)+" bytes");return e|0}function ma(e){return+e!=e&&(e=0),T.alloc(+e)}T.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==T.prototype};T.compare=function(e,t){if(me(e,Uint8Array)&&(e=T.from(e,e.offset,e.byteLength)),me(t,Uint8Array)&&(t=T.from(t,t.offset,t.byteLength)),!T.isBuffer(e)||!T.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let r=e.length,n=t.length;for(let i=0,o=Math.min(r,n);in.length?(T.isBuffer(o)||(o=T.from(o)),o.copy(n,i)):Uint8Array.prototype.set.call(n,o,i);else if(T.isBuffer(o))o.copy(n,i);else throw new TypeError('"list" argument must be an Array of Buffers');i+=o.length}return n};function ri(e,t){if(T.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||me(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Kr(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return pi(e).length;default:if(i)return n?-1:Kr(e).length;t=(""+t).toLowerCase(),i=!0}}T.byteLength=ri;function da(e,t,r){let n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return Ta(this,t,r);case"utf8":case"utf-8":return ii(this,t,r);case"ascii":return Pa(this,t,r);case"latin1":case"binary":return va(this,t,r);case"base64":return ba(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ca(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}T.prototype._isBuffer=!0;function je(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}T.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tt&&(e+=" ... "),""};Wn&&(T.prototype[Wn]=T.prototype.inspect);T.prototype.compare=function(e,t,r,n,i){if(me(e,Uint8Array)&&(e=T.from(e,e.offset,e.byteLength)),!T.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),r===void 0&&(r=e?e.length:0),n===void 0&&(n=0),i===void 0&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;let o=i-n,s=r-t,a=Math.min(o,s),u=this.slice(n,i),l=e.slice(t,r);for(let g=0;g2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,Xr(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=T.from(t,n)),T.isBuffer(t))return t.length===0?-1:Kn(e,t,r,n,i);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):Kn(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function Kn(e,t,r,n,i){let o=1,s=e.length,a=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;o=2,s/=2,a/=2,r/=2}function u(g,h){return o===1?g[h]:g.readUInt16BE(h*o)}let l;if(i){let g=-1;for(l=r;ls&&(r=s-a),l=r;l>=0;l--){let g=!0;for(let h=0;hi&&(n=i)):n=i;let o=t.length;n>o/2&&(n=o/2);let s;for(s=0;s>>0,isFinite(r)?(r=r>>>0,n===void 0&&(n="utf8")):(n=r,r=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let i=this.length-t;if((r===void 0||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return ga(this,e,t,r);case"utf8":case"utf-8":return ha(this,e,t,r);case"ascii":case"latin1":case"binary":return ya(this,e,t,r);case"base64":return wa(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ea(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}};T.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function ba(e,t,r){return t===0&&r===e.length?Hr.fromByteArray(e):Hr.fromByteArray(e.slice(t,r))}function ii(e,t,r){r=Math.min(e.length,r);let n=[],i=t;for(;i239?4:o>223?3:o>191?2:1;if(i+a<=r){let u,l,g,h;switch(a){case 1:o<128&&(s=o);break;case 2:u=e[i+1],(u&192)===128&&(h=(o&31)<<6|u&63,h>127&&(s=h));break;case 3:u=e[i+1],l=e[i+2],(u&192)===128&&(l&192)===128&&(h=(o&15)<<12|(u&63)<<6|l&63,h>2047&&(h<55296||h>57343)&&(s=h));break;case 4:u=e[i+1],l=e[i+2],g=e[i+3],(u&192)===128&&(l&192)===128&&(g&192)===128&&(h=(o&15)<<18|(u&63)<<12|(l&63)<<6|g&63,h>65535&&h<1114112&&(s=h))}}s===null?(s=65533,a=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),i+=a}return xa(n)}var zn=4096;function xa(e){let t=e.length;if(t<=zn)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn)&&(r=n);let i="";for(let o=t;or&&(e=r),t<0?(t+=r,t<0&&(t=0)):t>r&&(t=r),tr)throw new RangeError("Trying to access beyond buffer length")}T.prototype.readUintLE=T.prototype.readUIntLE=function(e,t,r){e=e>>>0,t=t>>>0,r||W(e,t,this.length);let n=this[e],i=1,o=0;for(;++o>>0,t=t>>>0,r||W(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n};T.prototype.readUint8=T.prototype.readUInt8=function(e,t){return e=e>>>0,t||W(e,1,this.length),this[e]};T.prototype.readUint16LE=T.prototype.readUInt16LE=function(e,t){return e=e>>>0,t||W(e,2,this.length),this[e]|this[e+1]<<8};T.prototype.readUint16BE=T.prototype.readUInt16BE=function(e,t){return e=e>>>0,t||W(e,2,this.length),this[e]<<8|this[e+1]};T.prototype.readUint32LE=T.prototype.readUInt32LE=function(e,t){return e=e>>>0,t||W(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};T.prototype.readUint32BE=T.prototype.readUInt32BE=function(e,t){return e=e>>>0,t||W(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};T.prototype.readBigUInt64LE=Se(function(e){e=e>>>0,rt(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&vt(e,this.length-8);let n=t+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,i=this[++e]+this[++e]*2**8+this[++e]*2**16+r*2**24;return BigInt(n)+(BigInt(i)<>>0,rt(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&vt(e,this.length-8);let n=t*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],i=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+r;return(BigInt(n)<>>0,t=t>>>0,r||W(e,t,this.length);let n=this[e],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*t)),n};T.prototype.readIntBE=function(e,t,r){e=e>>>0,t=t>>>0,r||W(e,t,this.length);let n=t,i=1,o=this[e+--n];for(;n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o};T.prototype.readInt8=function(e,t){return e=e>>>0,t||W(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};T.prototype.readInt16LE=function(e,t){e=e>>>0,t||W(e,2,this.length);let r=this[e]|this[e+1]<<8;return r&32768?r|4294901760:r};T.prototype.readInt16BE=function(e,t){e=e>>>0,t||W(e,2,this.length);let r=this[e+1]|this[e]<<8;return r&32768?r|4294901760:r};T.prototype.readInt32LE=function(e,t){return e=e>>>0,t||W(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};T.prototype.readInt32BE=function(e,t){return e=e>>>0,t||W(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};T.prototype.readBigInt64LE=Se(function(e){e=e>>>0,rt(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&vt(e,this.length-8);let n=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(r<<24);return(BigInt(n)<>>0,rt(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&vt(e,this.length-8);let n=(t<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(n)<>>0,t||W(e,4,this.length),tt.read(this,e,!0,23,4)};T.prototype.readFloatBE=function(e,t){return e=e>>>0,t||W(e,4,this.length),tt.read(this,e,!1,23,4)};T.prototype.readDoubleLE=function(e,t){return e=e>>>0,t||W(e,8,this.length),tt.read(this,e,!0,52,8)};T.prototype.readDoubleBE=function(e,t){return e=e>>>0,t||W(e,8,this.length),tt.read(this,e,!1,52,8)};function oe(e,t,r,n,i,o){if(!T.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}T.prototype.writeUintLE=T.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t=t>>>0,r=r>>>0,!n){let s=Math.pow(2,8*r)-1;oe(this,e,t,r,s,0)}let i=1,o=0;for(this[t]=e&255;++o>>0,r=r>>>0,!n){let s=Math.pow(2,8*r)-1;oe(this,e,t,r,s,0)}let i=r-1,o=1;for(this[t+i]=e&255;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r};T.prototype.writeUint8=T.prototype.writeUInt8=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,1,255,0),this[t]=e&255,t+1};T.prototype.writeUint16LE=T.prototype.writeUInt16LE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,2,65535,0),this[t]=e&255,this[t+1]=e>>>8,t+2};T.prototype.writeUint16BE=T.prototype.writeUInt16BE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=e&255,t+2};T.prototype.writeUint32LE=T.prototype.writeUInt32LE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=e&255,t+4};T.prototype.writeUint32BE=T.prototype.writeUInt32BE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};function oi(e,t,r,n,i){ci(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=s,s=s>>8,e[r++]=s,s=s>>8,e[r++]=s,s=s>>8,e[r++]=s,r}function si(e,t,r,n,i){ci(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o=o>>8,e[r+6]=o,o=o>>8,e[r+5]=o,o=o>>8,e[r+4]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=s,s=s>>8,e[r+2]=s,s=s>>8,e[r+1]=s,s=s>>8,e[r]=s,r+8}T.prototype.writeBigUInt64LE=Se(function(e,t=0){return oi(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))});T.prototype.writeBigUInt64BE=Se(function(e,t=0){return si(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))});T.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t=t>>>0,!n){let a=Math.pow(2,8*r-1);oe(this,e,t,r,a-1,-a)}let i=0,o=1,s=0;for(this[t]=e&255;++i>0)-s&255;return t+r};T.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t=t>>>0,!n){let a=Math.pow(2,8*r-1);oe(this,e,t,r,a-1,-a)}let i=r-1,o=1,s=0;for(this[t+i]=e&255;--i>=0&&(o*=256);)e<0&&s===0&&this[t+i+1]!==0&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+r};T.prototype.writeInt8=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=e&255,t+1};T.prototype.writeInt16LE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,2,32767,-32768),this[t]=e&255,this[t+1]=e>>>8,t+2};T.prototype.writeInt16BE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=e&255,t+2};T.prototype.writeInt32LE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,4,2147483647,-2147483648),this[t]=e&255,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4};T.prototype.writeInt32BE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};T.prototype.writeBigInt64LE=Se(function(e,t=0){return oi(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});T.prototype.writeBigInt64BE=Se(function(e,t=0){return si(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ai(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function ui(e,t,r,n,i){return t=+t,r=r>>>0,i||ai(e,t,r,4,34028234663852886e22,-34028234663852886e22),tt.write(e,t,r,n,23,4),r+4}T.prototype.writeFloatLE=function(e,t,r){return ui(this,e,t,!0,r)};T.prototype.writeFloatBE=function(e,t,r){return ui(this,e,t,!1,r)};function li(e,t,r,n,i){return t=+t,r=r>>>0,i||ai(e,t,r,8,17976931348623157e292,-17976931348623157e292),tt.write(e,t,r,n,52,8),r+8}T.prototype.writeDoubleLE=function(e,t,r){return li(this,e,t,!0,r)};T.prototype.writeDoubleBE=function(e,t,r){return li(this,e,t,!1,r)};T.prototype.copy=function(e,t,r,n){if(!T.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),!n&&n!==0&&(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>0,r=r===void 0?this.length:r>>>0,e||(e=0);let i;if(typeof e=="number")for(i=t;i2**32?i=Yn(String(r)):typeof r=="bigint"&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=Yn(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n},RangeError);function Yn(e){let t="",r=e.length,n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function Aa(e,t,r){rt(t,"offset"),(e[t]===void 0||e[t+r]===void 0)&&vt(t,e.length-(r+1))}function ci(e,t,r,n,i,o){if(e>r||e3?t===0||t===BigInt(0)?a=`>= 0${s} and < 2${s} ** ${(o+1)*8}${s}`:a=`>= -(2${s} ** ${(o+1)*8-1}${s}) and < 2 ** ${(o+1)*8-1}${s}`:a=`>= ${t}${s} and <= ${r}${s}`,new et.ERR_OUT_OF_RANGE("value",a,e)}Aa(n,i,o)}function rt(e,t){if(typeof e!="number")throw new et.ERR_INVALID_ARG_TYPE(t,"number",e)}function vt(e,t,r){throw Math.floor(e)!==e?(rt(e,r),new et.ERR_OUT_OF_RANGE(r||"offset","an integer",e)):t<0?new et.ERR_BUFFER_OUT_OF_BOUNDS:new et.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}var Ra=/[^+/0-9A-Za-z-_]/g;function Sa(e){if(e=e.split("=")[0],e=e.trim().replace(Ra,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function Kr(e,t){t=t||1/0;let r,n=e.length,i=null,o=[];for(let s=0;s55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}else if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return o}function Ia(e){let t=[];for(let r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function pi(e){return Hr.toByteArray(Sa(e))}function sr(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function me(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function Xr(e){return e!==e}var Da=function(){let e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){let n=r*16;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function Se(e){return typeof BigInt>"u"?Ma:e}function Ma(){throw new Error("BigInt not supported")}});var w,d=Ee(()=>{"use strict";w=Ve(fi())});function Oa(){return!1}var Na,_a,wi,Ei=Ee(()=>{"use strict";d();c();p();f();m();Na={},_a={existsSync:Oa,promises:Na},wi=_a});var Di=Re((of,ki)=>{"use strict";d();c();p();f();m();ki.exports=(lr(),Gn(tn)).format});var tn={};ir(tn,{default:()=>Ba,deprecate:()=>Oi,format:()=>Ni,inspect:()=>cr,promisify:()=>Mi});function Mi(e){return(...t)=>new Promise((r,n)=>{e(...t,(i,o)=>{i?n(i):r(o)})})}function Oi(e,t){return(...r)=>(console.warn(t),e(...r))}function cr(e){return JSON.stringify(e,(t,r)=>typeof r=="function"?r.toString():typeof r=="bigint"?`${r}n`:r instanceof Error?{...r,message:r.message,stack:r.stack}:r)}var Ni,Fa,Ba,lr=Ee(()=>{"use strict";d();c();p();f();m();Ni=Di(),Fa={promisify:Mi,deprecate:Oi,inspect:cr,format:Ni},Ba=Fa});function ja(...e){return e.join("/")}function Ja(...e){return e.join("/")}var Vi,Qa,Ga,Ct,ji=Ee(()=>{"use strict";d();c();p();f();m();Vi="/",Qa={sep:Vi},Ga={resolve:ja,posix:Qa,join:Ja,sep:Vi},Ct=Ga});var fr,Qi=Ee(()=>{"use strict";d();c();p();f();m();fr=class{constructor(){this.events={}}on(t,r){return this.events[t]||(this.events[t]=[]),this.events[t].push(r),this}emit(t,...r){return this.events[t]?(this.events[t].forEach(n=>{n(...r)}),!0):!1}}});var Hi=Re((pm,Gi)=>{"use strict";d();c();p();f();m();Gi.exports=(e,t=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof e!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if(typeof t!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(t===0)return e;let n=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(n,r.indent.repeat(t))}});var zi=Re((vm,Ki)=>{"use strict";d();c();p();f();m();Ki.exports=({onlyFirst:e=!1}={})=>{let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}});var Zi=Re((Im,Yi)=>{"use strict";d();c();p();f();m();var Za=zi();Yi.exports=e=>typeof e=="string"?e.replace(Za(),""):e});var to=Re((Ch,nu)=>{nu.exports={name:"@prisma/engines-version",version:"5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9",main:"index.js",types:"index.d.ts",license:"Apache-2.0",author:"Tim Suchanek ",prisma:{enginesVersion:"5a9203d0590c951969e85a7d07215503f4672eb9"},repository:{type:"git",url:"https://github.com/prisma/engines-wrapper.git",directory:"packages/engines-version"},devDependencies:{"@types/node":"18.19.15",typescript:"4.9.5"},files:["index.js","index.d.ts"],scripts:{build:"tsc -d"}}});var ro=Re(()=>{"use strict";d();c();p();f();m()});var Ln=Re((K2,fs)=>{"use strict";d();c();p();f();m();fs.exports=function(){function e(t,r,n,i,o){return tn?n+1:t+1:i===o?r:r+1}return function(t,r){if(t===r)return 0;if(t.length>r.length){var n=t;t=r,r=n}for(var i=t.length,o=r.length;i>0&&t.charCodeAt(i-1)===r.charCodeAt(o-1);)i--,o--;for(var s=0;smi,getExtensionContext:()=>di});d();c();p();f();m();d();c();p();f();m();function mi(e){return typeof e=="function"?e:t=>t.$extends(e)}d();c();p();f();m();function di(e){return e}var yi={};ir(yi,{validator:()=>hi});d();c();p();f();m();d();c();p();f();m();function hi(...e){return t=>t}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var en,bi,xi,Pi,vi=!0;typeof y!="undefined"&&({FORCE_COLOR:en,NODE_DISABLE_COLORS:bi,NO_COLOR:xi,TERM:Pi}=y.env||{},vi=y.stdout&&y.stdout.isTTY);var La={enabled:!bi&&xi==null&&Pi!=="dumb"&&(en!=null&&en!=="0"||vi)};function V(e,t){let r=new RegExp(`\\x1b\\[${t}m`,"g"),n=`\x1B[${e}m`,i=`\x1B[${t}m`;return function(o){return!La.enabled||o==null?o:n+(~(""+o).indexOf(i)?o.replace(r,i+n):o)+i}}var _p=V(0,0),ar=V(1,22),ur=V(2,22),Lp=V(3,23),Ti=V(4,24),Fp=V(7,27),Bp=V(8,28),$p=V(9,29),qp=V(30,39),it=V(31,39),Ci=V(32,39),Ai=V(33,39),Ri=V(34,39),Up=V(35,39),Si=V(36,39),Vp=V(37,39),Ii=V(90,39),jp=V(90,39),Jp=V(40,49),Qp=V(41,49),Gp=V(42,49),Hp=V(43,49),Wp=V(44,49),Kp=V(45,49),zp=V(46,49),Yp=V(47,49);d();c();p();f();m();var $a=100,_i=["green","yellow","blue","magenta","cyan","red"],pr=[],Li=Date.now(),qa=0,Fi,Bi;(Bi=globalThis.DEBUG)!=null||(globalThis.DEBUG=(Fi=y.env.DEBUG)!=null?Fi:"");var $i;($i=globalThis.DEBUG_COLORS)!=null||(globalThis.DEBUG_COLORS=y.env.DEBUG_COLORS?y.env.DEBUG_COLORS==="true":!0);var Tt={enable(e){typeof e=="string"&&(globalThis.DEBUG=e)},disable(){let e=globalThis.DEBUG;return globalThis.DEBUG="",e},enabled(e){let t=globalThis.DEBUG.split(",").map(i=>i.replace(/[.+?^${}()|[\]\\]/g,"\\$&")),r=t.some(i=>i===""||i[0]==="-"?!1:e.match(RegExp(i.split("*").join(".*")+"$"))),n=t.some(i=>i===""||i[0]!=="-"?!1:e.match(RegExp(i.slice(1).split("*").join(".*")+"$")));return r&&!n},log:(...e)=>{var o;let[t,r,...n]=e,i;typeof Pt=="function"&&typeof y!="undefined"&&typeof y.stderr!="undefined"&&typeof y.stderr.write=="function"?i=(...s)=>{let a=(lr(),Gn(tn));y.stderr.write(a.format(...s)+` +`)}:i=(o=console.warn)!=null?o:console.log,i(`${t} ${r}`,...n)},formatters:{}};function Ua(e){let t={color:_i[qa++%_i.length],enabled:Tt.enabled(e),namespace:e,log:Tt.log,extend:()=>{}},r=(...n)=>{let{enabled:i,namespace:o,color:s,log:a}=t;if(n.length!==0&&pr.push([o,...n]),pr.length>$a&&pr.shift(),Tt.enabled(o)||i){let u=n.map(g=>typeof g=="string"?g:Va(g)),l=`+${Date.now()-Li}ms`;Li=Date.now(),a(o,...u,l)}};return new Proxy(r,{get:(n,i)=>t[i],set:(n,i,o)=>t[i]=o})}var qi=new Proxy(Ua,{get:(e,t)=>Tt[t],set:(e,t,r)=>Tt[t]=r});function Va(e,t=2){let r=new Set;return JSON.stringify(e,(n,i)=>{if(typeof i=="object"&&i!==null){if(r.has(i))return"[Circular *]";r.add(i)}else if(typeof i=="bigint")return i.toString();return i},t)}function Ui(){pr.length=0}var ne=qi;d();c();p();f();m();d();c();p();f();m();var Ji="library";function At(e){let t=Ha();return t||((e==null?void 0:e.config.engineType)==="library"?"library":(e==null?void 0:e.config.engineType)==="binary"?"binary":Ji)}function Ha(){let e=y.env.PRISMA_CLIENT_ENGINE_TYPE;return e==="library"?"library":e==="binary"?"binary":void 0}d();c();p();f();m();d();c();p();f();m();var Ie;(t=>{let e;(I=>(I.findUnique="findUnique",I.findUniqueOrThrow="findUniqueOrThrow",I.findFirst="findFirst",I.findFirstOrThrow="findFirstOrThrow",I.findMany="findMany",I.create="create",I.createMany="createMany",I.update="update",I.updateMany="updateMany",I.upsert="upsert",I.delete="delete",I.deleteMany="deleteMany",I.groupBy="groupBy",I.count="count",I.aggregate="aggregate",I.findRaw="findRaw",I.aggregateRaw="aggregateRaw"))(e=t.ModelAction||(t.ModelAction={}))})(Ie||(Ie={}));var ot={};ir(ot,{error:()=>za,info:()=>Ka,log:()=>Wa,query:()=>Ya,should:()=>Wi,tags:()=>Rt,warn:()=>rn});d();c();p();f();m();var Rt={error:it("prisma:error"),warn:Ai("prisma:warn"),info:Si("prisma:info"),query:Ri("prisma:query")},Wi={warn:()=>!y.env.PRISMA_DISABLE_WARNINGS};function Wa(...e){console.log(...e)}function rn(e,...t){Wi.warn()&&console.warn(`${Rt.warn} ${e}`,...t)}function Ka(e,...t){console.info(`${Rt.info} ${e}`,...t)}function za(e,...t){console.error(`${Rt.error} ${e}`,...t)}function Ya(e,...t){console.log(`${Rt.query} ${e}`,...t)}d();c();p();f();m();function Je(e,t){throw new Error(t)}d();c();p();f();m();function nn(e,t){return Object.prototype.hasOwnProperty.call(e,t)}d();c();p();f();m();var on=(e,t)=>e.reduce((r,n)=>(r[t(n)]=n,r),{});d();c();p();f();m();function st(e,t){let r={};for(let n of Object.keys(e))r[n]=t(e[n],n);return r}d();c();p();f();m();function sn(e,t){if(e.length===0)return;let r=e[0];for(let n=1;n{Xi.has(e)||(Xi.add(e),rn(t,...r))};d();c();p();f();m();var Y=class extends Error{constructor(t,{code:r,clientVersion:n,meta:i,batchRequestIdx:o}){super(t),this.name="PrismaClientKnownRequestError",this.code=r,this.clientVersion=n,this.meta=i,Object.defineProperty(this,"batchRequestIdx",{value:o,enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return"PrismaClientKnownRequestError"}};N(Y,"PrismaClientKnownRequestError");var ke=class extends Y{constructor(t,r){super(t,{code:"P2025",clientVersion:r}),this.name="NotFoundError"}};N(ke,"NotFoundError");d();c();p();f();m();var G=class e extends Error{constructor(t,r,n){super(t),this.name="PrismaClientInitializationError",this.clientVersion=r,this.errorCode=n,Error.captureStackTrace(e)}get[Symbol.toStringTag](){return"PrismaClientInitializationError"}};N(G,"PrismaClientInitializationError");d();c();p();f();m();var De=class extends Error{constructor(t,r){super(t),this.name="PrismaClientRustPanicError",this.clientVersion=r}get[Symbol.toStringTag](){return"PrismaClientRustPanicError"}};N(De,"PrismaClientRustPanicError");d();c();p();f();m();var ue=class extends Error{constructor(t,{clientVersion:r,batchRequestIdx:n}){super(t),this.name="PrismaClientUnknownRequestError",this.clientVersion=r,Object.defineProperty(this,"batchRequestIdx",{value:n,writable:!0,enumerable:!1})}get[Symbol.toStringTag](){return"PrismaClientUnknownRequestError"}};N(ue,"PrismaClientUnknownRequestError");d();c();p();f();m();var te=class extends Error{constructor(r,{clientVersion:n}){super(r);this.name="PrismaClientValidationError";this.clientVersion=n}get[Symbol.toStringTag](){return"PrismaClientValidationError"}};N(te,"PrismaClientValidationError");d();c();p();f();m();var St=class{constructor(t){this._engine=t}prometheus(t){return this._engine.metrics({format:"prometheus",...t})}json(t){return this._engine.metrics({format:"json",...t})}};d();c();p();f();m();d();c();p();f();m();function It(e){let t;return{get(){return t||(t={value:e()}),t.value}}}function Xa(e,t){let r=It(()=>eu(t));Object.defineProperty(e,"dmmf",{get:()=>r.get()})}function eu(e){return{datamodel:{models:an(e.models),enums:an(e.enums),types:an(e.types)}}}function an(e){return Object.entries(e).map(([t,r])=>({name:t,...r}))}d();c();p();f();m();var dr=Symbol(),un=new WeakMap,xe=class{constructor(t){t===dr?un.set(this,`Prisma.${this._getName()}`):un.set(this,`new Prisma.${this._getNamespace()}.${this._getName()}()`)}_getName(){return this.constructor.name}toString(){return un.get(this)}},kt=class extends xe{_getNamespace(){return"NullTypes"}},Dt=class extends kt{};cn(Dt,"DbNull");var Mt=class extends kt{};cn(Mt,"JsonNull");var Ot=class extends kt{};cn(Ot,"AnyNull");var ln={classes:{DbNull:Dt,JsonNull:Mt,AnyNull:Ot},instances:{DbNull:new Dt(dr),JsonNull:new Mt(dr),AnyNull:new Ot(dr)}};function cn(e,t){Object.defineProperty(e,"name",{value:t,configurable:!0})}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();function Nt(e){return{ok:!1,error:e,map(){return Nt(e)},flatMap(){return Nt(e)}}}var pn=class{constructor(){this.registeredErrors=[]}consumeError(t){return this.registeredErrors[t]}registerNewError(t){let r=0;for(;this.registeredErrors[r]!==void 0;)r++;return this.registeredErrors[r]={error:t},r}},fn=e=>{let t=new pn,r=Qe(t,e.startTransaction.bind(e)),n={errorRegistry:t,queryRaw:Qe(t,e.queryRaw.bind(e)),executeRaw:Qe(t,e.executeRaw.bind(e)),provider:e.provider,startTransaction:async(...i)=>(await r(...i)).map(s=>tu(t,s))};return e.getConnectionInfo&&(n.getConnectionInfo=ru(t,e.getConnectionInfo.bind(e))),n},tu=(e,t)=>({provider:t.provider,options:t.options,queryRaw:Qe(e,t.queryRaw.bind(t)),executeRaw:Qe(e,t.executeRaw.bind(t)),commit:Qe(e,t.commit.bind(t)),rollback:Qe(e,t.rollback.bind(t))});function Qe(e,t){return async(...r)=>{try{return await t(...r)}catch(n){let i=e.registerNewError(n);return Nt({kind:"GenericJs",id:i})}}}function ru(e,t){return(...r)=>{try{return t(...r)}catch(n){let i=e.registerNewError(n);return Nt({kind:"GenericJs",id:i})}}}var ea=Ve(to());var iD=Ve(ro());Qi();Ei();ji();d();c();p();f();m();var le=class e{constructor(t,r){if(t.length-1!==r.length)throw t.length===0?new TypeError("Expected at least 1 string"):new TypeError(`Expected ${t.length} strings to have ${t.length-1} values`);let n=r.reduce((s,a)=>s+(a instanceof e?a.values.length:1),0);this.values=new Array(n),this.strings=new Array(n+1),this.strings[0]=t[0];let i=0,o=0;for(;ie.getPropertyValue(r))},getPropertyDescriptor(r){var n;return(n=e.getPropertyDescriptor)==null?void 0:n.call(e,r)}}}d();c();p();f();m();lr();d();c();p();f();m();var gr={enumerable:!0,configurable:!0,writable:!0};function hr(e){let t=new Set(e);return{getOwnPropertyDescriptor:()=>gr,has:(r,n)=>t.has(n),set:(r,n,i)=>t.add(n)&&Reflect.set(r,n,i),ownKeys:()=>[...t]}}var oo=Symbol.for("nodejs.util.inspect.custom");function ge(e,t){let r=su(t),n=new Set,i=new Proxy(e,{get(o,s){if(n.has(s))return o[s];let a=r.get(s);return a?a.getPropertyValue(s):o[s]},has(o,s){var u,l;if(n.has(s))return!0;let a=r.get(s);return a?(l=(u=a.has)==null?void 0:u.call(a,s))!=null?l:!0:Reflect.has(o,s)},ownKeys(o){let s=so(Reflect.ownKeys(o),r),a=so(Array.from(r.keys()),r);return[...new Set([...s,...a,...n])]},set(o,s,a){var l,g;let u=r.get(s);return((g=(l=u==null?void 0:u.getPropertyDescriptor)==null?void 0:l.call(u,s))==null?void 0:g.writable)===!1?!1:(n.add(s),Reflect.set(o,s,a))},getOwnPropertyDescriptor(o,s){let a=Reflect.getOwnPropertyDescriptor(o,s);if(a&&!a.configurable)return a;let u=r.get(s);return u?u.getPropertyDescriptor?{...gr,...u==null?void 0:u.getPropertyDescriptor(s)}:gr:a},defineProperty(o,s,a){return n.add(s),Reflect.defineProperty(o,s,a)}});return i[oo]=function(o,s,a=cr){let u={...this};return delete u[oo],a(u,s)},i}function su(e){let t=new Map;for(let r of e){let n=r.getKeys();for(let i of n)t.set(i,r)}return t}function so(e,t){return e.filter(r=>{var i,o;let n=t.get(r);return(o=(i=n==null?void 0:n.has)==null?void 0:i.call(n,r))!=null?o:!0})}d();c();p();f();m();function Lt(e){return{getKeys(){return e},has(){return!1},getPropertyValue(){}}}d();c();p();f();m();function yr(e,t){return{batch:e,transaction:(t==null?void 0:t.kind)==="batch"?{isolationLevel:t.options.isolationLevel}:void 0}}d();c();p();f();m();d();c();p();f();m();var at=class{constructor(t=0,r){this.context=r;this.lines=[];this.currentLine="";this.currentIndent=0;this.currentIndent=t}write(t){return typeof t=="string"?this.currentLine+=t:t.write(this),this}writeJoined(t,r){let n=r.length-1;for(let i=0;i0&&this.currentIndent--,this}addMarginSymbol(t){return this.marginSymbol=t,this}toString(){return this.lines.concat(this.indentedCurrentLine()).join(` +`)}getCurrentLineLength(){return this.currentLine.length}indentedCurrentLine(){let t=this.currentLine.padStart(this.currentLine.length+2*this.currentIndent);return this.marginSymbol?this.marginSymbol+t.slice(1):t}};d();c();p();f();m();d();c();p();f();m();function ao(e){return e.substring(0,1).toLowerCase()+e.substring(1)}d();c();p();f();m();function ut(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function wr(e){return e.toString()!=="Invalid Date"}d();c();p();f();m();d();c();p();f();m();var lt=9e15,_e=1e9,mn="0123456789abcdef",br="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",xr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",dn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-lt,maxE:lt,crypto:!1},po,Pe,_=!0,vr="[DecimalError] ",Ne=vr+"Invalid argument: ",fo=vr+"Precision limit exceeded",mo=vr+"crypto unavailable",go="[object Decimal]",re=Math.floor,H=Math.pow,au=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,uu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,lu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ho=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,pe=1e7,O=7,cu=9007199254740991,pu=br.length-1,gn=xr.length-1,C={toStringTag:go};C.absoluteValue=C.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),k(e)};C.ceil=function(){return k(new this.constructor(this),this.e+1,2)};C.clampedTo=C.clamp=function(e,t){var r,n=this,i=n.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(Ne+t);return r=n.cmp(e),r<0?e:n.cmp(t)>0?t:new i(n)};C.comparedTo=C.cmp=function(e){var t,r,n,i,o=this,s=o.d,a=(e=new o.constructor(e)).d,u=o.s,l=e.s;if(!s||!a)return!u||!l?NaN:u!==l?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-l:0;if(u!==l)return u;if(o.e!==e.e)return o.e>e.e^u<0?1:-1;for(n=s.length,i=a.length,t=0,r=na[t]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};C.cosine=C.cos=function(){var e,t,r=this,n=r.constructor;return r.d?r.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+O,n.rounding=1,r=fu(n,xo(n,r)),n.precision=e,n.rounding=t,k(Pe==2||Pe==3?r.neg():r,e,t,!0)):new n(1):new n(NaN)};C.cubeRoot=C.cbrt=function(){var e,t,r,n,i,o,s,a,u,l,g=this,h=g.constructor;if(!g.isFinite()||g.isZero())return new h(g);for(_=!1,o=g.s*H(g.s*g,1/3),!o||Math.abs(o)==1/0?(r=Z(g.d),e=g.e,(o=(e-r.length+1)%3)&&(r+=o==1||o==-2?"0":"00"),o=H(r,1/3),e=re((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?r="5e"+e:(r=o.toExponential(),r=r.slice(0,r.indexOf("e")+1)+e),n=new h(r),n.s=g.s):n=new h(o.toString()),s=(e=h.precision)+3;;)if(a=n,u=a.times(a).times(a),l=u.plus(g),n=q(l.plus(g).times(a),l.plus(u),s+2,1),Z(a.d).slice(0,s)===(r=Z(n.d)).slice(0,s))if(r=r.slice(s-3,s+1),r=="9999"||!i&&r=="4999"){if(!i&&(k(a,e+1,0),a.times(a).times(a).eq(g))){n=a;break}s+=4,i=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(k(n,e+1,1),t=!n.times(n).times(n).eq(g));break}return _=!0,k(n,e,h.rounding,t)};C.decimalPlaces=C.dp=function(){var e,t=this.d,r=NaN;if(t){if(e=t.length-1,r=(e-re(this.e/O))*O,e=t[e],e)for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r};C.dividedBy=C.div=function(e){return q(this,new this.constructor(e))};C.dividedToIntegerBy=C.divToInt=function(e){var t=this,r=t.constructor;return k(q(t,new r(e),0,1,1),r.precision,r.rounding)};C.equals=C.eq=function(e){return this.cmp(e)===0};C.floor=function(){return k(new this.constructor(this),this.e+1,3)};C.greaterThan=C.gt=function(e){return this.cmp(e)>0};C.greaterThanOrEqualTo=C.gte=function(e){var t=this.cmp(e);return t==1||t===0};C.hyperbolicCosine=C.cosh=function(){var e,t,r,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;r=s.precision,n=s.rounding,s.precision=r+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(e=Math.ceil(i/3),t=(1/Cr(4,e)).toString()):(e=16,t="2.3283064365386962890625e-10"),o=ct(s,1,o.times(t),new s(1),!0);for(var u,l=e,g=new s(8);l--;)u=o.times(o),o=a.minus(u.times(g.minus(u.times(g))));return k(o,s.precision=r,s.rounding=n,!0)};C.hyperbolicSine=C.sinh=function(){var e,t,r,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(t=o.precision,r=o.rounding,o.precision=t+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=ct(o,2,i,i,!0);else{e=1.4*Math.sqrt(n),e=e>16?16:e|0,i=i.times(1/Cr(5,e)),i=ct(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),l=new o(20);e--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(l))))}return o.precision=t,o.rounding=r,k(i,t,r,!0)};C.hyperbolicTangent=C.tanh=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+7,n.rounding=1,q(r.sinh(),r.cosh(),n.precision=e,n.rounding=t)):new n(r.s)};C.inverseCosine=C.acos=function(){var e,t=this,r=t.constructor,n=t.abs().cmp(1),i=r.precision,o=r.rounding;return n!==-1?n===0?t.isNeg()?ce(r,i,o):new r(0):new r(NaN):t.isZero()?ce(r,i+4,o).times(.5):(r.precision=i+6,r.rounding=1,t=t.asin(),e=ce(r,i+4,o).times(.5),r.precision=i,r.rounding=o,e.minus(t))};C.inverseHyperbolicCosine=C.acosh=function(){var e,t,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,_=!1,r=r.times(r).minus(1).sqrt().plus(r),_=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)};C.inverseHyperbolicSine=C.asinh=function(){var e,t,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,_=!1,r=r.times(r).plus(1).sqrt().plus(r),_=!0,n.precision=e,n.rounding=t,r.ln())};C.inverseHyperbolicTangent=C.atanh=function(){var e,t,r,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=o.precision,t=o.rounding,n=i.sd(),Math.max(n,e)<2*-i.e-1?k(new o(i),e,t,!0):(o.precision=r=n-i.e,i=q(i.plus(1),new o(1).minus(i),r+e,1),o.precision=e+4,o.rounding=1,i=i.ln(),o.precision=e,o.rounding=t,i.times(.5))):new o(NaN)};C.inverseSine=C.asin=function(){var e,t,r,n,i=this,o=i.constructor;return i.isZero()?new o(i):(t=i.abs().cmp(1),r=o.precision,n=o.rounding,t!==-1?t===0?(e=ce(o,r+4,n).times(.5),e.s=i.s,e):new o(NaN):(o.precision=r+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=r,o.rounding=n,i.times(2)))};C.inverseTangent=C.atan=function(){var e,t,r,n,i,o,s,a,u,l=this,g=l.constructor,h=g.precision,v=g.rounding;if(l.isFinite()){if(l.isZero())return new g(l);if(l.abs().eq(1)&&h+4<=gn)return s=ce(g,h+4,v).times(.25),s.s=l.s,s}else{if(!l.s)return new g(NaN);if(h+4<=gn)return s=ce(g,h+4,v).times(.5),s.s=l.s,s}for(g.precision=a=h+10,g.rounding=1,r=Math.min(28,a/O+2|0),e=r;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(_=!1,t=Math.ceil(a/O),n=1,u=l.times(l),s=new g(l),i=l;e!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[t]!==void 0)for(e=t;s.d[e]===o.d[e]&&e--;);return r&&(s=s.times(2<this.d.length-2};C.isNaN=function(){return!this.s};C.isNegative=C.isNeg=function(){return this.s<0};C.isPositive=C.isPos=function(){return this.s>0};C.isZero=function(){return!!this.d&&this.d[0]===0};C.lessThan=C.lt=function(e){return this.cmp(e)<0};C.lessThanOrEqualTo=C.lte=function(e){return this.cmp(e)<1};C.logarithm=C.log=function(e){var t,r,n,i,o,s,a,u,l=this,g=l.constructor,h=g.precision,v=g.rounding,S=5;if(e==null)e=new g(10),t=!0;else{if(e=new g(e),r=e.d,e.s<0||!r||!r[0]||e.eq(1))return new g(NaN);t=e.eq(10)}if(r=l.d,l.s<0||!r||!r[0]||l.eq(1))return new g(r&&!r[0]?-1/0:l.s!=1?NaN:r?0:1/0);if(t)if(r.length>1)o=!0;else{for(i=r[0];i%10===0;)i/=10;o=i!==1}if(_=!1,a=h+S,s=Oe(l,a),n=t?Pr(g,a+10):Oe(e,a),u=q(s,n,a,1),Ft(u.d,i=h,v))do if(a+=10,s=Oe(l,a),n=t?Pr(g,a+10):Oe(e,a),u=q(s,n,a,1),!o){+Z(u.d).slice(i+1,i+15)+1==1e14&&(u=k(u,h+1,0));break}while(Ft(u.d,i+=10,v));return _=!0,k(u,h,v)};C.minus=C.sub=function(e){var t,r,n,i,o,s,a,u,l,g,h,v,S=this,A=S.constructor;if(e=new A(e),!S.d||!e.d)return!S.s||!e.s?e=new A(NaN):S.d?e.s=-e.s:e=new A(e.d||S.s!==e.s?S:NaN),e;if(S.s!=e.s)return e.s=-e.s,S.plus(e);if(l=S.d,v=e.d,a=A.precision,u=A.rounding,!l[0]||!v[0]){if(v[0])e.s=-e.s;else if(l[0])e=new A(S);else return new A(u===3?-0:0);return _?k(e,a,u):e}if(r=re(e.e/O),g=re(S.e/O),l=l.slice(),o=g-r,o){for(h=o<0,h?(t=l,o=-o,s=v.length):(t=v,r=g,s=l.length),n=Math.max(Math.ceil(a/O),s)+2,o>n&&(o=n,t.length=1),t.reverse(),n=o;n--;)t.push(0);t.reverse()}else{for(n=l.length,s=v.length,h=n0;--n)l[s++]=0;for(n=v.length;n>o;){if(l[--n]s?o+1:s+1,i>s&&(i=s,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for(s=l.length,i=g.length,s-i<0&&(i=s,r=g,g=l,l=r),t=0;i;)t=(l[--i]=l[i]+g[i]+t)/pe|0,l[i]%=pe;for(t&&(l.unshift(t),++n),s=l.length;l[--s]==0;)l.pop();return e.d=l,e.e=Tr(l,n),_?k(e,a,u):e};C.precision=C.sd=function(e){var t,r=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(Ne+e);return r.d?(t=yo(r.d),e&&r.e+1>t&&(t=r.e+1)):t=NaN,t};C.round=function(){var e=this,t=e.constructor;return k(new t(e),e.e+1,t.rounding)};C.sine=C.sin=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+O,n.rounding=1,r=du(n,xo(n,r)),n.precision=e,n.rounding=t,k(Pe>2?r.neg():r,e,t,!0)):new n(NaN)};C.squareRoot=C.sqrt=function(){var e,t,r,n,i,o,s=this,a=s.d,u=s.e,l=s.s,g=s.constructor;if(l!==1||!a||!a[0])return new g(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);for(_=!1,l=Math.sqrt(+s),l==0||l==1/0?(t=Z(a),(t.length+u)%2==0&&(t+="0"),l=Math.sqrt(t),u=re((u+1)/2)-(u<0||u%2),l==1/0?t="5e"+u:(t=l.toExponential(),t=t.slice(0,t.indexOf("e")+1)+u),n=new g(t)):n=new g(l.toString()),r=(u=g.precision)+3;;)if(o=n,n=o.plus(q(s,o,r+2,1)).times(.5),Z(o.d).slice(0,r)===(t=Z(n.d)).slice(0,r))if(t=t.slice(r-3,r+1),t=="9999"||!i&&t=="4999"){if(!i&&(k(o,u+1,0),o.times(o).eq(s))){n=o;break}r+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(k(n,u+1,1),e=!n.times(n).eq(s));break}return _=!0,k(n,u,g.rounding,e)};C.tangent=C.tan=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,r=r.sin(),r.s=1,r=q(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,k(Pe==2||Pe==4?r.neg():r,e,t,!0)):new n(NaN)};C.times=C.mul=function(e){var t,r,n,i,o,s,a,u,l,g=this,h=g.constructor,v=g.d,S=(e=new h(e)).d;if(e.s*=g.s,!v||!v[0]||!S||!S[0])return new h(!e.s||v&&!v[0]&&!S||S&&!S[0]&&!v?NaN:!v||!S?e.s/0:e.s*0);for(r=re(g.e/O)+re(e.e/O),u=v.length,l=S.length,u=0;){for(t=0,i=u+n;i>n;)a=o[i]+S[n]*v[i-n-1]+t,o[i--]=a%pe|0,t=a/pe|0;o[i]=(o[i]+t)%pe|0}for(;!o[--s];)o.pop();return t?++r:o.shift(),e.d=o,e.e=Tr(o,r),_?k(e,h.precision,h.rounding):e};C.toBinary=function(e,t){return wn(this,2,e,t)};C.toDecimalPlaces=C.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(se(e,0,_e),t===void 0?t=n.rounding:se(t,0,8),k(r,e+r.e+1,t))};C.toExponential=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=he(n,!0):(se(e,0,_e),t===void 0?t=i.rounding:se(t,0,8),n=k(new i(n),e+1,t),r=he(n,!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r};C.toFixed=function(e,t){var r,n,i=this,o=i.constructor;return e===void 0?r=he(i):(se(e,0,_e),t===void 0?t=o.rounding:se(t,0,8),n=k(new o(i),e+i.e+1,t),r=he(n,!1,e+n.e+1)),i.isNeg()&&!i.isZero()?"-"+r:r};C.toFraction=function(e){var t,r,n,i,o,s,a,u,l,g,h,v,S=this,A=S.d,R=S.constructor;if(!A)return new R(S);if(l=r=new R(1),n=u=new R(0),t=new R(n),o=t.e=yo(A)-S.e-1,s=o%O,t.d[0]=H(10,s<0?O+s:s),e==null)e=o>0?t:l;else{if(a=new R(e),!a.isInt()||a.lt(l))throw Error(Ne+a);e=a.gt(t)?o>0?t:l:a}for(_=!1,a=new R(Z(A)),g=R.precision,R.precision=o=A.length*O*2;h=q(a,t,0,1,1),i=r.plus(h.times(n)),i.cmp(e)!=1;)r=n,n=i,i=l,l=u.plus(h.times(i)),u=i,i=t,t=a.minus(h.times(i)),a=i;return i=q(e.minus(r),n,0,1,1),u=u.plus(i.times(l)),r=r.plus(i.times(n)),u.s=l.s=S.s,v=q(l,n,o,1).minus(S).abs().cmp(q(u,r,o,1).minus(S).abs())<1?[l,n]:[u,r],R.precision=g,_=!0,v};C.toHexadecimal=C.toHex=function(e,t){return wn(this,16,e,t)};C.toNearest=function(e,t){var r=this,n=r.constructor;if(r=new n(r),e==null){if(!r.d)return r;e=new n(1),t=n.rounding}else{if(e=new n(e),t===void 0?t=n.rounding:se(t,0,8),!r.d)return e.s?r:e;if(!e.d)return e.s&&(e.s=r.s),e}return e.d[0]?(_=!1,r=q(r,e,0,t,1).times(e),_=!0,k(r)):(e.s=r.s,r=e),r};C.toNumber=function(){return+this};C.toOctal=function(e,t){return wn(this,8,e,t)};C.toPower=C.pow=function(e){var t,r,n,i,o,s,a=this,u=a.constructor,l=+(e=new u(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new u(H(+a,l));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,e.eq(1))return k(a,n,o);if(t=re(e.e/O),t>=e.d.length-1&&(r=l<0?-l:l)<=cu)return i=wo(u,a,r,n),e.s<0?new u(1).div(i):k(i,n,o);if(s=a.s,s<0){if(tu.maxE+1||t0?s/0:0):(_=!1,u.rounding=a.s=1,r=Math.min(12,(t+"").length),i=hn(e.times(Oe(a,n+r)),n),i.d&&(i=k(i,n+5,1),Ft(i.d,n,o)&&(t=n+10,i=k(hn(e.times(Oe(a,t+r)),t),t+5,1),+Z(i.d).slice(n+1,n+15)+1==1e14&&(i=k(i,n+1,0)))),i.s=s,_=!0,u.rounding=o,k(i,n,o))};C.toPrecision=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=he(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(se(e,1,_e),t===void 0?t=i.rounding:se(t,0,8),n=k(new i(n),e,t),r=he(n,e<=n.e||n.e<=i.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r};C.toSignificantDigits=C.toSD=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(se(e,1,_e),t===void 0?t=n.rounding:se(t,0,8)),k(new n(r),e,t)};C.toString=function(){var e=this,t=e.constructor,r=he(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+r:r};C.truncated=C.trunc=function(){return k(new this.constructor(this),this.e+1,1)};C.valueOf=C.toJSON=function(){var e=this,t=e.constructor,r=he(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+r:r};function Z(e){var t,r,n,i=e.length-1,o="",s=e[0];if(i>0){for(o+=s,t=1;tr)throw Error(Ne+e)}function Ft(e,t,r,n){var i,o,s,a;for(o=e[0];o>=10;o/=10)--t;return--t<0?(t+=O,i=0):(i=Math.ceil((t+1)/O),t%=O),o=H(10,O-t),a=e[i]%o|0,n==null?t<3?(t==0?a=a/100|0:t==1&&(a=a/10|0),s=r<4&&a==99999||r>3&&a==49999||a==5e4||a==0):s=(r<4&&a+1==o||r>3&&a+1==o/2)&&(e[i+1]/o/100|0)==H(10,t-2)-1||(a==o/2||a==0)&&(e[i+1]/o/100|0)==0:t<4?(t==0?a=a/1e3|0:t==1?a=a/100|0:t==2&&(a=a/10|0),s=(n||r<4)&&a==9999||!n&&r>3&&a==4999):s=((n||r<4)&&a+1==o||!n&&r>3&&a+1==o/2)&&(e[i+1]/o/1e3|0)==H(10,t-3)-1,s}function Er(e,t,r){for(var n,i=[0],o,s=0,a=e.length;sr-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/r|0,i[n]%=r)}return i.reverse()}function fu(e,t){var r,n,i;if(t.isZero())return t;n=t.d.length,n<32?(r=Math.ceil(n/3),i=(1/Cr(4,r)).toString()):(r=16,i="2.3283064365386962890625e-10"),e.precision+=r,t=ct(e,1,t.times(i),new e(1));for(var o=r;o--;){var s=t.times(t);t=s.times(s).minus(s).times(8).plus(1)}return e.precision-=r,t}var q=function(){function e(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function t(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;ai[a]?1:-1;break}return u}function r(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]1;)n.shift()}return function(n,i,o,s,a,u){var l,g,h,v,S,A,R,D,M,B,I,L,X,F,Ze,$e,fe,qe,Q,Ae,Ue=n.constructor,Xe=n.s==i.s?1:-1,ee=n.d,U=i.d;if(!ee||!ee[0]||!U||!U[0])return new Ue(!n.s||!i.s||(ee?U&&ee[0]==U[0]:!U)?NaN:ee&&ee[0]==0||!U?Xe*0:Xe/0);for(u?(S=1,g=n.e-i.e):(u=pe,S=O,g=re(n.e/S)-re(i.e/S)),Q=U.length,fe=ee.length,M=new Ue(Xe),B=M.d=[],h=0;U[h]==(ee[h]||0);h++);if(U[h]>(ee[h]||0)&&g--,o==null?(F=o=Ue.precision,s=Ue.rounding):a?F=o+(n.e-i.e)+1:F=o,F<0)B.push(1),A=!0;else{if(F=F/S+2|0,h=0,Q==1){for(v=0,U=U[0],F++;(h1&&(U=e(U,v,u),ee=e(ee,v,u),Q=U.length,fe=ee.length),$e=Q,I=ee.slice(0,Q),L=I.length;L=u/2&&++qe;do v=0,l=t(U,I,Q,L),l<0?(X=I[0],Q!=L&&(X=X*u+(I[1]||0)),v=X/qe|0,v>1?(v>=u&&(v=u-1),R=e(U,v,u),D=R.length,L=I.length,l=t(R,I,D,L),l==1&&(v--,r(R,Q=10;v/=10)h++;M.e=h+g*S-1,k(M,a?o+M.e+1:o,s,A)}return M}}();function k(e,t,r,n){var i,o,s,a,u,l,g,h,v,S=e.constructor;e:if(t!=null){if(h=e.d,!h)return e;for(i=1,a=h[0];a>=10;a/=10)i++;if(o=t-i,o<0)o+=O,s=t,g=h[v=0],u=g/H(10,i-s-1)%10|0;else if(v=Math.ceil((o+1)/O),a=h.length,v>=a)if(n){for(;a++<=v;)h.push(0);g=u=0,i=1,o%=O,s=o-O+1}else break e;else{for(g=a=h[v],i=1;a>=10;a/=10)i++;o%=O,s=o-O+i,u=s<0?0:g/H(10,i-s-1)%10|0}if(n=n||t<0||h[v+1]!==void 0||(s<0?g:g%H(10,i-s-1)),l=r<4?(u||n)&&(r==0||r==(e.s<0?3:2)):u>5||u==5&&(r==4||n||r==6&&(o>0?s>0?g/H(10,i-s):0:h[v-1])%10&1||r==(e.s<0?8:7)),t<1||!h[0])return h.length=0,l?(t-=e.e+1,h[0]=H(10,(O-t%O)%O),e.e=-t||0):h[0]=e.e=0,e;if(o==0?(h.length=v,a=1,v--):(h.length=v+1,a=H(10,O-o),h[v]=s>0?(g/H(10,i-s)%H(10,s)|0)*a:0),l)for(;;)if(v==0){for(o=1,s=h[0];s>=10;s/=10)o++;for(s=h[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(e.e++,h[0]==pe&&(h[0]=1));break}else{if(h[v]+=a,h[v]!=pe)break;h[v--]=0,a=1}for(o=h.length;h[--o]===0;)h.pop()}return _&&(e.e>S.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+Me(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):i<0?(o="0."+Me(-i-1)+o,r&&(n=r-s)>0&&(o+=Me(n))):i>=s?(o+=Me(i+1-s),r&&(n=r-i-1)>0&&(o=o+"."+Me(n))):((n=i+1)0&&(i+1===s&&(o+="."),o+=Me(n))),o}function Tr(e,t){var r=e[0];for(t*=O;r>=10;r/=10)t++;return t}function Pr(e,t,r){if(t>pu)throw _=!0,r&&(e.precision=r),Error(fo);return k(new e(br),t,1,!0)}function ce(e,t,r){if(t>gn)throw Error(fo);return k(new e(xr),t,r,!0)}function yo(e){var t=e.length-1,r=t*O+1;if(t=e[t],t){for(;t%10==0;t/=10)r--;for(t=e[0];t>=10;t/=10)r++}return r}function Me(e){for(var t="";e--;)t+="0";return t}function wo(e,t,r,n){var i,o=new e(1),s=Math.ceil(n/O+4);for(_=!1;;){if(r%2&&(o=o.times(t),lo(o.d,s)&&(i=!0)),r=re(r/2),r===0){r=o.d.length-1,i&&o.d[r]===0&&++o.d[r];break}t=t.times(t),lo(t.d,s)}return _=!0,o}function uo(e){return e.d[e.d.length-1]&1}function Eo(e,t,r){for(var n,i=new e(t[0]),o=0;++o17)return new v(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(t==null?(_=!1,u=A):u=t,a=new v(.03125);e.e>-2;)e=e.times(a),h+=5;for(n=Math.log(H(2,h))/Math.LN10*2+5|0,u+=n,r=o=s=new v(1),v.precision=u;;){if(o=k(o.times(e),u,1),r=r.times(++g),a=s.plus(q(o,r,u,1)),Z(a.d).slice(0,u)===Z(s.d).slice(0,u)){for(i=h;i--;)s=k(s.times(s),u,1);if(t==null)if(l<3&&Ft(s.d,u-n,S,l))v.precision=u+=10,r=o=a=new v(1),g=0,l++;else return k(s,v.precision=A,S,_=!0);else return v.precision=A,s}s=a}}function Oe(e,t){var r,n,i,o,s,a,u,l,g,h,v,S=1,A=10,R=e,D=R.d,M=R.constructor,B=M.rounding,I=M.precision;if(R.s<0||!D||!D[0]||!R.e&&D[0]==1&&D.length==1)return new M(D&&!D[0]?-1/0:R.s!=1?NaN:D?0:R);if(t==null?(_=!1,g=I):g=t,M.precision=g+=A,r=Z(D),n=r.charAt(0),Math.abs(o=R.e)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)R=R.times(e),r=Z(R.d),n=r.charAt(0),S++;o=R.e,n>1?(R=new M("0."+r),o++):R=new M(n+"."+r.slice(1))}else return l=Pr(M,g+2,I).times(o+""),R=Oe(new M(n+"."+r.slice(1)),g-A).plus(l),M.precision=I,t==null?k(R,I,B,_=!0):R;for(h=R,u=s=R=q(R.minus(1),R.plus(1),g,1),v=k(R.times(R),g,1),i=3;;){if(s=k(s.times(v),g,1),l=u.plus(q(s,new M(i),g,1)),Z(l.d).slice(0,g)===Z(u.d).slice(0,g))if(u=u.times(2),o!==0&&(u=u.plus(Pr(M,g+2,I).times(o+""))),u=q(u,new M(S),g,1),t==null)if(Ft(u.d,g-A,B,a))M.precision=g+=A,l=s=R=q(h.minus(1),h.plus(1),g,1),v=k(R.times(R),g,1),i=a=1;else return k(u,M.precision=I,B,_=!0);else return M.precision=I,u;u=l,i+=2}}function bo(e){return String(e.s*e.s/0)}function yn(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;t.charCodeAt(n)===48;n++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(n,i),t){if(i-=n,e.e=r=r-n-1,e.d=[],n=(r+1)%O,r<0&&(n+=O),ne.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),ho.test(t))return yn(e,t)}else if(t==="Infinity"||t==="NaN")return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(uu.test(t))r=16,t=t.toLowerCase();else if(au.test(t))r=2;else if(lu.test(t))r=8;else throw Error(Ne+t);for(o=t.search(/p/i),o>0?(u=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),o=t.indexOf("."),s=o>=0,n=e.constructor,s&&(t=t.replace(".",""),a=t.length,o=a-o,i=wo(n,new n(r),o,o*2)),l=Er(t,r,pe),g=l.length-1,o=g;l[o]===0;--o)l.pop();return o<0?new n(e.s*0):(e.e=Tr(l,g),e.d=l,_=!1,s&&(e=q(e,i,a*4)),u&&(e=e.times(Math.abs(u)<54?H(2,u):He.pow(2,u))),_=!0,e)}function du(e,t){var r,n=t.d.length;if(n<3)return t.isZero()?t:ct(e,2,t,t);r=1.4*Math.sqrt(n),r=r>16?16:r|0,t=t.times(1/Cr(5,r)),t=ct(e,2,t,t);for(var i,o=new e(5),s=new e(16),a=new e(20);r--;)i=t.times(t),t=t.times(o.plus(i.times(s.times(i).minus(a))));return t}function ct(e,t,r,n,i){var o,s,a,u,l=1,g=e.precision,h=Math.ceil(g/O);for(_=!1,u=r.times(r),a=new e(n);;){if(s=q(a.times(u),new e(t++*t++),g,1),a=i?n.plus(s):n.minus(s),n=q(s.times(u),new e(t++*t++),g,1),s=a.plus(n),s.d[h]!==void 0){for(o=h;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,l++}return _=!0,s.d.length=h+1,s}function Cr(e,t){for(var r=e;--t;)r*=e;return r}function xo(e,t){var r,n=t.s<0,i=ce(e,e.precision,1),o=i.times(.5);if(t=t.abs(),t.lte(o))return Pe=n?4:1,t;if(r=t.divToInt(i),r.isZero())Pe=n?3:2;else{if(t=t.minus(r.times(i)),t.lte(o))return Pe=uo(r)?n?2:3:n?4:1,t;Pe=uo(r)?n?1:4:n?3:2}return t.minus(i).abs()}function wn(e,t,r,n){var i,o,s,a,u,l,g,h,v,S=e.constructor,A=r!==void 0;if(A?(se(r,1,_e),n===void 0?n=S.rounding:se(n,0,8)):(r=S.precision,n=S.rounding),!e.isFinite())g=bo(e);else{for(g=he(e),s=g.indexOf("."),A?(i=2,t==16?r=r*4-3:t==8&&(r=r*3-2)):i=t,s>=0&&(g=g.replace(".",""),v=new S(1),v.e=g.length-s,v.d=Er(he(v),10,i),v.e=v.d.length),h=Er(g,10,i),o=u=h.length;h[--u]==0;)h.pop();if(!h[0])g=A?"0p+0":"0";else{if(s<0?o--:(e=new S(e),e.d=h,e.e=o,e=q(e,v,r,n,0,i),h=e.d,o=e.e,l=po),s=h[r],a=i/2,l=l||h[r+1]!==void 0,l=n<4?(s!==void 0||l)&&(n===0||n===(e.s<0?3:2)):s>a||s===a&&(n===4||l||n===6&&h[r-1]&1||n===(e.s<0?8:7)),h.length=r,l)for(;++h[--r]>i-1;)h[r]=0,r||(++o,h.unshift(1));for(u=h.length;!h[u-1];--u);for(s=0,g="";s1)if(t==16||t==8){for(s=t==16?4:3,--u;u%s;u++)g+="0";for(h=Er(g,i,t),u=h.length;!h[u-1];--u);for(s=1,g="1.";su)for(o-=u;o--;)g+="0";else ot)return e.length=t,!0}function gu(e){return new this(e).abs()}function hu(e){return new this(e).acos()}function yu(e){return new this(e).acosh()}function wu(e,t){return new this(e).plus(t)}function Eu(e){return new this(e).asin()}function bu(e){return new this(e).asinh()}function xu(e){return new this(e).atan()}function Pu(e){return new this(e).atanh()}function vu(e,t){e=new this(e),t=new this(t);var r,n=this.precision,i=this.rounding,o=n+4;return!e.s||!t.s?r=new this(NaN):!e.d&&!t.d?(r=ce(this,o,1).times(t.s>0?.25:.75),r.s=e.s):!t.d||e.isZero()?(r=t.s<0?ce(this,n,i):new this(0),r.s=e.s):!e.d||t.isZero()?(r=ce(this,o,1).times(.5),r.s=e.s):t.s<0?(this.precision=o,this.rounding=1,r=this.atan(q(e,t,o,1)),t=ce(this,o,1),this.precision=n,this.rounding=i,r=e.s<0?r.minus(t):r.plus(t)):r=this.atan(q(e,t,o,1)),r}function Tu(e){return new this(e).cbrt()}function Cu(e){return k(e=new this(e),e.e+1,2)}function Au(e,t,r){return new this(e).clamp(t,r)}function Ru(e){if(!e||typeof e!="object")throw Error(vr+"Object expected");var t,r,n,i=e.defaults===!0,o=["precision",1,_e,"rounding",0,8,"toExpNeg",-lt,0,"toExpPos",0,lt,"maxE",0,lt,"minE",-lt,0,"modulo",0,9];for(t=0;t=o[t+1]&&n<=o[t+2])this[r]=n;else throw Error(Ne+r+": "+n);if(r="crypto",i&&(this[r]=dn[r]),(n=e[r])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto!="undefined"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[r]=!0;else throw Error(mo);else this[r]=!1;else throw Error(Ne+r+": "+n);return this}function Su(e){return new this(e).cos()}function Iu(e){return new this(e).cosh()}function Po(e){var t,r,n;function i(o){var s,a,u,l=this;if(!(l instanceof i))return new i(o);if(l.constructor=i,co(o)){l.s=o.s,_?!o.d||o.e>i.maxE?(l.e=NaN,l.d=null):o.e=10;a/=10)s++;_?s>i.maxE?(l.e=NaN,l.d=null):s=429e7?t[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(n*=4);o=214e7?crypto.randomBytes(4).copy(t,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(mo);else for(;o=10;i/=10)n++;n`}};function ft(e){return e instanceof Bt}d();c();p();f();m();d();c();p();f();m();var Ar=class{constructor(t){this.value=t}write(t){t.write(this.value)}markAsError(){this.value.markAsError()}};d();c();p();f();m();var Rr=e=>e,Sr={bold:Rr,red:Rr,green:Rr,dim:Rr,enabled:!1},vo={bold:ar,red:it,green:Ci,dim:ur,enabled:!0},mt={write(e){e.writeLine(",")}};d();c();p();f();m();var ye=class{constructor(t){this.contents=t;this.isUnderlined=!1;this.color=t=>t}underline(){return this.isUnderlined=!0,this}setColor(t){return this.color=t,this}write(t){let r=t.getCurrentLineLength();t.write(this.color(this.contents)),this.isUnderlined&&t.afterNextNewline(()=>{t.write(" ".repeat(r)).writeLine(this.color("~".repeat(this.contents.length)))})}};d();c();p();f();m();var Le=class{constructor(){this.hasError=!1}markAsError(){return this.hasError=!0,this}};var dt=class extends Le{constructor(){super(...arguments);this.items=[]}addItem(r){return this.items.push(new Ar(r)),this}getField(r){return this.items[r]}getPrintWidth(){return this.items.length===0?2:Math.max(...this.items.map(n=>n.value.getPrintWidth()))+2}write(r){if(this.items.length===0){this.writeEmpty(r);return}this.writeWithItems(r)}writeEmpty(r){let n=new ye("[]");this.hasError&&n.setColor(r.context.colors.red).underline(),r.write(n)}writeWithItems(r){let{colors:n}=r.context;r.writeLine("[").withIndent(()=>r.writeJoined(mt,this.items).newLine()).write("]"),this.hasError&&r.afterNextNewline(()=>{r.writeLine(n.red("~".repeat(this.getPrintWidth())))})}};d();c();p();f();m();var To=": ",Ir=class{constructor(t,r){this.name=t;this.value=r;this.hasError=!1}markAsError(){this.hasError=!0}getPrintWidth(){return this.name.length+this.value.getPrintWidth()+To.length}write(t){let r=new ye(this.name);this.hasError&&r.underline().setColor(t.context.colors.red),t.write(r).write(To).write(this.value)}};d();c();p();f();m();var K=class e extends Le{constructor(){super(...arguments);this.fields={};this.suggestions=[]}addField(r){this.fields[r.name]=r}addSuggestion(r){this.suggestions.push(r)}getField(r){return this.fields[r]}getDeepField(r){let[n,...i]=r,o=this.getField(n);if(!o)return;let s=o;for(let a of i){let u;if(s.value instanceof e?u=s.value.getField(a):s.value instanceof dt&&(u=s.value.getField(Number(a))),!u)return;s=u}return s}getDeepFieldValue(r){var n;return r.length===0?this:(n=this.getDeepField(r))==null?void 0:n.value}hasField(r){return!!this.getField(r)}removeAllFields(){this.fields={}}removeField(r){delete this.fields[r]}getFields(){return this.fields}isEmpty(){return Object.keys(this.fields).length===0}getFieldValue(r){var n;return(n=this.getField(r))==null?void 0:n.value}getDeepSubSelectionValue(r){let n=this;for(let i of r){if(!(n instanceof e))return;let o=n.getSubSelectionValue(i);if(!o)return;n=o}return n}getDeepSelectionParent(r){let n=this.getSelectionParent();if(!n)return;let i=n;for(let o of r){let s=i.value.getFieldValue(o);if(!s||!(s instanceof e))return;let a=s.getSelectionParent();if(!a)return;i=a}return i}getSelectionParent(){let r=this.getField("select");if((r==null?void 0:r.value)instanceof e)return{kind:"select",value:r.value};let n=this.getField("include");if((n==null?void 0:n.value)instanceof e)return{kind:"include",value:n.value}}getSubSelectionValue(r){var n;return(n=this.getSelectionParent())==null?void 0:n.value.fields[r].value}getPrintWidth(){let r=Object.values(this.fields);return r.length==0?2:Math.max(...r.map(i=>i.getPrintWidth()))+2}write(r){let n=Object.values(this.fields);if(n.length===0&&this.suggestions.length===0){this.writeEmpty(r);return}this.writeWithContents(r,n)}writeEmpty(r){let n=new ye("{}");this.hasError&&n.setColor(r.context.colors.red).underline(),r.write(n)}writeWithContents(r,n){r.writeLine("{").withIndent(()=>{r.writeJoined(mt,[...n,...this.suggestions]).newLine()}),r.write("}"),this.hasError&&r.afterNextNewline(()=>{r.writeLine(r.context.colors.red("~".repeat(this.getPrintWidth())))})}};d();c();p();f();m();var z=class extends Le{constructor(r){super();this.text=r}getPrintWidth(){return this.text.length}write(r){let n=new ye(this.text);this.hasError&&n.underline().setColor(r.context.colors.red),r.write(n)}};var En=class{constructor(t){this.errorMessages=[];this.arguments=t}write(t){t.write(this.arguments)}addErrorMessage(t){this.errorMessages.push(t)}renderAllMessages(t){return this.errorMessages.map(r=>r(t)).join(` +`)}};function kr(e){return new En(Co(e))}function Co(e){let t=new K;for(let[r,n]of Object.entries(e)){let i=new Ir(r,Ao(n));t.addField(i)}return t}function Ao(e){if(typeof e=="string")return new z(JSON.stringify(e));if(typeof e=="number"||typeof e=="boolean")return new z(String(e));if(typeof e=="bigint")return new z(`${e}n`);if(e===null)return new z("null");if(e===void 0)return new z("undefined");if(pt(e))return new z(`new Prisma.Decimal("${e.toFixed()}")`);if(e instanceof Uint8Array)return w.Buffer.isBuffer(e)?new z(`Buffer.alloc(${e.byteLength})`):new z(`new Uint8Array(${e.byteLength})`);if(e instanceof Date){let t=wr(e)?e.toISOString():"Invalid Date";return new z(`new Date("${t}")`)}return e instanceof xe?new z(`Prisma.${e._getName()}`):ft(e)?new z(`prisma.${ao(e.modelName)}.$fields.${e.name}`):Array.isArray(e)?tl(e):typeof e=="object"?Co(e):new z(Object.prototype.toString.call(e))}function tl(e){let t=new dt;for(let r of e)t.addItem(Ao(r));return t}function Ro(e){if(e===void 0)return"";let t=kr(e);return new at(0,{colors:Sr}).write(t).toString()}d();c();p();f();m();var rl="P2037";function $t({error:e,user_facing_error:t},r,n){return t.error_code?new Y(nl(t,n),{code:t.error_code,clientVersion:r,meta:t.meta,batchRequestIdx:t.batch_request_idx}):new ue(e,{clientVersion:r,batchRequestIdx:t.batch_request_idx})}function nl(e,t){let r=e.message;return(t==="postgresql"||t==="postgres"||t==="mysql")&&e.error_code===rl&&(r+=` +Prisma Accelerate has built-in connection pooling to prevent such errors: https://pris.ly/client/error-accelerate`),r}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var bn=class{getLocation(){return null}};function Fe(e){return typeof $EnabledCallSite=="function"&&e!=="minimal"?new $EnabledCallSite:new bn}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var So={_avg:!0,_count:!0,_sum:!0,_min:!0,_max:!0};function gt(e={}){let t=ol(e);return Object.entries(t).reduce((n,[i,o])=>(So[i]!==void 0?n.select[i]={select:o}:n[i]=o,n),{select:{}})}function ol(e={}){return typeof e._count=="boolean"?{...e,_count:{_all:e._count}}:e}function Dr(e={}){return t=>(typeof e._count=="boolean"&&(t._count=t._count._all),t)}function Io(e,t){let r=Dr(e);return t({action:"aggregate",unpacker:r,argsMapper:gt})(e)}d();c();p();f();m();function sl(e={}){let{select:t,...r}=e;return typeof t=="object"?gt({...r,_count:t}):gt({...r,_count:{_all:!0}})}function al(e={}){return typeof e.select=="object"?t=>Dr(e)(t)._count:t=>Dr(e)(t)._count._all}function ko(e,t){return t({action:"count",unpacker:al(e),argsMapper:sl})(e)}d();c();p();f();m();function ul(e={}){let t=gt(e);if(Array.isArray(t.by))for(let r of t.by)typeof r=="string"&&(t.select[r]=!0);else typeof t.by=="string"&&(t.select[t.by]=!0);return t}function ll(e={}){return t=>(typeof(e==null?void 0:e._count)=="boolean"&&t.forEach(r=>{r._count=r._count._all}),t)}function Do(e,t){return t({action:"groupBy",unpacker:ll(e),argsMapper:ul})(e)}function Mo(e,t,r){if(t==="aggregate")return n=>Io(n,r);if(t==="count")return n=>ko(n,r);if(t==="groupBy")return n=>Do(n,r)}d();c();p();f();m();function Oo(e,t){let r=t.fields.filter(i=>!i.relationName),n=on(r,i=>i.name);return new Proxy({},{get(i,o){if(o in i||typeof o=="symbol")return i[o];let s=n[o];if(s)return new Bt(e,o,s.type,s.isList,s.kind==="enum")},...hr(Object.keys(n))})}d();c();p();f();m();d();c();p();f();m();var No=e=>Array.isArray(e)?e:e.split("."),xn=(e,t)=>No(t).reduce((r,n)=>r&&r[n],e),_o=(e,t,r)=>No(t).reduceRight((n,i,o,s)=>Object.assign({},xn(e,s.slice(0,o)),{[i]:n}),r);function cl(e,t){return e===void 0||t===void 0?[]:[...t,"select",e]}function pl(e,t,r){return t===void 0?e!=null?e:{}:_o(t,r,e||!0)}function Pn(e,t,r,n,i,o){let a=e._runtimeDataModel.models[t].fields.reduce((u,l)=>({...u,[l.name]:l}),{});return u=>{let l=Fe(e._errorFormat),g=cl(n,i),h=pl(u,o,g),v=r({dataPath:g,callsite:l})(h),S=fl(e,t);return new Proxy(v,{get(A,R){if(!S.includes(R))return A[R];let M=[a[R].type,r,R],B=[g,h];return Pn(e,...M,...B)},...hr([...S,...Object.getOwnPropertyNames(v)])})}}function fl(e,t){return e._runtimeDataModel.models[t].fields.filter(r=>r.kind==="object").map(r=>r.name)}d();c();p();f();m();d();c();p();f();m();var ml=Ve(Hi());var dl={red:it,gray:Ii,dim:ur,bold:ar,underline:Ti,highlightSource:e=>e.highlight()},gl={red:e=>e,gray:e=>e,dim:e=>e,bold:e=>e,underline:e=>e,highlightSource:e=>e};function hl({message:e,originalMethod:t,isPanic:r,callArguments:n}){return{functionName:`prisma.${t}()`,message:e,isPanic:r!=null?r:!1,callArguments:n}}function yl({functionName:e,location:t,message:r,isPanic:n,contextLines:i,callArguments:o},s){let a=[""],u=t?" in":":";if(n?(a.push(s.red(`Oops, an unknown error occurred! This is ${s.bold("on us")}, you did nothing wrong.`)),a.push(s.red(`It occurred in the ${s.bold(`\`${e}\``)} invocation${u}`))):a.push(s.red(`Invalid ${s.bold(`\`${e}\``)} invocation${u}`)),t&&a.push(s.underline(wl(t))),i){a.push("");let l=[i.toString()];o&&(l.push(o),l.push(s.dim(")"))),a.push(l.join("")),o&&a.push("")}else a.push(""),o&&a.push(o),a.push("");return a.push(r),a.join(` +`)}function wl(e){let t=[e.fileName];return e.lineNumber&&t.push(String(e.lineNumber)),e.columnNumber&&t.push(String(e.columnNumber)),t.join(":")}function ht(e){let t=e.showColors?dl:gl,r;return typeof $getTemplateParameters!="undefined"?r=$getTemplateParameters(e,t):r=hl(e),yl(r,t)}function Lo(e,t,r,n){return e===Ie.ModelAction.findFirstOrThrow||e===Ie.ModelAction.findUniqueOrThrow?El(t,r,n):n}function El(e,t,r){return async n=>{if("rejectOnNotFound"in n.args){let o=ht({originalMethod:n.clientMethod,callsite:n.callsite,message:"'rejectOnNotFound' option is not supported"});throw new te(o,{clientVersion:t})}return await r(n).catch(o=>{throw o instanceof Y&&o.code==="P2025"?new ke(`No ${e} found`,t):o})}}d();c();p();f();m();function we(e){return e.replace(/^./,t=>t.toLowerCase())}var bl=["findUnique","findUniqueOrThrow","findFirst","findFirstOrThrow","create","update","upsert","delete"],xl=["aggregate","count","groupBy"];function vn(e,t){var i;let r=(i=e._extensions.getAllModelExtensions(t))!=null?i:{},n=[Pl(e,t),Tl(e,t),_t(r),ie("name",()=>t),ie("$name",()=>t),ie("$parent",()=>e._appliedParent)];return ge({},n)}function Pl(e,t){let r=we(t),n=Object.keys(Ie.ModelAction).concat("count");return{getKeys(){return n},getPropertyValue(i){let o=i,s=u=>e._request(u);s=Lo(o,t,e._clientVersion,s);let a=u=>l=>{let g=Fe(e._errorFormat);return e._createPrismaPromise(h=>{let v={args:l,dataPath:[],action:o,model:t,clientMethod:`${r}.${i}`,jsModelName:r,transaction:h,callsite:g};return s({...v,...u})})};return bl.includes(o)?Pn(e,t,a):vl(i)?Mo(e,i,a):a({})}}}function vl(e){return xl.includes(e)}function Tl(e,t){return Ge(ie("fields",()=>{let r=e._runtimeDataModel.models[t];return Oo(t,r)}))}d();c();p();f();m();function Fo(e){return e.replace(/^./,t=>t.toUpperCase())}var Tn=Symbol();function qt(e){let t=[Cl(e),ie(Tn,()=>e),ie("$parent",()=>e._appliedParent)],r=e._extensions.getAllClientExtensions();return r&&t.push(_t(r)),ge(e,t)}function Cl(e){let t=Object.keys(e._runtimeDataModel.models),r=t.map(we),n=[...new Set(t.concat(r))];return Ge({getKeys(){return n},getPropertyValue(i){let o=Fo(i);if(e._runtimeDataModel.models[o]!==void 0)return vn(e,o);if(e._runtimeDataModel.models[i]!==void 0)return vn(e,i)},getPropertyDescriptor(i){if(!r.includes(i))return{enumerable:!1}}})}function Bo(e){return e[Tn]?e[Tn]:e}function $o(e){var r;if(typeof e=="function")return e(this);if((r=e.client)!=null&&r.__AccelerateEngine){let n=e.client.__AccelerateEngine;this._originalClient._engine=new n(this._originalClient._accelerateEngineConfig)}let t=Object.create(this._originalClient,{_extensions:{value:this._extensions.append(e)},_appliedParent:{value:this,configurable:!0},$use:{value:void 0},$on:{value:void 0}});return qt(t)}d();c();p();f();m();d();c();p();f();m();function qo({result:e,modelName:t,select:r,extensions:n}){let i=n.getAllComputedFields(t);if(!i)return e;let o=[],s=[];for(let a of Object.values(i)){if(r){if(!r[a.name])continue;let u=a.needs.filter(l=>!r[l]);u.length>0&&s.push(Lt(u))}Al(e,a.needs)&&o.push(Rl(a,ge(e,o)))}return o.length>0||s.length>0?ge(e,[...o,...s]):e}function Al(e,t){return t.every(r=>nn(e,r))}function Rl(e,t){return Ge(ie(e.name,()=>e.compute(t)))}d();c();p();f();m();function Mr({visitor:e,result:t,args:r,runtimeDataModel:n,modelName:i}){var s;if(Array.isArray(t)){for(let a=0;ag.name===o);if(!u||u.kind!=="object"||!u.relationName)continue;let l=typeof s=="object"?s:{};t[o]=Mr({visitor:i,result:t[o],args:l,modelName:u.type,runtimeDataModel:n})}}function Vo({result:e,modelName:t,args:r,extensions:n,runtimeDataModel:i}){return n.isEmpty()||e==null||typeof e!="object"||!i.models[t]?e:Mr({result:e,args:r!=null?r:{},modelName:t,runtimeDataModel:i,visitor:(s,a,u)=>qo({result:s,modelName:we(a),select:u.select,extensions:n})})}d();c();p();f();m();d();c();p();f();m();function jo(e){if(e instanceof le)return Sl(e);if(Array.isArray(e)){let r=[e[0]];for(let n=1;n{var s,a;let o=t.customDataProxyFetch;return"transaction"in t&&i!==void 0&&(((s=t.transaction)==null?void 0:s.kind)==="batch"&&t.transaction.lock.then(),t.transaction=i),n===r.length?e._executeRequest(t):r[n]({model:t.model,operation:t.model?t.action:t.clientMethod,args:jo((a=t.args)!=null?a:{}),__internalParams:t,query:(u,l=t)=>{let g=l.customDataProxyFetch;return l.customDataProxyFetch=Ko(o,g),l.args=u,Qo(e,l,r,n+1)}})})}function Go(e,t){let{jsModelName:r,action:n,clientMethod:i}=t,o=r?n:i;if(e._extensions.isEmpty())return e._executeRequest(t);let s=e._extensions.getAllQueryCallbacks(r!=null?r:"$none",o);return Qo(e,t,s)}function Ho(e){return t=>{let r={requests:t},n=t[0].extensions.getAllBatchQueryCallbacks();return n.length?Wo(r,n,0,e):e(r)}}function Wo(e,t,r,n){if(r===t.length)return n(e);let i=e.customDataProxyFetch,o=e.requests[0].transaction;return t[r]({args:{queries:e.requests.map(s=>({model:s.modelName,operation:s.action,args:s.args})),transaction:o?{isolationLevel:o.kind==="batch"?o.isolationLevel:void 0}:void 0},__internalParams:e,query(s,a=e){let u=a.customDataProxyFetch;return a.customDataProxyFetch=Ko(i,u),Wo(a,t,r+1,n)}})}var Jo=e=>e;function Ko(e=Jo,t=Jo){return r=>e(t(r))}d();c();p();f();m();d();c();p();f();m();function Yo(e,t,r){let n=we(r);return!t.result||!(t.result.$allModels||t.result[n])?e:Il({...e,...zo(t.name,e,t.result.$allModels),...zo(t.name,e,t.result[n])})}function Il(e){let t=new de,r=(n,i)=>t.getOrCreate(n,()=>i.has(n)?[n]:(i.add(n),e[n]?e[n].needs.flatMap(o=>r(o,i)):[n]));return st(e,n=>({...n,needs:r(n.name,new Set)}))}function zo(e,t,r){return r?st(r,({needs:n,compute:i},o)=>({name:o,needs:n?Object.keys(n).filter(s=>n[s]):[],compute:kl(t,o,i)})):{}}function kl(e,t,r){var i;let n=(i=e==null?void 0:e[t])==null?void 0:i.compute;return n?o=>r({...o,[t]:n(o)}):r}function Zo(e,t){if(!t)return e;let r={...e};for(let n of Object.values(t))if(e[n.name])for(let i of n.needs)r[i]=!0;return r}var Or=class{constructor(t,r){this.extension=t;this.previous=r;this.computedFieldsCache=new de;this.modelExtensionsCache=new de;this.queryCallbacksCache=new de;this.clientExtensions=It(()=>{var t,r;return this.extension.client?{...(r=this.previous)==null?void 0:r.getAllClientExtensions(),...this.extension.client}:(t=this.previous)==null?void 0:t.getAllClientExtensions()});this.batchCallbacks=It(()=>{var n,i,o;let t=(i=(n=this.previous)==null?void 0:n.getAllBatchQueryCallbacks())!=null?i:[],r=(o=this.extension.query)==null?void 0:o.$__internalBatch;return r?t.concat(r):t})}getAllComputedFields(t){return this.computedFieldsCache.getOrCreate(t,()=>{var r;return Yo((r=this.previous)==null?void 0:r.getAllComputedFields(t),this.extension,t)})}getAllClientExtensions(){return this.clientExtensions.get()}getAllModelExtensions(t){return this.modelExtensionsCache.getOrCreate(t,()=>{var n,i;let r=we(t);return!this.extension.model||!(this.extension.model[r]||this.extension.model.$allModels)?(n=this.previous)==null?void 0:n.getAllModelExtensions(t):{...(i=this.previous)==null?void 0:i.getAllModelExtensions(t),...this.extension.model.$allModels,...this.extension.model[r]}})}getAllQueryCallbacks(t,r){return this.queryCallbacksCache.getOrCreate(`${t}:${r}`,()=>{var s,a;let n=(a=(s=this.previous)==null?void 0:s.getAllQueryCallbacks(t,r))!=null?a:[],i=[],o=this.extension.query;return!o||!(o[t]||o.$allModels||o[r]||o.$allOperations)?n:(o[t]!==void 0&&(o[t][r]!==void 0&&i.push(o[t][r]),o[t].$allOperations!==void 0&&i.push(o[t].$allOperations)),t!=="$none"&&o.$allModels!==void 0&&(o.$allModels[r]!==void 0&&i.push(o.$allModels[r]),o.$allModels.$allOperations!==void 0&&i.push(o.$allModels.$allOperations)),o[r]!==void 0&&i.push(o[r]),o.$allOperations!==void 0&&i.push(o.$allOperations),n.concat(i))})}getAllBatchQueryCallbacks(){return this.batchCallbacks.get()}},Nr=class e{constructor(t){this.head=t}static empty(){return new e}static single(t){return new e(new Or(t))}isEmpty(){return this.head===void 0}append(t){return new e(new Or(t,this.head))}getAllComputedFields(t){var r;return(r=this.head)==null?void 0:r.getAllComputedFields(t)}getAllClientExtensions(){var t;return(t=this.head)==null?void 0:t.getAllClientExtensions()}getAllModelExtensions(t){var r;return(r=this.head)==null?void 0:r.getAllModelExtensions(t)}getAllQueryCallbacks(t,r){var n,i;return(i=(n=this.head)==null?void 0:n.getAllQueryCallbacks(t,r))!=null?i:[]}getAllBatchQueryCallbacks(){var t,r;return(r=(t=this.head)==null?void 0:t.getAllBatchQueryCallbacks())!=null?r:[]}};d();c();p();f();m();var Xo=ne("prisma:client"),es={Vercel:"vercel","Netlify CI":"netlify"};function ts({postinstall:e,ciName:t,clientVersion:r}){if(Xo("checkPlatformCaching:postinstall",e),Xo("checkPlatformCaching:ciName",t),e===!0&&t&&t in es){let n=`Prisma has detected that this project was built on ${t}, which caches dependencies. This leads to an outdated Prisma Client because Prisma's auto-generation isn't triggered. To fix this, make sure to run the \`prisma generate\` command during the build process. + +Learn how: https://pris.ly/d/${es[t]}-build`;throw console.error(n),new G(n,r)}}d();c();p();f();m();function rs(e,t){return e?e.datasources?e.datasources:e.datasourceUrl?{[t[0]]:{url:e.datasourceUrl}}:{}:{}}d();c();p();f();m();d();c();p();f();m();var Dl="Cloudflare-Workers",Ml="node";function Cn(){var e,t,r;return typeof Netlify=="object"?"netlify":typeof EdgeRuntime=="string"?"edge-light":((e=globalThis.navigator)==null?void 0:e.userAgent)===Dl?"workerd":globalThis.Deno?"deno":globalThis.__lagon__?"lagon":((r=(t=globalThis.process)==null?void 0:t.release)==null?void 0:r.name)===Ml?"node":globalThis.Bun?"bun":globalThis.fastly?"fastly":"unknown"}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();function yt({inlineDatasources:e,overrideDatasources:t,env:r,clientVersion:n}){var u,l;let i,o=Object.keys(e)[0],s=(u=e[o])==null?void 0:u.url,a=(l=t[o])==null?void 0:l.url;if(o===void 0?i=void 0:a?i=a:s!=null&&s.value?i=s.value:s!=null&&s.fromEnvVar&&(i=r[s.fromEnvVar]),(s==null?void 0:s.fromEnvVar)!==void 0&&i===void 0)throw Cn()==="workerd"?new G(`error: Environment variable not found: ${s.fromEnvVar}. + +In Cloudflare module Workers, environment variables are available only in the Worker's \`env\` parameter of \`fetch\`. +To solve this, provide the connection string directly: https://pris.ly/d/cloudflare-datasource-url`,n):new G(`error: Environment variable not found: ${s.fromEnvVar}.`,n);if(i===void 0)throw new G("error: Missing URL environment variable, value, or override.",n);return i}d();c();p();f();m();d();c();p();f();m();var _r=class extends Error{constructor(t,r){super(t),this.clientVersion=r.clientVersion,this.cause=r.cause}get[Symbol.toStringTag](){return this.name}};var ae=class extends _r{constructor(t,r){var n;super(t,r),this.isRetryable=(n=r.isRetryable)!=null?n:!0}};d();c();p();f();m();d();c();p();f();m();function $(e,t){return{...e,isRetryable:t}}var wt=class extends ae{constructor(r){super("This request must be retried",$(r,!0));this.name="ForcedRetryError";this.code="P5001"}};N(wt,"ForcedRetryError");d();c();p();f();m();var We=class extends ae{constructor(r,n){super(r,$(n,!1));this.name="InvalidDatasourceError";this.code="P6001"}};N(We,"InvalidDatasourceError");d();c();p();f();m();var Ke=class extends ae{constructor(r,n){super(r,$(n,!1));this.name="NotImplementedYetError";this.code="P5004"}};N(Ke,"NotImplementedYetError");d();c();p();f();m();d();c();p();f();m();var j=class extends ae{constructor(t,r){super(t,r),this.response=r.response;let n=this.response.headers.get("prisma-request-id");if(n){let i=`(The request id was: ${n})`;this.message=this.message+" "+i}}};var ze=class extends j{constructor(r){super("Schema needs to be uploaded",$(r,!0));this.name="SchemaMissingError";this.code="P5005"}};N(ze,"SchemaMissingError");d();c();p();f();m();d();c();p();f();m();var An="This request could not be understood by the server",Vt=class extends j{constructor(r,n,i){super(n||An,$(r,!1));this.name="BadRequestError";this.code="P5000";i&&(this.code=i)}};N(Vt,"BadRequestError");d();c();p();f();m();var jt=class extends j{constructor(r,n){super("Engine not started: healthcheck timeout",$(r,!0));this.name="HealthcheckTimeoutError";this.code="P5013";this.logs=n}};N(jt,"HealthcheckTimeoutError");d();c();p();f();m();var Jt=class extends j{constructor(r,n,i){super(n,$(r,!0));this.name="EngineStartupError";this.code="P5014";this.logs=i}};N(Jt,"EngineStartupError");d();c();p();f();m();var Qt=class extends j{constructor(r){super("Engine version is not supported",$(r,!1));this.name="EngineVersionNotSupportedError";this.code="P5012"}};N(Qt,"EngineVersionNotSupportedError");d();c();p();f();m();var Rn="Request timed out",Gt=class extends j{constructor(r,n=Rn){super(n,$(r,!1));this.name="GatewayTimeoutError";this.code="P5009"}};N(Gt,"GatewayTimeoutError");d();c();p();f();m();var Ol="Interactive transaction error",Ht=class extends j{constructor(r,n=Ol){super(n,$(r,!1));this.name="InteractiveTransactionError";this.code="P5015"}};N(Ht,"InteractiveTransactionError");d();c();p();f();m();var Nl="Request parameters are invalid",Wt=class extends j{constructor(r,n=Nl){super(n,$(r,!1));this.name="InvalidRequestError";this.code="P5011"}};N(Wt,"InvalidRequestError");d();c();p();f();m();var Sn="Requested resource does not exist",Kt=class extends j{constructor(r,n=Sn){super(n,$(r,!1));this.name="NotFoundError";this.code="P5003"}};N(Kt,"NotFoundError");d();c();p();f();m();var In="Unknown server error",Et=class extends j{constructor(r,n,i){super(n||In,$(r,!0));this.name="ServerError";this.code="P5006";this.logs=i}};N(Et,"ServerError");d();c();p();f();m();var kn="Unauthorized, check your connection string",zt=class extends j{constructor(r,n=kn){super(n,$(r,!1));this.name="UnauthorizedError";this.code="P5007"}};N(zt,"UnauthorizedError");d();c();p();f();m();var Dn="Usage exceeded, retry again later",Yt=class extends j{constructor(r,n=Dn){super(n,$(r,!0));this.name="UsageExceededError";this.code="P5008"}};N(Yt,"UsageExceededError");async function _l(e){let t;try{t=await e.text()}catch(r){return{type:"EmptyError"}}try{let r=JSON.parse(t);if(typeof r=="string")switch(r){case"InternalDataProxyError":return{type:"DataProxyError",body:r};default:return{type:"UnknownTextError",body:r}}if(typeof r=="object"&&r!==null){if("is_panic"in r&&"message"in r&&"error_code"in r)return{type:"QueryEngineError",body:r};if("EngineNotStarted"in r||"InteractiveTransactionMisrouted"in r||"InvalidRequestError"in r){let n=Object.values(r)[0].reason;return typeof n=="string"&&!["SchemaMissing","EngineVersionNotSupported"].includes(n)?{type:"UnknownJsonError",body:r}:{type:"DataProxyError",body:r}}}return{type:"UnknownJsonError",body:r}}catch(r){return t===""?{type:"EmptyError"}:{type:"UnknownTextError",body:t}}}async function Zt(e,t){if(e.ok)return;let r={clientVersion:t,response:e},n=await _l(e);if(n.type==="QueryEngineError")throw new Y(n.body.message,{code:n.body.error_code,clientVersion:t});if(n.type==="DataProxyError"){if(n.body==="InternalDataProxyError")throw new Et(r,"Internal Data Proxy error");if("EngineNotStarted"in n.body){if(n.body.EngineNotStarted.reason==="SchemaMissing")return new ze(r);if(n.body.EngineNotStarted.reason==="EngineVersionNotSupported")throw new Qt(r);if("EngineStartupError"in n.body.EngineNotStarted.reason){let{msg:i,logs:o}=n.body.EngineNotStarted.reason.EngineStartupError;throw new Jt(r,i,o)}if("KnownEngineStartupError"in n.body.EngineNotStarted.reason){let{msg:i,error_code:o}=n.body.EngineNotStarted.reason.KnownEngineStartupError;throw new G(i,t,o)}if("HealthcheckTimeout"in n.body.EngineNotStarted.reason){let{logs:i}=n.body.EngineNotStarted.reason.HealthcheckTimeout;throw new jt(r,i)}}if("InteractiveTransactionMisrouted"in n.body){let i={IDParseError:"Could not parse interactive transaction ID",NoQueryEngineFoundError:"Could not find Query Engine for the specified host and transaction ID",TransactionStartError:"Could not start interactive transaction"};throw new Ht(r,i[n.body.InteractiveTransactionMisrouted.reason])}if("InvalidRequestError"in n.body)throw new Wt(r,n.body.InvalidRequestError.reason)}if(e.status===401||e.status===403)throw new zt(r,bt(kn,n));if(e.status===404)return new Kt(r,bt(Sn,n));if(e.status===429)throw new Yt(r,bt(Dn,n));if(e.status===504)throw new Gt(r,bt(Rn,n));if(e.status>=500)throw new Et(r,bt(In,n));if(e.status>=400)throw new Vt(r,bt(An,n))}function bt(e,t){return t.type==="EmptyError"?e:`${e}: ${JSON.stringify(t)}`}d();c();p();f();m();function ns(e){let t=Math.pow(2,e)*50,r=Math.ceil(Math.random()*t)-Math.ceil(t/2),n=t+r;return new Promise(i=>setTimeout(()=>i(n),n))}d();c();p();f();m();var Te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function is(e){let t=new TextEncoder().encode(e),r="",n=t.byteLength,i=n%3,o=n-i,s,a,u,l,g;for(let h=0;h>18,a=(g&258048)>>12,u=(g&4032)>>6,l=g&63,r+=Te[s]+Te[a]+Te[u]+Te[l];return i==1?(g=t[o],s=(g&252)>>2,a=(g&3)<<4,r+=Te[s]+Te[a]+"=="):i==2&&(g=t[o]<<8|t[o+1],s=(g&64512)>>10,a=(g&1008)>>4,u=(g&15)<<2,r+=Te[s]+Te[a]+Te[u]+"="),r}d();c();p();f();m();function os(e){var r;if(!!((r=e.generator)!=null&&r.previewFeatures.some(n=>n.toLowerCase().includes("metrics"))))throw new G("The `metrics` preview feature is not yet available with Accelerate.\nPlease remove `metrics` from the `previewFeatures` in your schema.\n\nMore information about Accelerate: https://pris.ly/d/accelerate",e.clientVersion)}d();c();p();f();m();function Ll(e){return e[0]*1e3+e[1]/1e6}function ss(e){return new Date(Ll(e))}d();c();p();f();m();var as={"@prisma/debug":"workspace:*","@prisma/engines-version":"5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9","@prisma/fetch-engine":"workspace:*","@prisma/get-platform":"workspace:*"};d();c();p();f();m();d();c();p();f();m();var Xt=class extends ae{constructor(r,n){super(`Cannot fetch data from service: +${r}`,$(n,!0));this.name="RequestError";this.code="P5010"}};N(Xt,"RequestError");async function Ye(e,t,r=n=>n){var i;let n=t.clientVersion;try{return typeof fetch=="function"?await r(fetch)(e,t):await r(Mn)(e,t)}catch(o){let s=(i=o.message)!=null?i:"Unknown error";throw new Xt(s,{clientVersion:n})}}function Bl(e){return{...e.headers,"Content-Type":"application/json"}}function $l(e){return{method:e.method,headers:Bl(e)}}function ql(e,t){return{text:()=>Promise.resolve(w.Buffer.concat(e).toString()),json:()=>Promise.resolve().then(()=>JSON.parse(w.Buffer.concat(e).toString())),ok:t.statusCode>=200&&t.statusCode<=299,status:t.statusCode,url:t.url,headers:new On(t.headers)}}async function Mn(e,t={}){let r=Ul("https"),n=$l(t),i=[],{origin:o}=new URL(e);return new Promise((s,a)=>{var l;let u=r.request(e,n,g=>{let{statusCode:h,headers:{location:v}}=g;h>=301&&h<=399&&v&&(v.startsWith("http")===!1?s(Mn(`${o}${v}`,t)):s(Mn(v,t))),g.on("data",S=>i.push(S)),g.on("end",()=>s(ql(i,g))),g.on("error",a)});u.on("error",a),u.end((l=t.body)!=null?l:"")})}var Ul=typeof Pt!="undefined"?Pt:()=>{},On=class{constructor(t={}){this.headers=new Map;for(let[r,n]of Object.entries(t))if(typeof n=="string")this.headers.set(r,n);else if(Array.isArray(n))for(let i of n)this.headers.set(r,i)}append(t,r){this.headers.set(t,r)}delete(t){this.headers.delete(t)}get(t){var r;return(r=this.headers.get(t))!=null?r:null}has(t){return this.headers.has(t)}set(t,r){this.headers.set(t,r)}forEach(t,r){for(let[n,i]of this.headers)t.call(r,i,n,this)}};var Vl=/^[1-9][0-9]*\.[0-9]+\.[0-9]+$/,us=ne("prisma:client:dataproxyEngine");async function jl(e,t){var s,a,u;let r=as["@prisma/engines-version"],n=(s=t.clientVersion)!=null?s:"unknown";if(y.env.PRISMA_CLIENT_DATA_PROXY_CLIENT_VERSION)return y.env.PRISMA_CLIENT_DATA_PROXY_CLIENT_VERSION;if(e.includes("accelerate")&&n!=="0.0.0"&&n!=="in-memory")return n;let[i,o]=(a=n==null?void 0:n.split("-"))!=null?a:[];if(o===void 0&&Vl.test(i))return i;if(o!==void 0||n==="0.0.0"||n==="in-memory"){if(e.startsWith("localhost")||e.startsWith("127.0.0.1"))return"0.0.0";let[l]=(u=r.split("-"))!=null?u:[],[g,h,v]=l.split("."),S=Jl(`<=${g}.${h}.${v}`),A=await Ye(S,{clientVersion:n});if(!A.ok)throw new Error(`Failed to fetch stable Prisma version, unpkg.com status ${A.status} ${A.statusText}, response body: ${await A.text()||""}`);let R=await A.text();us("length of body fetched from unpkg.com",R.length);let D;try{D=JSON.parse(R)}catch(M){throw console.error("JSON.parse error: body fetched from unpkg.com: ",R),M}return D.version}throw new Ke("Only `major.minor.patch` versions are supported by Accelerate.",{clientVersion:n})}async function ls(e,t){let r=await jl(e,t);return us("version",r),r}function Jl(e){return encodeURI(`https://unpkg.com/prisma@${e}/package.json`)}var cs=3,Nn=ne("prisma:client:dataproxyEngine"),_n=class{constructor({apiKey:t,tracingHelper:r,logLevel:n,logQueries:i,engineHash:o}){this.apiKey=t,this.tracingHelper=r,this.logLevel=n,this.logQueries=i,this.engineHash=o}build({traceparent:t,interactiveTransaction:r}={}){let n={Authorization:`Bearer ${this.apiKey}`,"Prisma-Engine-Hash":this.engineHash};this.tracingHelper.isEnabled()&&(n.traceparent=t!=null?t:this.tracingHelper.getTraceParent()),r&&(n["X-transaction-id"]=r.id);let i=this.buildCaptureSettings();return i.length>0&&(n["X-capture-telemetry"]=i.join(", ")),n}buildCaptureSettings(){let t=[];return this.tracingHelper.isEnabled()&&t.push("tracing"),this.logLevel&&t.push(this.logLevel),this.logQueries&&t.push("query"),t}},er=class{constructor(t){this.name="DataProxyEngine";os(t),this.config=t,this.env={...t.env,...typeof y!="undefined"?y.env:{}},this.inlineSchema=is(t.inlineSchema),this.inlineDatasources=t.inlineDatasources,this.inlineSchemaHash=t.inlineSchemaHash,this.clientVersion=t.clientVersion,this.engineHash=t.engineVersion,this.logEmitter=t.logEmitter,this.tracingHelper=t.tracingHelper}apiKey(){return this.headerBuilder.apiKey}version(){return this.engineHash}async start(){this.startPromise!==void 0&&await this.startPromise,this.startPromise=(async()=>{let[t,r]=this.extractHostAndApiKey();this.host=t,this.headerBuilder=new _n({apiKey:r,tracingHelper:this.tracingHelper,logLevel:this.config.logLevel,logQueries:this.config.logQueries,engineHash:this.engineHash}),this.remoteClientVersion=await ls(t,this.config),Nn("host",this.host)})(),await this.startPromise}async stop(){}propagateResponseExtensions(t){var r,n;(r=t==null?void 0:t.logs)!=null&&r.length&&t.logs.forEach(i=>{switch(i.level){case"debug":case"error":case"trace":case"warn":case"info":break;case"query":{let o=typeof i.attributes.query=="string"?i.attributes.query:"";if(!this.tracingHelper.isEnabled()){let[s]=o.split("/* traceparent");o=s}this.logEmitter.emit("query",{query:o,timestamp:ss(i.timestamp),duration:Number(i.attributes.duration_ms),params:i.attributes.params,target:i.attributes.target})}}}),(n=t==null?void 0:t.traces)!=null&&n.length&&this.tracingHelper.createEngineSpan({span:!0,spans:t.traces})}onBeforeExit(){throw new Error('"beforeExit" hook is not applicable to the remote query engine')}async url(t){return await this.start(),`https://${this.host}/${this.remoteClientVersion}/${this.inlineSchemaHash}/${t}`}async uploadSchema(){let t={name:"schemaUpload",internal:!0};return this.tracingHelper.runInChildSpan(t,async()=>{let r=await Ye(await this.url("schema"),{method:"PUT",headers:this.headerBuilder.build(),body:this.inlineSchema,clientVersion:this.clientVersion});r.ok||Nn("schema response status",r.status);let n=await Zt(r,this.clientVersion);if(n)throw this.logEmitter.emit("warn",{message:`Error while uploading schema: ${n.message}`,timestamp:new Date,target:""}),n;this.logEmitter.emit("info",{message:`Schema (re)uploaded (hash: ${this.inlineSchemaHash})`,timestamp:new Date,target:""})})}request(t,{traceparent:r,interactiveTransaction:n,customDataProxyFetch:i}){return this.requestInternal({body:t,traceparent:r,interactiveTransaction:n,customDataProxyFetch:i})}async requestBatch(t,{traceparent:r,transaction:n,customDataProxyFetch:i}){let o=(n==null?void 0:n.kind)==="itx"?n.options:void 0,s=yr(t,n),{batchResult:a,elapsed:u}=await this.requestInternal({body:s,customDataProxyFetch:i,interactiveTransaction:o,traceparent:r});return a.map(l=>"errors"in l&&l.errors.length>0?$t(l.errors[0],this.clientVersion,this.config.activeProvider):{data:l,elapsed:u})}requestInternal({body:t,traceparent:r,customDataProxyFetch:n,interactiveTransaction:i}){return this.withRetry({actionGerund:"querying",callback:async({logHttpCall:o})=>{let s=i?`${i.payload.endpoint}/graphql`:await this.url("graphql");o(s);let a=await Ye(s,{method:"POST",headers:this.headerBuilder.build({traceparent:r,interactiveTransaction:i}),body:JSON.stringify(t),clientVersion:this.clientVersion},n);a.ok||Nn("graphql response status",a.status),await this.handleError(await Zt(a,this.clientVersion));let u=await a.json(),l=u.extensions;if(l&&this.propagateResponseExtensions(l),u.errors)throw u.errors.length===1?$t(u.errors[0],this.config.clientVersion,this.config.activeProvider):new ue(u.errors,{clientVersion:this.config.clientVersion});return u}})}async transaction(t,r,n){let i={start:"starting",commit:"committing",rollback:"rolling back"};return this.withRetry({actionGerund:`${i[t]} transaction`,callback:async({logHttpCall:o})=>{if(t==="start"){let s=JSON.stringify({max_wait:n.maxWait,timeout:n.timeout,isolation_level:n.isolationLevel}),a=await this.url("transaction/start");o(a);let u=await Ye(a,{method:"POST",headers:this.headerBuilder.build({traceparent:r.traceparent}),body:s,clientVersion:this.clientVersion});await this.handleError(await Zt(u,this.clientVersion));let l=await u.json(),g=l.extensions;g&&this.propagateResponseExtensions(g);let h=l.id,v=l["data-proxy"].endpoint;return{id:h,payload:{endpoint:v}}}else{let s=`${n.payload.endpoint}/${t}`;o(s);let a=await Ye(s,{method:"POST",headers:this.headerBuilder.build({traceparent:r.traceparent}),clientVersion:this.clientVersion});await this.handleError(await Zt(a,this.clientVersion));let l=(await a.json()).extensions;l&&this.propagateResponseExtensions(l);return}}})}extractHostAndApiKey(){let t={clientVersion:this.clientVersion},r=Object.keys(this.inlineDatasources)[0],n=yt({inlineDatasources:this.inlineDatasources,overrideDatasources:this.config.overrideDatasources,clientVersion:this.clientVersion,env:this.env}),i;try{i=new URL(n)}catch(l){throw new We(`Error validating datasource \`${r}\`: the URL must start with the protocol \`prisma://\``,t)}let{protocol:o,host:s,searchParams:a}=i;if(o!=="prisma:")throw new We(`Error validating datasource \`${r}\`: the URL must start with the protocol \`prisma://\``,t);let u=a.get("api_key");if(u===null||u.length<1)throw new We(`Error validating datasource \`${r}\`: the URL must contain a valid API key`,t);return[s,u]}metrics(){throw new Ke("Metrics are not yet supported for Accelerate",{clientVersion:this.clientVersion})}async withRetry(t){var r;for(let n=0;;n++){let i=o=>{this.logEmitter.emit("info",{message:`Calling ${o} (n=${n})`,timestamp:new Date,target:""})};try{return await t.callback({logHttpCall:i})}catch(o){if(!(o instanceof ae)||!o.isRetryable)throw o;if(n>=cs)throw o instanceof wt?o.cause:o;this.logEmitter.emit("warn",{message:`Attempt ${n+1}/${cs} failed for ${t.actionGerund}: ${(r=o.message)!=null?r:"(unknown)"}`,timestamp:new Date,target:""});let s=await ns(n);this.logEmitter.emit("warn",{message:`Retrying after ${s}ms`,timestamp:new Date,target:""})}}}async handleError(t){if(t instanceof ze)throw await this.uploadSchema(),new wt({clientVersion:this.clientVersion,cause:t});if(t)throw t}};function ps({copyEngine:e=!0},t){let r;try{r=yt({inlineDatasources:t.inlineDatasources,overrideDatasources:t.overrideDatasources,env:{...t.env,...y.env},clientVersion:t.clientVersion})}catch(u){}e&&(r!=null&&r.startsWith("prisma://"))&&mr("recommend--no-engine","In production, we recommend using `prisma generate --no-engine` (See: `prisma generate --help`)");let n=At(t.generator),i=!!(r!=null&&r.startsWith("prisma://")||!e),o=!!t.adapter,s=n==="library",a=n==="binary";if(i&&o||o){let u;throw u=["Prisma Client was configured to use the `adapter` option but it was imported via its `/edge` endpoint.","Please either remove the `/edge` endpoint or remove the `adapter` from the Prisma Client constructor."],new te(u.join(` +`),{clientVersion:t.clientVersion})}if(i)return new er(t);throw new te("Invalid client engine type, please use `library` or `binary`",{clientVersion:t.clientVersion})}d();c();p();f();m();function Lr({generator:e}){var t;return(t=e==null?void 0:e.previewFeatures)!=null?t:[]}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var ys=Ve(Ln());d();c();p();f();m();function gs(e,t){let r=hs(e),n=Ql(r),i=Hl(n);i?Fr(i,t):t.addErrorMessage(()=>"Unknown error")}function hs(e){return e.errors.flatMap(t=>t.kind==="Union"?hs(t):[t])}function Ql(e){let t=new Map,r=[];for(let n of e){if(n.kind!=="InvalidArgumentType"){r.push(n);continue}let i=`${n.selectionPath.join(".")}:${n.argumentPath.join(".")}`,o=t.get(i);o?t.set(i,{...n,argument:{...n.argument,typeNames:Gl(o.argument.typeNames,n.argument.typeNames)}}):t.set(i,n)}return r.push(...t.values()),r}function Gl(e,t){return[...new Set(e.concat(t))]}function Hl(e){return sn(e,(t,r)=>{let n=ms(t),i=ms(r);return n!==i?n-i:ds(t)-ds(r)})}function ms(e){let t=0;return Array.isArray(e.selectionPath)&&(t+=e.selectionPath.length),Array.isArray(e.argumentPath)&&(t+=e.argumentPath.length),t}function ds(e){switch(e.kind){case"InvalidArgumentValue":case"ValueTooLarge":return 20;case"InvalidArgumentType":return 10;case"RequiredArgumentMissing":return-10;default:return 0}}d();c();p();f();m();var Ce=class{constructor(t,r){this.name=t;this.value=r;this.isRequired=!1}makeRequired(){return this.isRequired=!0,this}write(t){let{colors:{green:r}}=t.context;t.addMarginSymbol(r(this.isRequired?"+":"?")),t.write(r(this.name)),this.isRequired||t.write(r("?")),t.write(r(": ")),typeof this.value=="string"?t.write(r(this.value)):t.write(this.value)}};d();c();p();f();m();var Br=class{constructor(){this.fields=[]}addField(t,r){return this.fields.push({write(n){let{green:i,dim:o}=n.context.colors;n.write(i(o(`${t}: ${r}`))).addMarginSymbol(i(o("+")))}}),this}write(t){let{colors:{green:r}}=t.context;t.writeLine(r("{")).withIndent(()=>{t.writeJoined(mt,this.fields).newLine()}).write(r("}")).addMarginSymbol(r("+"))}};function Fr(e,t){switch(e.kind){case"IncludeAndSelect":Wl(e,t);break;case"IncludeOnScalar":Kl(e,t);break;case"EmptySelection":zl(e,t);break;case"UnknownSelectionField":Yl(e,t);break;case"UnknownArgument":Zl(e,t);break;case"UnknownInputField":Xl(e,t);break;case"RequiredArgumentMissing":ec(e,t);break;case"InvalidArgumentType":tc(e,t);break;case"InvalidArgumentValue":rc(e,t);break;case"ValueTooLarge":nc(e,t);break;case"SomeFieldsMissing":ic(e,t);break;case"TooManyFieldsGiven":oc(e,t);break;case"Union":gs(e,t);break;default:throw new Error("not implemented: "+e.kind)}}function Wl(e,t){var n,i;let r=t.arguments.getDeepSubSelectionValue(e.selectionPath);r&&r instanceof K&&((n=r.getField("include"))==null||n.markAsError(),(i=r.getField("select"))==null||i.markAsError()),t.addErrorMessage(o=>`Please ${o.bold("either")} use ${o.green("`include`")} or ${o.green("`select`")}, but ${o.red("not both")} at the same time.`)}function Kl(e,t){var s,a;let[r,n]=$r(e.selectionPath),i=e.outputType,o=(s=t.arguments.getDeepSelectionParent(r))==null?void 0:s.value;if(o&&((a=o.getField(n))==null||a.markAsError(),i))for(let u of i.fields)u.isRelation&&o.addSuggestion(new Ce(u.name,"true"));t.addErrorMessage(u=>{let l=`Invalid scalar field ${u.red(`\`${n}\``)} for ${u.bold("include")} statement`;return i?l+=` on model ${u.bold(i.name)}. ${tr(u)}`:l+=".",l+=` +Note that ${u.bold("include")} statements only accept relation fields.`,l})}function zl(e,t){var o,s;let r=e.outputType,n=(o=t.arguments.getDeepSelectionParent(e.selectionPath))==null?void 0:o.value,i=(s=n==null?void 0:n.isEmpty())!=null?s:!1;n&&(n.removeAllFields(),bs(n,r)),t.addErrorMessage(a=>i?`The ${a.red("`select`")} statement for type ${a.bold(r.name)} must not be empty. ${tr(a)}`:`The ${a.red("`select`")} statement for type ${a.bold(r.name)} needs ${a.bold("at least one truthy value")}.`)}function Yl(e,t){var o;let[r,n]=$r(e.selectionPath),i=t.arguments.getDeepSelectionParent(r);i&&((o=i.value.getField(n))==null||o.markAsError(),bs(i.value,e.outputType)),t.addErrorMessage(s=>{let a=[`Unknown field ${s.red(`\`${n}\``)}`];return i&&a.push(`for ${s.bold(i.kind)} statement`),a.push(`on model ${s.bold(`\`${e.outputType.name}\``)}.`),a.push(tr(s)),a.join(" ")})}function Zl(e,t){var i;let r=e.argumentPath[0],n=t.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof K&&((i=n.getField(r))==null||i.markAsError(),sc(n,e.arguments)),t.addErrorMessage(o=>ws(o,r,e.arguments.map(s=>s.name)))}function Xl(e,t){var o;let[r,n]=$r(e.argumentPath),i=t.arguments.getDeepSubSelectionValue(e.selectionPath);if(i instanceof K){(o=i.getDeepField(e.argumentPath))==null||o.markAsError();let s=i.getDeepFieldValue(r);s instanceof K&&xs(s,e.inputType)}t.addErrorMessage(s=>ws(s,n,e.inputType.fields.map(a=>a.name)))}function ws(e,t,r){let n=[`Unknown argument \`${e.red(t)}\`.`],i=uc(t,r);return i&&n.push(`Did you mean \`${e.green(i)}\`?`),r.length>0&&n.push(tr(e)),n.join(" ")}function ec(e,t){let r;t.addErrorMessage(u=>(r==null?void 0:r.value)instanceof z&&r.value.text==="null"?`Argument \`${u.green(o)}\` must not be ${u.red("null")}.`:`Argument \`${u.green(o)}\` is missing.`);let n=t.arguments.getDeepSubSelectionValue(e.selectionPath);if(!(n instanceof K))return;let[i,o]=$r(e.argumentPath),s=new Br,a=n.getDeepFieldValue(i);if(a instanceof K)if(r=a.getField(o),r&&a.removeField(o),e.inputTypes.length===1&&e.inputTypes[0].kind==="object"){for(let u of e.inputTypes[0].fields)s.addField(u.name,u.typeNames.join(" | "));a.addSuggestion(new Ce(o,s).makeRequired())}else{let u=e.inputTypes.map(Es).join(" | ");a.addSuggestion(new Ce(o,u).makeRequired())}}function Es(e){return e.kind==="list"?`${Es(e.elementType)}[]`:e.name}function tc(e,t){var i;let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof K&&((i=n.getDeepFieldValue(e.argumentPath))==null||i.markAsError()),t.addErrorMessage(o=>{let s=qr("or",e.argument.typeNames.map(a=>o.green(a)));return`Argument \`${o.bold(r)}\`: Invalid value provided. Expected ${s}, provided ${o.red(e.inferredType)}.`})}function rc(e,t){var i;let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof K&&((i=n.getDeepFieldValue(e.argumentPath))==null||i.markAsError()),t.addErrorMessage(o=>{let s=[`Invalid value for argument \`${o.bold(r)}\``];if(e.underlyingError&&s.push(`: ${e.underlyingError}`),s.push("."),e.argument.typeNames.length>0){let a=qr("or",e.argument.typeNames.map(u=>o.green(u)));s.push(` Expected ${a}.`)}return s.join("")})}function nc(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath),i;if(n instanceof K){let o=n.getDeepField(e.argumentPath),s=o==null?void 0:o.value;s==null||s.markAsError(),s instanceof z&&(i=s.text)}t.addErrorMessage(o=>{let s=["Unable to fit value"];return i&&s.push(o.red(i)),s.push(`into a 64-bit signed integer for field \`${o.bold(r)}\``),s.join(" ")})}function ic(e,t){let r=e.argumentPath[e.argumentPath.length-1],n=t.arguments.getDeepSubSelectionValue(e.selectionPath);if(n instanceof K){let i=n.getDeepFieldValue(e.argumentPath);i instanceof K&&xs(i,e.inputType)}t.addErrorMessage(i=>{let o=[`Argument \`${i.bold(r)}\` of type ${i.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1?e.constraints.requiredFields?o.push(`${i.green("at least one of")} ${qr("or",e.constraints.requiredFields.map(s=>`\`${i.bold(s)}\``))} arguments.`):o.push(`${i.green("at least one")} argument.`):o.push(`${i.green(`at least ${e.constraints.minFieldCount}`)} arguments.`),o.push(tr(i)),o.join(" ")})}function oc(e,t){let r=e.argumentPath[e.argumentPath.length-1],n=t.arguments.getDeepSubSelectionValue(e.selectionPath),i=[];if(n instanceof K){let o=n.getDeepFieldValue(e.argumentPath);o instanceof K&&(o.markAsError(),i=Object.keys(o.getFields()))}t.addErrorMessage(o=>{let s=[`Argument \`${o.bold(r)}\` of type ${o.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1&&e.constraints.maxFieldCount==1?s.push(`${o.green("exactly one")} argument,`):e.constraints.maxFieldCount==1?s.push(`${o.green("at most one")} argument,`):s.push(`${o.green(`at most ${e.constraints.maxFieldCount}`)} arguments,`),s.push(`but you provided ${qr("and",i.map(a=>o.red(a)))}. Please choose`),e.constraints.maxFieldCount===1?s.push("one."):s.push(`${e.constraints.maxFieldCount}.`),s.join(" ")})}function bs(e,t){for(let r of t.fields)e.hasField(r.name)||e.addSuggestion(new Ce(r.name,"true"))}function sc(e,t){for(let r of t)e.hasField(r.name)||e.addSuggestion(new Ce(r.name,r.typeNames.join(" | ")))}function xs(e,t){if(t.kind==="object")for(let r of t.fields)e.hasField(r.name)||e.addSuggestion(new Ce(r.name,r.typeNames.join(" | ")))}function $r(e){let t=[...e],r=t.pop();if(!r)throw new Error("unexpected empty path");return[t,r]}function tr({green:e,enabled:t}){return"Available options are "+(t?`listed in ${e("green")}`:"marked with ?")+"."}function qr(e,t){if(t.length===1)return t[0];let r=[...t],n=r.pop();return`${r.join(", ")} ${e} ${n}`}var ac=3;function uc(e,t){let r=1/0,n;for(let i of t){let o=(0,ys.default)(e,i);o>ac||o({name:t.name,typeName:"boolean",isRelation:t.kind==="object"}))}}isRawAction(){return["executeRaw","queryRaw","runCommandRaw","findRaw","aggregateRaw"].includes(this.params.action)}getComputedFields(){if(this.params.modelName)return this.params.extensions.getAllComputedFields(this.params.modelName)}findField(t){var r;return(r=this.model)==null?void 0:r.fields.find(n=>n.name===t)}nestSelection(t){let r=this.findField(t),n=(r==null?void 0:r.kind)==="object"?r.type:void 0;return new e({...this.params,modelName:n,selectionPath:this.params.selectionPath.concat(t)})}nestArgument(t){return new e({...this.params,argumentPath:this.params.argumentPath.concat(t)})}};d();c();p();f();m();var Cs=e=>({command:e});d();c();p();f();m();d();c();p();f();m();var As=e=>e.strings.reduce((t,r,n)=>`${t}@P${n}${r}`);d();c();p();f();m();function rr(e){try{return Rs(e,"fast")}catch(t){return Rs(e,"slow")}}function Rs(e,t){return JSON.stringify(e.map(r=>yc(r,t)))}function yc(e,t){return typeof e=="bigint"?{prisma__type:"bigint",prisma__value:e.toString()}:ut(e)?{prisma__type:"date",prisma__value:e.toJSON()}:ve.isDecimal(e)?{prisma__type:"decimal",prisma__value:e.toJSON()}:w.Buffer.isBuffer(e)?{prisma__type:"bytes",prisma__value:e.toString("base64")}:wc(e)||ArrayBuffer.isView(e)?{prisma__type:"bytes",prisma__value:w.Buffer.from(e).toString("base64")}:typeof e=="object"&&t==="slow"?Is(e):e}function wc(e){return e instanceof ArrayBuffer||e instanceof SharedArrayBuffer?!0:typeof e=="object"&&e!==null?e[Symbol.toStringTag]==="ArrayBuffer"||e[Symbol.toStringTag]==="SharedArrayBuffer":!1}function Is(e){if(typeof e!="object"||e===null)return e;if(typeof e.toJSON=="function")return e.toJSON();if(Array.isArray(e))return e.map(Ss);let t={};for(let r of Object.keys(e))t[r]=Ss(e[r]);return t}function Ss(e){return typeof e=="bigint"?e.toString():Is(e)}var Ec=/^(\s*alter\s)/i,ks=ne("prisma:client");function $n(e,t,r,n){if(!(e!=="postgresql"&&e!=="cockroachdb")&&r.length>0&&Ec.exec(t))throw new Error(`Running ALTER using ${n} is not supported +Using the example below you can still execute your query with Prisma, but please note that it is vulnerable to SQL injection attacks and requires you to take care of input sanitization. + +Example: + await prisma.$executeRawUnsafe(\`ALTER USER prisma WITH PASSWORD '\${password}'\`) + +More Information: https://pris.ly/d/execute-raw +`)}var qn=({clientMethod:e,activeProvider:t})=>r=>{let n="",i;if(Array.isArray(r)){let[o,...s]=r;n=o,i={values:rr(s||[]),__prismaRawParameters__:!0}}else switch(t){case"sqlite":case"mysql":{n=r.sql,i={values:rr(r.values),__prismaRawParameters__:!0};break}case"cockroachdb":case"postgresql":case"postgres":{n=r.text,i={values:rr(r.values),__prismaRawParameters__:!0};break}case"sqlserver":{n=As(r),i={values:rr(r.values),__prismaRawParameters__:!0};break}default:throw new Error(`The ${t} provider does not support ${e}`)}return i!=null&&i.values?ks(`prisma.${e}(${n}, ${i.values})`):ks(`prisma.${e}(${n})`),{query:n,parameters:i}},Ds={requestArgsToMiddlewareArgs(e){return[e.strings,...e.values]},middlewareArgsToRequestArgs(e){let[t,...r]=e;return new le(t,r)}},Ms={requestArgsToMiddlewareArgs(e){return[e]},middlewareArgsToRequestArgs(e){return e[0]}};d();c();p();f();m();function Un(e){return function(r){let n,i=(o=e)=>{try{return o===void 0||(o==null?void 0:o.kind)==="itx"?n!=null?n:n=Os(r(o)):Os(r(o))}catch(s){return Promise.reject(s)}};return{then(o,s){return i().then(o,s)},catch(o){return i().catch(o)},finally(o){return i().finally(o)},requestTransaction(o){let s=i(o);return s.requestTransaction?s.requestTransaction(o):s},[Symbol.toStringTag]:"PrismaPromise"}}}function Os(e){return typeof e.then=="function"?e:Promise.resolve(e)}d();c();p();f();m();var Ns={isEnabled(){return!1},getTraceParent(){return"00-10-10-00"},async createEngineSpan(){},getActiveContext(){},runInChildSpan(e,t){return t()}},Vn=class{isEnabled(){return this.getGlobalTracingHelper().isEnabled()}getTraceParent(t){return this.getGlobalTracingHelper().getTraceParent(t)}createEngineSpan(t){return this.getGlobalTracingHelper().createEngineSpan(t)}getActiveContext(){return this.getGlobalTracingHelper().getActiveContext()}runInChildSpan(t,r){return this.getGlobalTracingHelper().runInChildSpan(t,r)}getGlobalTracingHelper(){var t,r;return(r=(t=globalThis.PRISMA_INSTRUMENTATION)==null?void 0:t.helper)!=null?r:Ns}};function _s(e){return e.includes("tracing")?new Vn:Ns}d();c();p();f();m();function Ls(e,t=()=>{}){let r,n=new Promise(i=>r=i);return{then(i){return--e===0&&r(t()),i==null?void 0:i(n)}}}d();c();p();f();m();var bc=["$connect","$disconnect","$on","$transaction","$use","$extends"],Fs=bc;d();c();p();f();m();function Bs(e){return typeof e=="string"?e:e.reduce((t,r)=>{let n=typeof r=="string"?r:r.level;return n==="query"?t:t&&(r==="info"||t==="info")?"info":n},void 0)}d();c();p();f();m();var Vr=class{constructor(){this._middlewares=[]}use(t){this._middlewares.push(t)}get(t){return this._middlewares[t]}has(t){return!!this._middlewares[t]}length(){return this._middlewares.length}};d();c();p();f();m();var qs=Ve(Zi());d();c();p();f();m();function jr(e){return typeof e.batchRequestIdx=="number"}d();c();p();f();m();function Jr(e){return e===null?e:Array.isArray(e)?e.map(Jr):typeof e=="object"?xc(e)?Pc(e):st(e,Jr):e}function xc(e){return e!==null&&typeof e=="object"&&typeof e.$type=="string"}function Pc({$type:e,value:t}){switch(e){case"BigInt":return BigInt(t);case"Bytes":return w.Buffer.from(t,"base64");case"DateTime":return new Date(t);case"Decimal":return new ve(t);case"Json":return JSON.parse(t);default:Je(t,"Unknown tagged value")}}d();c();p();f();m();function $s(e){if(e.action!=="findUnique"&&e.action!=="findUniqueOrThrow")return;let t=[];return e.modelName&&t.push(e.modelName),e.query.arguments&&t.push(jn(e.query.arguments)),t.push(jn(e.query.selection)),t.join("")}function jn(e){return`(${Object.keys(e).sort().map(r=>{let n=e[r];return typeof n=="object"&&n!==null?`(${r} ${jn(n)})`:r}).join(" ")})`}d();c();p();f();m();var vc={aggregate:!1,aggregateRaw:!1,createMany:!0,createOne:!0,deleteMany:!0,deleteOne:!0,executeRaw:!0,findFirst:!1,findFirstOrThrow:!1,findMany:!1,findRaw:!1,findUnique:!1,findUniqueOrThrow:!1,groupBy:!1,queryRaw:!1,runCommandRaw:!0,updateMany:!0,updateOne:!0,upsertOne:!0};function Jn(e){return vc[e]}d();c();p();f();m();var Qr=class{constructor(t){this.options=t;this.tickActive=!1;this.batches={}}request(t){let r=this.options.batchBy(t);return r?(this.batches[r]||(this.batches[r]=[],this.tickActive||(this.tickActive=!0,y.nextTick(()=>{this.dispatchBatches(),this.tickActive=!1}))),new Promise((n,i)=>{this.batches[r].push({request:t,resolve:n,reject:i})})):this.options.singleLoader(t)}dispatchBatches(){for(let t in this.batches){let r=this.batches[t];delete this.batches[t],r.length===1?this.options.singleLoader(r[0].request).then(n=>{n instanceof Error?r[0].reject(n):r[0].resolve(n)}).catch(n=>{r[0].reject(n)}):(r.sort((n,i)=>this.options.batchOrder(n.request,i.request)),this.options.batchLoader(r.map(n=>n.request)).then(n=>{if(n instanceof Error)for(let i=0;i{for(let i=0;i{let{transaction:o,otelParentCtx:s}=n[0],a=n.map(h=>h.protocolQuery),u=this.client._tracingHelper.getTraceParent(s),l=n.some(h=>Jn(h.protocolQuery.action));return(await this.client._engine.requestBatch(a,{traceparent:u,transaction:Cc(o),containsWrite:l,customDataProxyFetch:i})).map((h,v)=>{if(h instanceof Error)return h;try{return this.mapQueryEngineResult(n[v],h)}catch(S){return S}})}),singleLoader:async n=>{var s;let i=((s=n.transaction)==null?void 0:s.kind)==="itx"?Us(n.transaction):void 0,o=await this.client._engine.request(n.protocolQuery,{traceparent:this.client._tracingHelper.getTraceParent(),interactiveTransaction:i,isWrite:Jn(n.protocolQuery.action),customDataProxyFetch:n.customDataProxyFetch});return this.mapQueryEngineResult(n,o)},batchBy:n=>{var i;return(i=n.transaction)!=null&&i.id?`transaction-${n.transaction.id}`:$s(n.protocolQuery)},batchOrder(n,i){var o,s;return((o=n.transaction)==null?void 0:o.kind)==="batch"&&((s=i.transaction)==null?void 0:s.kind)==="batch"?n.transaction.index-i.transaction.index:0}})}async request(t){try{return await this.dataloader.request(t)}catch(r){let{clientMethod:n,callsite:i,transaction:o,args:s,modelName:a}=t;this.handleAndLogRequestError({error:r,clientMethod:n,callsite:i,transaction:o,args:s,modelName:a})}}mapQueryEngineResult({dataPath:t,unpacker:r},n){let i=n==null?void 0:n.data,o=n==null?void 0:n.elapsed,s=this.unpack(i,t,r);return y.env.PRISMA_CLIENT_GET_TIME?{data:s,elapsed:o}:s}handleAndLogRequestError(t){try{this.handleRequestError(t)}catch(r){throw this.logEmitter&&this.logEmitter.emit("error",{message:r.message,target:t.clientMethod,timestamp:new Date}),r}}handleRequestError({error:t,clientMethod:r,callsite:n,transaction:i,args:o,modelName:s}){if(Tc(t),Ac(t,i)||t instanceof ke)throw t;if(t instanceof Y&&Rc(t)){let u=Vs(t.meta);Ur({args:o,errors:[u],callsite:n,errorFormat:this.client._errorFormat,originalMethod:r,clientVersion:this.client._clientVersion})}let a=t.message;if(n&&(a=ht({callsite:n,originalMethod:r,isPanic:t.isPanic,showColors:this.client._errorFormat==="pretty",message:a})),a=this.sanitizeMessage(a),t.code){let u=s?{modelName:s,...t.meta}:t.meta;throw new Y(a,{code:t.code,clientVersion:this.client._clientVersion,meta:u,batchRequestIdx:t.batchRequestIdx})}else{if(t.isPanic)throw new De(a,this.client._clientVersion);if(t instanceof ue)throw new ue(a,{clientVersion:this.client._clientVersion,batchRequestIdx:t.batchRequestIdx});if(t instanceof G)throw new G(a,this.client._clientVersion);if(t instanceof De)throw new De(a,this.client._clientVersion)}throw t.clientVersion=this.client._clientVersion,t}sanitizeMessage(t){return this.client._errorFormat&&this.client._errorFormat!=="pretty"?(0,qs.default)(t):t}unpack(t,r,n){if(!t||(t.data&&(t=t.data),!t))return t;let i=Object.values(t)[0],o=r.filter(a=>a!=="select"&&a!=="include"),s=Jr(xn(i,o));return n?n(s):s}get[Symbol.toStringTag](){return"RequestHandler"}};function Cc(e){if(e){if(e.kind==="batch")return{kind:"batch",options:{isolationLevel:e.isolationLevel}};if(e.kind==="itx")return{kind:"itx",options:Us(e)};Je(e,"Unknown transaction kind")}}function Us(e){return{id:e.id,payload:e.payload}}function Ac(e,t){return jr(e)&&(t==null?void 0:t.kind)==="batch"&&e.batchRequestIdx!==t.index}function Rc(e){return e.code==="P2009"||e.code==="P2012"}function Vs(e){if(e.kind==="Union")return{kind:"Union",errors:e.errors.map(Vs)};if(Array.isArray(e.selectionPath)){let[,...t]=e.selectionPath;return{...e,selectionPath:t}}return e}d();c();p();f();m();var js="5.10.2";var Js=js;d();c();p();f();m();function Qs(e){return e.map(t=>{let r={};for(let n of Object.keys(t))r[n]=Gs(t[n]);return r})}function Gs({prisma__type:e,prisma__value:t}){switch(e){case"bigint":return BigInt(t);case"bytes":return w.Buffer.from(t,"base64");case"decimal":return new ve(t);case"datetime":case"date":return new Date(t);case"time":return new Date(`1970-01-01T${t}Z`);case"array":return t.map(Gs);default:return t}}d();c();p();f();m();var zs=Ve(Ln());d();c();p();f();m();var J=class extends Error{constructor(t){super(t+` +Read more at https://pris.ly/d/client-constructor`),this.name="PrismaClientConstructorValidationError"}get[Symbol.toStringTag](){return"PrismaClientConstructorValidationError"}};N(J,"PrismaClientConstructorValidationError");var Hs=["datasources","datasourceUrl","errorFormat","adapter","log","transactionOptions","__internal"],Ws=["pretty","colorless","minimal"],Ks=["info","query","warn","error"],Ic={datasources:(e,{datasourceNames:t})=>{if(e){if(typeof e!="object"||Array.isArray(e))throw new J(`Invalid value ${JSON.stringify(e)} for "datasources" provided to PrismaClient constructor`);for(let[r,n]of Object.entries(e)){if(!t.includes(r)){let i=xt(r,t)||` Available datasources: ${t.join(", ")}`;throw new J(`Unknown datasource ${r} provided to PrismaClient constructor.${i}`)}if(typeof n!="object"||Array.isArray(n))throw new J(`Invalid value ${JSON.stringify(e)} for datasource "${r}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`);if(n&&typeof n=="object")for(let[i,o]of Object.entries(n)){if(i!=="url")throw new J(`Invalid value ${JSON.stringify(e)} for datasource "${r}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`);if(typeof o!="string")throw new J(`Invalid value ${JSON.stringify(o)} for datasource "${r}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`)}}}},adapter:(e,t)=>{if(e===null)return;if(e===void 0)throw new J('"adapter" property must not be undefined, use null to conditionally disable driver adapters.');if(!Lr(t).includes("driverAdapters"))throw new J('"adapter" property can only be provided to PrismaClient constructor when "driverAdapters" preview feature is enabled.');if(At()==="binary")throw new J('Cannot use a driver adapter with the "binary" Query Engine. Please use the "library" Query Engine.')},datasourceUrl:e=>{if(typeof e!="undefined"&&typeof e!="string")throw new J(`Invalid value ${JSON.stringify(e)} for "datasourceUrl" provided to PrismaClient constructor. +Expected string or undefined.`)},errorFormat:e=>{if(e){if(typeof e!="string")throw new J(`Invalid value ${JSON.stringify(e)} for "errorFormat" provided to PrismaClient constructor.`);if(!Ws.includes(e)){let t=xt(e,Ws);throw new J(`Invalid errorFormat ${e} provided to PrismaClient constructor.${t}`)}}},log:e=>{if(!e)return;if(!Array.isArray(e))throw new J(`Invalid value ${JSON.stringify(e)} for "log" provided to PrismaClient constructor.`);function t(r){if(typeof r=="string"&&!Ks.includes(r)){let n=xt(r,Ks);throw new J(`Invalid log level "${r}" provided to PrismaClient constructor.${n}`)}}for(let r of e){t(r);let n={level:t,emit:i=>{let o=["stdout","event"];if(!o.includes(i)){let s=xt(i,o);throw new J(`Invalid value ${JSON.stringify(i)} for "emit" in logLevel provided to PrismaClient constructor.${s}`)}}};if(r&&typeof r=="object")for(let[i,o]of Object.entries(r))if(n[i])n[i](o);else throw new J(`Invalid property ${i} for "log" provided to PrismaClient constructor`)}},transactionOptions:e=>{if(!e)return;let t=e.maxWait;if(t!=null&&t<=0)throw new J(`Invalid value ${t} for maxWait in "transactionOptions" provided to PrismaClient constructor. maxWait needs to be greater than 0`);let r=e.timeout;if(r!=null&&r<=0)throw new J(`Invalid value ${r} for timeout in "transactionOptions" provided to PrismaClient constructor. timeout needs to be greater than 0`)},__internal:e=>{if(!e)return;let t=["debug","engine","configOverride"];if(typeof e!="object")throw new J(`Invalid value ${JSON.stringify(e)} for "__internal" to PrismaClient constructor`);for(let[r]of Object.entries(e))if(!t.includes(r)){let n=xt(r,t);throw new J(`Invalid property ${JSON.stringify(r)} for "__internal" provided to PrismaClient constructor.${n}`)}}};function Ys(e,t){for(let[r,n]of Object.entries(e)){if(!Hs.includes(r)){let i=xt(r,Hs);throw new J(`Unknown property ${r} provided to PrismaClient constructor.${i}`)}Ic[r](n,t)}if(e.datasourceUrl&&e.datasources)throw new J('Can not use "datasourceUrl" and "datasources" options at the same time. Pick one of them')}function xt(e,t){if(t.length===0||typeof e!="string")return"";let r=kc(e,t);return r?` Did you mean "${r}"?`:""}function kc(e,t){if(t.length===0)return null;let r=t.map(i=>({value:i,distance:(0,zs.default)(e,i)}));r.sort((i,o)=>i.distance{let n=new Array(e.length),i=null,o=!1,s=0,a=()=>{o||(s++,s===e.length&&(o=!0,i?r(i):t(n)))},u=l=>{o||(o=!0,r(l))};for(let l=0;l{n[l]=g,a()},g=>{if(!jr(g)){u(g);return}g.batchRequestIdx===l?u(g):(i||(i=g),a())})})}var Be=ne("prisma:client");typeof globalThis=="object"&&(globalThis.NODE_CLIENT=!0);var Dc={requestArgsToMiddlewareArgs:e=>e,middlewareArgsToRequestArgs:e=>e},Mc=Symbol.for("prisma.client.transaction.id"),Oc={id:0,nextId(){return++this.id}};function Nc(e){class t{constructor(n){this._originalClient=this;this._middlewares=new Vr;this._createPrismaPromise=Un();this.$extends=$o;var u,l,g,h,v,S,A,R,D,M,B,I,L,X;e=(g=(l=(u=n==null?void 0:n.__internal)==null?void 0:u.configOverride)==null?void 0:l.call(u,e))!=null?g:e,ts(e),n&&Ys(n,e);let i=n!=null&&n.adapter?fn(n.adapter):void 0,o=new fr().on("error",()=>{});this._extensions=Nr.empty(),this._previewFeatures=Lr(e),this._clientVersion=(h=e.clientVersion)!=null?h:Js,this._activeProvider=e.activeProvider,this._tracingHelper=_s(this._previewFeatures);let s={rootEnvPath:e.relativeEnvPaths.rootEnvPath&&Ct.resolve(e.dirname,e.relativeEnvPaths.rootEnvPath),schemaEnvPath:e.relativeEnvPaths.schemaEnvPath&&Ct.resolve(e.dirname,e.relativeEnvPaths.schemaEnvPath)},a=(v=e.injectableEdgeEnv)==null?void 0:v.call(e);try{let F=n!=null?n:{},Ze=(S=F.__internal)!=null?S:{},$e=Ze.debug===!0;$e&&ne.enable("prisma:client");let fe=Ct.resolve(e.dirname,e.relativePath);wi.existsSync(fe)||(fe=e.dirname),Be("dirname",e.dirname),Be("relativePath",e.relativePath),Be("cwd",fe);let qe=Ze.engine||{};if(F.errorFormat?this._errorFormat=F.errorFormat:y.env.NODE_ENV==="production"?this._errorFormat="minimal":y.env.NO_COLOR?this._errorFormat="colorless":this._errorFormat="colorless",this._runtimeDataModel=e.runtimeDataModel,this._engineConfig={cwd:fe,dirname:e.dirname,enableDebugLogs:$e,allowTriggerPanic:qe.allowTriggerPanic,datamodelPath:Ct.join(e.dirname,(A=e.filename)!=null?A:"schema.prisma"),prismaPath:(R=qe.binaryPath)!=null?R:void 0,engineEndpoint:qe.endpoint,generator:e.generator,showColors:this._errorFormat==="pretty",logLevel:F.log&&Bs(F.log),logQueries:F.log&&!!(typeof F.log=="string"?F.log==="query":F.log.find(Q=>typeof Q=="string"?Q==="query":Q.level==="query")),env:(D=a==null?void 0:a.parsed)!=null?D:{},flags:[],engineWasm:e.engineWasm,clientVersion:e.clientVersion,engineVersion:e.engineVersion,previewFeatures:this._previewFeatures,activeProvider:e.activeProvider,inlineSchema:e.inlineSchema,overrideDatasources:rs(F,e.datasourceNames),inlineDatasources:e.inlineDatasources,inlineSchemaHash:e.inlineSchemaHash,tracingHelper:this._tracingHelper,transactionOptions:{maxWait:(B=(M=F.transactionOptions)==null?void 0:M.maxWait)!=null?B:2e3,timeout:(L=(I=F.transactionOptions)==null?void 0:I.timeout)!=null?L:5e3,isolationLevel:(X=F.transactionOptions)==null?void 0:X.isolationLevel},logEmitter:o,isBundled:e.isBundled,adapter:i},this._accelerateEngineConfig={...this._engineConfig,accelerateUtils:{resolveDatasourceUrl:yt,getBatchRequestPayload:yr,prismaGraphQLToJSError:$t,PrismaClientUnknownRequestError:ue,PrismaClientInitializationError:G,PrismaClientKnownRequestError:Y,debug:ne("prisma:client:accelerateEngine"),engineVersion:ea.version,clientVersion:e.clientVersion}},Be("clientVersion",e.clientVersion),this._engine=ps(e,this._engineConfig),this._requestHandler=new Gr(this,o),F.log)for(let Q of F.log){let Ae=typeof Q=="string"?Q:Q.emit==="stdout"?Q.level:null;Ae&&this.$on(Ae,Ue=>{var Xe;ot.log(`${(Xe=ot.tags[Ae])!=null?Xe:""}`,Ue.message||Ue.query)})}this._metrics=new St(this._engine)}catch(F){throw F.clientVersion=this._clientVersion,F}return this._appliedParent=qt(this)}get[Symbol.toStringTag](){return"PrismaClient"}$use(n){this._middlewares.use(n)}$on(n,i){n==="beforeExit"?this._engine.onBeforeExit(i):n&&this._engineConfig.logEmitter.on(n,i)}$connect(){try{return this._engine.start()}catch(n){throw n.clientVersion=this._clientVersion,n}}async $disconnect(){try{await this._engine.stop()}catch(n){throw n.clientVersion=this._clientVersion,n}finally{Ui()}}$executeRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"executeRaw",args:o,transaction:n,clientMethod:i,argsMapper:qn({clientMethod:i,activeProvider:a}),callsite:Fe(this._errorFormat),dataPath:[],middlewareArgsMapper:s})}$executeRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0){let[s,a]=Xs(n,i);return $n(this._activeProvider,s.text,s.values,Array.isArray(n)?"prisma.$executeRaw``":"prisma.$executeRaw(sql``)"),this.$executeRawInternal(o,"$executeRaw",s,a)}throw new te("`$executeRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#executeraw\n",{clientVersion:this._clientVersion})})}$executeRawUnsafe(n,...i){return this._createPrismaPromise(o=>($n(this._activeProvider,n,i,"prisma.$executeRawUnsafe(, [...values])"),this.$executeRawInternal(o,"$executeRawUnsafe",[n,...i])))}$runCommandRaw(n){if(e.activeProvider!=="mongodb")throw new te(`The ${e.activeProvider} provider does not support $runCommandRaw. Use the mongodb provider.`,{clientVersion:this._clientVersion});return this._createPrismaPromise(i=>this._request({args:n,clientMethod:"$runCommandRaw",dataPath:[],action:"runCommandRaw",argsMapper:Cs,callsite:Fe(this._errorFormat),transaction:i}))}async $queryRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"queryRaw",args:o,transaction:n,clientMethod:i,argsMapper:qn({clientMethod:i,activeProvider:a}),callsite:Fe(this._errorFormat),dataPath:[],middlewareArgsMapper:s}).then(Qs)}$queryRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0)return this.$queryRawInternal(o,"$queryRaw",...Xs(n,i));throw new te("`$queryRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#queryraw\n",{clientVersion:this._clientVersion})})}$queryRawUnsafe(n,...i){return this._createPrismaPromise(o=>this.$queryRawInternal(o,"$queryRawUnsafe",[n,...i]))}_transactionWithArray({promises:n,options:i}){let o=Oc.nextId(),s=Ls(n.length),a=n.map((u,l)=>{var v,S,A;if((u==null?void 0:u[Symbol.toStringTag])!=="PrismaPromise")throw new Error("All elements of the array need to be Prisma Client promises. Hint: Please make sure you are not awaiting the Prisma client calls you intended to pass in the $transaction function.");let g=(v=i==null?void 0:i.isolationLevel)!=null?v:this._engineConfig.transactionOptions.isolationLevel,h={kind:"batch",id:o,index:l,isolationLevel:g,lock:s};return(A=(S=u.requestTransaction)==null?void 0:S.call(u,h))!=null?A:u});return Zs(a)}async _transactionWithCallback({callback:n,options:i}){var l,g,h;let o={traceparent:this._tracingHelper.getTraceParent()},s={maxWait:(l=i==null?void 0:i.maxWait)!=null?l:this._engineConfig.transactionOptions.maxWait,timeout:(g=i==null?void 0:i.timeout)!=null?g:this._engineConfig.transactionOptions.timeout,isolationLevel:(h=i==null?void 0:i.isolationLevel)!=null?h:this._engineConfig.transactionOptions.isolationLevel},a=await this._engine.transaction("start",o,s),u;try{let v={kind:"itx",...a};u=await n(this._createItxClient(v)),await this._engine.transaction("commit",o,a)}catch(v){throw await this._engine.transaction("rollback",o,a).catch(()=>{}),v}return u}_createItxClient(n){return qt(ge(Bo(this),[ie("_appliedParent",()=>this._appliedParent._createItxClient(n)),ie("_createPrismaPromise",()=>Un(n)),ie(Mc,()=>n.id),Lt(Fs)]))}$transaction(n,i){let o;typeof n=="function"?o=()=>this._transactionWithCallback({callback:n,options:i}):o=()=>this._transactionWithArray({promises:n,options:i});let s={name:"transaction",attributes:{method:"$transaction"}};return this._tracingHelper.runInChildSpan(s,o)}_request(n){var l;n.otelParentCtx=this._tracingHelper.getActiveContext();let i=(l=n.middlewareArgsMapper)!=null?l:Dc,o={args:i.requestArgsToMiddlewareArgs(n.args),dataPath:n.dataPath,runInTransaction:!!n.transaction,action:n.action,model:n.model},s={middleware:{name:"middleware",middleware:!0,attributes:{method:"$use"},active:!1},operation:{name:"operation",attributes:{method:o.action,model:o.model,name:o.model?`${o.model}.${o.action}`:o.action}}},a=-1,u=async g=>{let h=this._middlewares.get(++a);if(h)return this._tracingHelper.runInChildSpan(s.middleware,M=>h(g,B=>(M==null||M.end(),u(B))));let{runInTransaction:v,args:S,...A}=g,R={...n,...A};S&&(R.args=i.middlewareArgsToRequestArgs(S)),n.transaction!==void 0&&v===!1&&delete R.transaction;let D=await Go(this,R);return R.model?Vo({result:D,modelName:R.model,args:R.args,extensions:this._extensions,runtimeDataModel:this._runtimeDataModel}):D};return this._tracingHelper.runInChildSpan(s.operation,()=>u(o))}async _executeRequest({args:n,clientMethod:i,dataPath:o,callsite:s,action:a,model:u,argsMapper:l,transaction:g,unpacker:h,otelParentCtx:v,customDataProxyFetch:S}){try{n=l?l(n):n;let A={name:"serialize"},R=this._tracingHelper.runInChildSpan(A,()=>Ps({modelName:u,runtimeDataModel:this._runtimeDataModel,action:a,args:n,clientMethod:i,callsite:s,extensions:this._extensions,errorFormat:this._errorFormat,clientVersion:this._clientVersion}));return ne.enabled("prisma:client")&&(Be("Prisma Client call:"),Be(`prisma.${i}(${Ro(n)})`),Be("Generated request:"),Be(JSON.stringify(R,null,2)+` +`)),(g==null?void 0:g.kind)==="batch"&&await g.lock,this._requestHandler.request({protocolQuery:R,modelName:u,action:a,clientMethod:i,dataPath:o,callsite:s,args:n,extensions:this._extensions,transaction:g,unpacker:h,otelParentCtx:v,otelChildCtx:this._tracingHelper.getActiveContext(),customDataProxyFetch:S})}catch(A){throw A.clientVersion=this._clientVersion,A}}get $metrics(){if(!this._hasPreviewFlag("metrics"))throw new te("`metrics` preview feature must be enabled in order to access metrics API",{clientVersion:this._clientVersion});return this._metrics}_hasPreviewFlag(n){var i;return!!((i=this._engineConfig.previewFeatures)!=null&&i.includes(n))}}return t}function Xs(e,t){return _c(e)?[new le(e,t),Ds]:[e,Ms]}function _c(e){return Array.isArray(e)&&Array.isArray(e.raw)}d();c();p();f();m();var Lc=new Set(["toJSON","$$typeof","asymmetricMatch",Symbol.iterator,Symbol.toStringTag,Symbol.isConcatSpreadable,Symbol.toPrimitive]);function Fc(e){return new Proxy(e,{get(t,r){if(r in t)return t[r];if(!Lc.has(r))throw new TypeError(`Invalid enum value: ${String(r)}`)}})}d();c();p();f();m();var export_warnEnvConflicts=void 0;export{qi as Debug,ve as Decimal,gi as Extensions,St as MetricsClient,ke as NotFoundError,G as PrismaClientInitializationError,Y as PrismaClientKnownRequestError,De as PrismaClientRustPanicError,ue as PrismaClientUnknownRequestError,te as PrismaClientValidationError,yi as Public,le as Sql,Xa as defineDmmfProperty,Cn as detectRuntime,ou as empty,Nc as getPrismaClient,iu as join,Fc as makeStrictEnum,ln as objectEnumValues,no as raw,io as sqltag,export_warnEnvConflicts as warnEnvConflicts,mr as warnOnce}; +//# sourceMappingURL=edge-esm.js.map diff --git a/backend/prisma/generated/client-db1/runtime/edge.js b/backend/prisma/generated/client-db1/runtime/edge.js new file mode 100644 index 0000000..44dc2ae --- /dev/null +++ b/backend/prisma/generated/client-db1/runtime/edge.js @@ -0,0 +1,28 @@ +"use strict";var sa=Object.create;var ir=Object.defineProperty;var aa=Object.getOwnPropertyDescriptor;var ua=Object.getOwnPropertyNames;var la=Object.getPrototypeOf,ca=Object.prototype.hasOwnProperty;var be=(e,t)=>()=>(e&&(t=e(e=0)),t);var Ie=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),vt=(e,t)=>{for(var r in t)ir(e,r,{get:t[r],enumerable:!0})},zn=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ua(t))!ca.call(e,i)&&i!==r&&ir(e,i,{get:()=>t[i],enumerable:!(n=aa(t,i))||n.enumerable});return e};var Ve=(e,t,r)=>(r=e!=null?sa(la(e)):{},zn(t||!e||!e.__esModule?ir(r,"default",{value:e,enumerable:!0}):r,e)),Wr=e=>zn(ir({},"__esModule",{value:!0}),e);var y,c=be(()=>{"use strict";y={nextTick:(e,...t)=>{setTimeout(()=>{e(...t)},0)},env:{},version:"",cwd:()=>"/",stderr:{},argv:["/bin/node"]}});var Yn,b,p=be(()=>{"use strict";b=(Yn=globalThis.performance)!=null?Yn:(()=>{let e=Date.now();return{now:()=>Date.now()-e}})()});var E,f=be(()=>{"use strict";E=()=>{};E.prototype=E});var m=be(()=>{"use strict"});var hi=Ie(nt=>{"use strict";d();c();p();f();m();var ri=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),pa=ri(e=>{"use strict";e.byteLength=u,e.toByteArray=g,e.fromByteArray=S;var t=[],r=[],n=typeof Uint8Array<"u"?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(o=0,s=i.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var D=A.indexOf("=");D===-1&&(D=R);var M=D===R?0:4-D%4;return[D,M]}function u(A){var R=a(A),D=R[0],M=R[1];return(D+M)*3/4-M}function l(A,R,D){return(R+D)*3/4-D}function g(A){var R,D=a(A),M=D[0],B=D[1],I=new n(l(A,M,B)),L=0,ee=B>0?M-4:M,F;for(F=0;F>16&255,I[L++]=R>>8&255,I[L++]=R&255;return B===2&&(R=r[A.charCodeAt(F)]<<2|r[A.charCodeAt(F+1)]>>4,I[L++]=R&255),B===1&&(R=r[A.charCodeAt(F)]<<10|r[A.charCodeAt(F+1)]<<4|r[A.charCodeAt(F+2)]>>2,I[L++]=R>>8&255,I[L++]=R&255),I}function h(A){return t[A>>18&63]+t[A>>12&63]+t[A>>6&63]+t[A&63]}function v(A,R,D){for(var M,B=[],I=R;Iee?ee:L+I));return M===1?(R=A[D-1],B.push(t[R>>2]+t[R<<4&63]+"==")):M===2&&(R=(A[D-2]<<8)+A[D-1],B.push(t[R>>10]+t[R>>4&63]+t[R<<2&63]+"=")),B.join("")}}),fa=ri(e=>{e.read=function(t,r,n,i,o){var s,a,u=o*8-i-1,l=(1<>1,h=-7,v=n?o-1:0,S=n?-1:1,A=t[r+v];for(v+=S,s=A&(1<<-h)-1,A>>=-h,h+=u;h>0;s=s*256+t[r+v],v+=S,h-=8);for(a=s&(1<<-h)-1,s>>=-h,h+=i;h>0;a=a*256+t[r+v],v+=S,h-=8);if(s===0)s=1-g;else{if(s===l)return a?NaN:(A?-1:1)*(1/0);a=a+Math.pow(2,i),s=s-g}return(A?-1:1)*a*Math.pow(2,s-i)},e.write=function(t,r,n,i,o,s){var a,u,l,g=s*8-o-1,h=(1<>1,S=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,A=i?0:s-1,R=i?1:-1,D=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(u=isNaN(r)?1:0,a=h):(a=Math.floor(Math.log(r)/Math.LN2),r*(l=Math.pow(2,-a))<1&&(a--,l*=2),a+v>=1?r+=S/l:r+=S*Math.pow(2,1-v),r*l>=2&&(a++,l/=2),a+v>=h?(u=0,a=h):a+v>=1?(u=(r*l-1)*Math.pow(2,o),a=a+v):(u=r*Math.pow(2,v-1)*Math.pow(2,o),a=0));o>=8;t[n+A]=u&255,A+=R,u/=256,o-=8);for(a=a<0;t[n+A]=a&255,A+=R,a/=256,g-=8);t[n+A-R]|=D*128}}),Kr=pa(),tt=fa(),Zn=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;nt.Buffer=T;nt.SlowBuffer=wa;nt.INSPECT_MAX_BYTES=50;var or=2147483647;nt.kMaxLength=or;T.TYPED_ARRAY_SUPPORT=ma();!T.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function ma(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch(e){return!1}}Object.defineProperty(T.prototype,"parent",{enumerable:!0,get:function(){if(T.isBuffer(this))return this.buffer}});Object.defineProperty(T.prototype,"offset",{enumerable:!0,get:function(){if(T.isBuffer(this))return this.byteOffset}});function xe(e){if(e>or)throw new RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,T.prototype),t}function T(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return Zr(e)}return ni(e,t,r)}T.poolSize=8192;function ni(e,t,r){if(typeof e=="string")return ga(e,t);if(ArrayBuffer.isView(e))return ha(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(me(e,ArrayBuffer)||e&&me(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(me(e,SharedArrayBuffer)||e&&me(e.buffer,SharedArrayBuffer)))return oi(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return T.from(n,t,r);let i=ya(e);if(i)return i;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return T.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}T.from=function(e,t,r){return ni(e,t,r)};Object.setPrototypeOf(T.prototype,Uint8Array.prototype);Object.setPrototypeOf(T,Uint8Array);function ii(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function da(e,t,r){return ii(e),e<=0?xe(e):t!==void 0?typeof r=="string"?xe(e).fill(t,r):xe(e).fill(t):xe(e)}T.alloc=function(e,t,r){return da(e,t,r)};function Zr(e){return ii(e),xe(e<0?0:Xr(e)|0)}T.allocUnsafe=function(e){return Zr(e)};T.allocUnsafeSlow=function(e){return Zr(e)};function ga(e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!T.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let r=si(e,t)|0,n=xe(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}function zr(e){let t=e.length<0?0:Xr(e.length)|0,r=xe(t);for(let n=0;n=or)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+or.toString(16)+" bytes");return e|0}function wa(e){return+e!=e&&(e=0),T.alloc(+e)}T.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==T.prototype};T.compare=function(e,t){if(me(e,Uint8Array)&&(e=T.from(e,e.offset,e.byteLength)),me(t,Uint8Array)&&(t=T.from(t,t.offset,t.byteLength)),!T.isBuffer(e)||!T.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let r=e.length,n=t.length;for(let i=0,o=Math.min(r,n);in.length?(T.isBuffer(o)||(o=T.from(o)),o.copy(n,i)):Uint8Array.prototype.set.call(n,o,i);else if(T.isBuffer(o))o.copy(n,i);else throw new TypeError('"list" argument must be an Array of Buffers');i+=o.length}return n};function si(e,t){if(T.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||me(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Yr(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return gi(e).length;default:if(i)return n?-1:Yr(e).length;t=(""+t).toLowerCase(),i=!0}}T.byteLength=si;function Ea(e,t,r){let n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return Ia(this,t,r);case"utf8":case"utf-8":return ui(this,t,r);case"ascii":return Ra(this,t,r);case"latin1":case"binary":return Sa(this,t,r);case"base64":return Ca(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ka(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}T.prototype._isBuffer=!0;function je(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}T.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tt&&(e+=" ... "),""};Zn&&(T.prototype[Zn]=T.prototype.inspect);T.prototype.compare=function(e,t,r,n,i){if(me(e,Uint8Array)&&(e=T.from(e,e.offset,e.byteLength)),!T.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),r===void 0&&(r=e?e.length:0),n===void 0&&(n=0),i===void 0&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;let o=i-n,s=r-t,a=Math.min(o,s),u=this.slice(n,i),l=e.slice(t,r);for(let g=0;g2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,tn(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=T.from(t,n)),T.isBuffer(t))return t.length===0?-1:Xn(e,t,r,n,i);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):Xn(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function Xn(e,t,r,n,i){let o=1,s=e.length,a=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;o=2,s/=2,a/=2,r/=2}function u(g,h){return o===1?g[h]:g.readUInt16BE(h*o)}let l;if(i){let g=-1;for(l=r;ls&&(r=s-a),l=r;l>=0;l--){let g=!0;for(let h=0;hi&&(n=i)):n=i;let o=t.length;n>o/2&&(n=o/2);let s;for(s=0;s>>0,isFinite(r)?(r=r>>>0,n===void 0&&(n="utf8")):(n=r,r=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let i=this.length-t;if((r===void 0||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return ba(this,e,t,r);case"utf8":case"utf-8":return xa(this,e,t,r);case"ascii":case"latin1":case"binary":return Pa(this,e,t,r);case"base64":return va(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ta(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}};T.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Ca(e,t,r){return t===0&&r===e.length?Kr.fromByteArray(e):Kr.fromByteArray(e.slice(t,r))}function ui(e,t,r){r=Math.min(e.length,r);let n=[],i=t;for(;i239?4:o>223?3:o>191?2:1;if(i+a<=r){let u,l,g,h;switch(a){case 1:o<128&&(s=o);break;case 2:u=e[i+1],(u&192)===128&&(h=(o&31)<<6|u&63,h>127&&(s=h));break;case 3:u=e[i+1],l=e[i+2],(u&192)===128&&(l&192)===128&&(h=(o&15)<<12|(u&63)<<6|l&63,h>2047&&(h<55296||h>57343)&&(s=h));break;case 4:u=e[i+1],l=e[i+2],g=e[i+3],(u&192)===128&&(l&192)===128&&(g&192)===128&&(h=(o&15)<<18|(u&63)<<12|(l&63)<<6|g&63,h>65535&&h<1114112&&(s=h))}}s===null?(s=65533,a=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),i+=a}return Aa(n)}var ei=4096;function Aa(e){let t=e.length;if(t<=ei)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn)&&(r=n);let i="";for(let o=t;or&&(e=r),t<0?(t+=r,t<0&&(t=0)):t>r&&(t=r),tr)throw new RangeError("Trying to access beyond buffer length")}T.prototype.readUintLE=T.prototype.readUIntLE=function(e,t,r){e=e>>>0,t=t>>>0,r||W(e,t,this.length);let n=this[e],i=1,o=0;for(;++o>>0,t=t>>>0,r||W(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n};T.prototype.readUint8=T.prototype.readUInt8=function(e,t){return e=e>>>0,t||W(e,1,this.length),this[e]};T.prototype.readUint16LE=T.prototype.readUInt16LE=function(e,t){return e=e>>>0,t||W(e,2,this.length),this[e]|this[e+1]<<8};T.prototype.readUint16BE=T.prototype.readUInt16BE=function(e,t){return e=e>>>0,t||W(e,2,this.length),this[e]<<8|this[e+1]};T.prototype.readUint32LE=T.prototype.readUInt32LE=function(e,t){return e=e>>>0,t||W(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};T.prototype.readUint32BE=T.prototype.readUInt32BE=function(e,t){return e=e>>>0,t||W(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};T.prototype.readBigUInt64LE=ke(function(e){e=e>>>0,rt(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&Tt(e,this.length-8);let n=t+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,i=this[++e]+this[++e]*2**8+this[++e]*2**16+r*2**24;return BigInt(n)+(BigInt(i)<>>0,rt(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&Tt(e,this.length-8);let n=t*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],i=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+r;return(BigInt(n)<>>0,t=t>>>0,r||W(e,t,this.length);let n=this[e],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*t)),n};T.prototype.readIntBE=function(e,t,r){e=e>>>0,t=t>>>0,r||W(e,t,this.length);let n=t,i=1,o=this[e+--n];for(;n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o};T.prototype.readInt8=function(e,t){return e=e>>>0,t||W(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};T.prototype.readInt16LE=function(e,t){e=e>>>0,t||W(e,2,this.length);let r=this[e]|this[e+1]<<8;return r&32768?r|4294901760:r};T.prototype.readInt16BE=function(e,t){e=e>>>0,t||W(e,2,this.length);let r=this[e+1]|this[e]<<8;return r&32768?r|4294901760:r};T.prototype.readInt32LE=function(e,t){return e=e>>>0,t||W(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};T.prototype.readInt32BE=function(e,t){return e=e>>>0,t||W(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};T.prototype.readBigInt64LE=ke(function(e){e=e>>>0,rt(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&Tt(e,this.length-8);let n=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(r<<24);return(BigInt(n)<>>0,rt(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&Tt(e,this.length-8);let n=(t<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(n)<>>0,t||W(e,4,this.length),tt.read(this,e,!0,23,4)};T.prototype.readFloatBE=function(e,t){return e=e>>>0,t||W(e,4,this.length),tt.read(this,e,!1,23,4)};T.prototype.readDoubleLE=function(e,t){return e=e>>>0,t||W(e,8,this.length),tt.read(this,e,!0,52,8)};T.prototype.readDoubleBE=function(e,t){return e=e>>>0,t||W(e,8,this.length),tt.read(this,e,!1,52,8)};function oe(e,t,r,n,i,o){if(!T.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}T.prototype.writeUintLE=T.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t=t>>>0,r=r>>>0,!n){let s=Math.pow(2,8*r)-1;oe(this,e,t,r,s,0)}let i=1,o=0;for(this[t]=e&255;++o>>0,r=r>>>0,!n){let s=Math.pow(2,8*r)-1;oe(this,e,t,r,s,0)}let i=r-1,o=1;for(this[t+i]=e&255;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r};T.prototype.writeUint8=T.prototype.writeUInt8=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,1,255,0),this[t]=e&255,t+1};T.prototype.writeUint16LE=T.prototype.writeUInt16LE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,2,65535,0),this[t]=e&255,this[t+1]=e>>>8,t+2};T.prototype.writeUint16BE=T.prototype.writeUInt16BE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=e&255,t+2};T.prototype.writeUint32LE=T.prototype.writeUInt32LE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=e&255,t+4};T.prototype.writeUint32BE=T.prototype.writeUInt32BE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};function li(e,t,r,n,i){di(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=s,s=s>>8,e[r++]=s,s=s>>8,e[r++]=s,s=s>>8,e[r++]=s,r}function ci(e,t,r,n,i){di(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o=o>>8,e[r+6]=o,o=o>>8,e[r+5]=o,o=o>>8,e[r+4]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=s,s=s>>8,e[r+2]=s,s=s>>8,e[r+1]=s,s=s>>8,e[r]=s,r+8}T.prototype.writeBigUInt64LE=ke(function(e,t=0){return li(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))});T.prototype.writeBigUInt64BE=ke(function(e,t=0){return ci(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))});T.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t=t>>>0,!n){let a=Math.pow(2,8*r-1);oe(this,e,t,r,a-1,-a)}let i=0,o=1,s=0;for(this[t]=e&255;++i>0)-s&255;return t+r};T.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t=t>>>0,!n){let a=Math.pow(2,8*r-1);oe(this,e,t,r,a-1,-a)}let i=r-1,o=1,s=0;for(this[t+i]=e&255;--i>=0&&(o*=256);)e<0&&s===0&&this[t+i+1]!==0&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+r};T.prototype.writeInt8=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=e&255,t+1};T.prototype.writeInt16LE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,2,32767,-32768),this[t]=e&255,this[t+1]=e>>>8,t+2};T.prototype.writeInt16BE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=e&255,t+2};T.prototype.writeInt32LE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,4,2147483647,-2147483648),this[t]=e&255,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4};T.prototype.writeInt32BE=function(e,t,r){return e=+e,t=t>>>0,r||oe(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};T.prototype.writeBigInt64LE=ke(function(e,t=0){return li(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});T.prototype.writeBigInt64BE=ke(function(e,t=0){return ci(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function pi(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function fi(e,t,r,n,i){return t=+t,r=r>>>0,i||pi(e,t,r,4,34028234663852886e22,-34028234663852886e22),tt.write(e,t,r,n,23,4),r+4}T.prototype.writeFloatLE=function(e,t,r){return fi(this,e,t,!0,r)};T.prototype.writeFloatBE=function(e,t,r){return fi(this,e,t,!1,r)};function mi(e,t,r,n,i){return t=+t,r=r>>>0,i||pi(e,t,r,8,17976931348623157e292,-17976931348623157e292),tt.write(e,t,r,n,52,8),r+8}T.prototype.writeDoubleLE=function(e,t,r){return mi(this,e,t,!0,r)};T.prototype.writeDoubleBE=function(e,t,r){return mi(this,e,t,!1,r)};T.prototype.copy=function(e,t,r,n){if(!T.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),!n&&n!==0&&(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>0,r=r===void 0?this.length:r>>>0,e||(e=0);let i;if(typeof e=="number")for(i=t;i2**32?i=ti(String(r)):typeof r=="bigint"&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=ti(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n},RangeError);function ti(e){let t="",r=e.length,n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function Da(e,t,r){rt(t,"offset"),(e[t]===void 0||e[t+r]===void 0)&&Tt(t,e.length-(r+1))}function di(e,t,r,n,i,o){if(e>r||e3?t===0||t===BigInt(0)?a=`>= 0${s} and < 2${s} ** ${(o+1)*8}${s}`:a=`>= -(2${s} ** ${(o+1)*8-1}${s}) and < 2 ** ${(o+1)*8-1}${s}`:a=`>= ${t}${s} and <= ${r}${s}`,new et.ERR_OUT_OF_RANGE("value",a,e)}Da(n,i,o)}function rt(e,t){if(typeof e!="number")throw new et.ERR_INVALID_ARG_TYPE(t,"number",e)}function Tt(e,t,r){throw Math.floor(e)!==e?(rt(e,r),new et.ERR_OUT_OF_RANGE(r||"offset","an integer",e)):t<0?new et.ERR_BUFFER_OUT_OF_BOUNDS:new et.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}var Ma=/[^+/0-9A-Za-z-_]/g;function Oa(e){if(e=e.split("=")[0],e=e.trim().replace(Ma,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function Yr(e,t){t=t||1/0;let r,n=e.length,i=null,o=[];for(let s=0;s55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}else if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return o}function Na(e){let t=[];for(let r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function gi(e){return Kr.toByteArray(Oa(e))}function sr(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function me(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function tn(e){return e!==e}var La=function(){let e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){let n=r*16;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function ke(e){return typeof BigInt>"u"?Fa:e}function Fa(){throw new Error("BigInt not supported")}});var w,d=be(()=>{"use strict";w=Ve(hi())});function Ba(){return!1}var $a,qa,bi,xi=be(()=>{"use strict";d();c();p();f();m();$a={},qa={existsSync:Ba,promises:$a},bi=qa});var Oi=Ie((of,Mi)=>{"use strict";d();c();p();f();m();Mi.exports=(lr(),Wr(sn)).format});var sn={};vt(sn,{default:()=>ja,deprecate:()=>_i,format:()=>Li,inspect:()=>cr,promisify:()=>Ni});function Ni(e){return(...t)=>new Promise((r,n)=>{e(...t,(i,o)=>{i?n(i):r(o)})})}function _i(e,t){return(...r)=>(console.warn(t),e(...r))}function cr(e){return JSON.stringify(e,(t,r)=>typeof r=="function"?r.toString():typeof r=="bigint"?`${r}n`:r instanceof Error?{...r,message:r.message,stack:r.stack}:r)}var Li,Va,ja,lr=be(()=>{"use strict";d();c();p();f();m();Li=Oi(),Va={promisify:Ni,deprecate:_i,inspect:cr,format:Li},ja=Va});function Wa(...e){return e.join("/")}function Ka(...e){return e.join("/")}var ji,za,Ya,At,Ji=be(()=>{"use strict";d();c();p();f();m();ji="/",za={sep:ji},Ya={resolve:Wa,posix:za,join:Ka,sep:ji},At=Ya});var fr,Gi=be(()=>{"use strict";d();c();p();f();m();fr=class{constructor(){this.events={}}on(t,r){return this.events[t]||(this.events[t]=[]),this.events[t].push(r),this}emit(t,...r){return this.events[t]?(this.events[t].forEach(n=>{n(...r)}),!0):!1}}});var Wi=Ie((cm,Hi)=>{"use strict";d();c();p();f();m();Hi.exports=(e,t=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof e!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if(typeof t!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(t===0)return e;let n=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(n,r.indent.repeat(t))}});var Yi=Ie((Pm,zi)=>{"use strict";d();c();p();f();m();zi.exports=({onlyFirst:e=!1}={})=>{let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}});var Xi=Ie((Sm,Zi)=>{"use strict";d();c();p();f();m();var nu=Yi();Zi.exports=e=>typeof e=="string"?e.replace(nu(),""):e});var no=Ie((Th,au)=>{au.exports={name:"@prisma/engines-version",version:"5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9",main:"index.js",types:"index.d.ts",license:"Apache-2.0",author:"Tim Suchanek ",prisma:{enginesVersion:"5a9203d0590c951969e85a7d07215503f4672eb9"},repository:{type:"git",url:"https://github.com/prisma/engines-wrapper.git",directory:"packages/engines-version"},devDependencies:{"@types/node":"18.19.15",typescript:"4.9.5"},files:["index.js","index.d.ts"],scripts:{build:"tsc -d"}}});var io=Ie(()=>{"use strict";d();c();p();f();m()});var Un=Ie((H2,ds)=>{"use strict";d();c();p();f();m();ds.exports=function(){function e(t,r,n,i,o){return tn?n+1:t+1:i===o?r:r+1}return function(t,r){if(t===r)return 0;if(t.length>r.length){var n=t;t=r,r=n}for(var i=t.length,o=r.length;i>0&&t.charCodeAt(i-1)===r.charCodeAt(o-1);)i--,o--;for(var s=0;san,Decimal:()=>ye,Extensions:()=>rn,MetricsClient:()=>at,NotFoundError:()=>Pe,PrismaClientInitializationError:()=>G,PrismaClientKnownRequestError:()=>K,PrismaClientRustPanicError:()=>ve,PrismaClientUnknownRequestError:()=>se,PrismaClientValidationError:()=>Z,Public:()=>nn,Sql:()=>ae,defineDmmfProperty:()=>ro,detectRuntime:()=>_r,empty:()=>so,getPrismaClient:()=>na,join:()=>oo,makeStrictEnum:()=>ia,objectEnumValues:()=>dr,raw:()=>yn,sqltag:()=>wn,warnEnvConflicts:()=>void 0,warnOnce:()=>It});module.exports=Wr(Bc);d();c();p();f();m();var rn={};vt(rn,{defineExtension:()=>yi,getExtensionContext:()=>wi});d();c();p();f();m();d();c();p();f();m();function yi(e){return typeof e=="function"?e:t=>t.$extends(e)}d();c();p();f();m();function wi(e){return e}var nn={};vt(nn,{validator:()=>Ei});d();c();p();f();m();d();c();p();f();m();function Ei(...e){return t=>t}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var on,Pi,vi,Ti,Ci=!0;typeof y!="undefined"&&({FORCE_COLOR:on,NODE_DISABLE_COLORS:Pi,NO_COLOR:vi,TERM:Ti}=y.env||{},Ci=y.stdout&&y.stdout.isTTY);var Ua={enabled:!Pi&&vi==null&&Ti!=="dumb"&&(on!=null&&on!=="0"||Ci)};function V(e,t){let r=new RegExp(`\\x1b\\[${t}m`,"g"),n=`\x1B[${e}m`,i=`\x1B[${t}m`;return function(o){return!Ua.enabled||o==null?o:n+(~(""+o).indexOf(i)?o.replace(r,i+n):o)+i}}var _p=V(0,0),ar=V(1,22),ur=V(2,22),Lp=V(3,23),Ai=V(4,24),Fp=V(7,27),Bp=V(8,28),$p=V(9,29),qp=V(30,39),it=V(31,39),Ri=V(32,39),Si=V(33,39),Ii=V(34,39),Up=V(35,39),ki=V(36,39),Vp=V(37,39),Di=V(90,39),jp=V(90,39),Jp=V(40,49),Qp=V(41,49),Gp=V(42,49),Hp=V(43,49),Wp=V(44,49),Kp=V(45,49),zp=V(46,49),Yp=V(47,49);d();c();p();f();m();var Ja=100,Fi=["green","yellow","blue","magenta","cyan","red"],pr=[],Bi=Date.now(),Qa=0,$i,qi;(qi=globalThis.DEBUG)!=null||(globalThis.DEBUG=($i=y.env.DEBUG)!=null?$i:"");var Ui;(Ui=globalThis.DEBUG_COLORS)!=null||(globalThis.DEBUG_COLORS=y.env.DEBUG_COLORS?y.env.DEBUG_COLORS==="true":!0);var Ct={enable(e){typeof e=="string"&&(globalThis.DEBUG=e)},disable(){let e=globalThis.DEBUG;return globalThis.DEBUG="",e},enabled(e){let t=globalThis.DEBUG.split(",").map(i=>i.replace(/[.+?^${}()|[\]\\]/g,"\\$&")),r=t.some(i=>i===""||i[0]==="-"?!1:e.match(RegExp(i.split("*").join(".*")+"$"))),n=t.some(i=>i===""||i[0]!=="-"?!1:e.match(RegExp(i.slice(1).split("*").join(".*")+"$")));return r&&!n},log:(...e)=>{var o;let[t,r,...n]=e,i;typeof require=="function"&&typeof y!="undefined"&&typeof y.stderr!="undefined"&&typeof y.stderr.write=="function"?i=(...s)=>{let a=(lr(),Wr(sn));y.stderr.write(a.format(...s)+` +`)}:i=(o=console.warn)!=null?o:console.log,i(`${t} ${r}`,...n)},formatters:{}};function Ga(e){let t={color:Fi[Qa++%Fi.length],enabled:Ct.enabled(e),namespace:e,log:Ct.log,extend:()=>{}},r=(...n)=>{let{enabled:i,namespace:o,color:s,log:a}=t;if(n.length!==0&&pr.push([o,...n]),pr.length>Ja&&pr.shift(),Ct.enabled(o)||i){let u=n.map(g=>typeof g=="string"?g:Ha(g)),l=`+${Date.now()-Bi}ms`;Bi=Date.now(),a(o,...u,l)}};return new Proxy(r,{get:(n,i)=>t[i],set:(n,i,o)=>t[i]=o})}var an=new Proxy(Ga,{get:(e,t)=>Ct[t],set:(e,t,r)=>Ct[t]=r});function Ha(e,t=2){let r=new Set;return JSON.stringify(e,(n,i)=>{if(typeof i=="object"&&i!==null){if(r.has(i))return"[Circular *]";r.add(i)}else if(typeof i=="bigint")return i.toString();return i},t)}function Vi(){pr.length=0}var ne=an;d();c();p();f();m();d();c();p();f();m();var Qi="library";function Rt(e){let t=Za();return t||((e==null?void 0:e.config.engineType)==="library"?"library":(e==null?void 0:e.config.engineType)==="binary"?"binary":Qi)}function Za(){let e=y.env.PRISMA_CLIENT_ENGINE_TYPE;return e==="library"?"library":e==="binary"?"binary":void 0}d();c();p();f();m();d();c();p();f();m();var De;(t=>{let e;(I=>(I.findUnique="findUnique",I.findUniqueOrThrow="findUniqueOrThrow",I.findFirst="findFirst",I.findFirstOrThrow="findFirstOrThrow",I.findMany="findMany",I.create="create",I.createMany="createMany",I.update="update",I.updateMany="updateMany",I.upsert="upsert",I.delete="delete",I.deleteMany="deleteMany",I.groupBy="groupBy",I.count="count",I.aggregate="aggregate",I.findRaw="findRaw",I.aggregateRaw="aggregateRaw"))(e=t.ModelAction||(t.ModelAction={}))})(De||(De={}));var ot={};vt(ot,{error:()=>tu,info:()=>eu,log:()=>Xa,query:()=>ru,should:()=>Ki,tags:()=>St,warn:()=>un});d();c();p();f();m();var St={error:it("prisma:error"),warn:Si("prisma:warn"),info:ki("prisma:info"),query:Ii("prisma:query")},Ki={warn:()=>!y.env.PRISMA_DISABLE_WARNINGS};function Xa(...e){console.log(...e)}function un(e,...t){Ki.warn()&&console.warn(`${St.warn} ${e}`,...t)}function eu(e,...t){console.info(`${St.info} ${e}`,...t)}function tu(e,...t){console.error(`${St.error} ${e}`,...t)}function ru(e,...t){console.log(`${St.query} ${e}`,...t)}d();c();p();f();m();function Je(e,t){throw new Error(t)}d();c();p();f();m();function ln(e,t){return Object.prototype.hasOwnProperty.call(e,t)}d();c();p();f();m();var cn=(e,t)=>e.reduce((r,n)=>(r[t(n)]=n,r),{});d();c();p();f();m();function st(e,t){let r={};for(let n of Object.keys(e))r[n]=t(e[n],n);return r}d();c();p();f();m();function pn(e,t){if(e.length===0)return;let r=e[0];for(let n=1;n{eo.has(e)||(eo.add(e),un(t,...r))};d();c();p();f();m();var K=class extends Error{constructor(t,{code:r,clientVersion:n,meta:i,batchRequestIdx:o}){super(t),this.name="PrismaClientKnownRequestError",this.code=r,this.clientVersion=n,this.meta=i,Object.defineProperty(this,"batchRequestIdx",{value:o,enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return"PrismaClientKnownRequestError"}};N(K,"PrismaClientKnownRequestError");var Pe=class extends K{constructor(t,r){super(t,{code:"P2025",clientVersion:r}),this.name="NotFoundError"}};N(Pe,"NotFoundError");d();c();p();f();m();var G=class e extends Error{constructor(t,r,n){super(t),this.name="PrismaClientInitializationError",this.clientVersion=r,this.errorCode=n,Error.captureStackTrace(e)}get[Symbol.toStringTag](){return"PrismaClientInitializationError"}};N(G,"PrismaClientInitializationError");d();c();p();f();m();var ve=class extends Error{constructor(t,r){super(t),this.name="PrismaClientRustPanicError",this.clientVersion=r}get[Symbol.toStringTag](){return"PrismaClientRustPanicError"}};N(ve,"PrismaClientRustPanicError");d();c();p();f();m();var se=class extends Error{constructor(t,{clientVersion:r,batchRequestIdx:n}){super(t),this.name="PrismaClientUnknownRequestError",this.clientVersion=r,Object.defineProperty(this,"batchRequestIdx",{value:n,writable:!0,enumerable:!1})}get[Symbol.toStringTag](){return"PrismaClientUnknownRequestError"}};N(se,"PrismaClientUnknownRequestError");d();c();p();f();m();var Z=class extends Error{constructor(r,{clientVersion:n}){super(r);this.name="PrismaClientValidationError";this.clientVersion=n}get[Symbol.toStringTag](){return"PrismaClientValidationError"}};N(Z,"PrismaClientValidationError");d();c();p();f();m();var at=class{constructor(t){this._engine=t}prometheus(t){return this._engine.metrics({format:"prometheus",...t})}json(t){return this._engine.metrics({format:"json",...t})}};d();c();p();f();m();d();c();p();f();m();function kt(e){let t;return{get(){return t||(t={value:e()}),t.value}}}function ro(e,t){let r=kt(()=>iu(t));Object.defineProperty(e,"dmmf",{get:()=>r.get()})}function iu(e){return{datamodel:{models:fn(e.models),enums:fn(e.enums),types:fn(e.types)}}}function fn(e){return Object.entries(e).map(([t,r])=>({name:t,...r}))}d();c();p();f();m();var mr=Symbol(),mn=new WeakMap,Te=class{constructor(t){t===mr?mn.set(this,`Prisma.${this._getName()}`):mn.set(this,`new Prisma.${this._getNamespace()}.${this._getName()}()`)}_getName(){return this.constructor.name}toString(){return mn.get(this)}},Dt=class extends Te{_getNamespace(){return"NullTypes"}},Mt=class extends Dt{};dn(Mt,"DbNull");var Ot=class extends Dt{};dn(Ot,"JsonNull");var Nt=class extends Dt{};dn(Nt,"AnyNull");var dr={classes:{DbNull:Mt,JsonNull:Ot,AnyNull:Nt},instances:{DbNull:new Mt(mr),JsonNull:new Ot(mr),AnyNull:new Nt(mr)}};function dn(e,t){Object.defineProperty(e,"name",{value:t,configurable:!0})}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();function _t(e){return{ok:!1,error:e,map(){return _t(e)},flatMap(){return _t(e)}}}var gn=class{constructor(){this.registeredErrors=[]}consumeError(t){return this.registeredErrors[t]}registerNewError(t){let r=0;for(;this.registeredErrors[r]!==void 0;)r++;return this.registeredErrors[r]={error:t},r}},hn=e=>{let t=new gn,r=Qe(t,e.startTransaction.bind(e)),n={errorRegistry:t,queryRaw:Qe(t,e.queryRaw.bind(e)),executeRaw:Qe(t,e.executeRaw.bind(e)),provider:e.provider,startTransaction:async(...i)=>(await r(...i)).map(s=>ou(t,s))};return e.getConnectionInfo&&(n.getConnectionInfo=su(t,e.getConnectionInfo.bind(e))),n},ou=(e,t)=>({provider:t.provider,options:t.options,queryRaw:Qe(e,t.queryRaw.bind(t)),executeRaw:Qe(e,t.executeRaw.bind(t)),commit:Qe(e,t.commit.bind(t)),rollback:Qe(e,t.rollback.bind(t))});function Qe(e,t){return async(...r)=>{try{return await t(...r)}catch(n){let i=e.registerNewError(n);return _t({kind:"GenericJs",id:i})}}}function su(e,t){return(...r)=>{try{return t(...r)}catch(n){let i=e.registerNewError(n);return _t({kind:"GenericJs",id:i})}}}var ra=Ve(no());var rD=Ve(io());Gi();xi();Ji();d();c();p();f();m();var ae=class e{constructor(t,r){if(t.length-1!==r.length)throw t.length===0?new TypeError("Expected at least 1 string"):new TypeError(`Expected ${t.length} strings to have ${t.length-1} values`);let n=r.reduce((s,a)=>s+(a instanceof e?a.values.length:1),0);this.values=new Array(n),this.strings=new Array(n+1),this.strings[0]=t[0];let i=0,o=0;for(;ie.getPropertyValue(r))},getPropertyDescriptor(r){var n;return(n=e.getPropertyDescriptor)==null?void 0:n.call(e,r)}}}d();c();p();f();m();lr();d();c();p();f();m();var gr={enumerable:!0,configurable:!0,writable:!0};function hr(e){let t=new Set(e);return{getOwnPropertyDescriptor:()=>gr,has:(r,n)=>t.has(n),set:(r,n,i)=>t.add(n)&&Reflect.set(r,n,i),ownKeys:()=>[...t]}}var ao=Symbol.for("nodejs.util.inspect.custom");function ge(e,t){let r=uu(t),n=new Set,i=new Proxy(e,{get(o,s){if(n.has(s))return o[s];let a=r.get(s);return a?a.getPropertyValue(s):o[s]},has(o,s){var u,l;if(n.has(s))return!0;let a=r.get(s);return a?(l=(u=a.has)==null?void 0:u.call(a,s))!=null?l:!0:Reflect.has(o,s)},ownKeys(o){let s=uo(Reflect.ownKeys(o),r),a=uo(Array.from(r.keys()),r);return[...new Set([...s,...a,...n])]},set(o,s,a){var l,g;let u=r.get(s);return((g=(l=u==null?void 0:u.getPropertyDescriptor)==null?void 0:l.call(u,s))==null?void 0:g.writable)===!1?!1:(n.add(s),Reflect.set(o,s,a))},getOwnPropertyDescriptor(o,s){let a=Reflect.getOwnPropertyDescriptor(o,s);if(a&&!a.configurable)return a;let u=r.get(s);return u?u.getPropertyDescriptor?{...gr,...u==null?void 0:u.getPropertyDescriptor(s)}:gr:a},defineProperty(o,s,a){return n.add(s),Reflect.defineProperty(o,s,a)}});return i[ao]=function(o,s,a=cr){let u={...this};return delete u[ao],a(u,s)},i}function uu(e){let t=new Map;for(let r of e){let n=r.getKeys();for(let i of n)t.set(i,r)}return t}function uo(e,t){return e.filter(r=>{var i,o;let n=t.get(r);return(o=(i=n==null?void 0:n.has)==null?void 0:i.call(n,r))!=null?o:!0})}d();c();p();f();m();function Ft(e){return{getKeys(){return e},has(){return!1},getPropertyValue(){}}}d();c();p();f();m();function yr(e,t){return{batch:e,transaction:(t==null?void 0:t.kind)==="batch"?{isolationLevel:t.options.isolationLevel}:void 0}}d();c();p();f();m();d();c();p();f();m();var ut=class{constructor(t=0,r){this.context=r;this.lines=[];this.currentLine="";this.currentIndent=0;this.currentIndent=t}write(t){return typeof t=="string"?this.currentLine+=t:t.write(this),this}writeJoined(t,r){let n=r.length-1;for(let i=0;i0&&this.currentIndent--,this}addMarginSymbol(t){return this.marginSymbol=t,this}toString(){return this.lines.concat(this.indentedCurrentLine()).join(` +`)}getCurrentLineLength(){return this.currentLine.length}indentedCurrentLine(){let t=this.currentLine.padStart(this.currentLine.length+2*this.currentIndent);return this.marginSymbol?this.marginSymbol+t.slice(1):t}};d();c();p();f();m();d();c();p();f();m();function lo(e){return e.substring(0,1).toLowerCase()+e.substring(1)}d();c();p();f();m();function lt(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function wr(e){return e.toString()!=="Invalid Date"}d();c();p();f();m();d();c();p();f();m();var ct=9e15,_e=1e9,En="0123456789abcdef",br="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",xr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",bn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-ct,maxE:ct,crypto:!1},mo,Ce,_=!0,vr="[DecimalError] ",Ne=vr+"Invalid argument: ",go=vr+"Precision limit exceeded",ho=vr+"crypto unavailable",yo="[object Decimal]",re=Math.floor,H=Math.pow,lu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,cu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,pu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,wo=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,pe=1e7,O=7,fu=9007199254740991,mu=br.length-1,xn=xr.length-1,C={toStringTag:yo};C.absoluteValue=C.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),k(e)};C.ceil=function(){return k(new this.constructor(this),this.e+1,2)};C.clampedTo=C.clamp=function(e,t){var r,n=this,i=n.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(Ne+t);return r=n.cmp(e),r<0?e:n.cmp(t)>0?t:new i(n)};C.comparedTo=C.cmp=function(e){var t,r,n,i,o=this,s=o.d,a=(e=new o.constructor(e)).d,u=o.s,l=e.s;if(!s||!a)return!u||!l?NaN:u!==l?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-l:0;if(u!==l)return u;if(o.e!==e.e)return o.e>e.e^u<0?1:-1;for(n=s.length,i=a.length,t=0,r=na[t]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};C.cosine=C.cos=function(){var e,t,r=this,n=r.constructor;return r.d?r.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+O,n.rounding=1,r=du(n,vo(n,r)),n.precision=e,n.rounding=t,k(Ce==2||Ce==3?r.neg():r,e,t,!0)):new n(1):new n(NaN)};C.cubeRoot=C.cbrt=function(){var e,t,r,n,i,o,s,a,u,l,g=this,h=g.constructor;if(!g.isFinite()||g.isZero())return new h(g);for(_=!1,o=g.s*H(g.s*g,1/3),!o||Math.abs(o)==1/0?(r=X(g.d),e=g.e,(o=(e-r.length+1)%3)&&(r+=o==1||o==-2?"0":"00"),o=H(r,1/3),e=re((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?r="5e"+e:(r=o.toExponential(),r=r.slice(0,r.indexOf("e")+1)+e),n=new h(r),n.s=g.s):n=new h(o.toString()),s=(e=h.precision)+3;;)if(a=n,u=a.times(a).times(a),l=u.plus(g),n=q(l.plus(g).times(a),l.plus(u),s+2,1),X(a.d).slice(0,s)===(r=X(n.d)).slice(0,s))if(r=r.slice(s-3,s+1),r=="9999"||!i&&r=="4999"){if(!i&&(k(a,e+1,0),a.times(a).times(a).eq(g))){n=a;break}s+=4,i=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(k(n,e+1,1),t=!n.times(n).times(n).eq(g));break}return _=!0,k(n,e,h.rounding,t)};C.decimalPlaces=C.dp=function(){var e,t=this.d,r=NaN;if(t){if(e=t.length-1,r=(e-re(this.e/O))*O,e=t[e],e)for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r};C.dividedBy=C.div=function(e){return q(this,new this.constructor(e))};C.dividedToIntegerBy=C.divToInt=function(e){var t=this,r=t.constructor;return k(q(t,new r(e),0,1,1),r.precision,r.rounding)};C.equals=C.eq=function(e){return this.cmp(e)===0};C.floor=function(){return k(new this.constructor(this),this.e+1,3)};C.greaterThan=C.gt=function(e){return this.cmp(e)>0};C.greaterThanOrEqualTo=C.gte=function(e){var t=this.cmp(e);return t==1||t===0};C.hyperbolicCosine=C.cosh=function(){var e,t,r,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;r=s.precision,n=s.rounding,s.precision=r+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(e=Math.ceil(i/3),t=(1/Cr(4,e)).toString()):(e=16,t="2.3283064365386962890625e-10"),o=pt(s,1,o.times(t),new s(1),!0);for(var u,l=e,g=new s(8);l--;)u=o.times(o),o=a.minus(u.times(g.minus(u.times(g))));return k(o,s.precision=r,s.rounding=n,!0)};C.hyperbolicSine=C.sinh=function(){var e,t,r,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(t=o.precision,r=o.rounding,o.precision=t+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=pt(o,2,i,i,!0);else{e=1.4*Math.sqrt(n),e=e>16?16:e|0,i=i.times(1/Cr(5,e)),i=pt(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),l=new o(20);e--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(l))))}return o.precision=t,o.rounding=r,k(i,t,r,!0)};C.hyperbolicTangent=C.tanh=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+7,n.rounding=1,q(r.sinh(),r.cosh(),n.precision=e,n.rounding=t)):new n(r.s)};C.inverseCosine=C.acos=function(){var e,t=this,r=t.constructor,n=t.abs().cmp(1),i=r.precision,o=r.rounding;return n!==-1?n===0?t.isNeg()?ce(r,i,o):new r(0):new r(NaN):t.isZero()?ce(r,i+4,o).times(.5):(r.precision=i+6,r.rounding=1,t=t.asin(),e=ce(r,i+4,o).times(.5),r.precision=i,r.rounding=o,e.minus(t))};C.inverseHyperbolicCosine=C.acosh=function(){var e,t,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,_=!1,r=r.times(r).minus(1).sqrt().plus(r),_=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)};C.inverseHyperbolicSine=C.asinh=function(){var e,t,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,_=!1,r=r.times(r).plus(1).sqrt().plus(r),_=!0,n.precision=e,n.rounding=t,r.ln())};C.inverseHyperbolicTangent=C.atanh=function(){var e,t,r,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=o.precision,t=o.rounding,n=i.sd(),Math.max(n,e)<2*-i.e-1?k(new o(i),e,t,!0):(o.precision=r=n-i.e,i=q(i.plus(1),new o(1).minus(i),r+e,1),o.precision=e+4,o.rounding=1,i=i.ln(),o.precision=e,o.rounding=t,i.times(.5))):new o(NaN)};C.inverseSine=C.asin=function(){var e,t,r,n,i=this,o=i.constructor;return i.isZero()?new o(i):(t=i.abs().cmp(1),r=o.precision,n=o.rounding,t!==-1?t===0?(e=ce(o,r+4,n).times(.5),e.s=i.s,e):new o(NaN):(o.precision=r+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=r,o.rounding=n,i.times(2)))};C.inverseTangent=C.atan=function(){var e,t,r,n,i,o,s,a,u,l=this,g=l.constructor,h=g.precision,v=g.rounding;if(l.isFinite()){if(l.isZero())return new g(l);if(l.abs().eq(1)&&h+4<=xn)return s=ce(g,h+4,v).times(.25),s.s=l.s,s}else{if(!l.s)return new g(NaN);if(h+4<=xn)return s=ce(g,h+4,v).times(.5),s.s=l.s,s}for(g.precision=a=h+10,g.rounding=1,r=Math.min(28,a/O+2|0),e=r;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(_=!1,t=Math.ceil(a/O),n=1,u=l.times(l),s=new g(l),i=l;e!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[t]!==void 0)for(e=t;s.d[e]===o.d[e]&&e--;);return r&&(s=s.times(2<this.d.length-2};C.isNaN=function(){return!this.s};C.isNegative=C.isNeg=function(){return this.s<0};C.isPositive=C.isPos=function(){return this.s>0};C.isZero=function(){return!!this.d&&this.d[0]===0};C.lessThan=C.lt=function(e){return this.cmp(e)<0};C.lessThanOrEqualTo=C.lte=function(e){return this.cmp(e)<1};C.logarithm=C.log=function(e){var t,r,n,i,o,s,a,u,l=this,g=l.constructor,h=g.precision,v=g.rounding,S=5;if(e==null)e=new g(10),t=!0;else{if(e=new g(e),r=e.d,e.s<0||!r||!r[0]||e.eq(1))return new g(NaN);t=e.eq(10)}if(r=l.d,l.s<0||!r||!r[0]||l.eq(1))return new g(r&&!r[0]?-1/0:l.s!=1?NaN:r?0:1/0);if(t)if(r.length>1)o=!0;else{for(i=r[0];i%10===0;)i/=10;o=i!==1}if(_=!1,a=h+S,s=Oe(l,a),n=t?Pr(g,a+10):Oe(e,a),u=q(s,n,a,1),Bt(u.d,i=h,v))do if(a+=10,s=Oe(l,a),n=t?Pr(g,a+10):Oe(e,a),u=q(s,n,a,1),!o){+X(u.d).slice(i+1,i+15)+1==1e14&&(u=k(u,h+1,0));break}while(Bt(u.d,i+=10,v));return _=!0,k(u,h,v)};C.minus=C.sub=function(e){var t,r,n,i,o,s,a,u,l,g,h,v,S=this,A=S.constructor;if(e=new A(e),!S.d||!e.d)return!S.s||!e.s?e=new A(NaN):S.d?e.s=-e.s:e=new A(e.d||S.s!==e.s?S:NaN),e;if(S.s!=e.s)return e.s=-e.s,S.plus(e);if(l=S.d,v=e.d,a=A.precision,u=A.rounding,!l[0]||!v[0]){if(v[0])e.s=-e.s;else if(l[0])e=new A(S);else return new A(u===3?-0:0);return _?k(e,a,u):e}if(r=re(e.e/O),g=re(S.e/O),l=l.slice(),o=g-r,o){for(h=o<0,h?(t=l,o=-o,s=v.length):(t=v,r=g,s=l.length),n=Math.max(Math.ceil(a/O),s)+2,o>n&&(o=n,t.length=1),t.reverse(),n=o;n--;)t.push(0);t.reverse()}else{for(n=l.length,s=v.length,h=n0;--n)l[s++]=0;for(n=v.length;n>o;){if(l[--n]s?o+1:s+1,i>s&&(i=s,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for(s=l.length,i=g.length,s-i<0&&(i=s,r=g,g=l,l=r),t=0;i;)t=(l[--i]=l[i]+g[i]+t)/pe|0,l[i]%=pe;for(t&&(l.unshift(t),++n),s=l.length;l[--s]==0;)l.pop();return e.d=l,e.e=Tr(l,n),_?k(e,a,u):e};C.precision=C.sd=function(e){var t,r=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(Ne+e);return r.d?(t=Eo(r.d),e&&r.e+1>t&&(t=r.e+1)):t=NaN,t};C.round=function(){var e=this,t=e.constructor;return k(new t(e),e.e+1,t.rounding)};C.sine=C.sin=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+O,n.rounding=1,r=hu(n,vo(n,r)),n.precision=e,n.rounding=t,k(Ce>2?r.neg():r,e,t,!0)):new n(NaN)};C.squareRoot=C.sqrt=function(){var e,t,r,n,i,o,s=this,a=s.d,u=s.e,l=s.s,g=s.constructor;if(l!==1||!a||!a[0])return new g(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);for(_=!1,l=Math.sqrt(+s),l==0||l==1/0?(t=X(a),(t.length+u)%2==0&&(t+="0"),l=Math.sqrt(t),u=re((u+1)/2)-(u<0||u%2),l==1/0?t="5e"+u:(t=l.toExponential(),t=t.slice(0,t.indexOf("e")+1)+u),n=new g(t)):n=new g(l.toString()),r=(u=g.precision)+3;;)if(o=n,n=o.plus(q(s,o,r+2,1)).times(.5),X(o.d).slice(0,r)===(t=X(n.d)).slice(0,r))if(t=t.slice(r-3,r+1),t=="9999"||!i&&t=="4999"){if(!i&&(k(o,u+1,0),o.times(o).eq(s))){n=o;break}r+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(k(n,u+1,1),e=!n.times(n).eq(s));break}return _=!0,k(n,u,g.rounding,e)};C.tangent=C.tan=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,r=r.sin(),r.s=1,r=q(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,k(Ce==2||Ce==4?r.neg():r,e,t,!0)):new n(NaN)};C.times=C.mul=function(e){var t,r,n,i,o,s,a,u,l,g=this,h=g.constructor,v=g.d,S=(e=new h(e)).d;if(e.s*=g.s,!v||!v[0]||!S||!S[0])return new h(!e.s||v&&!v[0]&&!S||S&&!S[0]&&!v?NaN:!v||!S?e.s/0:e.s*0);for(r=re(g.e/O)+re(e.e/O),u=v.length,l=S.length,u=0;){for(t=0,i=u+n;i>n;)a=o[i]+S[n]*v[i-n-1]+t,o[i--]=a%pe|0,t=a/pe|0;o[i]=(o[i]+t)%pe|0}for(;!o[--s];)o.pop();return t?++r:o.shift(),e.d=o,e.e=Tr(o,r),_?k(e,h.precision,h.rounding):e};C.toBinary=function(e,t){return Tn(this,2,e,t)};C.toDecimalPlaces=C.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(ue(e,0,_e),t===void 0?t=n.rounding:ue(t,0,8),k(r,e+r.e+1,t))};C.toExponential=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=he(n,!0):(ue(e,0,_e),t===void 0?t=i.rounding:ue(t,0,8),n=k(new i(n),e+1,t),r=he(n,!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r};C.toFixed=function(e,t){var r,n,i=this,o=i.constructor;return e===void 0?r=he(i):(ue(e,0,_e),t===void 0?t=o.rounding:ue(t,0,8),n=k(new o(i),e+i.e+1,t),r=he(n,!1,e+n.e+1)),i.isNeg()&&!i.isZero()?"-"+r:r};C.toFraction=function(e){var t,r,n,i,o,s,a,u,l,g,h,v,S=this,A=S.d,R=S.constructor;if(!A)return new R(S);if(l=r=new R(1),n=u=new R(0),t=new R(n),o=t.e=Eo(A)-S.e-1,s=o%O,t.d[0]=H(10,s<0?O+s:s),e==null)e=o>0?t:l;else{if(a=new R(e),!a.isInt()||a.lt(l))throw Error(Ne+a);e=a.gt(t)?o>0?t:l:a}for(_=!1,a=new R(X(A)),g=R.precision,R.precision=o=A.length*O*2;h=q(a,t,0,1,1),i=r.plus(h.times(n)),i.cmp(e)!=1;)r=n,n=i,i=l,l=u.plus(h.times(i)),u=i,i=t,t=a.minus(h.times(i)),a=i;return i=q(e.minus(r),n,0,1,1),u=u.plus(i.times(l)),r=r.plus(i.times(n)),u.s=l.s=S.s,v=q(l,n,o,1).minus(S).abs().cmp(q(u,r,o,1).minus(S).abs())<1?[l,n]:[u,r],R.precision=g,_=!0,v};C.toHexadecimal=C.toHex=function(e,t){return Tn(this,16,e,t)};C.toNearest=function(e,t){var r=this,n=r.constructor;if(r=new n(r),e==null){if(!r.d)return r;e=new n(1),t=n.rounding}else{if(e=new n(e),t===void 0?t=n.rounding:ue(t,0,8),!r.d)return e.s?r:e;if(!e.d)return e.s&&(e.s=r.s),e}return e.d[0]?(_=!1,r=q(r,e,0,t,1).times(e),_=!0,k(r)):(e.s=r.s,r=e),r};C.toNumber=function(){return+this};C.toOctal=function(e,t){return Tn(this,8,e,t)};C.toPower=C.pow=function(e){var t,r,n,i,o,s,a=this,u=a.constructor,l=+(e=new u(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new u(H(+a,l));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,e.eq(1))return k(a,n,o);if(t=re(e.e/O),t>=e.d.length-1&&(r=l<0?-l:l)<=fu)return i=bo(u,a,r,n),e.s<0?new u(1).div(i):k(i,n,o);if(s=a.s,s<0){if(tu.maxE+1||t0?s/0:0):(_=!1,u.rounding=a.s=1,r=Math.min(12,(t+"").length),i=Pn(e.times(Oe(a,n+r)),n),i.d&&(i=k(i,n+5,1),Bt(i.d,n,o)&&(t=n+10,i=k(Pn(e.times(Oe(a,t+r)),t),t+5,1),+X(i.d).slice(n+1,n+15)+1==1e14&&(i=k(i,n+1,0)))),i.s=s,_=!0,u.rounding=o,k(i,n,o))};C.toPrecision=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=he(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(ue(e,1,_e),t===void 0?t=i.rounding:ue(t,0,8),n=k(new i(n),e,t),r=he(n,e<=n.e||n.e<=i.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r};C.toSignificantDigits=C.toSD=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(ue(e,1,_e),t===void 0?t=n.rounding:ue(t,0,8)),k(new n(r),e,t)};C.toString=function(){var e=this,t=e.constructor,r=he(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+r:r};C.truncated=C.trunc=function(){return k(new this.constructor(this),this.e+1,1)};C.valueOf=C.toJSON=function(){var e=this,t=e.constructor,r=he(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+r:r};function X(e){var t,r,n,i=e.length-1,o="",s=e[0];if(i>0){for(o+=s,t=1;tr)throw Error(Ne+e)}function Bt(e,t,r,n){var i,o,s,a;for(o=e[0];o>=10;o/=10)--t;return--t<0?(t+=O,i=0):(i=Math.ceil((t+1)/O),t%=O),o=H(10,O-t),a=e[i]%o|0,n==null?t<3?(t==0?a=a/100|0:t==1&&(a=a/10|0),s=r<4&&a==99999||r>3&&a==49999||a==5e4||a==0):s=(r<4&&a+1==o||r>3&&a+1==o/2)&&(e[i+1]/o/100|0)==H(10,t-2)-1||(a==o/2||a==0)&&(e[i+1]/o/100|0)==0:t<4?(t==0?a=a/1e3|0:t==1?a=a/100|0:t==2&&(a=a/10|0),s=(n||r<4)&&a==9999||!n&&r>3&&a==4999):s=((n||r<4)&&a+1==o||!n&&r>3&&a+1==o/2)&&(e[i+1]/o/1e3|0)==H(10,t-3)-1,s}function Er(e,t,r){for(var n,i=[0],o,s=0,a=e.length;sr-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/r|0,i[n]%=r)}return i.reverse()}function du(e,t){var r,n,i;if(t.isZero())return t;n=t.d.length,n<32?(r=Math.ceil(n/3),i=(1/Cr(4,r)).toString()):(r=16,i="2.3283064365386962890625e-10"),e.precision+=r,t=pt(e,1,t.times(i),new e(1));for(var o=r;o--;){var s=t.times(t);t=s.times(s).minus(s).times(8).plus(1)}return e.precision-=r,t}var q=function(){function e(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function t(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;ai[a]?1:-1;break}return u}function r(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]1;)n.shift()}return function(n,i,o,s,a,u){var l,g,h,v,S,A,R,D,M,B,I,L,ee,F,Ze,$e,fe,qe,Q,Se,Ue=n.constructor,Xe=n.s==i.s?1:-1,te=n.d,U=i.d;if(!te||!te[0]||!U||!U[0])return new Ue(!n.s||!i.s||(te?U&&te[0]==U[0]:!U)?NaN:te&&te[0]==0||!U?Xe*0:Xe/0);for(u?(S=1,g=n.e-i.e):(u=pe,S=O,g=re(n.e/S)-re(i.e/S)),Q=U.length,fe=te.length,M=new Ue(Xe),B=M.d=[],h=0;U[h]==(te[h]||0);h++);if(U[h]>(te[h]||0)&&g--,o==null?(F=o=Ue.precision,s=Ue.rounding):a?F=o+(n.e-i.e)+1:F=o,F<0)B.push(1),A=!0;else{if(F=F/S+2|0,h=0,Q==1){for(v=0,U=U[0],F++;(h1&&(U=e(U,v,u),te=e(te,v,u),Q=U.length,fe=te.length),$e=Q,I=te.slice(0,Q),L=I.length;L=u/2&&++qe;do v=0,l=t(U,I,Q,L),l<0?(ee=I[0],Q!=L&&(ee=ee*u+(I[1]||0)),v=ee/qe|0,v>1?(v>=u&&(v=u-1),R=e(U,v,u),D=R.length,L=I.length,l=t(R,I,D,L),l==1&&(v--,r(R,Q=10;v/=10)h++;M.e=h+g*S-1,k(M,a?o+M.e+1:o,s,A)}return M}}();function k(e,t,r,n){var i,o,s,a,u,l,g,h,v,S=e.constructor;e:if(t!=null){if(h=e.d,!h)return e;for(i=1,a=h[0];a>=10;a/=10)i++;if(o=t-i,o<0)o+=O,s=t,g=h[v=0],u=g/H(10,i-s-1)%10|0;else if(v=Math.ceil((o+1)/O),a=h.length,v>=a)if(n){for(;a++<=v;)h.push(0);g=u=0,i=1,o%=O,s=o-O+1}else break e;else{for(g=a=h[v],i=1;a>=10;a/=10)i++;o%=O,s=o-O+i,u=s<0?0:g/H(10,i-s-1)%10|0}if(n=n||t<0||h[v+1]!==void 0||(s<0?g:g%H(10,i-s-1)),l=r<4?(u||n)&&(r==0||r==(e.s<0?3:2)):u>5||u==5&&(r==4||n||r==6&&(o>0?s>0?g/H(10,i-s):0:h[v-1])%10&1||r==(e.s<0?8:7)),t<1||!h[0])return h.length=0,l?(t-=e.e+1,h[0]=H(10,(O-t%O)%O),e.e=-t||0):h[0]=e.e=0,e;if(o==0?(h.length=v,a=1,v--):(h.length=v+1,a=H(10,O-o),h[v]=s>0?(g/H(10,i-s)%H(10,s)|0)*a:0),l)for(;;)if(v==0){for(o=1,s=h[0];s>=10;s/=10)o++;for(s=h[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(e.e++,h[0]==pe&&(h[0]=1));break}else{if(h[v]+=a,h[v]!=pe)break;h[v--]=0,a=1}for(o=h.length;h[--o]===0;)h.pop()}return _&&(e.e>S.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+Me(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):i<0?(o="0."+Me(-i-1)+o,r&&(n=r-s)>0&&(o+=Me(n))):i>=s?(o+=Me(i+1-s),r&&(n=r-i-1)>0&&(o=o+"."+Me(n))):((n=i+1)0&&(i+1===s&&(o+="."),o+=Me(n))),o}function Tr(e,t){var r=e[0];for(t*=O;r>=10;r/=10)t++;return t}function Pr(e,t,r){if(t>mu)throw _=!0,r&&(e.precision=r),Error(go);return k(new e(br),t,1,!0)}function ce(e,t,r){if(t>xn)throw Error(go);return k(new e(xr),t,r,!0)}function Eo(e){var t=e.length-1,r=t*O+1;if(t=e[t],t){for(;t%10==0;t/=10)r--;for(t=e[0];t>=10;t/=10)r++}return r}function Me(e){for(var t="";e--;)t+="0";return t}function bo(e,t,r,n){var i,o=new e(1),s=Math.ceil(n/O+4);for(_=!1;;){if(r%2&&(o=o.times(t),po(o.d,s)&&(i=!0)),r=re(r/2),r===0){r=o.d.length-1,i&&o.d[r]===0&&++o.d[r];break}t=t.times(t),po(t.d,s)}return _=!0,o}function co(e){return e.d[e.d.length-1]&1}function xo(e,t,r){for(var n,i=new e(t[0]),o=0;++o17)return new v(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(t==null?(_=!1,u=A):u=t,a=new v(.03125);e.e>-2;)e=e.times(a),h+=5;for(n=Math.log(H(2,h))/Math.LN10*2+5|0,u+=n,r=o=s=new v(1),v.precision=u;;){if(o=k(o.times(e),u,1),r=r.times(++g),a=s.plus(q(o,r,u,1)),X(a.d).slice(0,u)===X(s.d).slice(0,u)){for(i=h;i--;)s=k(s.times(s),u,1);if(t==null)if(l<3&&Bt(s.d,u-n,S,l))v.precision=u+=10,r=o=a=new v(1),g=0,l++;else return k(s,v.precision=A,S,_=!0);else return v.precision=A,s}s=a}}function Oe(e,t){var r,n,i,o,s,a,u,l,g,h,v,S=1,A=10,R=e,D=R.d,M=R.constructor,B=M.rounding,I=M.precision;if(R.s<0||!D||!D[0]||!R.e&&D[0]==1&&D.length==1)return new M(D&&!D[0]?-1/0:R.s!=1?NaN:D?0:R);if(t==null?(_=!1,g=I):g=t,M.precision=g+=A,r=X(D),n=r.charAt(0),Math.abs(o=R.e)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)R=R.times(e),r=X(R.d),n=r.charAt(0),S++;o=R.e,n>1?(R=new M("0."+r),o++):R=new M(n+"."+r.slice(1))}else return l=Pr(M,g+2,I).times(o+""),R=Oe(new M(n+"."+r.slice(1)),g-A).plus(l),M.precision=I,t==null?k(R,I,B,_=!0):R;for(h=R,u=s=R=q(R.minus(1),R.plus(1),g,1),v=k(R.times(R),g,1),i=3;;){if(s=k(s.times(v),g,1),l=u.plus(q(s,new M(i),g,1)),X(l.d).slice(0,g)===X(u.d).slice(0,g))if(u=u.times(2),o!==0&&(u=u.plus(Pr(M,g+2,I).times(o+""))),u=q(u,new M(S),g,1),t==null)if(Bt(u.d,g-A,B,a))M.precision=g+=A,l=s=R=q(h.minus(1),h.plus(1),g,1),v=k(R.times(R),g,1),i=a=1;else return k(u,M.precision=I,B,_=!0);else return M.precision=I,u;u=l,i+=2}}function Po(e){return String(e.s*e.s/0)}function vn(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;t.charCodeAt(n)===48;n++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(n,i),t){if(i-=n,e.e=r=r-n-1,e.d=[],n=(r+1)%O,r<0&&(n+=O),ne.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),wo.test(t))return vn(e,t)}else if(t==="Infinity"||t==="NaN")return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(cu.test(t))r=16,t=t.toLowerCase();else if(lu.test(t))r=2;else if(pu.test(t))r=8;else throw Error(Ne+t);for(o=t.search(/p/i),o>0?(u=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),o=t.indexOf("."),s=o>=0,n=e.constructor,s&&(t=t.replace(".",""),a=t.length,o=a-o,i=bo(n,new n(r),o,o*2)),l=Er(t,r,pe),g=l.length-1,o=g;l[o]===0;--o)l.pop();return o<0?new n(e.s*0):(e.e=Tr(l,g),e.d=l,_=!1,s&&(e=q(e,i,a*4)),u&&(e=e.times(Math.abs(u)<54?H(2,u):He.pow(2,u))),_=!0,e)}function hu(e,t){var r,n=t.d.length;if(n<3)return t.isZero()?t:pt(e,2,t,t);r=1.4*Math.sqrt(n),r=r>16?16:r|0,t=t.times(1/Cr(5,r)),t=pt(e,2,t,t);for(var i,o=new e(5),s=new e(16),a=new e(20);r--;)i=t.times(t),t=t.times(o.plus(i.times(s.times(i).minus(a))));return t}function pt(e,t,r,n,i){var o,s,a,u,l=1,g=e.precision,h=Math.ceil(g/O);for(_=!1,u=r.times(r),a=new e(n);;){if(s=q(a.times(u),new e(t++*t++),g,1),a=i?n.plus(s):n.minus(s),n=q(s.times(u),new e(t++*t++),g,1),s=a.plus(n),s.d[h]!==void 0){for(o=h;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,l++}return _=!0,s.d.length=h+1,s}function Cr(e,t){for(var r=e;--t;)r*=e;return r}function vo(e,t){var r,n=t.s<0,i=ce(e,e.precision,1),o=i.times(.5);if(t=t.abs(),t.lte(o))return Ce=n?4:1,t;if(r=t.divToInt(i),r.isZero())Ce=n?3:2;else{if(t=t.minus(r.times(i)),t.lte(o))return Ce=co(r)?n?2:3:n?4:1,t;Ce=co(r)?n?1:4:n?3:2}return t.minus(i).abs()}function Tn(e,t,r,n){var i,o,s,a,u,l,g,h,v,S=e.constructor,A=r!==void 0;if(A?(ue(r,1,_e),n===void 0?n=S.rounding:ue(n,0,8)):(r=S.precision,n=S.rounding),!e.isFinite())g=Po(e);else{for(g=he(e),s=g.indexOf("."),A?(i=2,t==16?r=r*4-3:t==8&&(r=r*3-2)):i=t,s>=0&&(g=g.replace(".",""),v=new S(1),v.e=g.length-s,v.d=Er(he(v),10,i),v.e=v.d.length),h=Er(g,10,i),o=u=h.length;h[--u]==0;)h.pop();if(!h[0])g=A?"0p+0":"0";else{if(s<0?o--:(e=new S(e),e.d=h,e.e=o,e=q(e,v,r,n,0,i),h=e.d,o=e.e,l=mo),s=h[r],a=i/2,l=l||h[r+1]!==void 0,l=n<4?(s!==void 0||l)&&(n===0||n===(e.s<0?3:2)):s>a||s===a&&(n===4||l||n===6&&h[r-1]&1||n===(e.s<0?8:7)),h.length=r,l)for(;++h[--r]>i-1;)h[r]=0,r||(++o,h.unshift(1));for(u=h.length;!h[u-1];--u);for(s=0,g="";s1)if(t==16||t==8){for(s=t==16?4:3,--u;u%s;u++)g+="0";for(h=Er(g,i,t),u=h.length;!h[u-1];--u);for(s=1,g="1.";su)for(o-=u;o--;)g+="0";else ot)return e.length=t,!0}function yu(e){return new this(e).abs()}function wu(e){return new this(e).acos()}function Eu(e){return new this(e).acosh()}function bu(e,t){return new this(e).plus(t)}function xu(e){return new this(e).asin()}function Pu(e){return new this(e).asinh()}function vu(e){return new this(e).atan()}function Tu(e){return new this(e).atanh()}function Cu(e,t){e=new this(e),t=new this(t);var r,n=this.precision,i=this.rounding,o=n+4;return!e.s||!t.s?r=new this(NaN):!e.d&&!t.d?(r=ce(this,o,1).times(t.s>0?.25:.75),r.s=e.s):!t.d||e.isZero()?(r=t.s<0?ce(this,n,i):new this(0),r.s=e.s):!e.d||t.isZero()?(r=ce(this,o,1).times(.5),r.s=e.s):t.s<0?(this.precision=o,this.rounding=1,r=this.atan(q(e,t,o,1)),t=ce(this,o,1),this.precision=n,this.rounding=i,r=e.s<0?r.minus(t):r.plus(t)):r=this.atan(q(e,t,o,1)),r}function Au(e){return new this(e).cbrt()}function Ru(e){return k(e=new this(e),e.e+1,2)}function Su(e,t,r){return new this(e).clamp(t,r)}function Iu(e){if(!e||typeof e!="object")throw Error(vr+"Object expected");var t,r,n,i=e.defaults===!0,o=["precision",1,_e,"rounding",0,8,"toExpNeg",-ct,0,"toExpPos",0,ct,"maxE",0,ct,"minE",-ct,0,"modulo",0,9];for(t=0;t=o[t+1]&&n<=o[t+2])this[r]=n;else throw Error(Ne+r+": "+n);if(r="crypto",i&&(this[r]=bn[r]),(n=e[r])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto!="undefined"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[r]=!0;else throw Error(ho);else this[r]=!1;else throw Error(Ne+r+": "+n);return this}function ku(e){return new this(e).cos()}function Du(e){return new this(e).cosh()}function To(e){var t,r,n;function i(o){var s,a,u,l=this;if(!(l instanceof i))return new i(o);if(l.constructor=i,fo(o)){l.s=o.s,_?!o.d||o.e>i.maxE?(l.e=NaN,l.d=null):o.e=10;a/=10)s++;_?s>i.maxE?(l.e=NaN,l.d=null):s=429e7?t[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(n*=4);o=214e7?crypto.randomBytes(4).copy(t,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(ho);else for(;o=10;i/=10)n++;n`}};function mt(e){return e instanceof $t}d();c();p();f();m();d();c();p();f();m();var Ar=class{constructor(t){this.value=t}write(t){t.write(this.value)}markAsError(){this.value.markAsError()}};d();c();p();f();m();var Rr=e=>e,Sr={bold:Rr,red:Rr,green:Rr,dim:Rr,enabled:!1},Co={bold:ar,red:it,green:Ri,dim:ur,enabled:!0},dt={write(e){e.writeLine(",")}};d();c();p();f();m();var we=class{constructor(t){this.contents=t;this.isUnderlined=!1;this.color=t=>t}underline(){return this.isUnderlined=!0,this}setColor(t){return this.color=t,this}write(t){let r=t.getCurrentLineLength();t.write(this.color(this.contents)),this.isUnderlined&&t.afterNextNewline(()=>{t.write(" ".repeat(r)).writeLine(this.color("~".repeat(this.contents.length)))})}};d();c();p();f();m();var Le=class{constructor(){this.hasError=!1}markAsError(){return this.hasError=!0,this}};var gt=class extends Le{constructor(){super(...arguments);this.items=[]}addItem(r){return this.items.push(new Ar(r)),this}getField(r){return this.items[r]}getPrintWidth(){return this.items.length===0?2:Math.max(...this.items.map(n=>n.value.getPrintWidth()))+2}write(r){if(this.items.length===0){this.writeEmpty(r);return}this.writeWithItems(r)}writeEmpty(r){let n=new we("[]");this.hasError&&n.setColor(r.context.colors.red).underline(),r.write(n)}writeWithItems(r){let{colors:n}=r.context;r.writeLine("[").withIndent(()=>r.writeJoined(dt,this.items).newLine()).write("]"),this.hasError&&r.afterNextNewline(()=>{r.writeLine(n.red("~".repeat(this.getPrintWidth())))})}};d();c();p();f();m();var Ao=": ",Ir=class{constructor(t,r){this.name=t;this.value=r;this.hasError=!1}markAsError(){this.hasError=!0}getPrintWidth(){return this.name.length+this.value.getPrintWidth()+Ao.length}write(t){let r=new we(this.name);this.hasError&&r.underline().setColor(t.context.colors.red),t.write(r).write(Ao).write(this.value)}};d();c();p();f();m();var z=class e extends Le{constructor(){super(...arguments);this.fields={};this.suggestions=[]}addField(r){this.fields[r.name]=r}addSuggestion(r){this.suggestions.push(r)}getField(r){return this.fields[r]}getDeepField(r){let[n,...i]=r,o=this.getField(n);if(!o)return;let s=o;for(let a of i){let u;if(s.value instanceof e?u=s.value.getField(a):s.value instanceof gt&&(u=s.value.getField(Number(a))),!u)return;s=u}return s}getDeepFieldValue(r){var n;return r.length===0?this:(n=this.getDeepField(r))==null?void 0:n.value}hasField(r){return!!this.getField(r)}removeAllFields(){this.fields={}}removeField(r){delete this.fields[r]}getFields(){return this.fields}isEmpty(){return Object.keys(this.fields).length===0}getFieldValue(r){var n;return(n=this.getField(r))==null?void 0:n.value}getDeepSubSelectionValue(r){let n=this;for(let i of r){if(!(n instanceof e))return;let o=n.getSubSelectionValue(i);if(!o)return;n=o}return n}getDeepSelectionParent(r){let n=this.getSelectionParent();if(!n)return;let i=n;for(let o of r){let s=i.value.getFieldValue(o);if(!s||!(s instanceof e))return;let a=s.getSelectionParent();if(!a)return;i=a}return i}getSelectionParent(){let r=this.getField("select");if((r==null?void 0:r.value)instanceof e)return{kind:"select",value:r.value};let n=this.getField("include");if((n==null?void 0:n.value)instanceof e)return{kind:"include",value:n.value}}getSubSelectionValue(r){var n;return(n=this.getSelectionParent())==null?void 0:n.value.fields[r].value}getPrintWidth(){let r=Object.values(this.fields);return r.length==0?2:Math.max(...r.map(i=>i.getPrintWidth()))+2}write(r){let n=Object.values(this.fields);if(n.length===0&&this.suggestions.length===0){this.writeEmpty(r);return}this.writeWithContents(r,n)}writeEmpty(r){let n=new we("{}");this.hasError&&n.setColor(r.context.colors.red).underline(),r.write(n)}writeWithContents(r,n){r.writeLine("{").withIndent(()=>{r.writeJoined(dt,[...n,...this.suggestions]).newLine()}),r.write("}"),this.hasError&&r.afterNextNewline(()=>{r.writeLine(r.context.colors.red("~".repeat(this.getPrintWidth())))})}};d();c();p();f();m();var Y=class extends Le{constructor(r){super();this.text=r}getPrintWidth(){return this.text.length}write(r){let n=new we(this.text);this.hasError&&n.underline().setColor(r.context.colors.red),r.write(n)}};var Cn=class{constructor(t){this.errorMessages=[];this.arguments=t}write(t){t.write(this.arguments)}addErrorMessage(t){this.errorMessages.push(t)}renderAllMessages(t){return this.errorMessages.map(r=>r(t)).join(` +`)}};function kr(e){return new Cn(Ro(e))}function Ro(e){let t=new z;for(let[r,n]of Object.entries(e)){let i=new Ir(r,So(n));t.addField(i)}return t}function So(e){if(typeof e=="string")return new Y(JSON.stringify(e));if(typeof e=="number"||typeof e=="boolean")return new Y(String(e));if(typeof e=="bigint")return new Y(`${e}n`);if(e===null)return new Y("null");if(e===void 0)return new Y("undefined");if(ft(e))return new Y(`new Prisma.Decimal("${e.toFixed()}")`);if(e instanceof Uint8Array)return w.Buffer.isBuffer(e)?new Y(`Buffer.alloc(${e.byteLength})`):new Y(`new Uint8Array(${e.byteLength})`);if(e instanceof Date){let t=wr(e)?e.toISOString():"Invalid Date";return new Y(`new Date("${t}")`)}return e instanceof Te?new Y(`Prisma.${e._getName()}`):mt(e)?new Y(`prisma.${lo(e.modelName)}.$fields.${e.name}`):Array.isArray(e)?nl(e):typeof e=="object"?Ro(e):new Y(Object.prototype.toString.call(e))}function nl(e){let t=new gt;for(let r of e)t.addItem(So(r));return t}function Io(e){if(e===void 0)return"";let t=kr(e);return new ut(0,{colors:Sr}).write(t).toString()}d();c();p();f();m();var il="P2037";function qt({error:e,user_facing_error:t},r,n){return t.error_code?new K(ol(t,n),{code:t.error_code,clientVersion:r,meta:t.meta,batchRequestIdx:t.batch_request_idx}):new se(e,{clientVersion:r,batchRequestIdx:t.batch_request_idx})}function ol(e,t){let r=e.message;return(t==="postgresql"||t==="postgres"||t==="mysql")&&e.error_code===il&&(r+=` +Prisma Accelerate has built-in connection pooling to prevent such errors: https://pris.ly/client/error-accelerate`),r}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var An=class{getLocation(){return null}};function Fe(e){return typeof $EnabledCallSite=="function"&&e!=="minimal"?new $EnabledCallSite:new An}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var ko={_avg:!0,_count:!0,_sum:!0,_min:!0,_max:!0};function ht(e={}){let t=al(e);return Object.entries(t).reduce((n,[i,o])=>(ko[i]!==void 0?n.select[i]={select:o}:n[i]=o,n),{select:{}})}function al(e={}){return typeof e._count=="boolean"?{...e,_count:{_all:e._count}}:e}function Dr(e={}){return t=>(typeof e._count=="boolean"&&(t._count=t._count._all),t)}function Do(e,t){let r=Dr(e);return t({action:"aggregate",unpacker:r,argsMapper:ht})(e)}d();c();p();f();m();function ul(e={}){let{select:t,...r}=e;return typeof t=="object"?ht({...r,_count:t}):ht({...r,_count:{_all:!0}})}function ll(e={}){return typeof e.select=="object"?t=>Dr(e)(t)._count:t=>Dr(e)(t)._count._all}function Mo(e,t){return t({action:"count",unpacker:ll(e),argsMapper:ul})(e)}d();c();p();f();m();function cl(e={}){let t=ht(e);if(Array.isArray(t.by))for(let r of t.by)typeof r=="string"&&(t.select[r]=!0);else typeof t.by=="string"&&(t.select[t.by]=!0);return t}function pl(e={}){return t=>(typeof(e==null?void 0:e._count)=="boolean"&&t.forEach(r=>{r._count=r._count._all}),t)}function Oo(e,t){return t({action:"groupBy",unpacker:pl(e),argsMapper:cl})(e)}function No(e,t,r){if(t==="aggregate")return n=>Do(n,r);if(t==="count")return n=>Mo(n,r);if(t==="groupBy")return n=>Oo(n,r)}d();c();p();f();m();function _o(e,t){let r=t.fields.filter(i=>!i.relationName),n=cn(r,i=>i.name);return new Proxy({},{get(i,o){if(o in i||typeof o=="symbol")return i[o];let s=n[o];if(s)return new $t(e,o,s.type,s.isList,s.kind==="enum")},...hr(Object.keys(n))})}d();c();p();f();m();d();c();p();f();m();var Lo=e=>Array.isArray(e)?e:e.split("."),Rn=(e,t)=>Lo(t).reduce((r,n)=>r&&r[n],e),Fo=(e,t,r)=>Lo(t).reduceRight((n,i,o,s)=>Object.assign({},Rn(e,s.slice(0,o)),{[i]:n}),r);function fl(e,t){return e===void 0||t===void 0?[]:[...t,"select",e]}function ml(e,t,r){return t===void 0?e!=null?e:{}:Fo(t,r,e||!0)}function Sn(e,t,r,n,i,o){let a=e._runtimeDataModel.models[t].fields.reduce((u,l)=>({...u,[l.name]:l}),{});return u=>{let l=Fe(e._errorFormat),g=fl(n,i),h=ml(u,o,g),v=r({dataPath:g,callsite:l})(h),S=dl(e,t);return new Proxy(v,{get(A,R){if(!S.includes(R))return A[R];let M=[a[R].type,r,R],B=[g,h];return Sn(e,...M,...B)},...hr([...S,...Object.getOwnPropertyNames(v)])})}}function dl(e,t){return e._runtimeDataModel.models[t].fields.filter(r=>r.kind==="object").map(r=>r.name)}d();c();p();f();m();d();c();p();f();m();var gl=Ve(Wi());var hl={red:it,gray:Di,dim:ur,bold:ar,underline:Ai,highlightSource:e=>e.highlight()},yl={red:e=>e,gray:e=>e,dim:e=>e,bold:e=>e,underline:e=>e,highlightSource:e=>e};function wl({message:e,originalMethod:t,isPanic:r,callArguments:n}){return{functionName:`prisma.${t}()`,message:e,isPanic:r!=null?r:!1,callArguments:n}}function El({functionName:e,location:t,message:r,isPanic:n,contextLines:i,callArguments:o},s){let a=[""],u=t?" in":":";if(n?(a.push(s.red(`Oops, an unknown error occurred! This is ${s.bold("on us")}, you did nothing wrong.`)),a.push(s.red(`It occurred in the ${s.bold(`\`${e}\``)} invocation${u}`))):a.push(s.red(`Invalid ${s.bold(`\`${e}\``)} invocation${u}`)),t&&a.push(s.underline(bl(t))),i){a.push("");let l=[i.toString()];o&&(l.push(o),l.push(s.dim(")"))),a.push(l.join("")),o&&a.push("")}else a.push(""),o&&a.push(o),a.push("");return a.push(r),a.join(` +`)}function bl(e){let t=[e.fileName];return e.lineNumber&&t.push(String(e.lineNumber)),e.columnNumber&&t.push(String(e.columnNumber)),t.join(":")}function yt(e){let t=e.showColors?hl:yl,r;return typeof $getTemplateParameters!="undefined"?r=$getTemplateParameters(e,t):r=wl(e),El(r,t)}function Bo(e,t,r,n){return e===De.ModelAction.findFirstOrThrow||e===De.ModelAction.findUniqueOrThrow?xl(t,r,n):n}function xl(e,t,r){return async n=>{if("rejectOnNotFound"in n.args){let o=yt({originalMethod:n.clientMethod,callsite:n.callsite,message:"'rejectOnNotFound' option is not supported"});throw new Z(o,{clientVersion:t})}return await r(n).catch(o=>{throw o instanceof K&&o.code==="P2025"?new Pe(`No ${e} found`,t):o})}}d();c();p();f();m();function Ee(e){return e.replace(/^./,t=>t.toLowerCase())}var Pl=["findUnique","findUniqueOrThrow","findFirst","findFirstOrThrow","create","update","upsert","delete"],vl=["aggregate","count","groupBy"];function In(e,t){var i;let r=(i=e._extensions.getAllModelExtensions(t))!=null?i:{},n=[Tl(e,t),Al(e,t),Lt(r),ie("name",()=>t),ie("$name",()=>t),ie("$parent",()=>e._appliedParent)];return ge({},n)}function Tl(e,t){let r=Ee(t),n=Object.keys(De.ModelAction).concat("count");return{getKeys(){return n},getPropertyValue(i){let o=i,s=u=>e._request(u);s=Bo(o,t,e._clientVersion,s);let a=u=>l=>{let g=Fe(e._errorFormat);return e._createPrismaPromise(h=>{let v={args:l,dataPath:[],action:o,model:t,clientMethod:`${r}.${i}`,jsModelName:r,transaction:h,callsite:g};return s({...v,...u})})};return Pl.includes(o)?Sn(e,t,a):Cl(i)?No(e,i,a):a({})}}}function Cl(e){return vl.includes(e)}function Al(e,t){return Ge(ie("fields",()=>{let r=e._runtimeDataModel.models[t];return _o(t,r)}))}d();c();p();f();m();function $o(e){return e.replace(/^./,t=>t.toUpperCase())}var kn=Symbol();function Ut(e){let t=[Rl(e),ie(kn,()=>e),ie("$parent",()=>e._appliedParent)],r=e._extensions.getAllClientExtensions();return r&&t.push(Lt(r)),ge(e,t)}function Rl(e){let t=Object.keys(e._runtimeDataModel.models),r=t.map(Ee),n=[...new Set(t.concat(r))];return Ge({getKeys(){return n},getPropertyValue(i){let o=$o(i);if(e._runtimeDataModel.models[o]!==void 0)return In(e,o);if(e._runtimeDataModel.models[i]!==void 0)return In(e,i)},getPropertyDescriptor(i){if(!r.includes(i))return{enumerable:!1}}})}function qo(e){return e[kn]?e[kn]:e}function Uo(e){var r;if(typeof e=="function")return e(this);if((r=e.client)!=null&&r.__AccelerateEngine){let n=e.client.__AccelerateEngine;this._originalClient._engine=new n(this._originalClient._accelerateEngineConfig)}let t=Object.create(this._originalClient,{_extensions:{value:this._extensions.append(e)},_appliedParent:{value:this,configurable:!0},$use:{value:void 0},$on:{value:void 0}});return Ut(t)}d();c();p();f();m();d();c();p();f();m();function Vo({result:e,modelName:t,select:r,extensions:n}){let i=n.getAllComputedFields(t);if(!i)return e;let o=[],s=[];for(let a of Object.values(i)){if(r){if(!r[a.name])continue;let u=a.needs.filter(l=>!r[l]);u.length>0&&s.push(Ft(u))}Sl(e,a.needs)&&o.push(Il(a,ge(e,o)))}return o.length>0||s.length>0?ge(e,[...o,...s]):e}function Sl(e,t){return t.every(r=>ln(e,r))}function Il(e,t){return Ge(ie(e.name,()=>e.compute(t)))}d();c();p();f();m();function Mr({visitor:e,result:t,args:r,runtimeDataModel:n,modelName:i}){var s;if(Array.isArray(t)){for(let a=0;ag.name===o);if(!u||u.kind!=="object"||!u.relationName)continue;let l=typeof s=="object"?s:{};t[o]=Mr({visitor:i,result:t[o],args:l,modelName:u.type,runtimeDataModel:n})}}function Jo({result:e,modelName:t,args:r,extensions:n,runtimeDataModel:i}){return n.isEmpty()||e==null||typeof e!="object"||!i.models[t]?e:Mr({result:e,args:r!=null?r:{},modelName:t,runtimeDataModel:i,visitor:(s,a,u)=>Vo({result:s,modelName:Ee(a),select:u.select,extensions:n})})}d();c();p();f();m();d();c();p();f();m();function Qo(e){if(e instanceof ae)return kl(e);if(Array.isArray(e)){let r=[e[0]];for(let n=1;n{var s,a;let o=t.customDataProxyFetch;return"transaction"in t&&i!==void 0&&(((s=t.transaction)==null?void 0:s.kind)==="batch"&&t.transaction.lock.then(),t.transaction=i),n===r.length?e._executeRequest(t):r[n]({model:t.model,operation:t.model?t.action:t.clientMethod,args:Qo((a=t.args)!=null?a:{}),__internalParams:t,query:(u,l=t)=>{let g=l.customDataProxyFetch;return l.customDataProxyFetch=Yo(o,g),l.args=u,Ho(e,l,r,n+1)}})})}function Wo(e,t){let{jsModelName:r,action:n,clientMethod:i}=t,o=r?n:i;if(e._extensions.isEmpty())return e._executeRequest(t);let s=e._extensions.getAllQueryCallbacks(r!=null?r:"$none",o);return Ho(e,t,s)}function Ko(e){return t=>{let r={requests:t},n=t[0].extensions.getAllBatchQueryCallbacks();return n.length?zo(r,n,0,e):e(r)}}function zo(e,t,r,n){if(r===t.length)return n(e);let i=e.customDataProxyFetch,o=e.requests[0].transaction;return t[r]({args:{queries:e.requests.map(s=>({model:s.modelName,operation:s.action,args:s.args})),transaction:o?{isolationLevel:o.kind==="batch"?o.isolationLevel:void 0}:void 0},__internalParams:e,query(s,a=e){let u=a.customDataProxyFetch;return a.customDataProxyFetch=Yo(i,u),zo(a,t,r+1,n)}})}var Go=e=>e;function Yo(e=Go,t=Go){return r=>e(t(r))}d();c();p();f();m();d();c();p();f();m();function Xo(e,t,r){let n=Ee(r);return!t.result||!(t.result.$allModels||t.result[n])?e:Dl({...e,...Zo(t.name,e,t.result.$allModels),...Zo(t.name,e,t.result[n])})}function Dl(e){let t=new de,r=(n,i)=>t.getOrCreate(n,()=>i.has(n)?[n]:(i.add(n),e[n]?e[n].needs.flatMap(o=>r(o,i)):[n]));return st(e,n=>({...n,needs:r(n.name,new Set)}))}function Zo(e,t,r){return r?st(r,({needs:n,compute:i},o)=>({name:o,needs:n?Object.keys(n).filter(s=>n[s]):[],compute:Ml(t,o,i)})):{}}function Ml(e,t,r){var i;let n=(i=e==null?void 0:e[t])==null?void 0:i.compute;return n?o=>r({...o,[t]:n(o)}):r}function es(e,t){if(!t)return e;let r={...e};for(let n of Object.values(t))if(e[n.name])for(let i of n.needs)r[i]=!0;return r}var Or=class{constructor(t,r){this.extension=t;this.previous=r;this.computedFieldsCache=new de;this.modelExtensionsCache=new de;this.queryCallbacksCache=new de;this.clientExtensions=kt(()=>{var t,r;return this.extension.client?{...(r=this.previous)==null?void 0:r.getAllClientExtensions(),...this.extension.client}:(t=this.previous)==null?void 0:t.getAllClientExtensions()});this.batchCallbacks=kt(()=>{var n,i,o;let t=(i=(n=this.previous)==null?void 0:n.getAllBatchQueryCallbacks())!=null?i:[],r=(o=this.extension.query)==null?void 0:o.$__internalBatch;return r?t.concat(r):t})}getAllComputedFields(t){return this.computedFieldsCache.getOrCreate(t,()=>{var r;return Xo((r=this.previous)==null?void 0:r.getAllComputedFields(t),this.extension,t)})}getAllClientExtensions(){return this.clientExtensions.get()}getAllModelExtensions(t){return this.modelExtensionsCache.getOrCreate(t,()=>{var n,i;let r=Ee(t);return!this.extension.model||!(this.extension.model[r]||this.extension.model.$allModels)?(n=this.previous)==null?void 0:n.getAllModelExtensions(t):{...(i=this.previous)==null?void 0:i.getAllModelExtensions(t),...this.extension.model.$allModels,...this.extension.model[r]}})}getAllQueryCallbacks(t,r){return this.queryCallbacksCache.getOrCreate(`${t}:${r}`,()=>{var s,a;let n=(a=(s=this.previous)==null?void 0:s.getAllQueryCallbacks(t,r))!=null?a:[],i=[],o=this.extension.query;return!o||!(o[t]||o.$allModels||o[r]||o.$allOperations)?n:(o[t]!==void 0&&(o[t][r]!==void 0&&i.push(o[t][r]),o[t].$allOperations!==void 0&&i.push(o[t].$allOperations)),t!=="$none"&&o.$allModels!==void 0&&(o.$allModels[r]!==void 0&&i.push(o.$allModels[r]),o.$allModels.$allOperations!==void 0&&i.push(o.$allModels.$allOperations)),o[r]!==void 0&&i.push(o[r]),o.$allOperations!==void 0&&i.push(o.$allOperations),n.concat(i))})}getAllBatchQueryCallbacks(){return this.batchCallbacks.get()}},Nr=class e{constructor(t){this.head=t}static empty(){return new e}static single(t){return new e(new Or(t))}isEmpty(){return this.head===void 0}append(t){return new e(new Or(t,this.head))}getAllComputedFields(t){var r;return(r=this.head)==null?void 0:r.getAllComputedFields(t)}getAllClientExtensions(){var t;return(t=this.head)==null?void 0:t.getAllClientExtensions()}getAllModelExtensions(t){var r;return(r=this.head)==null?void 0:r.getAllModelExtensions(t)}getAllQueryCallbacks(t,r){var n,i;return(i=(n=this.head)==null?void 0:n.getAllQueryCallbacks(t,r))!=null?i:[]}getAllBatchQueryCallbacks(){var t,r;return(r=(t=this.head)==null?void 0:t.getAllBatchQueryCallbacks())!=null?r:[]}};d();c();p();f();m();var ts=ne("prisma:client"),rs={Vercel:"vercel","Netlify CI":"netlify"};function ns({postinstall:e,ciName:t,clientVersion:r}){if(ts("checkPlatformCaching:postinstall",e),ts("checkPlatformCaching:ciName",t),e===!0&&t&&t in rs){let n=`Prisma has detected that this project was built on ${t}, which caches dependencies. This leads to an outdated Prisma Client because Prisma's auto-generation isn't triggered. To fix this, make sure to run the \`prisma generate\` command during the build process. + +Learn how: https://pris.ly/d/${rs[t]}-build`;throw console.error(n),new G(n,r)}}d();c();p();f();m();function is(e,t){return e?e.datasources?e.datasources:e.datasourceUrl?{[t[0]]:{url:e.datasourceUrl}}:{}:{}}d();c();p();f();m();d();c();p();f();m();var Ol="Cloudflare-Workers",Nl="node";function _r(){var e,t,r;return typeof Netlify=="object"?"netlify":typeof EdgeRuntime=="string"?"edge-light":((e=globalThis.navigator)==null?void 0:e.userAgent)===Ol?"workerd":globalThis.Deno?"deno":globalThis.__lagon__?"lagon":((r=(t=globalThis.process)==null?void 0:t.release)==null?void 0:r.name)===Nl?"node":globalThis.Bun?"bun":globalThis.fastly?"fastly":"unknown"}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();function wt({inlineDatasources:e,overrideDatasources:t,env:r,clientVersion:n}){var u,l;let i,o=Object.keys(e)[0],s=(u=e[o])==null?void 0:u.url,a=(l=t[o])==null?void 0:l.url;if(o===void 0?i=void 0:a?i=a:s!=null&&s.value?i=s.value:s!=null&&s.fromEnvVar&&(i=r[s.fromEnvVar]),(s==null?void 0:s.fromEnvVar)!==void 0&&i===void 0)throw _r()==="workerd"?new G(`error: Environment variable not found: ${s.fromEnvVar}. + +In Cloudflare module Workers, environment variables are available only in the Worker's \`env\` parameter of \`fetch\`. +To solve this, provide the connection string directly: https://pris.ly/d/cloudflare-datasource-url`,n):new G(`error: Environment variable not found: ${s.fromEnvVar}.`,n);if(i===void 0)throw new G("error: Missing URL environment variable, value, or override.",n);return i}d();c();p();f();m();d();c();p();f();m();var Lr=class extends Error{constructor(t,r){super(t),this.clientVersion=r.clientVersion,this.cause=r.cause}get[Symbol.toStringTag](){return this.name}};var le=class extends Lr{constructor(t,r){var n;super(t,r),this.isRetryable=(n=r.isRetryable)!=null?n:!0}};d();c();p();f();m();d();c();p();f();m();function $(e,t){return{...e,isRetryable:t}}var Et=class extends le{constructor(r){super("This request must be retried",$(r,!0));this.name="ForcedRetryError";this.code="P5001"}};N(Et,"ForcedRetryError");d();c();p();f();m();var We=class extends le{constructor(r,n){super(r,$(n,!1));this.name="InvalidDatasourceError";this.code="P6001"}};N(We,"InvalidDatasourceError");d();c();p();f();m();var Ke=class extends le{constructor(r,n){super(r,$(n,!1));this.name="NotImplementedYetError";this.code="P5004"}};N(Ke,"NotImplementedYetError");d();c();p();f();m();d();c();p();f();m();var j=class extends le{constructor(t,r){super(t,r),this.response=r.response;let n=this.response.headers.get("prisma-request-id");if(n){let i=`(The request id was: ${n})`;this.message=this.message+" "+i}}};var ze=class extends j{constructor(r){super("Schema needs to be uploaded",$(r,!0));this.name="SchemaMissingError";this.code="P5005"}};N(ze,"SchemaMissingError");d();c();p();f();m();d();c();p();f();m();var Dn="This request could not be understood by the server",jt=class extends j{constructor(r,n,i){super(n||Dn,$(r,!1));this.name="BadRequestError";this.code="P5000";i&&(this.code=i)}};N(jt,"BadRequestError");d();c();p();f();m();var Jt=class extends j{constructor(r,n){super("Engine not started: healthcheck timeout",$(r,!0));this.name="HealthcheckTimeoutError";this.code="P5013";this.logs=n}};N(Jt,"HealthcheckTimeoutError");d();c();p();f();m();var Qt=class extends j{constructor(r,n,i){super(n,$(r,!0));this.name="EngineStartupError";this.code="P5014";this.logs=i}};N(Qt,"EngineStartupError");d();c();p();f();m();var Gt=class extends j{constructor(r){super("Engine version is not supported",$(r,!1));this.name="EngineVersionNotSupportedError";this.code="P5012"}};N(Gt,"EngineVersionNotSupportedError");d();c();p();f();m();var Mn="Request timed out",Ht=class extends j{constructor(r,n=Mn){super(n,$(r,!1));this.name="GatewayTimeoutError";this.code="P5009"}};N(Ht,"GatewayTimeoutError");d();c();p();f();m();var _l="Interactive transaction error",Wt=class extends j{constructor(r,n=_l){super(n,$(r,!1));this.name="InteractiveTransactionError";this.code="P5015"}};N(Wt,"InteractiveTransactionError");d();c();p();f();m();var Ll="Request parameters are invalid",Kt=class extends j{constructor(r,n=Ll){super(n,$(r,!1));this.name="InvalidRequestError";this.code="P5011"}};N(Kt,"InvalidRequestError");d();c();p();f();m();var On="Requested resource does not exist",zt=class extends j{constructor(r,n=On){super(n,$(r,!1));this.name="NotFoundError";this.code="P5003"}};N(zt,"NotFoundError");d();c();p();f();m();var Nn="Unknown server error",bt=class extends j{constructor(r,n,i){super(n||Nn,$(r,!0));this.name="ServerError";this.code="P5006";this.logs=i}};N(bt,"ServerError");d();c();p();f();m();var _n="Unauthorized, check your connection string",Yt=class extends j{constructor(r,n=_n){super(n,$(r,!1));this.name="UnauthorizedError";this.code="P5007"}};N(Yt,"UnauthorizedError");d();c();p();f();m();var Ln="Usage exceeded, retry again later",Zt=class extends j{constructor(r,n=Ln){super(n,$(r,!0));this.name="UsageExceededError";this.code="P5008"}};N(Zt,"UsageExceededError");async function Fl(e){let t;try{t=await e.text()}catch(r){return{type:"EmptyError"}}try{let r=JSON.parse(t);if(typeof r=="string")switch(r){case"InternalDataProxyError":return{type:"DataProxyError",body:r};default:return{type:"UnknownTextError",body:r}}if(typeof r=="object"&&r!==null){if("is_panic"in r&&"message"in r&&"error_code"in r)return{type:"QueryEngineError",body:r};if("EngineNotStarted"in r||"InteractiveTransactionMisrouted"in r||"InvalidRequestError"in r){let n=Object.values(r)[0].reason;return typeof n=="string"&&!["SchemaMissing","EngineVersionNotSupported"].includes(n)?{type:"UnknownJsonError",body:r}:{type:"DataProxyError",body:r}}}return{type:"UnknownJsonError",body:r}}catch(r){return t===""?{type:"EmptyError"}:{type:"UnknownTextError",body:t}}}async function Xt(e,t){if(e.ok)return;let r={clientVersion:t,response:e},n=await Fl(e);if(n.type==="QueryEngineError")throw new K(n.body.message,{code:n.body.error_code,clientVersion:t});if(n.type==="DataProxyError"){if(n.body==="InternalDataProxyError")throw new bt(r,"Internal Data Proxy error");if("EngineNotStarted"in n.body){if(n.body.EngineNotStarted.reason==="SchemaMissing")return new ze(r);if(n.body.EngineNotStarted.reason==="EngineVersionNotSupported")throw new Gt(r);if("EngineStartupError"in n.body.EngineNotStarted.reason){let{msg:i,logs:o}=n.body.EngineNotStarted.reason.EngineStartupError;throw new Qt(r,i,o)}if("KnownEngineStartupError"in n.body.EngineNotStarted.reason){let{msg:i,error_code:o}=n.body.EngineNotStarted.reason.KnownEngineStartupError;throw new G(i,t,o)}if("HealthcheckTimeout"in n.body.EngineNotStarted.reason){let{logs:i}=n.body.EngineNotStarted.reason.HealthcheckTimeout;throw new Jt(r,i)}}if("InteractiveTransactionMisrouted"in n.body){let i={IDParseError:"Could not parse interactive transaction ID",NoQueryEngineFoundError:"Could not find Query Engine for the specified host and transaction ID",TransactionStartError:"Could not start interactive transaction"};throw new Wt(r,i[n.body.InteractiveTransactionMisrouted.reason])}if("InvalidRequestError"in n.body)throw new Kt(r,n.body.InvalidRequestError.reason)}if(e.status===401||e.status===403)throw new Yt(r,xt(_n,n));if(e.status===404)return new zt(r,xt(On,n));if(e.status===429)throw new Zt(r,xt(Ln,n));if(e.status===504)throw new Ht(r,xt(Mn,n));if(e.status>=500)throw new bt(r,xt(Nn,n));if(e.status>=400)throw new jt(r,xt(Dn,n))}function xt(e,t){return t.type==="EmptyError"?e:`${e}: ${JSON.stringify(t)}`}d();c();p();f();m();function os(e){let t=Math.pow(2,e)*50,r=Math.ceil(Math.random()*t)-Math.ceil(t/2),n=t+r;return new Promise(i=>setTimeout(()=>i(n),n))}d();c();p();f();m();var Ae="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function ss(e){let t=new TextEncoder().encode(e),r="",n=t.byteLength,i=n%3,o=n-i,s,a,u,l,g;for(let h=0;h>18,a=(g&258048)>>12,u=(g&4032)>>6,l=g&63,r+=Ae[s]+Ae[a]+Ae[u]+Ae[l];return i==1?(g=t[o],s=(g&252)>>2,a=(g&3)<<4,r+=Ae[s]+Ae[a]+"=="):i==2&&(g=t[o]<<8|t[o+1],s=(g&64512)>>10,a=(g&1008)>>4,u=(g&15)<<2,r+=Ae[s]+Ae[a]+Ae[u]+"="),r}d();c();p();f();m();function as(e){var r;if(!!((r=e.generator)!=null&&r.previewFeatures.some(n=>n.toLowerCase().includes("metrics"))))throw new G("The `metrics` preview feature is not yet available with Accelerate.\nPlease remove `metrics` from the `previewFeatures` in your schema.\n\nMore information about Accelerate: https://pris.ly/d/accelerate",e.clientVersion)}d();c();p();f();m();function Bl(e){return e[0]*1e3+e[1]/1e6}function us(e){return new Date(Bl(e))}d();c();p();f();m();var ls={"@prisma/debug":"workspace:*","@prisma/engines-version":"5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9","@prisma/fetch-engine":"workspace:*","@prisma/get-platform":"workspace:*"};d();c();p();f();m();d();c();p();f();m();var er=class extends le{constructor(r,n){super(`Cannot fetch data from service: +${r}`,$(n,!0));this.name="RequestError";this.code="P5010"}};N(er,"RequestError");async function Ye(e,t,r=n=>n){var i;let n=t.clientVersion;try{return typeof fetch=="function"?await r(fetch)(e,t):await r(Fn)(e,t)}catch(o){let s=(i=o.message)!=null?i:"Unknown error";throw new er(s,{clientVersion:n})}}function ql(e){return{...e.headers,"Content-Type":"application/json"}}function Ul(e){return{method:e.method,headers:ql(e)}}function Vl(e,t){return{text:()=>Promise.resolve(w.Buffer.concat(e).toString()),json:()=>Promise.resolve().then(()=>JSON.parse(w.Buffer.concat(e).toString())),ok:t.statusCode>=200&&t.statusCode<=299,status:t.statusCode,url:t.url,headers:new Bn(t.headers)}}async function Fn(e,t={}){let r=jl("https"),n=Ul(t),i=[],{origin:o}=new URL(e);return new Promise((s,a)=>{var l;let u=r.request(e,n,g=>{let{statusCode:h,headers:{location:v}}=g;h>=301&&h<=399&&v&&(v.startsWith("http")===!1?s(Fn(`${o}${v}`,t)):s(Fn(v,t))),g.on("data",S=>i.push(S)),g.on("end",()=>s(Vl(i,g))),g.on("error",a)});u.on("error",a),u.end((l=t.body)!=null?l:"")})}var jl=typeof require!="undefined"?require:()=>{},Bn=class{constructor(t={}){this.headers=new Map;for(let[r,n]of Object.entries(t))if(typeof n=="string")this.headers.set(r,n);else if(Array.isArray(n))for(let i of n)this.headers.set(r,i)}append(t,r){this.headers.set(t,r)}delete(t){this.headers.delete(t)}get(t){var r;return(r=this.headers.get(t))!=null?r:null}has(t){return this.headers.has(t)}set(t,r){this.headers.set(t,r)}forEach(t,r){for(let[n,i]of this.headers)t.call(r,i,n,this)}};var Jl=/^[1-9][0-9]*\.[0-9]+\.[0-9]+$/,cs=ne("prisma:client:dataproxyEngine");async function Ql(e,t){var s,a,u;let r=ls["@prisma/engines-version"],n=(s=t.clientVersion)!=null?s:"unknown";if(y.env.PRISMA_CLIENT_DATA_PROXY_CLIENT_VERSION)return y.env.PRISMA_CLIENT_DATA_PROXY_CLIENT_VERSION;if(e.includes("accelerate")&&n!=="0.0.0"&&n!=="in-memory")return n;let[i,o]=(a=n==null?void 0:n.split("-"))!=null?a:[];if(o===void 0&&Jl.test(i))return i;if(o!==void 0||n==="0.0.0"||n==="in-memory"){if(e.startsWith("localhost")||e.startsWith("127.0.0.1"))return"0.0.0";let[l]=(u=r.split("-"))!=null?u:[],[g,h,v]=l.split("."),S=Gl(`<=${g}.${h}.${v}`),A=await Ye(S,{clientVersion:n});if(!A.ok)throw new Error(`Failed to fetch stable Prisma version, unpkg.com status ${A.status} ${A.statusText}, response body: ${await A.text()||""}`);let R=await A.text();cs("length of body fetched from unpkg.com",R.length);let D;try{D=JSON.parse(R)}catch(M){throw console.error("JSON.parse error: body fetched from unpkg.com: ",R),M}return D.version}throw new Ke("Only `major.minor.patch` versions are supported by Accelerate.",{clientVersion:n})}async function ps(e,t){let r=await Ql(e,t);return cs("version",r),r}function Gl(e){return encodeURI(`https://unpkg.com/prisma@${e}/package.json`)}var fs=3,$n=ne("prisma:client:dataproxyEngine"),qn=class{constructor({apiKey:t,tracingHelper:r,logLevel:n,logQueries:i,engineHash:o}){this.apiKey=t,this.tracingHelper=r,this.logLevel=n,this.logQueries=i,this.engineHash=o}build({traceparent:t,interactiveTransaction:r}={}){let n={Authorization:`Bearer ${this.apiKey}`,"Prisma-Engine-Hash":this.engineHash};this.tracingHelper.isEnabled()&&(n.traceparent=t!=null?t:this.tracingHelper.getTraceParent()),r&&(n["X-transaction-id"]=r.id);let i=this.buildCaptureSettings();return i.length>0&&(n["X-capture-telemetry"]=i.join(", ")),n}buildCaptureSettings(){let t=[];return this.tracingHelper.isEnabled()&&t.push("tracing"),this.logLevel&&t.push(this.logLevel),this.logQueries&&t.push("query"),t}},tr=class{constructor(t){this.name="DataProxyEngine";as(t),this.config=t,this.env={...t.env,...typeof y!="undefined"?y.env:{}},this.inlineSchema=ss(t.inlineSchema),this.inlineDatasources=t.inlineDatasources,this.inlineSchemaHash=t.inlineSchemaHash,this.clientVersion=t.clientVersion,this.engineHash=t.engineVersion,this.logEmitter=t.logEmitter,this.tracingHelper=t.tracingHelper}apiKey(){return this.headerBuilder.apiKey}version(){return this.engineHash}async start(){this.startPromise!==void 0&&await this.startPromise,this.startPromise=(async()=>{let[t,r]=this.extractHostAndApiKey();this.host=t,this.headerBuilder=new qn({apiKey:r,tracingHelper:this.tracingHelper,logLevel:this.config.logLevel,logQueries:this.config.logQueries,engineHash:this.engineHash}),this.remoteClientVersion=await ps(t,this.config),$n("host",this.host)})(),await this.startPromise}async stop(){}propagateResponseExtensions(t){var r,n;(r=t==null?void 0:t.logs)!=null&&r.length&&t.logs.forEach(i=>{switch(i.level){case"debug":case"error":case"trace":case"warn":case"info":break;case"query":{let o=typeof i.attributes.query=="string"?i.attributes.query:"";if(!this.tracingHelper.isEnabled()){let[s]=o.split("/* traceparent");o=s}this.logEmitter.emit("query",{query:o,timestamp:us(i.timestamp),duration:Number(i.attributes.duration_ms),params:i.attributes.params,target:i.attributes.target})}}}),(n=t==null?void 0:t.traces)!=null&&n.length&&this.tracingHelper.createEngineSpan({span:!0,spans:t.traces})}onBeforeExit(){throw new Error('"beforeExit" hook is not applicable to the remote query engine')}async url(t){return await this.start(),`https://${this.host}/${this.remoteClientVersion}/${this.inlineSchemaHash}/${t}`}async uploadSchema(){let t={name:"schemaUpload",internal:!0};return this.tracingHelper.runInChildSpan(t,async()=>{let r=await Ye(await this.url("schema"),{method:"PUT",headers:this.headerBuilder.build(),body:this.inlineSchema,clientVersion:this.clientVersion});r.ok||$n("schema response status",r.status);let n=await Xt(r,this.clientVersion);if(n)throw this.logEmitter.emit("warn",{message:`Error while uploading schema: ${n.message}`,timestamp:new Date,target:""}),n;this.logEmitter.emit("info",{message:`Schema (re)uploaded (hash: ${this.inlineSchemaHash})`,timestamp:new Date,target:""})})}request(t,{traceparent:r,interactiveTransaction:n,customDataProxyFetch:i}){return this.requestInternal({body:t,traceparent:r,interactiveTransaction:n,customDataProxyFetch:i})}async requestBatch(t,{traceparent:r,transaction:n,customDataProxyFetch:i}){let o=(n==null?void 0:n.kind)==="itx"?n.options:void 0,s=yr(t,n),{batchResult:a,elapsed:u}=await this.requestInternal({body:s,customDataProxyFetch:i,interactiveTransaction:o,traceparent:r});return a.map(l=>"errors"in l&&l.errors.length>0?qt(l.errors[0],this.clientVersion,this.config.activeProvider):{data:l,elapsed:u})}requestInternal({body:t,traceparent:r,customDataProxyFetch:n,interactiveTransaction:i}){return this.withRetry({actionGerund:"querying",callback:async({logHttpCall:o})=>{let s=i?`${i.payload.endpoint}/graphql`:await this.url("graphql");o(s);let a=await Ye(s,{method:"POST",headers:this.headerBuilder.build({traceparent:r,interactiveTransaction:i}),body:JSON.stringify(t),clientVersion:this.clientVersion},n);a.ok||$n("graphql response status",a.status),await this.handleError(await Xt(a,this.clientVersion));let u=await a.json(),l=u.extensions;if(l&&this.propagateResponseExtensions(l),u.errors)throw u.errors.length===1?qt(u.errors[0],this.config.clientVersion,this.config.activeProvider):new se(u.errors,{clientVersion:this.config.clientVersion});return u}})}async transaction(t,r,n){let i={start:"starting",commit:"committing",rollback:"rolling back"};return this.withRetry({actionGerund:`${i[t]} transaction`,callback:async({logHttpCall:o})=>{if(t==="start"){let s=JSON.stringify({max_wait:n.maxWait,timeout:n.timeout,isolation_level:n.isolationLevel}),a=await this.url("transaction/start");o(a);let u=await Ye(a,{method:"POST",headers:this.headerBuilder.build({traceparent:r.traceparent}),body:s,clientVersion:this.clientVersion});await this.handleError(await Xt(u,this.clientVersion));let l=await u.json(),g=l.extensions;g&&this.propagateResponseExtensions(g);let h=l.id,v=l["data-proxy"].endpoint;return{id:h,payload:{endpoint:v}}}else{let s=`${n.payload.endpoint}/${t}`;o(s);let a=await Ye(s,{method:"POST",headers:this.headerBuilder.build({traceparent:r.traceparent}),clientVersion:this.clientVersion});await this.handleError(await Xt(a,this.clientVersion));let l=(await a.json()).extensions;l&&this.propagateResponseExtensions(l);return}}})}extractHostAndApiKey(){let t={clientVersion:this.clientVersion},r=Object.keys(this.inlineDatasources)[0],n=wt({inlineDatasources:this.inlineDatasources,overrideDatasources:this.config.overrideDatasources,clientVersion:this.clientVersion,env:this.env}),i;try{i=new URL(n)}catch(l){throw new We(`Error validating datasource \`${r}\`: the URL must start with the protocol \`prisma://\``,t)}let{protocol:o,host:s,searchParams:a}=i;if(o!=="prisma:")throw new We(`Error validating datasource \`${r}\`: the URL must start with the protocol \`prisma://\``,t);let u=a.get("api_key");if(u===null||u.length<1)throw new We(`Error validating datasource \`${r}\`: the URL must contain a valid API key`,t);return[s,u]}metrics(){throw new Ke("Metrics are not yet supported for Accelerate",{clientVersion:this.clientVersion})}async withRetry(t){var r;for(let n=0;;n++){let i=o=>{this.logEmitter.emit("info",{message:`Calling ${o} (n=${n})`,timestamp:new Date,target:""})};try{return await t.callback({logHttpCall:i})}catch(o){if(!(o instanceof le)||!o.isRetryable)throw o;if(n>=fs)throw o instanceof Et?o.cause:o;this.logEmitter.emit("warn",{message:`Attempt ${n+1}/${fs} failed for ${t.actionGerund}: ${(r=o.message)!=null?r:"(unknown)"}`,timestamp:new Date,target:""});let s=await os(n);this.logEmitter.emit("warn",{message:`Retrying after ${s}ms`,timestamp:new Date,target:""})}}}async handleError(t){if(t instanceof ze)throw await this.uploadSchema(),new Et({clientVersion:this.clientVersion,cause:t});if(t)throw t}};function ms({copyEngine:e=!0},t){let r;try{r=wt({inlineDatasources:t.inlineDatasources,overrideDatasources:t.overrideDatasources,env:{...t.env,...y.env},clientVersion:t.clientVersion})}catch(u){}e&&(r!=null&&r.startsWith("prisma://"))&&It("recommend--no-engine","In production, we recommend using `prisma generate --no-engine` (See: `prisma generate --help`)");let n=Rt(t.generator),i=!!(r!=null&&r.startsWith("prisma://")||!e),o=!!t.adapter,s=n==="library",a=n==="binary";if(i&&o||o){let u;throw u=["Prisma Client was configured to use the `adapter` option but it was imported via its `/edge` endpoint.","Please either remove the `/edge` endpoint or remove the `adapter` from the Prisma Client constructor."],new Z(u.join(` +`),{clientVersion:t.clientVersion})}if(i)return new tr(t);throw new Z("Invalid client engine type, please use `library` or `binary`",{clientVersion:t.clientVersion})}d();c();p();f();m();function Fr({generator:e}){var t;return(t=e==null?void 0:e.previewFeatures)!=null?t:[]}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var Es=Ve(Un());d();c();p();f();m();function ys(e,t){let r=ws(e),n=Hl(r),i=Kl(n);i?Br(i,t):t.addErrorMessage(()=>"Unknown error")}function ws(e){return e.errors.flatMap(t=>t.kind==="Union"?ws(t):[t])}function Hl(e){let t=new Map,r=[];for(let n of e){if(n.kind!=="InvalidArgumentType"){r.push(n);continue}let i=`${n.selectionPath.join(".")}:${n.argumentPath.join(".")}`,o=t.get(i);o?t.set(i,{...n,argument:{...n.argument,typeNames:Wl(o.argument.typeNames,n.argument.typeNames)}}):t.set(i,n)}return r.push(...t.values()),r}function Wl(e,t){return[...new Set(e.concat(t))]}function Kl(e){return pn(e,(t,r)=>{let n=gs(t),i=gs(r);return n!==i?n-i:hs(t)-hs(r)})}function gs(e){let t=0;return Array.isArray(e.selectionPath)&&(t+=e.selectionPath.length),Array.isArray(e.argumentPath)&&(t+=e.argumentPath.length),t}function hs(e){switch(e.kind){case"InvalidArgumentValue":case"ValueTooLarge":return 20;case"InvalidArgumentType":return 10;case"RequiredArgumentMissing":return-10;default:return 0}}d();c();p();f();m();var Re=class{constructor(t,r){this.name=t;this.value=r;this.isRequired=!1}makeRequired(){return this.isRequired=!0,this}write(t){let{colors:{green:r}}=t.context;t.addMarginSymbol(r(this.isRequired?"+":"?")),t.write(r(this.name)),this.isRequired||t.write(r("?")),t.write(r(": ")),typeof this.value=="string"?t.write(r(this.value)):t.write(this.value)}};d();c();p();f();m();var $r=class{constructor(){this.fields=[]}addField(t,r){return this.fields.push({write(n){let{green:i,dim:o}=n.context.colors;n.write(i(o(`${t}: ${r}`))).addMarginSymbol(i(o("+")))}}),this}write(t){let{colors:{green:r}}=t.context;t.writeLine(r("{")).withIndent(()=>{t.writeJoined(dt,this.fields).newLine()}).write(r("}")).addMarginSymbol(r("+"))}};function Br(e,t){switch(e.kind){case"IncludeAndSelect":zl(e,t);break;case"IncludeOnScalar":Yl(e,t);break;case"EmptySelection":Zl(e,t);break;case"UnknownSelectionField":Xl(e,t);break;case"UnknownArgument":ec(e,t);break;case"UnknownInputField":tc(e,t);break;case"RequiredArgumentMissing":rc(e,t);break;case"InvalidArgumentType":nc(e,t);break;case"InvalidArgumentValue":ic(e,t);break;case"ValueTooLarge":oc(e,t);break;case"SomeFieldsMissing":sc(e,t);break;case"TooManyFieldsGiven":ac(e,t);break;case"Union":ys(e,t);break;default:throw new Error("not implemented: "+e.kind)}}function zl(e,t){var n,i;let r=t.arguments.getDeepSubSelectionValue(e.selectionPath);r&&r instanceof z&&((n=r.getField("include"))==null||n.markAsError(),(i=r.getField("select"))==null||i.markAsError()),t.addErrorMessage(o=>`Please ${o.bold("either")} use ${o.green("`include`")} or ${o.green("`select`")}, but ${o.red("not both")} at the same time.`)}function Yl(e,t){var s,a;let[r,n]=qr(e.selectionPath),i=e.outputType,o=(s=t.arguments.getDeepSelectionParent(r))==null?void 0:s.value;if(o&&((a=o.getField(n))==null||a.markAsError(),i))for(let u of i.fields)u.isRelation&&o.addSuggestion(new Re(u.name,"true"));t.addErrorMessage(u=>{let l=`Invalid scalar field ${u.red(`\`${n}\``)} for ${u.bold("include")} statement`;return i?l+=` on model ${u.bold(i.name)}. ${rr(u)}`:l+=".",l+=` +Note that ${u.bold("include")} statements only accept relation fields.`,l})}function Zl(e,t){var o,s;let r=e.outputType,n=(o=t.arguments.getDeepSelectionParent(e.selectionPath))==null?void 0:o.value,i=(s=n==null?void 0:n.isEmpty())!=null?s:!1;n&&(n.removeAllFields(),Ps(n,r)),t.addErrorMessage(a=>i?`The ${a.red("`select`")} statement for type ${a.bold(r.name)} must not be empty. ${rr(a)}`:`The ${a.red("`select`")} statement for type ${a.bold(r.name)} needs ${a.bold("at least one truthy value")}.`)}function Xl(e,t){var o;let[r,n]=qr(e.selectionPath),i=t.arguments.getDeepSelectionParent(r);i&&((o=i.value.getField(n))==null||o.markAsError(),Ps(i.value,e.outputType)),t.addErrorMessage(s=>{let a=[`Unknown field ${s.red(`\`${n}\``)}`];return i&&a.push(`for ${s.bold(i.kind)} statement`),a.push(`on model ${s.bold(`\`${e.outputType.name}\``)}.`),a.push(rr(s)),a.join(" ")})}function ec(e,t){var i;let r=e.argumentPath[0],n=t.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof z&&((i=n.getField(r))==null||i.markAsError(),uc(n,e.arguments)),t.addErrorMessage(o=>bs(o,r,e.arguments.map(s=>s.name)))}function tc(e,t){var o;let[r,n]=qr(e.argumentPath),i=t.arguments.getDeepSubSelectionValue(e.selectionPath);if(i instanceof z){(o=i.getDeepField(e.argumentPath))==null||o.markAsError();let s=i.getDeepFieldValue(r);s instanceof z&&vs(s,e.inputType)}t.addErrorMessage(s=>bs(s,n,e.inputType.fields.map(a=>a.name)))}function bs(e,t,r){let n=[`Unknown argument \`${e.red(t)}\`.`],i=cc(t,r);return i&&n.push(`Did you mean \`${e.green(i)}\`?`),r.length>0&&n.push(rr(e)),n.join(" ")}function rc(e,t){let r;t.addErrorMessage(u=>(r==null?void 0:r.value)instanceof Y&&r.value.text==="null"?`Argument \`${u.green(o)}\` must not be ${u.red("null")}.`:`Argument \`${u.green(o)}\` is missing.`);let n=t.arguments.getDeepSubSelectionValue(e.selectionPath);if(!(n instanceof z))return;let[i,o]=qr(e.argumentPath),s=new $r,a=n.getDeepFieldValue(i);if(a instanceof z)if(r=a.getField(o),r&&a.removeField(o),e.inputTypes.length===1&&e.inputTypes[0].kind==="object"){for(let u of e.inputTypes[0].fields)s.addField(u.name,u.typeNames.join(" | "));a.addSuggestion(new Re(o,s).makeRequired())}else{let u=e.inputTypes.map(xs).join(" | ");a.addSuggestion(new Re(o,u).makeRequired())}}function xs(e){return e.kind==="list"?`${xs(e.elementType)}[]`:e.name}function nc(e,t){var i;let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof z&&((i=n.getDeepFieldValue(e.argumentPath))==null||i.markAsError()),t.addErrorMessage(o=>{let s=Ur("or",e.argument.typeNames.map(a=>o.green(a)));return`Argument \`${o.bold(r)}\`: Invalid value provided. Expected ${s}, provided ${o.red(e.inferredType)}.`})}function ic(e,t){var i;let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof z&&((i=n.getDeepFieldValue(e.argumentPath))==null||i.markAsError()),t.addErrorMessage(o=>{let s=[`Invalid value for argument \`${o.bold(r)}\``];if(e.underlyingError&&s.push(`: ${e.underlyingError}`),s.push("."),e.argument.typeNames.length>0){let a=Ur("or",e.argument.typeNames.map(u=>o.green(u)));s.push(` Expected ${a}.`)}return s.join("")})}function oc(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath),i;if(n instanceof z){let o=n.getDeepField(e.argumentPath),s=o==null?void 0:o.value;s==null||s.markAsError(),s instanceof Y&&(i=s.text)}t.addErrorMessage(o=>{let s=["Unable to fit value"];return i&&s.push(o.red(i)),s.push(`into a 64-bit signed integer for field \`${o.bold(r)}\``),s.join(" ")})}function sc(e,t){let r=e.argumentPath[e.argumentPath.length-1],n=t.arguments.getDeepSubSelectionValue(e.selectionPath);if(n instanceof z){let i=n.getDeepFieldValue(e.argumentPath);i instanceof z&&vs(i,e.inputType)}t.addErrorMessage(i=>{let o=[`Argument \`${i.bold(r)}\` of type ${i.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1?e.constraints.requiredFields?o.push(`${i.green("at least one of")} ${Ur("or",e.constraints.requiredFields.map(s=>`\`${i.bold(s)}\``))} arguments.`):o.push(`${i.green("at least one")} argument.`):o.push(`${i.green(`at least ${e.constraints.minFieldCount}`)} arguments.`),o.push(rr(i)),o.join(" ")})}function ac(e,t){let r=e.argumentPath[e.argumentPath.length-1],n=t.arguments.getDeepSubSelectionValue(e.selectionPath),i=[];if(n instanceof z){let o=n.getDeepFieldValue(e.argumentPath);o instanceof z&&(o.markAsError(),i=Object.keys(o.getFields()))}t.addErrorMessage(o=>{let s=[`Argument \`${o.bold(r)}\` of type ${o.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1&&e.constraints.maxFieldCount==1?s.push(`${o.green("exactly one")} argument,`):e.constraints.maxFieldCount==1?s.push(`${o.green("at most one")} argument,`):s.push(`${o.green(`at most ${e.constraints.maxFieldCount}`)} arguments,`),s.push(`but you provided ${Ur("and",i.map(a=>o.red(a)))}. Please choose`),e.constraints.maxFieldCount===1?s.push("one."):s.push(`${e.constraints.maxFieldCount}.`),s.join(" ")})}function Ps(e,t){for(let r of t.fields)e.hasField(r.name)||e.addSuggestion(new Re(r.name,"true"))}function uc(e,t){for(let r of t)e.hasField(r.name)||e.addSuggestion(new Re(r.name,r.typeNames.join(" | ")))}function vs(e,t){if(t.kind==="object")for(let r of t.fields)e.hasField(r.name)||e.addSuggestion(new Re(r.name,r.typeNames.join(" | ")))}function qr(e){let t=[...e],r=t.pop();if(!r)throw new Error("unexpected empty path");return[t,r]}function rr({green:e,enabled:t}){return"Available options are "+(t?`listed in ${e("green")}`:"marked with ?")+"."}function Ur(e,t){if(t.length===1)return t[0];let r=[...t],n=r.pop();return`${r.join(", ")} ${e} ${n}`}var lc=3;function cc(e,t){let r=1/0,n;for(let i of t){let o=(0,Es.default)(e,i);o>lc||o({name:t.name,typeName:"boolean",isRelation:t.kind==="object"}))}}isRawAction(){return["executeRaw","queryRaw","runCommandRaw","findRaw","aggregateRaw"].includes(this.params.action)}getComputedFields(){if(this.params.modelName)return this.params.extensions.getAllComputedFields(this.params.modelName)}findField(t){var r;return(r=this.model)==null?void 0:r.fields.find(n=>n.name===t)}nestSelection(t){let r=this.findField(t),n=(r==null?void 0:r.kind)==="object"?r.type:void 0;return new e({...this.params,modelName:n,selectionPath:this.params.selectionPath.concat(t)})}nestArgument(t){return new e({...this.params,argumentPath:this.params.argumentPath.concat(t)})}};d();c();p();f();m();var Rs=e=>({command:e});d();c();p();f();m();d();c();p();f();m();var Ss=e=>e.strings.reduce((t,r,n)=>`${t}@P${n}${r}`);d();c();p();f();m();function nr(e){try{return Is(e,"fast")}catch(t){return Is(e,"slow")}}function Is(e,t){return JSON.stringify(e.map(r=>Ec(r,t)))}function Ec(e,t){return typeof e=="bigint"?{prisma__type:"bigint",prisma__value:e.toString()}:lt(e)?{prisma__type:"date",prisma__value:e.toJSON()}:ye.isDecimal(e)?{prisma__type:"decimal",prisma__value:e.toJSON()}:w.Buffer.isBuffer(e)?{prisma__type:"bytes",prisma__value:e.toString("base64")}:bc(e)||ArrayBuffer.isView(e)?{prisma__type:"bytes",prisma__value:w.Buffer.from(e).toString("base64")}:typeof e=="object"&&t==="slow"?Ds(e):e}function bc(e){return e instanceof ArrayBuffer||e instanceof SharedArrayBuffer?!0:typeof e=="object"&&e!==null?e[Symbol.toStringTag]==="ArrayBuffer"||e[Symbol.toStringTag]==="SharedArrayBuffer":!1}function Ds(e){if(typeof e!="object"||e===null)return e;if(typeof e.toJSON=="function")return e.toJSON();if(Array.isArray(e))return e.map(ks);let t={};for(let r of Object.keys(e))t[r]=ks(e[r]);return t}function ks(e){return typeof e=="bigint"?e.toString():Ds(e)}var xc=/^(\s*alter\s)/i,Ms=ne("prisma:client");function Jn(e,t,r,n){if(!(e!=="postgresql"&&e!=="cockroachdb")&&r.length>0&&xc.exec(t))throw new Error(`Running ALTER using ${n} is not supported +Using the example below you can still execute your query with Prisma, but please note that it is vulnerable to SQL injection attacks and requires you to take care of input sanitization. + +Example: + await prisma.$executeRawUnsafe(\`ALTER USER prisma WITH PASSWORD '\${password}'\`) + +More Information: https://pris.ly/d/execute-raw +`)}var Qn=({clientMethod:e,activeProvider:t})=>r=>{let n="",i;if(Array.isArray(r)){let[o,...s]=r;n=o,i={values:nr(s||[]),__prismaRawParameters__:!0}}else switch(t){case"sqlite":case"mysql":{n=r.sql,i={values:nr(r.values),__prismaRawParameters__:!0};break}case"cockroachdb":case"postgresql":case"postgres":{n=r.text,i={values:nr(r.values),__prismaRawParameters__:!0};break}case"sqlserver":{n=Ss(r),i={values:nr(r.values),__prismaRawParameters__:!0};break}default:throw new Error(`The ${t} provider does not support ${e}`)}return i!=null&&i.values?Ms(`prisma.${e}(${n}, ${i.values})`):Ms(`prisma.${e}(${n})`),{query:n,parameters:i}},Os={requestArgsToMiddlewareArgs(e){return[e.strings,...e.values]},middlewareArgsToRequestArgs(e){let[t,...r]=e;return new ae(t,r)}},Ns={requestArgsToMiddlewareArgs(e){return[e]},middlewareArgsToRequestArgs(e){return e[0]}};d();c();p();f();m();function Gn(e){return function(r){let n,i=(o=e)=>{try{return o===void 0||(o==null?void 0:o.kind)==="itx"?n!=null?n:n=_s(r(o)):_s(r(o))}catch(s){return Promise.reject(s)}};return{then(o,s){return i().then(o,s)},catch(o){return i().catch(o)},finally(o){return i().finally(o)},requestTransaction(o){let s=i(o);return s.requestTransaction?s.requestTransaction(o):s},[Symbol.toStringTag]:"PrismaPromise"}}}function _s(e){return typeof e.then=="function"?e:Promise.resolve(e)}d();c();p();f();m();var Ls={isEnabled(){return!1},getTraceParent(){return"00-10-10-00"},async createEngineSpan(){},getActiveContext(){},runInChildSpan(e,t){return t()}},Hn=class{isEnabled(){return this.getGlobalTracingHelper().isEnabled()}getTraceParent(t){return this.getGlobalTracingHelper().getTraceParent(t)}createEngineSpan(t){return this.getGlobalTracingHelper().createEngineSpan(t)}getActiveContext(){return this.getGlobalTracingHelper().getActiveContext()}runInChildSpan(t,r){return this.getGlobalTracingHelper().runInChildSpan(t,r)}getGlobalTracingHelper(){var t,r;return(r=(t=globalThis.PRISMA_INSTRUMENTATION)==null?void 0:t.helper)!=null?r:Ls}};function Fs(e){return e.includes("tracing")?new Hn:Ls}d();c();p();f();m();function Bs(e,t=()=>{}){let r,n=new Promise(i=>r=i);return{then(i){return--e===0&&r(t()),i==null?void 0:i(n)}}}d();c();p();f();m();var Pc=["$connect","$disconnect","$on","$transaction","$use","$extends"],$s=Pc;d();c();p();f();m();function qs(e){return typeof e=="string"?e:e.reduce((t,r)=>{let n=typeof r=="string"?r:r.level;return n==="query"?t:t&&(r==="info"||t==="info")?"info":n},void 0)}d();c();p();f();m();var jr=class{constructor(){this._middlewares=[]}use(t){this._middlewares.push(t)}get(t){return this._middlewares[t]}has(t){return!!this._middlewares[t]}length(){return this._middlewares.length}};d();c();p();f();m();var Vs=Ve(Xi());d();c();p();f();m();function Jr(e){return typeof e.batchRequestIdx=="number"}d();c();p();f();m();function Qr(e){return e===null?e:Array.isArray(e)?e.map(Qr):typeof e=="object"?vc(e)?Tc(e):st(e,Qr):e}function vc(e){return e!==null&&typeof e=="object"&&typeof e.$type=="string"}function Tc({$type:e,value:t}){switch(e){case"BigInt":return BigInt(t);case"Bytes":return w.Buffer.from(t,"base64");case"DateTime":return new Date(t);case"Decimal":return new ye(t);case"Json":return JSON.parse(t);default:Je(t,"Unknown tagged value")}}d();c();p();f();m();function Us(e){if(e.action!=="findUnique"&&e.action!=="findUniqueOrThrow")return;let t=[];return e.modelName&&t.push(e.modelName),e.query.arguments&&t.push(Wn(e.query.arguments)),t.push(Wn(e.query.selection)),t.join("")}function Wn(e){return`(${Object.keys(e).sort().map(r=>{let n=e[r];return typeof n=="object"&&n!==null?`(${r} ${Wn(n)})`:r}).join(" ")})`}d();c();p();f();m();var Cc={aggregate:!1,aggregateRaw:!1,createMany:!0,createOne:!0,deleteMany:!0,deleteOne:!0,executeRaw:!0,findFirst:!1,findFirstOrThrow:!1,findMany:!1,findRaw:!1,findUnique:!1,findUniqueOrThrow:!1,groupBy:!1,queryRaw:!1,runCommandRaw:!0,updateMany:!0,updateOne:!0,upsertOne:!0};function Kn(e){return Cc[e]}d();c();p();f();m();var Gr=class{constructor(t){this.options=t;this.tickActive=!1;this.batches={}}request(t){let r=this.options.batchBy(t);return r?(this.batches[r]||(this.batches[r]=[],this.tickActive||(this.tickActive=!0,y.nextTick(()=>{this.dispatchBatches(),this.tickActive=!1}))),new Promise((n,i)=>{this.batches[r].push({request:t,resolve:n,reject:i})})):this.options.singleLoader(t)}dispatchBatches(){for(let t in this.batches){let r=this.batches[t];delete this.batches[t],r.length===1?this.options.singleLoader(r[0].request).then(n=>{n instanceof Error?r[0].reject(n):r[0].resolve(n)}).catch(n=>{r[0].reject(n)}):(r.sort((n,i)=>this.options.batchOrder(n.request,i.request)),this.options.batchLoader(r.map(n=>n.request)).then(n=>{if(n instanceof Error)for(let i=0;i{for(let i=0;i{let{transaction:o,otelParentCtx:s}=n[0],a=n.map(h=>h.protocolQuery),u=this.client._tracingHelper.getTraceParent(s),l=n.some(h=>Kn(h.protocolQuery.action));return(await this.client._engine.requestBatch(a,{traceparent:u,transaction:Rc(o),containsWrite:l,customDataProxyFetch:i})).map((h,v)=>{if(h instanceof Error)return h;try{return this.mapQueryEngineResult(n[v],h)}catch(S){return S}})}),singleLoader:async n=>{var s;let i=((s=n.transaction)==null?void 0:s.kind)==="itx"?js(n.transaction):void 0,o=await this.client._engine.request(n.protocolQuery,{traceparent:this.client._tracingHelper.getTraceParent(),interactiveTransaction:i,isWrite:Kn(n.protocolQuery.action),customDataProxyFetch:n.customDataProxyFetch});return this.mapQueryEngineResult(n,o)},batchBy:n=>{var i;return(i=n.transaction)!=null&&i.id?`transaction-${n.transaction.id}`:Us(n.protocolQuery)},batchOrder(n,i){var o,s;return((o=n.transaction)==null?void 0:o.kind)==="batch"&&((s=i.transaction)==null?void 0:s.kind)==="batch"?n.transaction.index-i.transaction.index:0}})}async request(t){try{return await this.dataloader.request(t)}catch(r){let{clientMethod:n,callsite:i,transaction:o,args:s,modelName:a}=t;this.handleAndLogRequestError({error:r,clientMethod:n,callsite:i,transaction:o,args:s,modelName:a})}}mapQueryEngineResult({dataPath:t,unpacker:r},n){let i=n==null?void 0:n.data,o=n==null?void 0:n.elapsed,s=this.unpack(i,t,r);return y.env.PRISMA_CLIENT_GET_TIME?{data:s,elapsed:o}:s}handleAndLogRequestError(t){try{this.handleRequestError(t)}catch(r){throw this.logEmitter&&this.logEmitter.emit("error",{message:r.message,target:t.clientMethod,timestamp:new Date}),r}}handleRequestError({error:t,clientMethod:r,callsite:n,transaction:i,args:o,modelName:s}){if(Ac(t),Sc(t,i)||t instanceof Pe)throw t;if(t instanceof K&&Ic(t)){let u=Js(t.meta);Vr({args:o,errors:[u],callsite:n,errorFormat:this.client._errorFormat,originalMethod:r,clientVersion:this.client._clientVersion})}let a=t.message;if(n&&(a=yt({callsite:n,originalMethod:r,isPanic:t.isPanic,showColors:this.client._errorFormat==="pretty",message:a})),a=this.sanitizeMessage(a),t.code){let u=s?{modelName:s,...t.meta}:t.meta;throw new K(a,{code:t.code,clientVersion:this.client._clientVersion,meta:u,batchRequestIdx:t.batchRequestIdx})}else{if(t.isPanic)throw new ve(a,this.client._clientVersion);if(t instanceof se)throw new se(a,{clientVersion:this.client._clientVersion,batchRequestIdx:t.batchRequestIdx});if(t instanceof G)throw new G(a,this.client._clientVersion);if(t instanceof ve)throw new ve(a,this.client._clientVersion)}throw t.clientVersion=this.client._clientVersion,t}sanitizeMessage(t){return this.client._errorFormat&&this.client._errorFormat!=="pretty"?(0,Vs.default)(t):t}unpack(t,r,n){if(!t||(t.data&&(t=t.data),!t))return t;let i=Object.values(t)[0],o=r.filter(a=>a!=="select"&&a!=="include"),s=Qr(Rn(i,o));return n?n(s):s}get[Symbol.toStringTag](){return"RequestHandler"}};function Rc(e){if(e){if(e.kind==="batch")return{kind:"batch",options:{isolationLevel:e.isolationLevel}};if(e.kind==="itx")return{kind:"itx",options:js(e)};Je(e,"Unknown transaction kind")}}function js(e){return{id:e.id,payload:e.payload}}function Sc(e,t){return Jr(e)&&(t==null?void 0:t.kind)==="batch"&&e.batchRequestIdx!==t.index}function Ic(e){return e.code==="P2009"||e.code==="P2012"}function Js(e){if(e.kind==="Union")return{kind:"Union",errors:e.errors.map(Js)};if(Array.isArray(e.selectionPath)){let[,...t]=e.selectionPath;return{...e,selectionPath:t}}return e}d();c();p();f();m();var Qs="5.10.2";var Gs=Qs;d();c();p();f();m();function Hs(e){return e.map(t=>{let r={};for(let n of Object.keys(t))r[n]=Ws(t[n]);return r})}function Ws({prisma__type:e,prisma__value:t}){switch(e){case"bigint":return BigInt(t);case"bytes":return w.Buffer.from(t,"base64");case"decimal":return new ye(t);case"datetime":case"date":return new Date(t);case"time":return new Date(`1970-01-01T${t}Z`);case"array":return t.map(Ws);default:return t}}d();c();p();f();m();var Zs=Ve(Un());d();c();p();f();m();var J=class extends Error{constructor(t){super(t+` +Read more at https://pris.ly/d/client-constructor`),this.name="PrismaClientConstructorValidationError"}get[Symbol.toStringTag](){return"PrismaClientConstructorValidationError"}};N(J,"PrismaClientConstructorValidationError");var Ks=["datasources","datasourceUrl","errorFormat","adapter","log","transactionOptions","__internal"],zs=["pretty","colorless","minimal"],Ys=["info","query","warn","error"],Dc={datasources:(e,{datasourceNames:t})=>{if(e){if(typeof e!="object"||Array.isArray(e))throw new J(`Invalid value ${JSON.stringify(e)} for "datasources" provided to PrismaClient constructor`);for(let[r,n]of Object.entries(e)){if(!t.includes(r)){let i=Pt(r,t)||` Available datasources: ${t.join(", ")}`;throw new J(`Unknown datasource ${r} provided to PrismaClient constructor.${i}`)}if(typeof n!="object"||Array.isArray(n))throw new J(`Invalid value ${JSON.stringify(e)} for datasource "${r}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`);if(n&&typeof n=="object")for(let[i,o]of Object.entries(n)){if(i!=="url")throw new J(`Invalid value ${JSON.stringify(e)} for datasource "${r}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`);if(typeof o!="string")throw new J(`Invalid value ${JSON.stringify(o)} for datasource "${r}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`)}}}},adapter:(e,t)=>{if(e===null)return;if(e===void 0)throw new J('"adapter" property must not be undefined, use null to conditionally disable driver adapters.');if(!Fr(t).includes("driverAdapters"))throw new J('"adapter" property can only be provided to PrismaClient constructor when "driverAdapters" preview feature is enabled.');if(Rt()==="binary")throw new J('Cannot use a driver adapter with the "binary" Query Engine. Please use the "library" Query Engine.')},datasourceUrl:e=>{if(typeof e!="undefined"&&typeof e!="string")throw new J(`Invalid value ${JSON.stringify(e)} for "datasourceUrl" provided to PrismaClient constructor. +Expected string or undefined.`)},errorFormat:e=>{if(e){if(typeof e!="string")throw new J(`Invalid value ${JSON.stringify(e)} for "errorFormat" provided to PrismaClient constructor.`);if(!zs.includes(e)){let t=Pt(e,zs);throw new J(`Invalid errorFormat ${e} provided to PrismaClient constructor.${t}`)}}},log:e=>{if(!e)return;if(!Array.isArray(e))throw new J(`Invalid value ${JSON.stringify(e)} for "log" provided to PrismaClient constructor.`);function t(r){if(typeof r=="string"&&!Ys.includes(r)){let n=Pt(r,Ys);throw new J(`Invalid log level "${r}" provided to PrismaClient constructor.${n}`)}}for(let r of e){t(r);let n={level:t,emit:i=>{let o=["stdout","event"];if(!o.includes(i)){let s=Pt(i,o);throw new J(`Invalid value ${JSON.stringify(i)} for "emit" in logLevel provided to PrismaClient constructor.${s}`)}}};if(r&&typeof r=="object")for(let[i,o]of Object.entries(r))if(n[i])n[i](o);else throw new J(`Invalid property ${i} for "log" provided to PrismaClient constructor`)}},transactionOptions:e=>{if(!e)return;let t=e.maxWait;if(t!=null&&t<=0)throw new J(`Invalid value ${t} for maxWait in "transactionOptions" provided to PrismaClient constructor. maxWait needs to be greater than 0`);let r=e.timeout;if(r!=null&&r<=0)throw new J(`Invalid value ${r} for timeout in "transactionOptions" provided to PrismaClient constructor. timeout needs to be greater than 0`)},__internal:e=>{if(!e)return;let t=["debug","engine","configOverride"];if(typeof e!="object")throw new J(`Invalid value ${JSON.stringify(e)} for "__internal" to PrismaClient constructor`);for(let[r]of Object.entries(e))if(!t.includes(r)){let n=Pt(r,t);throw new J(`Invalid property ${JSON.stringify(r)} for "__internal" provided to PrismaClient constructor.${n}`)}}};function Xs(e,t){for(let[r,n]of Object.entries(e)){if(!Ks.includes(r)){let i=Pt(r,Ks);throw new J(`Unknown property ${r} provided to PrismaClient constructor.${i}`)}Dc[r](n,t)}if(e.datasourceUrl&&e.datasources)throw new J('Can not use "datasourceUrl" and "datasources" options at the same time. Pick one of them')}function Pt(e,t){if(t.length===0||typeof e!="string")return"";let r=Mc(e,t);return r?` Did you mean "${r}"?`:""}function Mc(e,t){if(t.length===0)return null;let r=t.map(i=>({value:i,distance:(0,Zs.default)(e,i)}));r.sort((i,o)=>i.distance{let n=new Array(e.length),i=null,o=!1,s=0,a=()=>{o||(s++,s===e.length&&(o=!0,i?r(i):t(n)))},u=l=>{o||(o=!0,r(l))};for(let l=0;l{n[l]=g,a()},g=>{if(!Jr(g)){u(g);return}g.batchRequestIdx===l?u(g):(i||(i=g),a())})})}var Be=ne("prisma:client");typeof globalThis=="object"&&(globalThis.NODE_CLIENT=!0);var Oc={requestArgsToMiddlewareArgs:e=>e,middlewareArgsToRequestArgs:e=>e},Nc=Symbol.for("prisma.client.transaction.id"),_c={id:0,nextId(){return++this.id}};function na(e){class t{constructor(n){this._originalClient=this;this._middlewares=new jr;this._createPrismaPromise=Gn();this.$extends=Uo;var u,l,g,h,v,S,A,R,D,M,B,I,L,ee;e=(g=(l=(u=n==null?void 0:n.__internal)==null?void 0:u.configOverride)==null?void 0:l.call(u,e))!=null?g:e,ns(e),n&&Xs(n,e);let i=n!=null&&n.adapter?hn(n.adapter):void 0,o=new fr().on("error",()=>{});this._extensions=Nr.empty(),this._previewFeatures=Fr(e),this._clientVersion=(h=e.clientVersion)!=null?h:Gs,this._activeProvider=e.activeProvider,this._tracingHelper=Fs(this._previewFeatures);let s={rootEnvPath:e.relativeEnvPaths.rootEnvPath&&At.resolve(e.dirname,e.relativeEnvPaths.rootEnvPath),schemaEnvPath:e.relativeEnvPaths.schemaEnvPath&&At.resolve(e.dirname,e.relativeEnvPaths.schemaEnvPath)},a=(v=e.injectableEdgeEnv)==null?void 0:v.call(e);try{let F=n!=null?n:{},Ze=(S=F.__internal)!=null?S:{},$e=Ze.debug===!0;$e&&ne.enable("prisma:client");let fe=At.resolve(e.dirname,e.relativePath);bi.existsSync(fe)||(fe=e.dirname),Be("dirname",e.dirname),Be("relativePath",e.relativePath),Be("cwd",fe);let qe=Ze.engine||{};if(F.errorFormat?this._errorFormat=F.errorFormat:y.env.NODE_ENV==="production"?this._errorFormat="minimal":y.env.NO_COLOR?this._errorFormat="colorless":this._errorFormat="colorless",this._runtimeDataModel=e.runtimeDataModel,this._engineConfig={cwd:fe,dirname:e.dirname,enableDebugLogs:$e,allowTriggerPanic:qe.allowTriggerPanic,datamodelPath:At.join(e.dirname,(A=e.filename)!=null?A:"schema.prisma"),prismaPath:(R=qe.binaryPath)!=null?R:void 0,engineEndpoint:qe.endpoint,generator:e.generator,showColors:this._errorFormat==="pretty",logLevel:F.log&&qs(F.log),logQueries:F.log&&!!(typeof F.log=="string"?F.log==="query":F.log.find(Q=>typeof Q=="string"?Q==="query":Q.level==="query")),env:(D=a==null?void 0:a.parsed)!=null?D:{},flags:[],engineWasm:e.engineWasm,clientVersion:e.clientVersion,engineVersion:e.engineVersion,previewFeatures:this._previewFeatures,activeProvider:e.activeProvider,inlineSchema:e.inlineSchema,overrideDatasources:is(F,e.datasourceNames),inlineDatasources:e.inlineDatasources,inlineSchemaHash:e.inlineSchemaHash,tracingHelper:this._tracingHelper,transactionOptions:{maxWait:(B=(M=F.transactionOptions)==null?void 0:M.maxWait)!=null?B:2e3,timeout:(L=(I=F.transactionOptions)==null?void 0:I.timeout)!=null?L:5e3,isolationLevel:(ee=F.transactionOptions)==null?void 0:ee.isolationLevel},logEmitter:o,isBundled:e.isBundled,adapter:i},this._accelerateEngineConfig={...this._engineConfig,accelerateUtils:{resolveDatasourceUrl:wt,getBatchRequestPayload:yr,prismaGraphQLToJSError:qt,PrismaClientUnknownRequestError:se,PrismaClientInitializationError:G,PrismaClientKnownRequestError:K,debug:ne("prisma:client:accelerateEngine"),engineVersion:ra.version,clientVersion:e.clientVersion}},Be("clientVersion",e.clientVersion),this._engine=ms(e,this._engineConfig),this._requestHandler=new Hr(this,o),F.log)for(let Q of F.log){let Se=typeof Q=="string"?Q:Q.emit==="stdout"?Q.level:null;Se&&this.$on(Se,Ue=>{var Xe;ot.log(`${(Xe=ot.tags[Se])!=null?Xe:""}`,Ue.message||Ue.query)})}this._metrics=new at(this._engine)}catch(F){throw F.clientVersion=this._clientVersion,F}return this._appliedParent=Ut(this)}get[Symbol.toStringTag](){return"PrismaClient"}$use(n){this._middlewares.use(n)}$on(n,i){n==="beforeExit"?this._engine.onBeforeExit(i):n&&this._engineConfig.logEmitter.on(n,i)}$connect(){try{return this._engine.start()}catch(n){throw n.clientVersion=this._clientVersion,n}}async $disconnect(){try{await this._engine.stop()}catch(n){throw n.clientVersion=this._clientVersion,n}finally{Vi()}}$executeRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"executeRaw",args:o,transaction:n,clientMethod:i,argsMapper:Qn({clientMethod:i,activeProvider:a}),callsite:Fe(this._errorFormat),dataPath:[],middlewareArgsMapper:s})}$executeRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0){let[s,a]=ta(n,i);return Jn(this._activeProvider,s.text,s.values,Array.isArray(n)?"prisma.$executeRaw``":"prisma.$executeRaw(sql``)"),this.$executeRawInternal(o,"$executeRaw",s,a)}throw new Z("`$executeRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#executeraw\n",{clientVersion:this._clientVersion})})}$executeRawUnsafe(n,...i){return this._createPrismaPromise(o=>(Jn(this._activeProvider,n,i,"prisma.$executeRawUnsafe(, [...values])"),this.$executeRawInternal(o,"$executeRawUnsafe",[n,...i])))}$runCommandRaw(n){if(e.activeProvider!=="mongodb")throw new Z(`The ${e.activeProvider} provider does not support $runCommandRaw. Use the mongodb provider.`,{clientVersion:this._clientVersion});return this._createPrismaPromise(i=>this._request({args:n,clientMethod:"$runCommandRaw",dataPath:[],action:"runCommandRaw",argsMapper:Rs,callsite:Fe(this._errorFormat),transaction:i}))}async $queryRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"queryRaw",args:o,transaction:n,clientMethod:i,argsMapper:Qn({clientMethod:i,activeProvider:a}),callsite:Fe(this._errorFormat),dataPath:[],middlewareArgsMapper:s}).then(Hs)}$queryRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0)return this.$queryRawInternal(o,"$queryRaw",...ta(n,i));throw new Z("`$queryRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#queryraw\n",{clientVersion:this._clientVersion})})}$queryRawUnsafe(n,...i){return this._createPrismaPromise(o=>this.$queryRawInternal(o,"$queryRawUnsafe",[n,...i]))}_transactionWithArray({promises:n,options:i}){let o=_c.nextId(),s=Bs(n.length),a=n.map((u,l)=>{var v,S,A;if((u==null?void 0:u[Symbol.toStringTag])!=="PrismaPromise")throw new Error("All elements of the array need to be Prisma Client promises. Hint: Please make sure you are not awaiting the Prisma client calls you intended to pass in the $transaction function.");let g=(v=i==null?void 0:i.isolationLevel)!=null?v:this._engineConfig.transactionOptions.isolationLevel,h={kind:"batch",id:o,index:l,isolationLevel:g,lock:s};return(A=(S=u.requestTransaction)==null?void 0:S.call(u,h))!=null?A:u});return ea(a)}async _transactionWithCallback({callback:n,options:i}){var l,g,h;let o={traceparent:this._tracingHelper.getTraceParent()},s={maxWait:(l=i==null?void 0:i.maxWait)!=null?l:this._engineConfig.transactionOptions.maxWait,timeout:(g=i==null?void 0:i.timeout)!=null?g:this._engineConfig.transactionOptions.timeout,isolationLevel:(h=i==null?void 0:i.isolationLevel)!=null?h:this._engineConfig.transactionOptions.isolationLevel},a=await this._engine.transaction("start",o,s),u;try{let v={kind:"itx",...a};u=await n(this._createItxClient(v)),await this._engine.transaction("commit",o,a)}catch(v){throw await this._engine.transaction("rollback",o,a).catch(()=>{}),v}return u}_createItxClient(n){return Ut(ge(qo(this),[ie("_appliedParent",()=>this._appliedParent._createItxClient(n)),ie("_createPrismaPromise",()=>Gn(n)),ie(Nc,()=>n.id),Ft($s)]))}$transaction(n,i){let o;typeof n=="function"?o=()=>this._transactionWithCallback({callback:n,options:i}):o=()=>this._transactionWithArray({promises:n,options:i});let s={name:"transaction",attributes:{method:"$transaction"}};return this._tracingHelper.runInChildSpan(s,o)}_request(n){var l;n.otelParentCtx=this._tracingHelper.getActiveContext();let i=(l=n.middlewareArgsMapper)!=null?l:Oc,o={args:i.requestArgsToMiddlewareArgs(n.args),dataPath:n.dataPath,runInTransaction:!!n.transaction,action:n.action,model:n.model},s={middleware:{name:"middleware",middleware:!0,attributes:{method:"$use"},active:!1},operation:{name:"operation",attributes:{method:o.action,model:o.model,name:o.model?`${o.model}.${o.action}`:o.action}}},a=-1,u=async g=>{let h=this._middlewares.get(++a);if(h)return this._tracingHelper.runInChildSpan(s.middleware,M=>h(g,B=>(M==null||M.end(),u(B))));let{runInTransaction:v,args:S,...A}=g,R={...n,...A};S&&(R.args=i.middlewareArgsToRequestArgs(S)),n.transaction!==void 0&&v===!1&&delete R.transaction;let D=await Wo(this,R);return R.model?Jo({result:D,modelName:R.model,args:R.args,extensions:this._extensions,runtimeDataModel:this._runtimeDataModel}):D};return this._tracingHelper.runInChildSpan(s.operation,()=>u(o))}async _executeRequest({args:n,clientMethod:i,dataPath:o,callsite:s,action:a,model:u,argsMapper:l,transaction:g,unpacker:h,otelParentCtx:v,customDataProxyFetch:S}){try{n=l?l(n):n;let A={name:"serialize"},R=this._tracingHelper.runInChildSpan(A,()=>Ts({modelName:u,runtimeDataModel:this._runtimeDataModel,action:a,args:n,clientMethod:i,callsite:s,extensions:this._extensions,errorFormat:this._errorFormat,clientVersion:this._clientVersion}));return ne.enabled("prisma:client")&&(Be("Prisma Client call:"),Be(`prisma.${i}(${Io(n)})`),Be("Generated request:"),Be(JSON.stringify(R,null,2)+` +`)),(g==null?void 0:g.kind)==="batch"&&await g.lock,this._requestHandler.request({protocolQuery:R,modelName:u,action:a,clientMethod:i,dataPath:o,callsite:s,args:n,extensions:this._extensions,transaction:g,unpacker:h,otelParentCtx:v,otelChildCtx:this._tracingHelper.getActiveContext(),customDataProxyFetch:S})}catch(A){throw A.clientVersion=this._clientVersion,A}}get $metrics(){if(!this._hasPreviewFlag("metrics"))throw new Z("`metrics` preview feature must be enabled in order to access metrics API",{clientVersion:this._clientVersion});return this._metrics}_hasPreviewFlag(n){var i;return!!((i=this._engineConfig.previewFeatures)!=null&&i.includes(n))}}return t}function ta(e,t){return Lc(e)?[new ae(e,t),Os]:[e,Ns]}function Lc(e){return Array.isArray(e)&&Array.isArray(e.raw)}d();c();p();f();m();var Fc=new Set(["toJSON","$$typeof","asymmetricMatch",Symbol.iterator,Symbol.toStringTag,Symbol.isConcatSpreadable,Symbol.toPrimitive]);function ia(e){return new Proxy(e,{get(t,r){if(r in t)return t[r];if(!Fc.has(r))throw new TypeError(`Invalid enum value: ${String(r)}`)}})}d();c();p();f();m();0&&(module.exports={Debug,Decimal,Extensions,MetricsClient,NotFoundError,PrismaClientInitializationError,PrismaClientKnownRequestError,PrismaClientRustPanicError,PrismaClientUnknownRequestError,PrismaClientValidationError,Public,Sql,defineDmmfProperty,detectRuntime,empty,getPrismaClient,join,makeStrictEnum,objectEnumValues,raw,sqltag,warnEnvConflicts,warnOnce}); +//# sourceMappingURL=edge.js.map diff --git a/backend/prisma/generated/client-db1/runtime/index-browser.d.ts b/backend/prisma/generated/client-db1/runtime/index-browser.d.ts new file mode 100644 index 0000000..ad8f8a3 --- /dev/null +++ b/backend/prisma/generated/client-db1/runtime/index-browser.d.ts @@ -0,0 +1,378 @@ +declare class AnyNull extends NullTypesEnumValue { +} + +declare type Args = T extends { + [K: symbol]: { + types: { + operations: { + [K in F]: { + args: any; + }; + }; + }; + }; +} ? T[symbol]['types']['operations'][F]['args'] : any; + +declare class DbNull extends NullTypesEnumValue { +} + +export declare namespace Decimal { + export type Constructor = typeof Decimal; + export type Instance = Decimal; + export type Rounding = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; + export type Modulo = Rounding | 9; + export type Value = string | number | Decimal; + + // http://mikemcl.github.io/decimal.js/#constructor-properties + export interface Config { + precision?: number; + rounding?: Rounding; + toExpNeg?: number; + toExpPos?: number; + minE?: number; + maxE?: number; + crypto?: boolean; + modulo?: Modulo; + defaults?: boolean; + } +} + +export declare class Decimal { + readonly d: number[]; + readonly e: number; + readonly s: number; + + constructor(n: Decimal.Value); + + absoluteValue(): Decimal; + abs(): Decimal; + + ceil(): Decimal; + + clampedTo(min: Decimal.Value, max: Decimal.Value): Decimal; + clamp(min: Decimal.Value, max: Decimal.Value): Decimal; + + comparedTo(n: Decimal.Value): number; + cmp(n: Decimal.Value): number; + + cosine(): Decimal; + cos(): Decimal; + + cubeRoot(): Decimal; + cbrt(): Decimal; + + decimalPlaces(): number; + dp(): number; + + dividedBy(n: Decimal.Value): Decimal; + div(n: Decimal.Value): Decimal; + + dividedToIntegerBy(n: Decimal.Value): Decimal; + divToInt(n: Decimal.Value): Decimal; + + equals(n: Decimal.Value): boolean; + eq(n: Decimal.Value): boolean; + + floor(): Decimal; + + greaterThan(n: Decimal.Value): boolean; + gt(n: Decimal.Value): boolean; + + greaterThanOrEqualTo(n: Decimal.Value): boolean; + gte(n: Decimal.Value): boolean; + + hyperbolicCosine(): Decimal; + cosh(): Decimal; + + hyperbolicSine(): Decimal; + sinh(): Decimal; + + hyperbolicTangent(): Decimal; + tanh(): Decimal; + + inverseCosine(): Decimal; + acos(): Decimal; + + inverseHyperbolicCosine(): Decimal; + acosh(): Decimal; + + inverseHyperbolicSine(): Decimal; + asinh(): Decimal; + + inverseHyperbolicTangent(): Decimal; + atanh(): Decimal; + + inverseSine(): Decimal; + asin(): Decimal; + + inverseTangent(): Decimal; + atan(): Decimal; + + isFinite(): boolean; + + isInteger(): boolean; + isInt(): boolean; + + isNaN(): boolean; + + isNegative(): boolean; + isNeg(): boolean; + + isPositive(): boolean; + isPos(): boolean; + + isZero(): boolean; + + lessThan(n: Decimal.Value): boolean; + lt(n: Decimal.Value): boolean; + + lessThanOrEqualTo(n: Decimal.Value): boolean; + lte(n: Decimal.Value): boolean; + + logarithm(n?: Decimal.Value): Decimal; + log(n?: Decimal.Value): Decimal; + + minus(n: Decimal.Value): Decimal; + sub(n: Decimal.Value): Decimal; + + modulo(n: Decimal.Value): Decimal; + mod(n: Decimal.Value): Decimal; + + naturalExponential(): Decimal; + exp(): Decimal; + + naturalLogarithm(): Decimal; + ln(): Decimal; + + negated(): Decimal; + neg(): Decimal; + + plus(n: Decimal.Value): Decimal; + add(n: Decimal.Value): Decimal; + + precision(includeZeros?: boolean): number; + sd(includeZeros?: boolean): number; + + round(): Decimal; + + sine() : Decimal; + sin() : Decimal; + + squareRoot(): Decimal; + sqrt(): Decimal; + + tangent() : Decimal; + tan() : Decimal; + + times(n: Decimal.Value): Decimal; + mul(n: Decimal.Value) : Decimal; + + toBinary(significantDigits?: number): string; + toBinary(significantDigits: number, rounding: Decimal.Rounding): string; + + toDecimalPlaces(decimalPlaces?: number): Decimal; + toDecimalPlaces(decimalPlaces: number, rounding: Decimal.Rounding): Decimal; + toDP(decimalPlaces?: number): Decimal; + toDP(decimalPlaces: number, rounding: Decimal.Rounding): Decimal; + + toExponential(decimalPlaces?: number): string; + toExponential(decimalPlaces: number, rounding: Decimal.Rounding): string; + + toFixed(decimalPlaces?: number): string; + toFixed(decimalPlaces: number, rounding: Decimal.Rounding): string; + + toFraction(max_denominator?: Decimal.Value): Decimal[]; + + toHexadecimal(significantDigits?: number): string; + toHexadecimal(significantDigits: number, rounding: Decimal.Rounding): string; + toHex(significantDigits?: number): string; + toHex(significantDigits: number, rounding?: Decimal.Rounding): string; + + toJSON(): string; + + toNearest(n: Decimal.Value, rounding?: Decimal.Rounding): Decimal; + + toNumber(): number; + + toOctal(significantDigits?: number): string; + toOctal(significantDigits: number, rounding: Decimal.Rounding): string; + + toPower(n: Decimal.Value): Decimal; + pow(n: Decimal.Value): Decimal; + + toPrecision(significantDigits?: number): string; + toPrecision(significantDigits: number, rounding: Decimal.Rounding): string; + + toSignificantDigits(significantDigits?: number): Decimal; + toSignificantDigits(significantDigits: number, rounding: Decimal.Rounding): Decimal; + toSD(significantDigits?: number): Decimal; + toSD(significantDigits: number, rounding: Decimal.Rounding): Decimal; + + toString(): string; + + truncated(): Decimal; + trunc(): Decimal; + + valueOf(): string; + + static abs(n: Decimal.Value): Decimal; + static acos(n: Decimal.Value): Decimal; + static acosh(n: Decimal.Value): Decimal; + static add(x: Decimal.Value, y: Decimal.Value): Decimal; + static asin(n: Decimal.Value): Decimal; + static asinh(n: Decimal.Value): Decimal; + static atan(n: Decimal.Value): Decimal; + static atanh(n: Decimal.Value): Decimal; + static atan2(y: Decimal.Value, x: Decimal.Value): Decimal; + static cbrt(n: Decimal.Value): Decimal; + static ceil(n: Decimal.Value): Decimal; + static clamp(n: Decimal.Value, min: Decimal.Value, max: Decimal.Value): Decimal; + static clone(object?: Decimal.Config): Decimal.Constructor; + static config(object: Decimal.Config): Decimal.Constructor; + static cos(n: Decimal.Value): Decimal; + static cosh(n: Decimal.Value): Decimal; + static div(x: Decimal.Value, y: Decimal.Value): Decimal; + static exp(n: Decimal.Value): Decimal; + static floor(n: Decimal.Value): Decimal; + static hypot(...n: Decimal.Value[]): Decimal; + static isDecimal(object: any): object is Decimal; + static ln(n: Decimal.Value): Decimal; + static log(n: Decimal.Value, base?: Decimal.Value): Decimal; + static log2(n: Decimal.Value): Decimal; + static log10(n: Decimal.Value): Decimal; + static max(...n: Decimal.Value[]): Decimal; + static min(...n: Decimal.Value[]): Decimal; + static mod(x: Decimal.Value, y: Decimal.Value): Decimal; + static mul(x: Decimal.Value, y: Decimal.Value): Decimal; + static noConflict(): Decimal.Constructor; // Browser only + static pow(base: Decimal.Value, exponent: Decimal.Value): Decimal; + static random(significantDigits?: number): Decimal; + static round(n: Decimal.Value): Decimal; + static set(object: Decimal.Config): Decimal.Constructor; + static sign(n: Decimal.Value): number; + static sin(n: Decimal.Value): Decimal; + static sinh(n: Decimal.Value): Decimal; + static sqrt(n: Decimal.Value): Decimal; + static sub(x: Decimal.Value, y: Decimal.Value): Decimal; + static sum(...n: Decimal.Value[]): Decimal; + static tan(n: Decimal.Value): Decimal; + static tanh(n: Decimal.Value): Decimal; + static trunc(n: Decimal.Value): Decimal; + + static readonly default?: Decimal.Constructor; + static readonly Decimal?: Decimal.Constructor; + + static readonly precision: number; + static readonly rounding: Decimal.Rounding; + static readonly toExpNeg: number; + static readonly toExpPos: number; + static readonly minE: number; + static readonly maxE: number; + static readonly crypto: boolean; + static readonly modulo: Decimal.Modulo; + + static readonly ROUND_UP: 0; + static readonly ROUND_DOWN: 1; + static readonly ROUND_CEIL: 2; + static readonly ROUND_FLOOR: 3; + static readonly ROUND_HALF_UP: 4; + static readonly ROUND_HALF_DOWN: 5; + static readonly ROUND_HALF_EVEN: 6; + static readonly ROUND_HALF_CEIL: 7; + static readonly ROUND_HALF_FLOOR: 8; + static readonly EUCLID: 9; +} + +/** + * Detect the current JavaScript runtime following + * the WinterCG Runtime Keys proposal: + * + * - `edge-routine` Alibaba Cloud Edge Routine + * - `workerd` Cloudflare Workers + * - `deno` Deno and Deno Deploy + * - `lagon` Lagon + * - `react-native` React Native + * - `netlify` Netlify Edge Functions + * - `electron` Electron + * - `node` Node.js + * - `bun` Bun + * - `edge-light` Vercel Edge Functions + * - `fastly` Fastly Compute@Edge + * + * @see https://runtime-keys.proposal.wintercg.org/ + * @returns {Runtime} + */ +export declare function detectRuntime(): Runtime; + +declare type Exact = (A extends unknown ? (W extends A ? { + [K in keyof A]: Exact; +} : W) : never) | (A extends Narrowable ? A : never); + +declare class JsonNull extends NullTypesEnumValue { +} + +/** + * Generates more strict variant of an enum which, unlike regular enum, + * throws on non-existing property access. This can be useful in following situations: + * - we have an API, that accepts both `undefined` and `SomeEnumType` as an input + * - enum values are generated dynamically from DMMF. + * + * In that case, if using normal enums and no compile-time typechecking, using non-existing property + * will result in `undefined` value being used, which will be accepted. Using strict enum + * in this case will help to have a runtime exception, telling you that you are probably doing something wrong. + * + * Note: if you need to check for existence of a value in the enum you can still use either + * `in` operator or `hasOwnProperty` function. + * + * @param definition + * @returns + */ +export declare function makeStrictEnum>(definition: T): T; + +declare type Narrowable = string | number | bigint | boolean | []; + +declare class NullTypesEnumValue extends ObjectEnumValue { + _getNamespace(): string; +} + +/** + * Base class for unique values of object-valued enums. + */ +declare abstract class ObjectEnumValue { + constructor(arg?: symbol); + abstract _getNamespace(): string; + _getName(): string; + toString(): string; +} + +export declare const objectEnumValues: { + classes: { + DbNull: typeof DbNull; + JsonNull: typeof JsonNull; + AnyNull: typeof AnyNull; + }; + instances: { + DbNull: DbNull; + JsonNull: JsonNull; + AnyNull: AnyNull; + }; +}; + +declare type Operation = 'findFirst' | 'findFirstOrThrow' | 'findUnique' | 'findUniqueOrThrow' | 'findMany' | 'create' | 'createMany' | 'update' | 'updateMany' | 'upsert' | 'delete' | 'deleteMany' | 'aggregate' | 'count' | 'groupBy' | '$queryRaw' | '$executeRaw' | '$queryRawUnsafe' | '$executeRawUnsafe' | 'findRaw' | 'aggregateRaw' | '$runCommandRaw'; + +declare namespace Public { + export { + validator + } +} +export { Public } + +declare type Runtime = "edge-routine" | "workerd" | "deno" | "lagon" | "react-native" | "netlify" | "electron" | "node" | "bun" | "edge-light" | "fastly" | "unknown"; + +declare function validator(): (select: Exact) => S; + +declare function validator, O extends keyof C[M] & Operation>(client: C, model: M, operation: O): (select: Exact>) => S; + +declare function validator, O extends keyof C[M] & Operation, P extends keyof Args>(client: C, model: M, operation: O, prop: P): (select: Exact[P]>) => S; + +export { } diff --git a/backend/prisma/generated/client-db1/runtime/index-browser.js b/backend/prisma/generated/client-db1/runtime/index-browser.js new file mode 100644 index 0000000..3435c4e --- /dev/null +++ b/backend/prisma/generated/client-db1/runtime/index-browser.js @@ -0,0 +1,13 @@ +"use strict";var he=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var We=Object.getOwnPropertyNames;var je=Object.prototype.hasOwnProperty;var Ce=(e,n)=>{for(var i in n)he(e,i,{get:n[i],enumerable:!0})},Ge=(e,n,i,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of We(n))!je.call(e,t)&&t!==i&&he(e,t,{get:()=>n[t],enumerable:!(r=Je(n,t))||r.enumerable});return e};var Xe=e=>Ge(he({},"__esModule",{value:!0}),e);var jn={};Ce(jn,{Decimal:()=>Ve,Public:()=>de,detectRuntime:()=>He,makeStrictEnum:()=>Pe,objectEnumValues:()=>Oe});module.exports=Xe(jn);var de={};Ce(de,{validator:()=>Me});function Me(...e){return n=>n}var ne=Symbol(),pe=new WeakMap,ge=class{constructor(n){n===ne?pe.set(this,"Prisma.".concat(this._getName())):pe.set(this,"new Prisma.".concat(this._getNamespace(),".").concat(this._getName(),"()"))}_getName(){return this.constructor.name}toString(){return pe.get(this)}},j=class extends ge{_getNamespace(){return"NullTypes"}},G=class extends j{};me(G,"DbNull");var X=class extends j{};me(X,"JsonNull");var K=class extends j{};me(K,"AnyNull");var Oe={classes:{DbNull:G,JsonNull:X,AnyNull:K},instances:{DbNull:new G(ne),JsonNull:new X(ne),AnyNull:new K(ne)}};function me(e,n){Object.defineProperty(e,"name",{value:n,configurable:!0})}var Ke=new Set(["toJSON","$$typeof","asymmetricMatch",Symbol.iterator,Symbol.toStringTag,Symbol.isConcatSpreadable,Symbol.toPrimitive]);function Pe(e){return new Proxy(e,{get(n,i){if(i in n)return n[i];if(!Ke.has(i))throw new TypeError("Invalid enum value: ".concat(String(i)))}})}var H=9e15,V=1e9,we="0123456789abcdef",re="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",te="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Ne={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-H,maxE:H,crypto:!1},qe,Z,w=!0,oe="[DecimalError] ",$=oe+"Invalid argument: ",Te=oe+"Precision limit exceeded",Le=oe+"crypto unavailable",Re="[object Decimal]",A=Math.floor,M=Math.pow,Qe=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Ye=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,xe=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Fe=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,F=1e7,m=7,ze=9007199254740991,ye=re.length-1,ve=te.length-1,d={toStringTag:Re};d.absoluteValue=d.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),p(e)};d.ceil=function(){return p(new this.constructor(this),this.e+1,2)};d.clampedTo=d.clamp=function(e,n){var i,r=this,t=r.constructor;if(e=new t(e),n=new t(n),!e.s||!n.s)return new t(NaN);if(e.gt(n))throw Error($+n);return i=r.cmp(e),i<0?e:r.cmp(n)>0?n:new t(r)};d.comparedTo=d.cmp=function(e){var n,i,r,t,s=this,o=s.d,u=(e=new s.constructor(e)).d,l=s.s,f=e.s;if(!o||!u)return!l||!f?NaN:l!==f?l:o===u?0:!o^l<0?1:-1;if(!o[0]||!u[0])return o[0]?l:u[0]?-f:0;if(l!==f)return l;if(s.e!==e.e)return s.e>e.e^l<0?1:-1;for(r=o.length,t=u.length,n=0,i=ru[n]^l<0?1:-1;return r===t?0:r>t^l<0?1:-1};d.cosine=d.cos=function(){var e,n,i=this,r=i.constructor;return i.d?i.d[0]?(e=r.precision,n=r.rounding,r.precision=e+Math.max(i.e,i.sd())+m,r.rounding=1,i=en(r,Be(r,i)),r.precision=e,r.rounding=n,p(Z==2||Z==3?i.neg():i,e,n,!0)):new r(1):new r(NaN)};d.cubeRoot=d.cbrt=function(){var e,n,i,r,t,s,o,u,l,f,c=this,a=c.constructor;if(!c.isFinite()||c.isZero())return new a(c);for(w=!1,s=c.s*M(c.s*c,1/3),!s||Math.abs(s)==1/0?(i=O(c.d),e=c.e,(s=(e-i.length+1)%3)&&(i+=s==1||s==-2?"0":"00"),s=M(i,1/3),e=A((e+1)/3)-(e%3==(e<0?-1:2)),s==1/0?i="5e"+e:(i=s.toExponential(),i=i.slice(0,i.indexOf("e")+1)+e),r=new a(i),r.s=c.s):r=new a(s.toString()),o=(e=a.precision)+3;;)if(u=r,l=u.times(u).times(u),f=l.plus(c),r=S(f.plus(c).times(u),f.plus(l),o+2,1),O(u.d).slice(0,o)===(i=O(r.d)).slice(0,o))if(i=i.slice(o-3,o+1),i=="9999"||!t&&i=="4999"){if(!t&&(p(u,e+1,0),u.times(u).times(u).eq(c))){r=u;break}o+=4,t=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(p(r,e+1,1),n=!r.times(r).times(r).eq(c));break}return w=!0,p(r,e,a.rounding,n)};d.decimalPlaces=d.dp=function(){var e,n=this.d,i=NaN;if(n){if(e=n.length-1,i=(e-A(this.e/m))*m,e=n[e],e)for(;e%10==0;e/=10)i--;i<0&&(i=0)}return i};d.dividedBy=d.div=function(e){return S(this,new this.constructor(e))};d.dividedToIntegerBy=d.divToInt=function(e){var n=this,i=n.constructor;return p(S(n,new i(e),0,1,1),i.precision,i.rounding)};d.equals=d.eq=function(e){return this.cmp(e)===0};d.floor=function(){return p(new this.constructor(this),this.e+1,3)};d.greaterThan=d.gt=function(e){return this.cmp(e)>0};d.greaterThanOrEqualTo=d.gte=function(e){var n=this.cmp(e);return n==1||n===0};d.hyperbolicCosine=d.cosh=function(){var e,n,i,r,t,s=this,o=s.constructor,u=new o(1);if(!s.isFinite())return new o(s.s?1/0:NaN);if(s.isZero())return u;i=o.precision,r=o.rounding,o.precision=i+Math.max(s.e,s.sd())+4,o.rounding=1,t=s.d.length,t<32?(e=Math.ceil(t/3),n=(1/fe(4,e)).toString()):(e=16,n="2.3283064365386962890625e-10"),s=J(o,1,s.times(n),new o(1),!0);for(var l,f=e,c=new o(8);f--;)l=s.times(s),s=u.minus(l.times(c.minus(l.times(c))));return p(s,o.precision=i,o.rounding=r,!0)};d.hyperbolicSine=d.sinh=function(){var e,n,i,r,t=this,s=t.constructor;if(!t.isFinite()||t.isZero())return new s(t);if(n=s.precision,i=s.rounding,s.precision=n+Math.max(t.e,t.sd())+4,s.rounding=1,r=t.d.length,r<3)t=J(s,2,t,t,!0);else{e=1.4*Math.sqrt(r),e=e>16?16:e|0,t=t.times(1/fe(5,e)),t=J(s,2,t,t,!0);for(var o,u=new s(5),l=new s(16),f=new s(20);e--;)o=t.times(t),t=t.times(u.plus(o.times(l.times(o).plus(f))))}return s.precision=n,s.rounding=i,p(t,n,i,!0)};d.hyperbolicTangent=d.tanh=function(){var e,n,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(e=r.precision,n=r.rounding,r.precision=e+7,r.rounding=1,S(i.sinh(),i.cosh(),r.precision=e,r.rounding=n)):new r(i.s)};d.inverseCosine=d.acos=function(){var e,n=this,i=n.constructor,r=n.abs().cmp(1),t=i.precision,s=i.rounding;return r!==-1?r===0?n.isNeg()?R(i,t,s):new i(0):new i(NaN):n.isZero()?R(i,t+4,s).times(.5):(i.precision=t+6,i.rounding=1,n=n.asin(),e=R(i,t+4,s).times(.5),i.precision=t,i.rounding=s,e.minus(n))};d.inverseHyperbolicCosine=d.acosh=function(){var e,n,i=this,r=i.constructor;return i.lte(1)?new r(i.eq(1)?0:NaN):i.isFinite()?(e=r.precision,n=r.rounding,r.precision=e+Math.max(Math.abs(i.e),i.sd())+4,r.rounding=1,w=!1,i=i.times(i).minus(1).sqrt().plus(i),w=!0,r.precision=e,r.rounding=n,i.ln()):new r(i)};d.inverseHyperbolicSine=d.asinh=function(){var e,n,i=this,r=i.constructor;return!i.isFinite()||i.isZero()?new r(i):(e=r.precision,n=r.rounding,r.precision=e+2*Math.max(Math.abs(i.e),i.sd())+6,r.rounding=1,w=!1,i=i.times(i).plus(1).sqrt().plus(i),w=!0,r.precision=e,r.rounding=n,i.ln())};d.inverseHyperbolicTangent=d.atanh=function(){var e,n,i,r,t=this,s=t.constructor;return t.isFinite()?t.e>=0?new s(t.abs().eq(1)?t.s/0:t.isZero()?t:NaN):(e=s.precision,n=s.rounding,r=t.sd(),Math.max(r,e)<2*-t.e-1?p(new s(t),e,n,!0):(s.precision=i=r-t.e,t=S(t.plus(1),new s(1).minus(t),i+e,1),s.precision=e+4,s.rounding=1,t=t.ln(),s.precision=e,s.rounding=n,t.times(.5))):new s(NaN)};d.inverseSine=d.asin=function(){var e,n,i,r,t=this,s=t.constructor;return t.isZero()?new s(t):(n=t.abs().cmp(1),i=s.precision,r=s.rounding,n!==-1?n===0?(e=R(s,i+4,r).times(.5),e.s=t.s,e):new s(NaN):(s.precision=i+6,s.rounding=1,t=t.div(new s(1).minus(t.times(t)).sqrt().plus(1)).atan(),s.precision=i,s.rounding=r,t.times(2)))};d.inverseTangent=d.atan=function(){var e,n,i,r,t,s,o,u,l,f=this,c=f.constructor,a=c.precision,h=c.rounding;if(f.isFinite()){if(f.isZero())return new c(f);if(f.abs().eq(1)&&a+4<=ve)return o=R(c,a+4,h).times(.25),o.s=f.s,o}else{if(!f.s)return new c(NaN);if(a+4<=ve)return o=R(c,a+4,h).times(.5),o.s=f.s,o}for(c.precision=u=a+10,c.rounding=1,i=Math.min(28,u/m+2|0),e=i;e;--e)f=f.div(f.times(f).plus(1).sqrt().plus(1));for(w=!1,n=Math.ceil(u/m),r=1,l=f.times(f),o=new c(f),t=f;e!==-1;)if(t=t.times(l),s=o.minus(t.div(r+=2)),t=t.times(l),o=s.plus(t.div(r+=2)),o.d[n]!==void 0)for(e=n;o.d[e]===s.d[e]&&e--;);return i&&(o=o.times(2<this.d.length-2};d.isNaN=function(){return!this.s};d.isNegative=d.isNeg=function(){return this.s<0};d.isPositive=d.isPos=function(){return this.s>0};d.isZero=function(){return!!this.d&&this.d[0]===0};d.lessThan=d.lt=function(e){return this.cmp(e)<0};d.lessThanOrEqualTo=d.lte=function(e){return this.cmp(e)<1};d.logarithm=d.log=function(e){var n,i,r,t,s,o,u,l,f=this,c=f.constructor,a=c.precision,h=c.rounding,g=5;if(e==null)e=new c(10),n=!0;else{if(e=new c(e),i=e.d,e.s<0||!i||!i[0]||e.eq(1))return new c(NaN);n=e.eq(10)}if(i=f.d,f.s<0||!i||!i[0]||f.eq(1))return new c(i&&!i[0]?-1/0:f.s!=1?NaN:i?0:1/0);if(n)if(i.length>1)s=!0;else{for(t=i[0];t%10===0;)t/=10;s=t!==1}if(w=!1,u=a+g,o=B(f,u),r=n?se(c,u+10):B(e,u),l=S(o,r,u,1),Q(l.d,t=a,h))do if(u+=10,o=B(f,u),r=n?se(c,u+10):B(e,u),l=S(o,r,u,1),!s){+O(l.d).slice(t+1,t+15)+1==1e14&&(l=p(l,a+1,0));break}while(Q(l.d,t+=10,h));return w=!0,p(l,a,h)};d.minus=d.sub=function(e){var n,i,r,t,s,o,u,l,f,c,a,h,g=this,v=g.constructor;if(e=new v(e),!g.d||!e.d)return!g.s||!e.s?e=new v(NaN):g.d?e.s=-e.s:e=new v(e.d||g.s!==e.s?g:NaN),e;if(g.s!=e.s)return e.s=-e.s,g.plus(e);if(f=g.d,h=e.d,u=v.precision,l=v.rounding,!f[0]||!h[0]){if(h[0])e.s=-e.s;else if(f[0])e=new v(g);else return new v(l===3?-0:0);return w?p(e,u,l):e}if(i=A(e.e/m),c=A(g.e/m),f=f.slice(),s=c-i,s){for(a=s<0,a?(n=f,s=-s,o=h.length):(n=h,i=c,o=f.length),r=Math.max(Math.ceil(u/m),o)+2,s>r&&(s=r,n.length=1),n.reverse(),r=s;r--;)n.push(0);n.reverse()}else{for(r=f.length,o=h.length,a=r0;--r)f[o++]=0;for(r=h.length;r>s;){if(f[--r]o?s+1:o+1,t>o&&(t=o,i.length=1),i.reverse();t--;)i.push(0);i.reverse()}for(o=f.length,t=c.length,o-t<0&&(t=o,i=c,c=f,f=i),n=0;t;)n=(f[--t]=f[t]+c[t]+n)/F|0,f[t]%=F;for(n&&(f.unshift(n),++r),o=f.length;f[--o]==0;)f.pop();return e.d=f,e.e=ue(f,r),w?p(e,u,l):e};d.precision=d.sd=function(e){var n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error($+e);return i.d?(n=Ie(i.d),e&&i.e+1>n&&(n=i.e+1)):n=NaN,n};d.round=function(){var e=this,n=e.constructor;return p(new n(e),e.e+1,n.rounding)};d.sine=d.sin=function(){var e,n,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(e=r.precision,n=r.rounding,r.precision=e+Math.max(i.e,i.sd())+m,r.rounding=1,i=rn(r,Be(r,i)),r.precision=e,r.rounding=n,p(Z>2?i.neg():i,e,n,!0)):new r(NaN)};d.squareRoot=d.sqrt=function(){var e,n,i,r,t,s,o=this,u=o.d,l=o.e,f=o.s,c=o.constructor;if(f!==1||!u||!u[0])return new c(!f||f<0&&(!u||u[0])?NaN:u?o:1/0);for(w=!1,f=Math.sqrt(+o),f==0||f==1/0?(n=O(u),(n.length+l)%2==0&&(n+="0"),f=Math.sqrt(n),l=A((l+1)/2)-(l<0||l%2),f==1/0?n="5e"+l:(n=f.toExponential(),n=n.slice(0,n.indexOf("e")+1)+l),r=new c(n)):r=new c(f.toString()),i=(l=c.precision)+3;;)if(s=r,r=s.plus(S(o,s,i+2,1)).times(.5),O(s.d).slice(0,i)===(n=O(r.d)).slice(0,i))if(n=n.slice(i-3,i+1),n=="9999"||!t&&n=="4999"){if(!t&&(p(s,l+1,0),s.times(s).eq(o))){r=s;break}i+=4,t=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(p(r,l+1,1),e=!r.times(r).eq(o));break}return w=!0,p(r,l,c.rounding,e)};d.tangent=d.tan=function(){var e,n,i=this,r=i.constructor;return i.isFinite()?i.isZero()?new r(i):(e=r.precision,n=r.rounding,r.precision=e+10,r.rounding=1,i=i.sin(),i.s=1,i=S(i,new r(1).minus(i.times(i)).sqrt(),e+10,0),r.precision=e,r.rounding=n,p(Z==2||Z==4?i.neg():i,e,n,!0)):new r(NaN)};d.times=d.mul=function(e){var n,i,r,t,s,o,u,l,f,c=this,a=c.constructor,h=c.d,g=(e=new a(e)).d;if(e.s*=c.s,!h||!h[0]||!g||!g[0])return new a(!e.s||h&&!h[0]&&!g||g&&!g[0]&&!h?NaN:!h||!g?e.s/0:e.s*0);for(i=A(c.e/m)+A(e.e/m),l=h.length,f=g.length,l=0;){for(n=0,t=l+r;t>r;)u=s[t]+g[r]*h[t-r-1]+n,s[t--]=u%F|0,n=u/F|0;s[t]=(s[t]+n)%F|0}for(;!s[--o];)s.pop();return n?++i:s.shift(),e.d=s,e.e=ue(s,i),w?p(e,a.precision,a.rounding):e};d.toBinary=function(e,n){return ke(this,2,e,n)};d.toDecimalPlaces=d.toDP=function(e,n){var i=this,r=i.constructor;return i=new r(i),e===void 0?i:(q(e,0,V),n===void 0?n=r.rounding:q(n,0,8),p(i,e+i.e+1,n))};d.toExponential=function(e,n){var i,r=this,t=r.constructor;return e===void 0?i=I(r,!0):(q(e,0,V),n===void 0?n=t.rounding:q(n,0,8),r=p(new t(r),e+1,n),i=I(r,!0,e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};d.toFixed=function(e,n){var i,r,t=this,s=t.constructor;return e===void 0?i=I(t):(q(e,0,V),n===void 0?n=s.rounding:q(n,0,8),r=p(new s(t),e+t.e+1,n),i=I(r,!1,e+r.e+1)),t.isNeg()&&!t.isZero()?"-"+i:i};d.toFraction=function(e){var n,i,r,t,s,o,u,l,f,c,a,h,g=this,v=g.d,N=g.constructor;if(!v)return new N(g);if(f=i=new N(1),r=l=new N(0),n=new N(r),s=n.e=Ie(v)-g.e-1,o=s%m,n.d[0]=M(10,o<0?m+o:o),e==null)e=s>0?n:f;else{if(u=new N(e),!u.isInt()||u.lt(f))throw Error($+u);e=u.gt(n)?s>0?n:f:u}for(w=!1,u=new N(O(v)),c=N.precision,N.precision=s=v.length*m*2;a=S(u,n,0,1,1),t=i.plus(a.times(r)),t.cmp(e)!=1;)i=r,r=t,t=f,f=l.plus(a.times(t)),l=t,t=n,n=u.minus(a.times(t)),u=t;return t=S(e.minus(i),r,0,1,1),l=l.plus(t.times(f)),i=i.plus(t.times(r)),l.s=f.s=g.s,h=S(f,r,s,1).minus(g).abs().cmp(S(l,i,s,1).minus(g).abs())<1?[f,r]:[l,i],N.precision=c,w=!0,h};d.toHexadecimal=d.toHex=function(e,n){return ke(this,16,e,n)};d.toNearest=function(e,n){var i=this,r=i.constructor;if(i=new r(i),e==null){if(!i.d)return i;e=new r(1),n=r.rounding}else{if(e=new r(e),n===void 0?n=r.rounding:q(n,0,8),!i.d)return e.s?i:e;if(!e.d)return e.s&&(e.s=i.s),e}return e.d[0]?(w=!1,i=S(i,e,0,n,1).times(e),w=!0,p(i)):(e.s=i.s,i=e),i};d.toNumber=function(){return+this};d.toOctal=function(e,n){return ke(this,8,e,n)};d.toPower=d.pow=function(e){var n,i,r,t,s,o,u=this,l=u.constructor,f=+(e=new l(e));if(!u.d||!e.d||!u.d[0]||!e.d[0])return new l(M(+u,f));if(u=new l(u),u.eq(1))return u;if(r=l.precision,s=l.rounding,e.eq(1))return p(u,r,s);if(n=A(e.e/m),n>=e.d.length-1&&(i=f<0?-f:f)<=ze)return t=De(l,u,i,r),e.s<0?new l(1).div(t):p(t,r,s);if(o=u.s,o<0){if(nl.maxE+1||n0?o/0:0):(w=!1,l.rounding=u.s=1,i=Math.min(12,(n+"").length),t=Ee(e.times(B(u,r+i)),r),t.d&&(t=p(t,r+5,1),Q(t.d,r,s)&&(n=r+10,t=p(Ee(e.times(B(u,n+i)),n),n+5,1),+O(t.d).slice(r+1,r+15)+1==1e14&&(t=p(t,r+1,0)))),t.s=o,w=!0,l.rounding=s,p(t,r,s))};d.toPrecision=function(e,n){var i,r=this,t=r.constructor;return e===void 0?i=I(r,r.e<=t.toExpNeg||r.e>=t.toExpPos):(q(e,1,V),n===void 0?n=t.rounding:q(n,0,8),r=p(new t(r),e,n),i=I(r,e<=r.e||r.e<=t.toExpNeg,e)),r.isNeg()&&!r.isZero()?"-"+i:i};d.toSignificantDigits=d.toSD=function(e,n){var i=this,r=i.constructor;return e===void 0?(e=r.precision,n=r.rounding):(q(e,1,V),n===void 0?n=r.rounding:q(n,0,8)),p(new r(i),e,n)};d.toString=function(){var e=this,n=e.constructor,i=I(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()&&!e.isZero()?"-"+i:i};d.truncated=d.trunc=function(){return p(new this.constructor(this),this.e+1,1)};d.valueOf=d.toJSON=function(){var e=this,n=e.constructor,i=I(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()?"-"+i:i};function O(e){var n,i,r,t=e.length-1,s="",o=e[0];if(t>0){for(s+=o,n=1;ni)throw Error($+e)}function Q(e,n,i,r){var t,s,o,u;for(s=e[0];s>=10;s/=10)--n;return--n<0?(n+=m,t=0):(t=Math.ceil((n+1)/m),n%=m),s=M(10,m-n),u=e[t]%s|0,r==null?n<3?(n==0?u=u/100|0:n==1&&(u=u/10|0),o=i<4&&u==99999||i>3&&u==49999||u==5e4||u==0):o=(i<4&&u+1==s||i>3&&u+1==s/2)&&(e[t+1]/s/100|0)==M(10,n-2)-1||(u==s/2||u==0)&&(e[t+1]/s/100|0)==0:n<4?(n==0?u=u/1e3|0:n==1?u=u/100|0:n==2&&(u=u/10|0),o=(r||i<4)&&u==9999||!r&&i>3&&u==4999):o=((r||i<4)&&u+1==s||!r&&i>3&&u+1==s/2)&&(e[t+1]/s/1e3|0)==M(10,n-3)-1,o}function ie(e,n,i){for(var r,t=[0],s,o=0,u=e.length;oi-1&&(t[r+1]===void 0&&(t[r+1]=0),t[r+1]+=t[r]/i|0,t[r]%=i)}return t.reverse()}function en(e,n){var i,r,t;if(n.isZero())return n;r=n.d.length,r<32?(i=Math.ceil(r/3),t=(1/fe(4,i)).toString()):(i=16,t="2.3283064365386962890625e-10"),e.precision+=i,n=J(e,1,n.times(t),new e(1));for(var s=i;s--;){var o=n.times(n);n=o.times(o).minus(o).times(8).plus(1)}return e.precision-=i,n}var S=function(){function e(r,t,s){var o,u=0,l=r.length;for(r=r.slice();l--;)o=r[l]*t+u,r[l]=o%s|0,u=o/s|0;return u&&r.unshift(u),r}function n(r,t,s,o){var u,l;if(s!=o)l=s>o?1:-1;else for(u=l=0;ut[u]?1:-1;break}return l}function i(r,t,s,o){for(var u=0;s--;)r[s]-=u,u=r[s]1;)r.shift()}return function(r,t,s,o,u,l){var f,c,a,h,g,v,N,_,C,T,E,P,x,D,le,z,W,ce,L,y,ee=r.constructor,ae=r.s==t.s?1:-1,b=r.d,k=t.d;if(!b||!b[0]||!k||!k[0])return new ee(!r.s||!t.s||(b?k&&b[0]==k[0]:!k)?NaN:b&&b[0]==0||!k?ae*0:ae/0);for(l?(g=1,c=r.e-t.e):(l=F,g=m,c=A(r.e/g)-A(t.e/g)),L=k.length,W=b.length,C=new ee(ae),T=C.d=[],a=0;k[a]==(b[a]||0);a++);if(k[a]>(b[a]||0)&&c--,s==null?(D=s=ee.precision,o=ee.rounding):u?D=s+(r.e-t.e)+1:D=s,D<0)T.push(1),v=!0;else{if(D=D/g+2|0,a=0,L==1){for(h=0,k=k[0],D++;(a1&&(k=e(k,h,l),b=e(b,h,l),L=k.length,W=b.length),z=L,E=b.slice(0,L),P=E.length;P=l/2&&++ce;do h=0,f=n(k,E,L,P),f<0?(x=E[0],L!=P&&(x=x*l+(E[1]||0)),h=x/ce|0,h>1?(h>=l&&(h=l-1),N=e(k,h,l),_=N.length,P=E.length,f=n(N,E,_,P),f==1&&(h--,i(N,L<_?y:k,_,l))):(h==0&&(f=h=1),N=k.slice()),_=N.length,_=10;h/=10)a++;C.e=a+c*g-1,p(C,u?s+C.e+1:s,o,v)}return C}}();function p(e,n,i,r){var t,s,o,u,l,f,c,a,h,g=e.constructor;e:if(n!=null){if(a=e.d,!a)return e;for(t=1,u=a[0];u>=10;u/=10)t++;if(s=n-t,s<0)s+=m,o=n,c=a[h=0],l=c/M(10,t-o-1)%10|0;else if(h=Math.ceil((s+1)/m),u=a.length,h>=u)if(r){for(;u++<=h;)a.push(0);c=l=0,t=1,s%=m,o=s-m+1}else break e;else{for(c=u=a[h],t=1;u>=10;u/=10)t++;s%=m,o=s-m+t,l=o<0?0:c/M(10,t-o-1)%10|0}if(r=r||n<0||a[h+1]!==void 0||(o<0?c:c%M(10,t-o-1)),f=i<4?(l||r)&&(i==0||i==(e.s<0?3:2)):l>5||l==5&&(i==4||r||i==6&&(s>0?o>0?c/M(10,t-o):0:a[h-1])%10&1||i==(e.s<0?8:7)),n<1||!a[0])return a.length=0,f?(n-=e.e+1,a[0]=M(10,(m-n%m)%m),e.e=-n||0):a[0]=e.e=0,e;if(s==0?(a.length=h,u=1,h--):(a.length=h+1,u=M(10,m-s),a[h]=o>0?(c/M(10,t-o)%M(10,o)|0)*u:0),f)for(;;)if(h==0){for(s=1,o=a[0];o>=10;o/=10)s++;for(o=a[0]+=u,u=1;o>=10;o/=10)u++;s!=u&&(e.e++,a[0]==F&&(a[0]=1));break}else{if(a[h]+=u,a[h]!=F)break;a[h--]=0,u=1}for(s=a.length;a[--s]===0;)a.pop()}return w&&(e.e>g.maxE?(e.d=null,e.e=NaN):e.e0?s=s.charAt(0)+"."+s.slice(1)+U(r):o>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(e.e<0?"e":"e+")+e.e):t<0?(s="0."+U(-t-1)+s,i&&(r=i-o)>0&&(s+=U(r))):t>=o?(s+=U(t+1-o),i&&(r=i-t-1)>0&&(s=s+"."+U(r))):((r=t+1)0&&(t+1===o&&(s+="."),s+=U(r))),s}function ue(e,n){var i=e[0];for(n*=m;i>=10;i/=10)n++;return n}function se(e,n,i){if(n>ye)throw w=!0,i&&(e.precision=i),Error(Te);return p(new e(re),n,1,!0)}function R(e,n,i){if(n>ve)throw Error(Te);return p(new e(te),n,i,!0)}function Ie(e){var n=e.length-1,i=n*m+1;if(n=e[n],n){for(;n%10==0;n/=10)i--;for(n=e[0];n>=10;n/=10)i++}return i}function U(e){for(var n="";e--;)n+="0";return n}function De(e,n,i,r){var t,s=new e(1),o=Math.ceil(r/m+4);for(w=!1;;){if(i%2&&(s=s.times(n),Ae(s.d,o)&&(t=!0)),i=A(i/2),i===0){i=s.d.length-1,t&&s.d[i]===0&&++s.d[i];break}n=n.times(n),Ae(n.d,o)}return w=!0,s}function be(e){return e.d[e.d.length-1]&1}function Ze(e,n,i){for(var r,t=new e(n[0]),s=0;++s17)return new h(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(n==null?(w=!1,l=v):l=n,u=new h(.03125);e.e>-2;)e=e.times(u),a+=5;for(r=Math.log(M(2,a))/Math.LN10*2+5|0,l+=r,i=s=o=new h(1),h.precision=l;;){if(s=p(s.times(e),l,1),i=i.times(++c),u=o.plus(S(s,i,l,1)),O(u.d).slice(0,l)===O(o.d).slice(0,l)){for(t=a;t--;)o=p(o.times(o),l,1);if(n==null)if(f<3&&Q(o.d,l-r,g,f))h.precision=l+=10,i=s=u=new h(1),c=0,f++;else return p(o,h.precision=v,g,w=!0);else return h.precision=v,o}o=u}}function B(e,n){var i,r,t,s,o,u,l,f,c,a,h,g=1,v=10,N=e,_=N.d,C=N.constructor,T=C.rounding,E=C.precision;if(N.s<0||!_||!_[0]||!N.e&&_[0]==1&&_.length==1)return new C(_&&!_[0]?-1/0:N.s!=1?NaN:_?0:N);if(n==null?(w=!1,c=E):c=n,C.precision=c+=v,i=O(_),r=i.charAt(0),Math.abs(s=N.e)<15e14){for(;r<7&&r!=1||r==1&&i.charAt(1)>3;)N=N.times(e),i=O(N.d),r=i.charAt(0),g++;s=N.e,r>1?(N=new C("0."+i),s++):N=new C(r+"."+i.slice(1))}else return f=se(C,c+2,E).times(s+""),N=B(new C(r+"."+i.slice(1)),c-v).plus(f),C.precision=E,n==null?p(N,E,T,w=!0):N;for(a=N,l=o=N=S(N.minus(1),N.plus(1),c,1),h=p(N.times(N),c,1),t=3;;){if(o=p(o.times(h),c,1),f=l.plus(S(o,new C(t),c,1)),O(f.d).slice(0,c)===O(l.d).slice(0,c))if(l=l.times(2),s!==0&&(l=l.plus(se(C,c+2,E).times(s+""))),l=S(l,new C(g),c,1),n==null)if(Q(l.d,c-v,T,u))C.precision=c+=v,f=o=N=S(a.minus(1),a.plus(1),c,1),h=p(N.times(N),c,1),t=u=1;else return p(l,C.precision=E,T,w=!0);else return C.precision=E,l;l=f,t+=2}}function Ue(e){return String(e.s*e.s/0)}function Se(e,n){var i,r,t;for((i=n.indexOf("."))>-1&&(n=n.replace(".","")),(r=n.search(/e/i))>0?(i<0&&(i=r),i+=+n.slice(r+1),n=n.substring(0,r)):i<0&&(i=n.length),r=0;n.charCodeAt(r)===48;r++);for(t=n.length;n.charCodeAt(t-1)===48;--t);if(n=n.slice(r,t),n){if(t-=r,e.e=i=i-r-1,e.d=[],r=(i+1)%m,i<0&&(r+=m),re.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(n=n.replace(/(\d)_(?=\d)/g,"$1"),Fe.test(n))return Se(e,n)}else if(n==="Infinity"||n==="NaN")return+n||(e.s=NaN),e.e=NaN,e.d=null,e;if(Ye.test(n))i=16,n=n.toLowerCase();else if(Qe.test(n))i=2;else if(xe.test(n))i=8;else throw Error($+n);for(s=n.search(/p/i),s>0?(l=+n.slice(s+1),n=n.substring(2,s)):n=n.slice(2),s=n.indexOf("."),o=s>=0,r=e.constructor,o&&(n=n.replace(".",""),u=n.length,s=u-s,t=De(r,new r(i),s,s*2)),f=ie(n,i,F),c=f.length-1,s=c;f[s]===0;--s)f.pop();return s<0?new r(e.s*0):(e.e=ue(f,c),e.d=f,w=!1,o&&(e=S(e,t,u*4)),l&&(e=e.times(Math.abs(l)<54?M(2,l):Y.pow(2,l))),w=!0,e)}function rn(e,n){var i,r=n.d.length;if(r<3)return n.isZero()?n:J(e,2,n,n);i=1.4*Math.sqrt(r),i=i>16?16:i|0,n=n.times(1/fe(5,i)),n=J(e,2,n,n);for(var t,s=new e(5),o=new e(16),u=new e(20);i--;)t=n.times(n),n=n.times(s.plus(t.times(o.times(t).minus(u))));return n}function J(e,n,i,r,t){var s,o,u,l,f=1,c=e.precision,a=Math.ceil(c/m);for(w=!1,l=i.times(i),u=new e(r);;){if(o=S(u.times(l),new e(n++*n++),c,1),u=t?r.plus(o):r.minus(o),r=S(o.times(l),new e(n++*n++),c,1),o=u.plus(r),o.d[a]!==void 0){for(s=a;o.d[s]===u.d[s]&&s--;);if(s==-1)break}s=u,u=r,r=o,o=s,f++}return w=!0,o.d.length=a+1,o}function fe(e,n){for(var i=e;--n;)i*=e;return i}function Be(e,n){var i,r=n.s<0,t=R(e,e.precision,1),s=t.times(.5);if(n=n.abs(),n.lte(s))return Z=r?4:1,n;if(i=n.divToInt(t),i.isZero())Z=r?3:2;else{if(n=n.minus(i.times(t)),n.lte(s))return Z=be(i)?r?2:3:r?4:1,n;Z=be(i)?r?1:4:r?3:2}return n.minus(t).abs()}function ke(e,n,i,r){var t,s,o,u,l,f,c,a,h,g=e.constructor,v=i!==void 0;if(v?(q(i,1,V),r===void 0?r=g.rounding:q(r,0,8)):(i=g.precision,r=g.rounding),!e.isFinite())c=Ue(e);else{for(c=I(e),o=c.indexOf("."),v?(t=2,n==16?i=i*4-3:n==8&&(i=i*3-2)):t=n,o>=0&&(c=c.replace(".",""),h=new g(1),h.e=c.length-o,h.d=ie(I(h),10,t),h.e=h.d.length),a=ie(c,10,t),s=l=a.length;a[--l]==0;)a.pop();if(!a[0])c=v?"0p+0":"0";else{if(o<0?s--:(e=new g(e),e.d=a,e.e=s,e=S(e,h,i,r,0,t),a=e.d,s=e.e,f=qe),o=a[i],u=t/2,f=f||a[i+1]!==void 0,f=r<4?(o!==void 0||f)&&(r===0||r===(e.s<0?3:2)):o>u||o===u&&(r===4||f||r===6&&a[i-1]&1||r===(e.s<0?8:7)),a.length=i,f)for(;++a[--i]>t-1;)a[i]=0,i||(++s,a.unshift(1));for(l=a.length;!a[l-1];--l);for(o=0,c="";o1)if(n==16||n==8){for(o=n==16?4:3,--l;l%o;l++)c+="0";for(a=ie(c,t,n),l=a.length;!a[l-1];--l);for(o=1,c="1.";ol)for(s-=l;s--;)c+="0";else sn)return e.length=n,!0}function tn(e){return new this(e).abs()}function sn(e){return new this(e).acos()}function on(e){return new this(e).acosh()}function un(e,n){return new this(e).plus(n)}function fn(e){return new this(e).asin()}function ln(e){return new this(e).asinh()}function cn(e){return new this(e).atan()}function an(e){return new this(e).atanh()}function hn(e,n){e=new this(e),n=new this(n);var i,r=this.precision,t=this.rounding,s=r+4;return!e.s||!n.s?i=new this(NaN):!e.d&&!n.d?(i=R(this,s,1).times(n.s>0?.25:.75),i.s=e.s):!n.d||e.isZero()?(i=n.s<0?R(this,r,t):new this(0),i.s=e.s):!e.d||n.isZero()?(i=R(this,s,1).times(.5),i.s=e.s):n.s<0?(this.precision=s,this.rounding=1,i=this.atan(S(e,n,s,1)),n=R(this,s,1),this.precision=r,this.rounding=t,i=e.s<0?i.minus(n):i.plus(n)):i=this.atan(S(e,n,s,1)),i}function dn(e){return new this(e).cbrt()}function pn(e){return p(e=new this(e),e.e+1,2)}function gn(e,n,i){return new this(e).clamp(n,i)}function mn(e){if(!e||typeof e!="object")throw Error(oe+"Object expected");var n,i,r,t=e.defaults===!0,s=["precision",1,V,"rounding",0,8,"toExpNeg",-H,0,"toExpPos",0,H,"maxE",0,H,"minE",-H,0,"modulo",0,9];for(n=0;n=s[n+1]&&r<=s[n+2])this[i]=r;else throw Error($+i+": "+r);if(i="crypto",t&&(this[i]=Ne[i]),(r=e[i])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(Le);else this[i]=!1;else throw Error($+i+": "+r);return this}function wn(e){return new this(e).cos()}function Nn(e){return new this(e).cosh()}function $e(e){var n,i,r;function t(s){var o,u,l,f=this;if(!(f instanceof t))return new t(s);if(f.constructor=t,_e(s)){f.s=s.s,w?!s.d||s.e>t.maxE?(f.e=NaN,f.d=null):s.e=10;u/=10)o++;w?o>t.maxE?(f.e=NaN,f.d=null):o=429e7?n[s]=crypto.getRandomValues(new Uint32Array(1))[0]:u[s++]=t%1e7;else if(crypto.randomBytes){for(n=crypto.randomBytes(r*=4);s=214e7?crypto.randomBytes(4).copy(n,s):(u.push(t%1e7),s+=4);s=r/4}else throw Error(Le);else for(;s=10;t/=10)r++;r + * MIT Licence + *) +*/ +//# sourceMappingURL=index-browser.js.map diff --git a/backend/prisma/generated/client-db1/runtime/library.d.ts b/backend/prisma/generated/client-db1/runtime/library.d.ts new file mode 100644 index 0000000..8a83633 --- /dev/null +++ b/backend/prisma/generated/client-db1/runtime/library.d.ts @@ -0,0 +1,3171 @@ +/** + * @param this + */ +declare function $extends(this: Client, extension: ExtensionArgs | ((client: Client) => Client)): Client; + +declare type AccelerateEngineConfig = { + inlineSchema: EngineConfig['inlineSchema']; + inlineSchemaHash: EngineConfig['inlineSchemaHash']; + env: EngineConfig['env']; + generator?: { + previewFeatures: string[]; + }; + inlineDatasources: EngineConfig['inlineDatasources']; + overrideDatasources: EngineConfig['overrideDatasources']; + clientVersion: EngineConfig['clientVersion']; + engineVersion: EngineConfig['engineVersion']; + logEmitter: EngineConfig['logEmitter']; + logQueries?: EngineConfig['logQueries']; + logLevel?: EngineConfig['logLevel']; + tracingHelper: EngineConfig['tracingHelper']; + accelerateUtils?: EngineConfig['accelerateUtils']; +}; + +export declare type Action = keyof typeof DMMF.ModelAction | 'executeRaw' | 'queryRaw' | 'runCommandRaw'; + +export declare type Aggregate = '_count' | '_max' | '_min' | '_avg' | '_sum'; + +export declare type AllModelsToStringIndex, K extends PropertyKey> = Args extends { + [P in K]: { + $allModels: infer AllModels; + }; +} ? { + [P in K]: Record; +} : {}; + +declare class AnyNull extends NullTypesEnumValue { +} + +export declare type Args = T extends { + [K: symbol]: { + types: { + operations: { + [K in F]: { + args: any; + }; + }; + }; + }; +} ? T[symbol]['types']['operations'][F]['args'] : any; + +export declare type Args_3 = Args; + +/** + * Attributes is a map from string to attribute values. + * + * Note: only the own enumerable keys are counted as valid attribute keys. + */ +declare interface Attributes { + [attributeKey: string]: AttributeValue | undefined; +} + +/** + * Attribute values may be any non-nullish primitive value except an object. + * + * null or undefined attribute values are invalid and will result in undefined behavior. + */ +declare type AttributeValue = string | number | boolean | Array | Array | Array; + +export declare type BaseDMMF = Pick; + +declare type BatchArgs = { + queries: BatchQuery[]; + transaction?: { + isolationLevel?: IsolationLevel; + }; +}; + +declare type BatchInternalParams = { + requests: RequestParams[]; + customDataProxyFetch?: CustomDataProxyFetch; +}; + +declare type BatchQuery = { + model: string | undefined; + operation: string; + args: JsArgs | RawQueryArgs; +}; + +declare type BatchQueryEngineResult = QueryEngineResult | Error; + +declare type BatchQueryOptionsCb = (args: BatchQueryOptionsCbArgs) => Promise; + +declare type BatchQueryOptionsCbArgs = { + args: BatchArgs; + query: (args: BatchArgs, __internalParams?: BatchInternalParams) => Promise; + __internalParams: BatchInternalParams; +}; + +declare type BatchTransactionOptions = { + isolationLevel?: Transaction_2.IsolationLevel; +}; + +declare interface BinaryTargetsEnvValue { + fromEnvVar: string | null; + value: string; + native?: boolean; +} + +export declare type Call = (F & { + params: P; +})['returns']; + +declare interface CallSite { + getLocation(): LocationInFile | null; +} + +export declare type Cast = A extends W ? A : W; + +declare type Client = ReturnType extends new () => infer T ? T : never; + +export declare type ClientArg = { + [MethodName in string]: unknown; +}; + +export declare type ClientArgs = { + client: ClientArg; +}; + +export declare type ClientBuiltInProp = keyof DynamicClientExtensionThisBuiltin; + +declare type ColumnType = (typeof ColumnTypeEnum)[keyof typeof ColumnTypeEnum]; + +declare const ColumnTypeEnum: { + readonly Int32: 0; + readonly Int64: 1; + readonly Float: 2; + readonly Double: 3; + readonly Numeric: 4; + readonly Boolean: 5; + readonly Character: 6; + readonly Text: 7; + readonly Date: 8; + readonly Time: 9; + readonly DateTime: 10; + readonly Json: 11; + readonly Enum: 12; + readonly Bytes: 13; + readonly Set: 14; + readonly Uuid: 15; + readonly Int32Array: 64; + readonly Int64Array: 65; + readonly FloatArray: 66; + readonly DoubleArray: 67; + readonly NumericArray: 68; + readonly BooleanArray: 69; + readonly CharacterArray: 70; + readonly TextArray: 71; + readonly DateArray: 72; + readonly TimeArray: 73; + readonly DateTimeArray: 74; + readonly JsonArray: 75; + readonly EnumArray: 76; + readonly BytesArray: 77; + readonly UuidArray: 78; + readonly UnknownNumber: 128; +}; + +export declare type Compute = T extends Function ? T : { + [K in keyof T]: T[K]; +} & unknown; + +export declare type ComputeDeep = T extends Function ? T : { + [K in keyof T]: ComputeDeep; +} & unknown; + +declare type ComputedField = { + name: string; + needs: string[]; + compute: ResultArgsFieldCompute; +}; + +declare type ComputedFieldsMap = { + [fieldName: string]: ComputedField; +}; + +declare type ConnectionInfo = { + schemaName?: string; +}; + +declare interface Context { + /** + * Get a value from the context. + * + * @param key key which identifies a context value + */ + getValue(key: symbol): unknown; + /** + * Create a new context which inherits from this context and has + * the given key set to the given value. + * + * @param key context key for which to set the value + * @param value value to set for the given key + */ + setValue(key: symbol, value: unknown): Context; + /** + * Return a new context which inherits from this context but does + * not contain a value for the given key. + * + * @param key context key for which to clear a value + */ + deleteValue(key: symbol): Context; +} + +declare type Context_2 = T extends { + [K: symbol]: { + ctx: infer C; + }; +} ? C & T & { + /** + * @deprecated Use `$name` instead. + */ + name?: string; + $name?: string; + $parent?: unknown; +} : T & { + /** + * @deprecated Use `$name` instead. + */ + name?: string; + $name?: string; + $parent?: unknown; +}; + +export declare type Count = { + [K in keyof O]: Count; +} & {}; + +declare type CustomDataProxyFetch = (fetch: Fetch) => Fetch; + +declare class DataLoader { + private options; + batches: { + [key: string]: Job[]; + }; + private tickActive; + constructor(options: DataLoaderOptions); + request(request: T): Promise; + private dispatchBatches; + get [Symbol.toStringTag](): string; +} + +declare type DataLoaderOptions = { + singleLoader: (request: T) => Promise; + batchLoader: (request: T[]) => Promise; + batchBy: (request: T) => string | undefined; + batchOrder: (requestA: T, requestB: T) => number; +}; + +declare type Datasource = { + url?: string; +}; + +declare type Datasources = { + [name in string]: Datasource; +}; + +declare class DbNull extends NullTypesEnumValue { +} + +export declare const Debug: typeof debugCreate & { + enable(namespace: any): void; + disable(): any; + enabled(namespace: string): boolean; + log: (...args: string[]) => void; + formatters: {}; +}; + +/** + * Create a new debug instance with the given namespace. + * + * @example + * ```ts + * import Debug from '@prisma/debug' + * const debug = Debug('prisma:client') + * debug('Hello World') + * ``` + */ +declare function debugCreate(namespace: string): ((...args: any[]) => void) & { + color: string; + enabled: boolean; + namespace: string; + log: (...args: string[]) => void; + extend: () => void; +}; + +export declare namespace Decimal { + export type Constructor = typeof Decimal; + export type Instance = Decimal; + export type Rounding = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; + export type Modulo = Rounding | 9; + export type Value = string | number | Decimal; + + // http://mikemcl.github.io/decimal.js/#constructor-properties + export interface Config { + precision?: number; + rounding?: Rounding; + toExpNeg?: number; + toExpPos?: number; + minE?: number; + maxE?: number; + crypto?: boolean; + modulo?: Modulo; + defaults?: boolean; + } +} + +export declare class Decimal { + readonly d: number[]; + readonly e: number; + readonly s: number; + + constructor(n: Decimal.Value); + + absoluteValue(): Decimal; + abs(): Decimal; + + ceil(): Decimal; + + clampedTo(min: Decimal.Value, max: Decimal.Value): Decimal; + clamp(min: Decimal.Value, max: Decimal.Value): Decimal; + + comparedTo(n: Decimal.Value): number; + cmp(n: Decimal.Value): number; + + cosine(): Decimal; + cos(): Decimal; + + cubeRoot(): Decimal; + cbrt(): Decimal; + + decimalPlaces(): number; + dp(): number; + + dividedBy(n: Decimal.Value): Decimal; + div(n: Decimal.Value): Decimal; + + dividedToIntegerBy(n: Decimal.Value): Decimal; + divToInt(n: Decimal.Value): Decimal; + + equals(n: Decimal.Value): boolean; + eq(n: Decimal.Value): boolean; + + floor(): Decimal; + + greaterThan(n: Decimal.Value): boolean; + gt(n: Decimal.Value): boolean; + + greaterThanOrEqualTo(n: Decimal.Value): boolean; + gte(n: Decimal.Value): boolean; + + hyperbolicCosine(): Decimal; + cosh(): Decimal; + + hyperbolicSine(): Decimal; + sinh(): Decimal; + + hyperbolicTangent(): Decimal; + tanh(): Decimal; + + inverseCosine(): Decimal; + acos(): Decimal; + + inverseHyperbolicCosine(): Decimal; + acosh(): Decimal; + + inverseHyperbolicSine(): Decimal; + asinh(): Decimal; + + inverseHyperbolicTangent(): Decimal; + atanh(): Decimal; + + inverseSine(): Decimal; + asin(): Decimal; + + inverseTangent(): Decimal; + atan(): Decimal; + + isFinite(): boolean; + + isInteger(): boolean; + isInt(): boolean; + + isNaN(): boolean; + + isNegative(): boolean; + isNeg(): boolean; + + isPositive(): boolean; + isPos(): boolean; + + isZero(): boolean; + + lessThan(n: Decimal.Value): boolean; + lt(n: Decimal.Value): boolean; + + lessThanOrEqualTo(n: Decimal.Value): boolean; + lte(n: Decimal.Value): boolean; + + logarithm(n?: Decimal.Value): Decimal; + log(n?: Decimal.Value): Decimal; + + minus(n: Decimal.Value): Decimal; + sub(n: Decimal.Value): Decimal; + + modulo(n: Decimal.Value): Decimal; + mod(n: Decimal.Value): Decimal; + + naturalExponential(): Decimal; + exp(): Decimal; + + naturalLogarithm(): Decimal; + ln(): Decimal; + + negated(): Decimal; + neg(): Decimal; + + plus(n: Decimal.Value): Decimal; + add(n: Decimal.Value): Decimal; + + precision(includeZeros?: boolean): number; + sd(includeZeros?: boolean): number; + + round(): Decimal; + + sine() : Decimal; + sin() : Decimal; + + squareRoot(): Decimal; + sqrt(): Decimal; + + tangent() : Decimal; + tan() : Decimal; + + times(n: Decimal.Value): Decimal; + mul(n: Decimal.Value) : Decimal; + + toBinary(significantDigits?: number): string; + toBinary(significantDigits: number, rounding: Decimal.Rounding): string; + + toDecimalPlaces(decimalPlaces?: number): Decimal; + toDecimalPlaces(decimalPlaces: number, rounding: Decimal.Rounding): Decimal; + toDP(decimalPlaces?: number): Decimal; + toDP(decimalPlaces: number, rounding: Decimal.Rounding): Decimal; + + toExponential(decimalPlaces?: number): string; + toExponential(decimalPlaces: number, rounding: Decimal.Rounding): string; + + toFixed(decimalPlaces?: number): string; + toFixed(decimalPlaces: number, rounding: Decimal.Rounding): string; + + toFraction(max_denominator?: Decimal.Value): Decimal[]; + + toHexadecimal(significantDigits?: number): string; + toHexadecimal(significantDigits: number, rounding: Decimal.Rounding): string; + toHex(significantDigits?: number): string; + toHex(significantDigits: number, rounding?: Decimal.Rounding): string; + + toJSON(): string; + + toNearest(n: Decimal.Value, rounding?: Decimal.Rounding): Decimal; + + toNumber(): number; + + toOctal(significantDigits?: number): string; + toOctal(significantDigits: number, rounding: Decimal.Rounding): string; + + toPower(n: Decimal.Value): Decimal; + pow(n: Decimal.Value): Decimal; + + toPrecision(significantDigits?: number): string; + toPrecision(significantDigits: number, rounding: Decimal.Rounding): string; + + toSignificantDigits(significantDigits?: number): Decimal; + toSignificantDigits(significantDigits: number, rounding: Decimal.Rounding): Decimal; + toSD(significantDigits?: number): Decimal; + toSD(significantDigits: number, rounding: Decimal.Rounding): Decimal; + + toString(): string; + + truncated(): Decimal; + trunc(): Decimal; + + valueOf(): string; + + static abs(n: Decimal.Value): Decimal; + static acos(n: Decimal.Value): Decimal; + static acosh(n: Decimal.Value): Decimal; + static add(x: Decimal.Value, y: Decimal.Value): Decimal; + static asin(n: Decimal.Value): Decimal; + static asinh(n: Decimal.Value): Decimal; + static atan(n: Decimal.Value): Decimal; + static atanh(n: Decimal.Value): Decimal; + static atan2(y: Decimal.Value, x: Decimal.Value): Decimal; + static cbrt(n: Decimal.Value): Decimal; + static ceil(n: Decimal.Value): Decimal; + static clamp(n: Decimal.Value, min: Decimal.Value, max: Decimal.Value): Decimal; + static clone(object?: Decimal.Config): Decimal.Constructor; + static config(object: Decimal.Config): Decimal.Constructor; + static cos(n: Decimal.Value): Decimal; + static cosh(n: Decimal.Value): Decimal; + static div(x: Decimal.Value, y: Decimal.Value): Decimal; + static exp(n: Decimal.Value): Decimal; + static floor(n: Decimal.Value): Decimal; + static hypot(...n: Decimal.Value[]): Decimal; + static isDecimal(object: any): object is Decimal; + static ln(n: Decimal.Value): Decimal; + static log(n: Decimal.Value, base?: Decimal.Value): Decimal; + static log2(n: Decimal.Value): Decimal; + static log10(n: Decimal.Value): Decimal; + static max(...n: Decimal.Value[]): Decimal; + static min(...n: Decimal.Value[]): Decimal; + static mod(x: Decimal.Value, y: Decimal.Value): Decimal; + static mul(x: Decimal.Value, y: Decimal.Value): Decimal; + static noConflict(): Decimal.Constructor; // Browser only + static pow(base: Decimal.Value, exponent: Decimal.Value): Decimal; + static random(significantDigits?: number): Decimal; + static round(n: Decimal.Value): Decimal; + static set(object: Decimal.Config): Decimal.Constructor; + static sign(n: Decimal.Value): number; + static sin(n: Decimal.Value): Decimal; + static sinh(n: Decimal.Value): Decimal; + static sqrt(n: Decimal.Value): Decimal; + static sub(x: Decimal.Value, y: Decimal.Value): Decimal; + static sum(...n: Decimal.Value[]): Decimal; + static tan(n: Decimal.Value): Decimal; + static tanh(n: Decimal.Value): Decimal; + static trunc(n: Decimal.Value): Decimal; + + static readonly default?: Decimal.Constructor; + static readonly Decimal?: Decimal.Constructor; + + static readonly precision: number; + static readonly rounding: Decimal.Rounding; + static readonly toExpNeg: number; + static readonly toExpPos: number; + static readonly minE: number; + static readonly maxE: number; + static readonly crypto: boolean; + static readonly modulo: Decimal.Modulo; + + static readonly ROUND_UP: 0; + static readonly ROUND_DOWN: 1; + static readonly ROUND_CEIL: 2; + static readonly ROUND_FLOOR: 3; + static readonly ROUND_HALF_UP: 4; + static readonly ROUND_HALF_DOWN: 5; + static readonly ROUND_HALF_EVEN: 6; + static readonly ROUND_HALF_CEIL: 7; + static readonly ROUND_HALF_FLOOR: 8; + static readonly EUCLID: 9; +} + +/** + * Interface for any Decimal.js-like library + * Allows us to accept Decimal.js from different + * versions and some compatible alternatives + */ +export declare interface DecimalJsLike { + d: number[]; + e: number; + s: number; + toFixed(): string; +} + +export declare type DefaultArgs = InternalArgs<{}, {}, {}, {}>; + +export declare type DefaultSelection

= UnwrapPayload<{ + default: P; +}>['default']; + +export declare function defineDmmfProperty(target: object, runtimeDataModel: RuntimeDataModel): void; + +declare function defineExtension(ext: ExtensionArgs | ((client: Client) => Client)): (client: Client) => Client; + +declare const denylist: readonly ["$connect", "$disconnect", "$on", "$transaction", "$use", "$extends"]; + +/** + * Detect the current JavaScript runtime following + * the WinterCG Runtime Keys proposal: + * + * - `edge-routine` Alibaba Cloud Edge Routine + * - `workerd` Cloudflare Workers + * - `deno` Deno and Deno Deploy + * - `lagon` Lagon + * - `react-native` React Native + * - `netlify` Netlify Edge Functions + * - `electron` Electron + * - `node` Node.js + * - `bun` Bun + * - `edge-light` Vercel Edge Functions + * - `fastly` Fastly Compute@Edge + * + * @see https://runtime-keys.proposal.wintercg.org/ + * @returns {Runtime} + */ +export declare function detectRuntime(): Runtime; + +export declare type DevTypeMapDef = { + meta: { + modelProps: string; + }; + model: { + [Model in PropertyKey]: { + [Operation in PropertyKey]: DevTypeMapFnDef; + }; + }; + other: { + [Operation in PropertyKey]: DevTypeMapFnDef; + }; +}; + +export declare type DevTypeMapFnDef = { + args: any; + result: any; + payload: OperationPayload; +}; + +declare type Dictionary = { + [key: string]: T | undefined; +}; + +export declare namespace DMMF { + export type Document = ReadonlyDeep_2<{ + datamodel: Datamodel; + schema: Schema; + mappings: Mappings; + }>; + export type Mappings = ReadonlyDeep_2<{ + modelOperations: ModelMapping[]; + otherOperations: { + read: string[]; + write: string[]; + }; + }>; + export type OtherOperationMappings = ReadonlyDeep_2<{ + read: string[]; + write: string[]; + }>; + export type DatamodelEnum = ReadonlyDeep_2<{ + name: string; + values: EnumValue[]; + dbName?: string | null; + documentation?: string; + }>; + export type SchemaEnum = ReadonlyDeep_2<{ + name: string; + values: string[]; + }>; + export type EnumValue = ReadonlyDeep_2<{ + name: string; + dbName: string | null; + }>; + export type Datamodel = ReadonlyDeep_2<{ + models: Model[]; + enums: DatamodelEnum[]; + types: Model[]; + }>; + export type uniqueIndex = ReadonlyDeep_2<{ + name: string; + fields: string[]; + }>; + export type PrimaryKey = ReadonlyDeep_2<{ + name: string | null; + fields: string[]; + }>; + export type Model = ReadonlyDeep_2<{ + name: string; + dbName: string | null; + fields: Field[]; + uniqueFields: string[][]; + uniqueIndexes: uniqueIndex[]; + documentation?: string; + primaryKey: PrimaryKey | null; + isGenerated?: boolean; + }>; + export type FieldKind = 'scalar' | 'object' | 'enum' | 'unsupported'; + export type FieldNamespace = 'model' | 'prisma'; + export type FieldLocation = 'scalar' | 'inputObjectTypes' | 'outputObjectTypes' | 'enumTypes' | 'fieldRefTypes'; + export type Field = ReadonlyDeep_2<{ + kind: FieldKind; + name: string; + isRequired: boolean; + isList: boolean; + isUnique: boolean; + isId: boolean; + isReadOnly: boolean; + isGenerated?: boolean; + isUpdatedAt?: boolean; + /** + * Describes the data type in the same the way it is defined in the Prisma schema: + * BigInt, Boolean, Bytes, DateTime, Decimal, Float, Int, JSON, String, $ModelName + */ + type: string; + dbName?: string | null; + hasDefaultValue: boolean; + default?: FieldDefault | FieldDefaultScalar | FieldDefaultScalar[]; + relationFromFields?: string[]; + relationToFields?: string[]; + relationOnDelete?: string; + relationName?: string; + documentation?: string; + }>; + export type FieldDefault = ReadonlyDeep_2<{ + name: string; + args: any[]; + }>; + export type FieldDefaultScalar = string | boolean | number; + export type Schema = ReadonlyDeep_2<{ + rootQueryType?: string; + rootMutationType?: string; + inputObjectTypes: { + model?: InputType[]; + prisma: InputType[]; + }; + outputObjectTypes: { + model: OutputType[]; + prisma: OutputType[]; + }; + enumTypes: { + model?: SchemaEnum[]; + prisma: SchemaEnum[]; + }; + fieldRefTypes: { + prisma?: FieldRefType[]; + }; + }>; + export type Query = ReadonlyDeep_2<{ + name: string; + args: SchemaArg[]; + output: QueryOutput; + }>; + export type QueryOutput = ReadonlyDeep_2<{ + name: string; + isRequired: boolean; + isList: boolean; + }>; + export type TypeRef = { + isList: boolean; + type: string; + location: AllowedLocations; + namespace?: FieldNamespace; + }; + export type InputTypeRef = TypeRef<'scalar' | 'inputObjectTypes' | 'enumTypes' | 'fieldRefTypes'>; + export type SchemaArg = ReadonlyDeep_2<{ + name: string; + comment?: string; + isNullable: boolean; + isRequired: boolean; + inputTypes: InputTypeRef[]; + deprecation?: Deprecation; + }>; + export type OutputType = ReadonlyDeep_2<{ + name: string; + fields: SchemaField[]; + }>; + export type SchemaField = ReadonlyDeep_2<{ + name: string; + isNullable?: boolean; + outputType: OutputTypeRef; + args: SchemaArg[]; + deprecation?: Deprecation; + documentation?: string; + }>; + export type OutputTypeRef = TypeRef<'scalar' | 'outputObjectTypes' | 'enumTypes'>; + export type Deprecation = ReadonlyDeep_2<{ + sinceVersion: string; + reason: string; + plannedRemovalVersion?: string; + }>; + export type InputType = ReadonlyDeep_2<{ + name: string; + constraints: { + maxNumFields: number | null; + minNumFields: number | null; + fields?: string[]; + }; + meta?: { + source?: string; + }; + fields: SchemaArg[]; + }>; + export type FieldRefType = ReadonlyDeep_2<{ + name: string; + allowTypes: FieldRefAllowType[]; + fields: SchemaArg[]; + }>; + export type FieldRefAllowType = TypeRef<'scalar' | 'enumTypes'>; + export type ModelMapping = ReadonlyDeep_2<{ + model: string; + plural: string; + findUnique?: string | null; + findUniqueOrThrow?: string | null; + findFirst?: string | null; + findFirstOrThrow?: string | null; + findMany?: string | null; + create?: string | null; + createMany?: string | null; + update?: string | null; + updateMany?: string | null; + upsert?: string | null; + delete?: string | null; + deleteMany?: string | null; + aggregate?: string | null; + groupBy?: string | null; + count?: string | null; + findRaw?: string | null; + aggregateRaw?: string | null; + }>; + export enum ModelAction { + findUnique = "findUnique", + findUniqueOrThrow = "findUniqueOrThrow", + findFirst = "findFirst", + findFirstOrThrow = "findFirstOrThrow", + findMany = "findMany", + create = "create", + createMany = "createMany", + update = "update", + updateMany = "updateMany", + upsert = "upsert", + delete = "delete", + deleteMany = "deleteMany", + groupBy = "groupBy", + count = "count",// TODO: count does not actually exist, why? + aggregate = "aggregate", + findRaw = "findRaw", + aggregateRaw = "aggregateRaw" + } +} + +export declare interface DriverAdapter extends Queryable { + /** + * Starts new transation. + */ + startTransaction(): Promise>; + /** + * Optional method that returns extra connection info + */ + getConnectionInfo?(): Result_4; +} + +/** Client */ +export declare type DynamicClientExtensionArgs> = { + [P in keyof C_]: unknown; +} & { + [K: symbol]: { + ctx: Optional, ITXClientDenyList> & { + $parent: Optional, ITXClientDenyList>; + }; + }; +}; + +export declare type DynamicClientExtensionThis> = { + [P in keyof ExtArgs['client']]: Return; +} & { + [P in Exclude]: DynamicModelExtensionThis, ExtArgs>; +} & { + [P in Exclude]: >(...args: ToTuple) => PrismaPromise; +} & { + [P in Exclude]: DynamicClientExtensionThisBuiltin[P]; +} & { + [K: symbol]: { + types: TypeMap['other']; + }; +}; + +export declare type DynamicClientExtensionThisBuiltin> = { + $extends: ExtendsHook<'extends', TypeMapCb, ExtArgs>; + $transaction

[]>(arg: [...P], options?: { + isolationLevel?: TypeMap['meta']['txIsolationLevel']; + }): Promise>; + $transaction(fn: (client: Omit, ITXClientDenyList>) => Promise, options?: { + maxWait?: number; + timeout?: number; + isolationLevel?: TypeMap['meta']['txIsolationLevel']; + }): Promise; + $disconnect(): Promise; + $connect(): Promise; +}; + +/** Model */ +export declare type DynamicModelExtensionArgs> = { + [K in keyof M_]: K extends '$allModels' ? { + [P in keyof M_[K]]?: unknown; + } & { + [K: symbol]: {}; + } : K extends TypeMap['meta']['modelProps'] ? { + [P in keyof M_[K]]?: unknown; + } & { + [K: symbol]: { + ctx: DynamicModelExtensionThis, ExtArgs> & { + $parent: DynamicClientExtensionThis; + } & { + $name: ModelKey; + } & { + /** + * @deprecated Use `$name` instead. + */ + name: ModelKey; + }; + }; + } : never; +}; + +export declare type DynamicModelExtensionFluentApi = { + [K in keyof TypeMap['model'][M]['payload']['objects']]: (args?: Exact>) => PrismaPromise, [K]> | Null> & DynamicModelExtensionFluentApi>; +}; + +export declare type DynamicModelExtensionFnResult> = P extends FluentOperation ? DynamicModelExtensionFluentApi & PrismaPromise | Null> : PrismaPromise>; + +export declare type DynamicModelExtensionFnResultBase = GetResult; + +export declare type DynamicModelExtensionFnResultNull

= P extends 'findUnique' | 'findFirst' ? null : never; + +export declare type DynamicModelExtensionOperationFn = {} extends TypeMap['model'][M]['operations'][P]['args'] ? (args?: Exact) => DynamicModelExtensionFnResult : (args: Exact) => DynamicModelExtensionFnResult; + +export declare type DynamicModelExtensionThis> = { + [P in keyof ExtArgs['model'][Uncapitalize]]: Return][P]>; +} & { + [P in Exclude]>]: DynamicModelExtensionOperationFn; +} & { + [P in Exclude<'fields', keyof ExtArgs['model'][Uncapitalize]>]: TypeMap['model'][M]['fields']; +} & { + [K: symbol]: { + types: TypeMap['model'][M]; + }; +}; + +/** Query */ +export declare type DynamicQueryExtensionArgs = { + [K in keyof Q_]: K extends '$allOperations' ? (args: { + model?: string; + operation: string; + args: any; + query: (args: any) => PrismaPromise; + }) => Promise : K extends '$allModels' ? { + [P in keyof Q_[K] | keyof TypeMap['model'][keyof TypeMap['model']]['operations'] | '$allOperations']?: P extends '$allOperations' ? DynamicQueryExtensionCb : P extends keyof TypeMap['model'][keyof TypeMap['model']]['operations'] ? DynamicQueryExtensionCb : never; + } : K extends TypeMap['meta']['modelProps'] ? { + [P in keyof Q_[K] | keyof TypeMap['model'][ModelKey]['operations'] | '$allOperations']?: P extends '$allOperations' ? DynamicQueryExtensionCb, keyof TypeMap['model'][ModelKey]['operations']> : P extends keyof TypeMap['model'][ModelKey]['operations'] ? DynamicQueryExtensionCb, P> : never; + } : K extends keyof TypeMap['other']['operations'] ? DynamicQueryExtensionCb<[TypeMap], 0, 'other', K> : never; +}; + +export declare type DynamicQueryExtensionCb = >(args: A) => Promise; + +export declare type DynamicQueryExtensionCbArgs = (_1 extends unknown ? _2 extends unknown ? { + args: DynamicQueryExtensionCbArgsArgs; + model: _0 extends 0 ? undefined : _1; + operation: _2; + query: >(args: A) => PrismaPromise; +} : never : never) & { + query: (args: DynamicQueryExtensionCbArgsArgs) => PrismaPromise; +}; + +export declare type DynamicQueryExtensionCbArgsArgs = _2 extends '$queryRaw' | '$executeRaw' ? Sql : TypeMap[_0][_1]['operations'][_2]['args']; + +/** Result */ +export declare type DynamicResultExtensionArgs = { + [K in keyof R_]: { + [P in keyof R_[K]]?: { + needs?: DynamicResultExtensionNeeds, R_[K][P]>; + compute(data: DynamicResultExtensionData, R_[K][P]>): any; + }; + }; +}; + +export declare type DynamicResultExtensionData = GetFindResult; + +export declare type DynamicResultExtensionNeeds = { + [K in keyof S]: K extends keyof TypeMap['model'][M]['payload']['scalars'] ? S[K] : never; +} & { + [N in keyof TypeMap['model'][M]['payload']['scalars']]?: boolean; +}; + +/** + * Placeholder value for "no text". + */ +export declare const empty: Sql; + +export declare type EmptyToUnknown = T; + +declare interface Engine { + /** The name of the engine. This is meant to be consumed externally */ + readonly name: string; + onBeforeExit(callback: () => Promise): void; + start(): Promise; + stop(): Promise; + version(forceRun?: boolean): Promise | string; + request(query: JsonQuery, options: RequestOptions_2): Promise>; + requestBatch(queries: JsonQuery[], options: RequestBatchOptions): Promise[]>; + transaction(action: 'start', headers: Transaction_2.TransactionHeaders, options: Transaction_2.Options): Promise>; + transaction(action: 'commit', headers: Transaction_2.TransactionHeaders, info: Transaction_2.InteractiveTransactionInfo): Promise; + transaction(action: 'rollback', headers: Transaction_2.TransactionHeaders, info: Transaction_2.InteractiveTransactionInfo): Promise; + metrics(options: MetricsOptionsJson): Promise; + metrics(options: MetricsOptionsPrometheus): Promise; +} + +declare interface EngineConfig { + cwd: string; + dirname: string; + datamodelPath: string; + enableDebugLogs?: boolean; + allowTriggerPanic?: boolean; + prismaPath?: string; + generator?: GeneratorConfig; + overrideDatasources: Datasources; + showColors?: boolean; + logQueries?: boolean; + logLevel?: 'info' | 'warn'; + env: Record; + flags?: string[]; + clientVersion: string; + engineVersion: string; + previewFeatures?: string[]; + engineEndpoint?: string; + activeProvider?: string; + logEmitter: LogEmitter; + transactionOptions: Transaction_2.Options; + /** + * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-planetscale`. + * If set, this is only used in the library engine, and all queries would be performed through it, + * rather than Prisma's Rust drivers. + * @remarks only used by LibraryEngine.ts + */ + adapter?: ErrorCapturingDriverAdapter; + /** + * The contents of the schema encoded into a string + * @remarks only used by DataProxyEngine.ts + */ + inlineSchema: string; + /** + * The contents of the datasource url saved in a string + * @remarks only used by DataProxyEngine.ts + */ + inlineDatasources: GetPrismaClientConfig['inlineDatasources']; + /** + * The string hash that was produced for a given schema + * @remarks only used by DataProxyEngine.ts + */ + inlineSchemaHash: string; + /** + * The helper for interaction with OTEL tracing + * @remarks enabling is determined by the client and @prisma/instrumentation package + */ + tracingHelper: TracingHelper; + /** + * Information about whether we have not found a schema.prisma file in the + * default location, and that we fell back to finding the schema.prisma file + * in the current working directory. This usually means it has been bundled. + */ + isBundled?: boolean; + /** + * Web Assembly module loading configuration + */ + engineWasm?: WasmLoadingConfig; + /** + * Allows Accelerate to use runtime utilities from the client. These are + * necessary for the AccelerateEngine to function correctly. + */ + accelerateUtils?: { + resolveDatasourceUrl: typeof resolveDatasourceUrl; + getBatchRequestPayload: typeof getBatchRequestPayload; + prismaGraphQLToJSError: typeof prismaGraphQLToJSError; + PrismaClientUnknownRequestError: typeof PrismaClientUnknownRequestError; + PrismaClientInitializationError: typeof PrismaClientInitializationError; + PrismaClientKnownRequestError: typeof PrismaClientKnownRequestError; + debug: (...args: any[]) => void; + engineVersion: string; + clientVersion: string; + }; +} + +declare type EngineEvent = E extends QueryEventType ? QueryEvent : LogEvent; + +declare type EngineEventType = QueryEventType | LogEventType; + +declare type EngineProtocol = 'graphql' | 'json'; + +declare type EngineSpan = { + span: boolean; + name: string; + trace_id: string; + span_id: string; + parent_span_id: string; + start_time: [number, number]; + end_time: [number, number]; + attributes?: Record; + links?: { + trace_id: string; + span_id: string; + }[]; +}; + +declare type EngineSpanEvent = { + span: boolean; + spans: EngineSpan[]; +}; + +declare interface EnvValue { + fromEnvVar: null | string; + value: null | string; +} + +export declare type Equals = (() => T extends A ? 1 : 2) extends (() => T extends B ? 1 : 2) ? 1 : 0; + +declare type Error_2 = { + kind: 'GenericJs'; + id: number; +} | { + kind: 'UnsupportedNativeDataType'; + type: string; +} | { + kind: 'Postgres'; + code: string; + severity: string; + message: string; + detail: string | undefined; + column: string | undefined; + hint: string | undefined; +} | { + kind: 'Mysql'; + code: number; + message: string; + state: string; +} | { + kind: 'Sqlite'; + /** + * Sqlite extended error code: https://www.sqlite.org/rescode.html + */ + extendedCode: number; + message: string; +}; + +declare interface ErrorCapturingDriverAdapter extends DriverAdapter { + readonly errorRegistry: ErrorRegistry; +} + +declare type ErrorFormat = 'pretty' | 'colorless' | 'minimal'; + +declare type ErrorRecord = { + error: unknown; +}; + +declare interface ErrorRegistry { + consumeError(id: number): ErrorRecord | undefined; +} + +declare interface ErrorWithBatchIndex { + batchRequestIdx?: number; +} + +declare type EventCallback = [E] extends ['beforeExit'] ? () => Promise : [E] extends [LogLevel] ? (event: EngineEvent) => void : never; + +export declare type Exact = (A extends unknown ? (W extends A ? { + [K in keyof A]: Exact; +} : W) : never) | (A extends Narrowable ? A : never); + +/** + * Defines Exception. + * + * string or an object with one of (message or name or code) and optional stack + */ +declare type Exception = ExceptionWithCode | ExceptionWithMessage | ExceptionWithName | string; + +declare interface ExceptionWithCode { + code: string | number; + name?: string; + message?: string; + stack?: string; +} + +declare interface ExceptionWithMessage { + code?: string | number; + message: string; + name?: string; + stack?: string; +} + +declare interface ExceptionWithName { + code?: string | number; + message?: string; + name: string; + stack?: string; +} + +declare type ExtendedEventType = LogLevel | 'beforeExit'; + +declare type ExtendedSpanOptions = SpanOptions & { + /** The name of the span */ + name: string; + internal?: boolean; + middleware?: boolean; + /** Whether it propagates context (?=true) */ + active?: boolean; + /** The context to append the span to */ + context?: Context; +}; + +/** $extends, defineExtension */ +export declare interface ExtendsHook, TypeMap extends TypeMapDef = Call> { + extArgs: ExtArgs; + , MergedArgs extends InternalArgs = MergeExtArgs>(extension: ((client: DynamicClientExtensionThis) => { + $extends: { + extArgs: Args; + }; + }) | { + name?: string; + query?: DynamicQueryExtensionArgs; + result?: DynamicResultExtensionArgs & R; + model?: DynamicModelExtensionArgs & M; + client?: DynamicClientExtensionArgs & C; + }): { + extends: DynamicClientExtensionThis, TypeMapCb, MergedArgs>; + define: (client: any) => { + $extends: { + extArgs: Args; + }; + }; + }[Variant]; +} + +export declare type ExtensionArgs = Optional; + +declare namespace Extensions { + export { + defineExtension, + getExtensionContext + } +} +export { Extensions } + +declare namespace Extensions_2 { + export { + InternalArgs, + DefaultArgs, + GetPayloadResult, + GetSelect, + DynamicQueryExtensionArgs, + DynamicQueryExtensionCb, + DynamicQueryExtensionCbArgs, + DynamicQueryExtensionCbArgsArgs, + DynamicResultExtensionArgs, + DynamicResultExtensionNeeds, + DynamicResultExtensionData, + DynamicModelExtensionArgs, + DynamicModelExtensionThis, + DynamicModelExtensionOperationFn, + DynamicModelExtensionFnResult, + DynamicModelExtensionFnResultBase, + DynamicModelExtensionFluentApi, + DynamicModelExtensionFnResultNull, + DynamicClientExtensionArgs, + DynamicClientExtensionThis, + ClientBuiltInProp, + DynamicClientExtensionThisBuiltin, + ExtendsHook, + MergeExtArgs, + AllModelsToStringIndex, + TypeMapDef, + DevTypeMapDef, + DevTypeMapFnDef, + TypeMapCbDef, + ModelKey, + RequiredExtensionArgs as UserArgs + } +} + +declare type Fetch = typeof nodeFetch; + +/** + * A reference to a specific field of a specific model + */ +export declare interface FieldRef { + readonly modelName: Model; + readonly name: string; + readonly typeName: FieldType; + readonly isList: boolean; +} + +export declare type FluentOperation = 'findUnique' | 'findUniqueOrThrow' | 'findFirst' | 'findFirstOrThrow' | 'create' | 'update' | 'upsert' | 'delete'; + +export declare interface Fn { + params: Params; + returns: Returns; +} + +declare interface GeneratorConfig { + name: string; + output: EnvValue | null; + isCustomOutput?: boolean; + provider: EnvValue; + config: Dictionary; + binaryTargets: BinaryTargetsEnvValue[]; + previewFeatures: string[]; +} + +export declare type GetAggregateResult

= { + [K in keyof A as K extends Aggregate ? K : never]: K extends '_count' ? A[K] extends true ? number : Count : { + [J in keyof A[K] & string]: P['scalars'][J] | null; + }; +}; + +declare function getBatchRequestPayload(batch: JsonQuery[], transaction?: TransactionOptions_2): QueryEngineBatchRequest; + +export declare type GetBatchResult = { + count: number; +}; + +export declare type GetCountResult = A extends { + select: infer S; +} ? (S extends true ? number : Count) : number; + +declare function getExtensionContext(that: T): Context_2; + +export declare type GetFindResult

= Equals extends 1 ? DefaultSelection

: A extends { + select: infer S extends object; +} & Record | { + include: infer I extends object; +} & Record ? { + [K in keyof S | keyof I as (S & I)[K] extends false | undefined | null ? never : K]: (S & I)[K] extends object ? P extends SelectablePayloadFields ? O extends OperationPayload ? GetFindResult[] : never : P extends SelectablePayloadFields ? O extends OperationPayload ? GetFindResult | SelectField & null : never : K extends '_count' ? Count> : never : P extends SelectablePayloadFields ? O extends OperationPayload ? DefaultSelection[] : never : P extends SelectablePayloadFields ? O extends OperationPayload ? DefaultSelection | SelectField & null : never : P extends { + scalars: { + [k in K]: infer O; + }; + } ? O : K extends '_count' ? Count : never; +} & (A extends { + include: any; +} & Record ? DefaultSelection

: unknown) : DefaultSelection

; + +export declare type GetGroupByResult

= A extends { + by: string[]; +} ? Array & { + [K in A['by'][number]]: P['scalars'][K]; +}> : A extends { + by: string; +} ? Array & { + [K in A['by']]: P['scalars'][K]; +}> : {}[]; + +export declare type GetPayloadResult, R extends InternalArgs['result'][string], KR extends keyof R = string extends keyof R ? never : keyof R> = unknown extends R ? Base : { + [K in KR | keyof Base]: K extends KR ? R[K] extends () => { + compute: (...args: any) => infer C; + } ? C : never : Base[K]; +}; + +export declare function getPrismaClient(config: GetPrismaClientConfig): { + new (optionsArg?: PrismaClientOptions): { + _originalClient: any; + _runtimeDataModel: RuntimeDataModel; + _requestHandler: RequestHandler; + _connectionPromise?: Promise | undefined; + _disconnectionPromise?: Promise | undefined; + _engineConfig: EngineConfig; + _accelerateEngineConfig: AccelerateEngineConfig; + _clientVersion: string; + _errorFormat: ErrorFormat; + _tracingHelper: TracingHelper; + _metrics: MetricsClient; + _middlewares: MiddlewareHandler; + _previewFeatures: string[]; + _activeProvider: string; + _extensions: MergedExtensionsList; + _engine: Engine; + /** + * A fully constructed/applied Client that references the parent + * PrismaClient. This is used for Client extensions only. + */ + _appliedParent: any; + _createPrismaPromise: PrismaPromiseFactory; + /** + * Hook a middleware into the client + * @param middleware to hook + */ + $use(middleware: QueryMiddleware): void; + $on(eventType: E, callback: EventCallback): void; + $connect(): Promise; + /** + * Disconnect from the database + */ + $disconnect(): Promise; + /** + * Executes a raw query and always returns a number + */ + $executeRawInternal(transaction: PrismaPromiseTransaction | undefined, clientMethod: string, args: RawQueryArgs, middlewareArgsMapper?: MiddlewareArgsMapper): Promise; + /** + * Executes a raw query provided through a safe tag function + * @see https://github.com/prisma/prisma/issues/7142 + * + * @param query + * @param values + * @returns + */ + $executeRaw(query: TemplateStringsArray | Sql, ...values: any[]): PrismaPromise_2; + /** + * Unsafe counterpart of `$executeRaw` that is susceptible to SQL injections + * @see https://github.com/prisma/prisma/issues/7142 + * + * @param query + * @param values + * @returns + */ + $executeRawUnsafe(query: string, ...values: RawValue[]): PrismaPromise_2; + /** + * Executes a raw command only for MongoDB + * + * @param command + * @returns + */ + $runCommandRaw(command: Record): PrismaPromise_2; + /** + * Executes a raw query and returns selected data + */ + $queryRawInternal(transaction: PrismaPromiseTransaction | undefined, clientMethod: string, args: RawQueryArgs, middlewareArgsMapper?: MiddlewareArgsMapper): Promise; + /** + * Executes a raw query provided through a safe tag function + * @see https://github.com/prisma/prisma/issues/7142 + * + * @param query + * @param values + * @returns + */ + $queryRaw(query: TemplateStringsArray | Sql, ...values: any[]): PrismaPromise_2; + /** + * Unsafe counterpart of `$queryRaw` that is susceptible to SQL injections + * @see https://github.com/prisma/prisma/issues/7142 + * + * @param query + * @param values + * @returns + */ + $queryRawUnsafe(query: string, ...values: RawValue[]): PrismaPromise_2; + /** + * Execute a batch of requests in a transaction + * @param requests + * @param options + */ + _transactionWithArray({ promises, options, }: { + promises: Array>; + options?: BatchTransactionOptions | undefined; + }): Promise; + /** + * Perform a long-running transaction + * @param callback + * @param options + * @returns + */ + _transactionWithCallback({ callback, options, }: { + callback: (client: Client) => Promise; + options?: Options | undefined; + }): Promise; + _createItxClient(transaction: PrismaPromiseInteractiveTransaction): Client; + /** + * Execute queries within a transaction + * @param input a callback or a query list + * @param options to set timeouts (callback) + * @returns + */ + $transaction(input: any, options?: any): Promise; + /** + * Runs the middlewares over params before executing a request + * @param internalParams + * @returns + */ + _request(internalParams: InternalRequestParams): Promise; + _executeRequest({ args, clientMethod, dataPath, callsite, action, model, argsMapper, transaction, unpacker, otelParentCtx, customDataProxyFetch, }: InternalRequestParams): Promise; + readonly $metrics: MetricsClient; + /** + * Shortcut for checking a preview flag + * @param feature preview flag + * @returns + */ + _hasPreviewFlag(feature: string): boolean; + $extends: typeof $extends; + readonly [Symbol.toStringTag]: string; + }; +}; + +/** + * Config that is stored into the generated client. When the generated client is + * loaded, this same config is passed to {@link getPrismaClient} which creates a + * closure with that config around a non-instantiated [[PrismaClient]]. + */ +declare type GetPrismaClientConfig = { + runtimeDataModel: RuntimeDataModel; + generator?: GeneratorConfig; + relativeEnvPaths: { + rootEnvPath?: string | null; + schemaEnvPath?: string | null; + }; + relativePath: string; + dirname: string; + filename?: string; + clientVersion: string; + engineVersion: string; + datasourceNames: string[]; + activeProvider: string; + /** + * The contents of the schema encoded into a string + * @remarks only used for the purpose of data proxy + */ + inlineSchema: string; + /** + * A special env object just for the data proxy edge runtime. + * Allows bundlers to inject their own env variables (Vercel). + * Allows platforms to declare global variables as env (Workers). + * @remarks only used for the purpose of data proxy + */ + injectableEdgeEnv?: () => LoadedEnv; + /** + * The contents of the datasource url saved in a string. + * This can either be an env var name or connection string. + * It is needed by the client to connect to the Data Proxy. + * @remarks only used for the purpose of data proxy + */ + inlineDatasources: { + [name in string]: { + url: EnvValue; + }; + }; + /** + * The string hash that was produced for a given schema + * @remarks only used for the purpose of data proxy + */ + inlineSchemaHash: string; + /** + * A marker to indicate that the client was not generated via `prisma + * generate` but was generated via `generate --postinstall` script instead. + * @remarks used to error for Vercel/Netlify for schema caching issues + */ + postinstall?: boolean; + /** + * Information about the CI where the Prisma Client has been generated. The + * name of the CI environment is stored at generation time because CI + * information is not always available at runtime. Moreover, the edge client + * has no notion of environment variables, so this works around that. + * @remarks used to error for Vercel/Netlify for schema caching issues + */ + ciName?: string; + /** + * Information about whether we have not found a schema.prisma file in the + * default location, and that we fell back to finding the schema.prisma file + * in the current working directory. This usually means it has been bundled. + */ + isBundled?: boolean; + /** + * A boolean that is `false` when the client was generated with --no-engine. At + * runtime, this means the client will be bound to be using the Data Proxy. + */ + copyEngine?: boolean; + /** + * Optional wasm loading configuration + */ + engineWasm?: WasmLoadingConfig; +}; + +export declare type GetResult

= { + findUnique: GetFindResult | null; + findUniqueOrThrow: GetFindResult; + findFirst: GetFindResult | null; + findFirstOrThrow: GetFindResult; + findMany: GetFindResult[]; + create: GetFindResult; + createMany: GetBatchResult; + update: GetFindResult; + updateMany: GetBatchResult; + upsert: GetFindResult; + delete: GetFindResult; + deleteMany: GetBatchResult; + aggregate: GetAggregateResult; + count: GetCountResult; + groupBy: GetGroupByResult; + $queryRaw: unknown; + $executeRaw: number; + $queryRawUnsafe: unknown; + $executeRawUnsafe: number; + $runCommandRaw: JsonObject; + findRaw: JsonObject; + aggregateRaw: JsonObject; +}[O]; + +export declare type GetSelect, R extends InternalArgs['result'][string], KR extends keyof R = string extends keyof R ? never : keyof R> = { + [K in KR | keyof Base]?: K extends KR ? boolean : Base[K]; +}; + +declare type HandleErrorParams = { + args: JsArgs; + error: any; + clientMethod: string; + callsite?: CallSite; + transaction?: PrismaPromiseTransaction; + modelName?: string; +}; + +/** + * Defines High-Resolution Time. + * + * The first number, HrTime[0], is UNIX Epoch time in seconds since 00:00:00 UTC on 1 January 1970. + * The second number, HrTime[1], represents the partial second elapsed since Unix Epoch time represented by first number in nanoseconds. + * For example, 2021-01-01T12:30:10.150Z in UNIX Epoch time in milliseconds is represented as 1609504210150. + * The first number is calculated by converting and truncating the Epoch time in milliseconds to seconds: + * HrTime[0] = Math.trunc(1609504210150 / 1000) = 1609504210. + * The second number is calculated by converting the digits after the decimal point of the subtraction, (1609504210150 / 1000) - HrTime[0], to nanoseconds: + * HrTime[1] = Number((1609504210.150 - HrTime[0]).toFixed(9)) * 1e9 = 150000000. + * This is represented in HrTime format as [1609504210, 150000000]. + */ +declare type HrTime = [number, number]; + +declare type InteractiveTransactionInfo = { + /** + * Transaction ID returned by the query engine. + */ + id: string; + /** + * Arbitrary payload the meaning of which depends on the `Engine` implementation. + * For example, `DataProxyEngine` needs to associate different API endpoints with transactions. + * In `LibraryEngine` and `BinaryEngine` it is currently not used. + */ + payload: Payload; +}; + +declare type InteractiveTransactionOptions = Transaction_2.InteractiveTransactionInfo; + +export declare type InternalArgs = { + result: { + [K in keyof R]: { + [P in keyof R[K]]: () => R[K][P]; + }; + }; + model: { + [K in keyof M]: { + [P in keyof M[K]]: () => M[K][P]; + }; + }; + query: { + [K in keyof Q]: { + [P in keyof Q[K]]: () => Q[K][P]; + }; + }; + client: { + [K in keyof C]: () => C[K]; + }; +}; + +declare type InternalRequestParams = { + /** + * The original client method being called. + * Even though the rootField / operation can be changed, + * this method stays as it is, as it's what the user's + * code looks like + */ + clientMethod: string; + /** + * Name of js model that triggered the request. Might be used + * for warnings or error messages + */ + jsModelName?: string; + callsite?: CallSite; + transaction?: PrismaPromiseTransaction; + unpacker?: Unpacker; + otelParentCtx?: Context; + /** Used to "desugar" a user input into an "expanded" one */ + argsMapper?: (args?: UserArgs_2) => UserArgs_2; + /** Used to convert args for middleware and back */ + middlewareArgsMapper?: MiddlewareArgsMapper; + /** Used for Accelerate client extension via Data Proxy */ + customDataProxyFetch?: (fetch: Fetch) => Fetch; +} & Omit; + +declare enum IsolationLevel { + ReadUncommitted = "ReadUncommitted", + ReadCommitted = "ReadCommitted", + RepeatableRead = "RepeatableRead", + Snapshot = "Snapshot", + Serializable = "Serializable" +} + +export declare type ITXClientDenyList = (typeof denylist)[number]; + +export declare const itxClientDenyList: readonly (string | symbol)[]; + +declare interface Job { + resolve: (data: any) => void; + reject: (data: any) => void; + request: any; +} + +/** + * Create a SQL query for a list of values. + */ +export declare function join(values: readonly RawValue[], separator?: string, prefix?: string, suffix?: string): Sql; + +export declare type JsArgs = { + select?: Selection_2; + include?: Selection_2; + [argName: string]: JsInputValue; +}; + +export declare type JsInputValue = null | undefined | string | number | boolean | bigint | Uint8Array | Date | DecimalJsLike | ObjectEnumValue | RawParameters | JsonConvertible | FieldRef | JsInputValue[] | { + [key: string]: JsInputValue; +}; + +declare type JsonArgumentValue = number | string | boolean | null | RawTaggedValue | JsonArgumentValue[] | { + [key: string]: JsonArgumentValue; +}; + +export declare interface JsonArray extends Array { +} + +declare type JsonBatchQuery = { + batch: JsonQuery[]; + transaction?: { + isolationLevel?: Transaction_2.IsolationLevel; + }; +}; + +export declare interface JsonConvertible { + toJSON(): unknown; +} + +declare type JsonFieldSelection = { + arguments?: Record | RawTaggedValue; + selection: JsonSelectionSet; +}; + +declare class JsonNull extends NullTypesEnumValue { +} + +export declare type JsonObject = { + [Key in string]?: JsonValue; +}; + +declare type JsonQuery = { + modelName?: string; + action: JsonQueryAction; + query: JsonFieldSelection; +}; + +declare type JsonQueryAction = 'findUnique' | 'findUniqueOrThrow' | 'findFirst' | 'findFirstOrThrow' | 'findMany' | 'createOne' | 'createMany' | 'updateOne' | 'updateMany' | 'deleteOne' | 'deleteMany' | 'upsertOne' | 'aggregate' | 'groupBy' | 'executeRaw' | 'queryRaw' | 'runCommandRaw' | 'findRaw' | 'aggregateRaw'; + +declare type JsonSelectionSet = { + $scalars?: boolean; + $composites?: boolean; +} & { + [fieldName: string]: boolean | JsonFieldSelection; +}; + +export declare type JsonValue = string | number | boolean | JsonObject | JsonArray | null; + +export declare type JsOutputValue = null | string | number | boolean | bigint | Uint8Array | Date | Decimal | JsOutputValue[] | { + [key: string]: JsOutputValue; +}; + +export declare type JsPromise = Promise & {}; + +declare type KnownErrorParams = { + code: string; + clientVersion: string; + meta?: Record; + batchRequestIdx?: number; +}; + +/** + * A pointer from the current {@link Span} to another span in the same trace or + * in a different trace. + * Few examples of Link usage. + * 1. Batch Processing: A batch of elements may contain elements associated + * with one or more traces/spans. Since there can only be one parent + * SpanContext, Link is used to keep reference to SpanContext of all + * elements in the batch. + * 2. Public Endpoint: A SpanContext in incoming client request on a public + * endpoint is untrusted from service provider perspective. In such case it + * is advisable to start a new trace with appropriate sampling decision. + * However, it is desirable to associate incoming SpanContext to new trace + * initiated on service provider side so two traces (from Client and from + * Service Provider) can be correlated. + */ +declare interface Link { + /** The {@link SpanContext} of a linked span. */ + context: SpanContext; + /** A set of {@link SpanAttributes} on the link. */ + attributes?: SpanAttributes; + /** Count of attributes of the link that were dropped due to collection limits */ + droppedAttributesCount?: number; +} + +declare type LoadedEnv = { + message?: string; + parsed: { + [x: string]: string; + }; +} | undefined; + +declare type LocationInFile = { + fileName: string; + lineNumber: number | null; + columnNumber: number | null; +}; + +declare type LogDefinition = { + level: LogLevel; + emit: 'stdout' | 'event'; +}; + +/** + * Typings for the events we emit. + * + * @remarks + * If this is updated, our edge runtime shim needs to be updated as well. + */ +declare type LogEmitter = { + on(event: E, listener: (event: EngineEvent) => void): LogEmitter; + emit(event: QueryEventType, payload: QueryEvent): boolean; + emit(event: LogEventType, payload: LogEvent): boolean; +}; + +declare type LogEvent = { + timestamp: Date; + message: string; + target: string; +}; + +declare type LogEventType = 'info' | 'warn' | 'error'; + +declare type LogLevel = 'info' | 'query' | 'warn' | 'error'; + +/** + * Generates more strict variant of an enum which, unlike regular enum, + * throws on non-existing property access. This can be useful in following situations: + * - we have an API, that accepts both `undefined` and `SomeEnumType` as an input + * - enum values are generated dynamically from DMMF. + * + * In that case, if using normal enums and no compile-time typechecking, using non-existing property + * will result in `undefined` value being used, which will be accepted. Using strict enum + * in this case will help to have a runtime exception, telling you that you are probably doing something wrong. + * + * Note: if you need to check for existence of a value in the enum you can still use either + * `in` operator or `hasOwnProperty` function. + * + * @param definition + * @returns + */ +export declare function makeStrictEnum>(definition: T): T; + +/** + * Class that holds the list of all extensions, applied to particular instance, + * as well as resolved versions of the components that need to apply on + * different levels. Main idea of this class: avoid re-resolving as much of the + * stuff as possible when new extensions are added while also delaying the + * resolve until the point it is actually needed. For example, computed fields + * of the model won't be resolved unless the model is actually queried. Neither + * adding extensions with `client` component only cause other components to + * recompute. + */ +declare class MergedExtensionsList { + private head?; + private constructor(); + static empty(): MergedExtensionsList; + static single(extension: ExtensionArgs): MergedExtensionsList; + isEmpty(): boolean; + append(extension: ExtensionArgs): MergedExtensionsList; + getAllComputedFields(dmmfModelName: string): ComputedFieldsMap | undefined; + getAllClientExtensions(): ClientArg | undefined; + getAllModelExtensions(dmmfModelName: string): ModelArg | undefined; + getAllQueryCallbacks(jsModelName: string, operation: string): any; + getAllBatchQueryCallbacks(): BatchQueryOptionsCb[]; +} + +export declare type MergeExtArgs, Args extends Record> = ComputeDeep & AllModelsToStringIndex>; + +export declare type Metric = { + key: string; + value: T; + labels: Record; + description: string; +}; + +export declare type MetricHistogram = { + buckets: MetricHistogramBucket[]; + sum: number; + count: number; +}; + +export declare type MetricHistogramBucket = [maxValue: number, count: number]; + +export declare type Metrics = { + counters: Metric[]; + gauges: Metric[]; + histograms: Metric[]; +}; + +export declare class MetricsClient { + private _engine; + constructor(engine: Engine); + /** + * Returns all metrics gathered up to this point in prometheus format. + * Result of this call can be exposed directly to prometheus scraping endpoint + * + * @param options + * @returns + */ + prometheus(options?: MetricsOptions): Promise; + /** + * Returns all metrics gathered up to this point in prometheus format. + * + * @param options + * @returns + */ + json(options?: MetricsOptions): Promise; +} + +declare type MetricsOptions = { + /** + * Labels to add to every metrics in key-value format + */ + globalLabels?: Record; +}; + +declare type MetricsOptionsCommon = { + globalLabels?: Record; +}; + +declare type MetricsOptionsJson = { + format: 'json'; +} & MetricsOptionsCommon; + +declare type MetricsOptionsPrometheus = { + format: 'prometheus'; +} & MetricsOptionsCommon; + +declare type MiddlewareArgsMapper = { + requestArgsToMiddlewareArgs(requestArgs: RequestArgs): MiddlewareArgs; + middlewareArgsToRequestArgs(middlewareArgs: MiddlewareArgs): RequestArgs; +}; + +declare class MiddlewareHandler { + private _middlewares; + use(middleware: M): void; + get(id: number): M | undefined; + has(id: number): boolean; + length(): number; +} + +export declare type ModelArg = { + [MethodName in string]: unknown; +}; + +export declare type ModelArgs = { + model: { + [ModelName in string]: ModelArg; + }; +}; + +export declare type ModelKey = M extends keyof TypeMap['model'] ? M : Capitalize; + +export declare type ModelQueryOptionsCb = (args: ModelQueryOptionsCbArgs) => Promise; + +export declare type ModelQueryOptionsCbArgs = { + model: string; + operation: string; + args: JsArgs; + query: (args: JsArgs) => Promise; +}; + +export declare type NameArgs = { + name?: string; +}; + +export declare type Narrow = { + [K in keyof A]: A[K] extends Function ? A[K] : Narrow; +} | (A extends Narrowable ? A : never); + +export declare type Narrowable = string | number | bigint | boolean | []; + +export declare type NeverToUnknown = [T] extends [never] ? unknown : T; + +/** + * Imitates `fetch` via `https` to only suit our needs, it does nothing more. + * This is because we cannot bundle `node-fetch` as it uses many other Node.js + * utilities, while also bloating our bundles. This approach is much leaner. + * @param url + * @param options + * @returns + */ +declare function nodeFetch(url: string, options?: RequestOptions): Promise; + +declare class NodeHeaders { + readonly headers: Map; + constructor(init?: Record); + append(name: string, value: string): void; + delete(name: string): void; + get(name: string): string | null; + has(name: string): boolean; + set(name: string, value: string): void; + forEach(callbackfn: (value: string, key: string, parent: this) => void, thisArg?: any): void; +} + +/** + * @deprecated Please don´t rely on type checks to this error anymore. + * This will become a regular `PrismaClientKnownRequestError` with code `P2025` + * in the future major version of the client. + * Instead of `error instanceof Prisma.NotFoundError` use `error.code === "P2025"`. + */ +export declare class NotFoundError extends PrismaClientKnownRequestError { + constructor(message: string, clientVersion: string); +} + +declare class NullTypesEnumValue extends ObjectEnumValue { + _getNamespace(): string; +} + +/** + * List of Prisma enums that must use unique objects instead of strings as their values. + */ +export declare const objectEnumNames: string[]; + +/** + * Base class for unique values of object-valued enums. + */ +export declare abstract class ObjectEnumValue { + constructor(arg?: symbol); + abstract _getNamespace(): string; + _getName(): string; + toString(): string; +} + +export declare const objectEnumValues: { + classes: { + DbNull: typeof DbNull; + JsonNull: typeof JsonNull; + AnyNull: typeof AnyNull; + }; + instances: { + DbNull: DbNull; + JsonNull: JsonNull; + AnyNull: AnyNull; + }; +}; + +declare type Omit_2 = { + [P in keyof T as P extends K ? never : P]: T[P]; +}; +export { Omit_2 as Omit } + +export declare type Operation = 'findFirst' | 'findFirstOrThrow' | 'findUnique' | 'findUniqueOrThrow' | 'findMany' | 'create' | 'createMany' | 'update' | 'updateMany' | 'upsert' | 'delete' | 'deleteMany' | 'aggregate' | 'count' | 'groupBy' | '$queryRaw' | '$executeRaw' | '$queryRawUnsafe' | '$executeRawUnsafe' | 'findRaw' | 'aggregateRaw' | '$runCommandRaw'; + +export declare type OperationPayload = { + scalars: { + [ScalarName in string]: unknown; + }; + objects: { + [ObjectName in string]: unknown; + }; + composites: { + [CompositeName in string]: unknown; + }; +}; + +export declare type Optional = { + [P in K & keyof O]?: O[P]; +} & { + [P in Exclude]: O[P]; +}; + +export declare type OptionalFlat = { + [K in keyof T]?: T[K]; +}; + +export declare type OptionalKeys = { + [K in keyof O]-?: {} extends Pick_2 ? K : never; +}[keyof O]; + +declare type Options = { + maxWait?: number; + timeout?: number; + isolationLevel?: IsolationLevel; +}; + +declare type Options_2 = { + clientVersion: string; +}; + +export declare type Or = { + 0: { + 0: 0; + 1: 1; + }; + 1: { + 0: 1; + 1: 1; + }; +}[A][B]; + +export declare type PatchFlat = O1 & Omit_2; + +export declare type Path = O extends unknown ? P extends [infer K, ...infer R] ? K extends keyof O ? Path : Default : O : never; + +export declare type Payload = T extends { + [K: symbol]: { + types: { + payload: any; + }; + }; +} ? T[symbol]['types']['payload'] : any; + +export declare type PayloadToResult = RenameAndNestPayloadKeys

> = { + [K in keyof O]?: O[K][K] extends any[] ? PayloadToResult[] : O[K][K] extends object ? PayloadToResult : O[K][K]; +}; + +declare type Pick_2 = { + [P in keyof T as P extends K ? P : never]: T[P]; +}; +export { Pick_2 as Pick } + +export declare class PrismaClientInitializationError extends Error { + clientVersion: string; + errorCode?: string; + retryable?: boolean; + constructor(message: string, clientVersion: string, errorCode?: string); + get [Symbol.toStringTag](): string; +} + +export declare class PrismaClientKnownRequestError extends Error implements ErrorWithBatchIndex { + code: string; + meta?: Record; + clientVersion: string; + batchRequestIdx?: number; + constructor(message: string, { code, clientVersion, meta, batchRequestIdx }: KnownErrorParams); + get [Symbol.toStringTag](): string; +} + +export declare type PrismaClientOptions = { + /** + * Overwrites the primary datasource url from your schema.prisma file + */ + datasourceUrl?: string; + /** + * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-planetscale. + */ + adapter?: DriverAdapter | null; + /** + * Overwrites the datasource url from your schema.prisma file + */ + datasources?: Datasources; + /** + * @default "colorless" + */ + errorFormat?: ErrorFormat; + /** + * The default values for Transaction options + * maxWait ?= 2000 + * timeout ?= 5000 + */ + transactionOptions?: Transaction_2.Options; + /** + * @example + * \`\`\` + * // Defaults to stdout + * log: ['query', 'info', 'warn'] + * + * // Emit as events + * log: [ + * { emit: 'stdout', level: 'query' }, + * { emit: 'stdout', level: 'info' }, + * { emit: 'stdout', level: 'warn' } + * ] + * \`\`\` + * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/logging#the-log-option). + */ + log?: Array; + /** + * @internal + * You probably don't want to use this. \`__internal\` is used by internal tooling. + */ + __internal?: { + debug?: boolean; + engine?: { + cwd?: string; + binaryPath?: string; + endpoint?: string; + allowTriggerPanic?: boolean; + }; + /** This can be used for testing purposes */ + configOverride?: (config: GetPrismaClientConfig) => GetPrismaClientConfig; + }; +}; + +export declare class PrismaClientRustPanicError extends Error { + clientVersion: string; + constructor(message: string, clientVersion: string); + get [Symbol.toStringTag](): string; +} + +export declare class PrismaClientUnknownRequestError extends Error implements ErrorWithBatchIndex { + clientVersion: string; + batchRequestIdx?: number; + constructor(message: string, { clientVersion, batchRequestIdx }: UnknownErrorParams); + get [Symbol.toStringTag](): string; +} + +export declare class PrismaClientValidationError extends Error { + name: string; + clientVersion: string; + constructor(message: string, { clientVersion }: Options_2); + get [Symbol.toStringTag](): string; +} + +declare function prismaGraphQLToJSError({ error, user_facing_error }: RequestError, clientVersion: string, activeProvider: string): PrismaClientKnownRequestError | PrismaClientUnknownRequestError; + +export declare interface PrismaPromise extends Promise { + [Symbol.toStringTag]: 'PrismaPromise'; +} + +/** + * Prisma's `Promise` that is backwards-compatible. All additions on top of the + * original `Promise` are optional so that it can be backwards-compatible. + * @see [[createPrismaPromise]] + */ +declare interface PrismaPromise_2 extends Promise { + /** + * Extension of the original `.then` function + * @param onfulfilled same as regular promises + * @param onrejected same as regular promises + * @param transaction transaction options + */ + then(onfulfilled?: (value: A) => R1 | PromiseLike, onrejected?: (error: unknown) => R2 | PromiseLike, transaction?: PrismaPromiseTransaction): Promise; + /** + * Extension of the original `.catch` function + * @param onrejected same as regular promises + * @param transaction transaction options + */ + catch(onrejected?: ((reason: any) => R | PromiseLike) | undefined | null, transaction?: PrismaPromiseTransaction): Promise; + /** + * Extension of the original `.finally` function + * @param onfinally same as regular promises + * @param transaction transaction options + */ + finally(onfinally?: (() => void) | undefined | null, transaction?: PrismaPromiseTransaction): Promise; + /** + * Called when executing a batch of regular tx + * @param transaction transaction options for batch tx + */ + requestTransaction?(transaction: PrismaPromiseBatchTransaction): PromiseLike; +} + +declare type PrismaPromiseBatchTransaction = { + kind: 'batch'; + id: number; + isolationLevel?: IsolationLevel; + index: number; + lock: PromiseLike; +}; + +declare type PrismaPromiseCallback = (transaction?: PrismaPromiseTransaction) => PrismaPromise_2; + +/** + * Creates a [[PrismaPromise]]. It is Prisma's implementation of `Promise` which + * is essentially a proxy for `Promise`. All the transaction-compatible client + * methods return one, this allows for pre-preparing queries without executing + * them until `.then` is called. It's the foundation of Prisma's query batching. + * @param callback that will be wrapped within our promise implementation + * @see [[PrismaPromise]] + * @returns + */ +declare type PrismaPromiseFactory = (callback: PrismaPromiseCallback) => PrismaPromise_2; + +declare type PrismaPromiseInteractiveTransaction = { + kind: 'itx'; + id: string; + payload: PayloadType; +}; + +declare type PrismaPromiseTransaction = PrismaPromiseBatchTransaction | PrismaPromiseInteractiveTransaction; + +declare namespace Public { + export { + validator + } +} +export { Public } + +declare namespace Public_2 { + export { + Args, + Result, + Payload, + PrismaPromise, + Operation, + Exact + } +} + +declare type Query = { + sql: string; + args: Array; +}; + +declare interface Queryable { + readonly provider: 'mysql' | 'postgres' | 'sqlite'; + /** + * Execute a query given as SQL, interpolating the given parameters, + * and returning the type-aware result set of the query. + * + * This is the preferred way of executing `SELECT` queries. + */ + queryRaw(params: Query): Promise>; + /** + * Execute a query given as SQL, interpolating the given parameters, + * and returning the number of affected rows. + * + * This is the preferred way of executing `INSERT`, `UPDATE`, `DELETE` queries, + * as well as transactional queries. + */ + executeRaw(params: Query): Promise>; +} + +declare type QueryEngineBatchGraphQLRequest = { + batch: QueryEngineRequest[]; + transaction?: boolean; + isolationLevel?: Transaction_2.IsolationLevel; +}; + +declare type QueryEngineBatchRequest = QueryEngineBatchGraphQLRequest | JsonBatchQuery; + +declare type QueryEngineConfig = { + datamodel: string; + configDir: string; + logQueries: boolean; + ignoreEnvVarErrors: boolean; + datasourceOverrides: Record; + env: Record; + logLevel: QueryEngineLogLevel; + telemetry?: QueryEngineTelemetry; + engineProtocol: EngineProtocol; +}; + +declare interface QueryEngineConstructor { + new (config: QueryEngineConfig, logger: (log: string) => void, adapter?: ErrorCapturingDriverAdapter): QueryEngineInstance; +} + +declare type QueryEngineInstance = { + connect(headers: string): Promise; + disconnect(headers: string): Promise; + /** + * @param requestStr JSON.stringified `QueryEngineRequest | QueryEngineBatchRequest` + * @param headersStr JSON.stringified `QueryEngineRequestHeaders` + */ + query(requestStr: string, headersStr: string, transactionId?: string): Promise; + sdlSchema(): Promise; + dmmf(traceparent: string): Promise; + startTransaction(options: string, traceHeaders: string): Promise; + commitTransaction(id: string, traceHeaders: string): Promise; + rollbackTransaction(id: string, traceHeaders: string): Promise; + metrics(options: string): Promise; +}; + +declare type QueryEngineLogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'off'; + +declare type QueryEngineRequest = { + query: string; + variables: Object; +}; + +declare type QueryEngineResult = { + data: T; + elapsed: number; +}; + +declare type QueryEngineTelemetry = { + enabled: Boolean; + endpoint: string; +}; + +declare type QueryEvent = { + timestamp: Date; + query: string; + params: string; + duration: number; + target: string; +}; + +declare type QueryEventType = 'query'; + +declare type QueryMiddleware = (params: QueryMiddlewareParams, next: (params: QueryMiddlewareParams) => Promise) => Promise; + +declare type QueryMiddlewareParams = { + /** The model this is executed on */ + model?: string; + /** The action that is being handled */ + action: Action; + /** TODO what is this */ + dataPath: string[]; + /** TODO what is this */ + runInTransaction: boolean; + args?: UserArgs_2; +}; + +export declare type QueryOptions = { + query: { + [ModelName in string]: { + [ModelAction in string]: ModelQueryOptionsCb; + } | QueryOptionsCb; + }; +}; + +export declare type QueryOptionsCb = (args: QueryOptionsCbArgs) => Promise; + +export declare type QueryOptionsCbArgs = { + model?: string; + operation: string; + args: JsArgs | RawQueryArgs; + query: (args: JsArgs | RawQueryArgs) => Promise; +}; + +/** + * Create raw SQL statement. + */ +export declare function raw(value: string): Sql; + +export declare type RawParameters = { + __prismaRawParameters__: true; + values: string; +}; + +export declare type RawQueryArgs = Sql | [query: string, ...values: RawValue[]]; + +declare type RawTaggedValue = { + $type: 'Raw'; + value: unknown; +}; + +/** + * Supported value or SQL instance. + */ +export declare type RawValue = Value | Sql; + +export declare type ReadonlyDeep = { + readonly [K in keyof T]: ReadonlyDeep; +}; + +declare type ReadonlyDeep_2 = { + +readonly [K in keyof O]: ReadonlyDeep_2; +}; + +declare type Record_2 = { + [P in T]: U; +}; +export { Record_2 as Record } + +export declare type RenameAndNestPayloadKeys

= { + [K in keyof P as K extends 'scalars' | 'objects' | 'composites' ? keyof P[K] : never]: P[K]; +}; + +declare type RequestBatchOptions = { + transaction?: TransactionOptions_2; + traceparent?: string; + numTry?: number; + containsWrite: boolean; + customDataProxyFetch?: (fetch: Fetch) => Fetch; +}; + +declare interface RequestError { + error: string; + user_facing_error: { + is_panic: boolean; + message: string; + meta?: Record; + error_code?: string; + batch_request_idx?: number; + }; +} + +declare class RequestHandler { + client: Client; + dataloader: DataLoader; + private logEmitter?; + constructor(client: Client, logEmitter?: LogEmitter); + request(params: RequestParams): Promise; + mapQueryEngineResult({ dataPath, unpacker }: RequestParams, response: QueryEngineResult): any; + /** + * Handles the error and logs it, logging the error is done synchronously waiting for the event + * handlers to finish. + */ + handleAndLogRequestError(params: HandleErrorParams): never; + handleRequestError({ error, clientMethod, callsite, transaction, args, modelName }: HandleErrorParams): never; + sanitizeMessage(message: any): any; + unpack(data: unknown, dataPath: string[], unpacker?: Unpacker): any; + get [Symbol.toStringTag](): string; +} + +declare type RequestOptions = { + method?: string; + headers?: Record; + body?: string; +}; + +declare type RequestOptions_2 = { + traceparent?: string; + numTry?: number; + interactiveTransaction?: InteractiveTransactionOptions; + isWrite: boolean; + customDataProxyFetch?: (fetch: Fetch) => Fetch; +}; + +declare type RequestParams = { + modelName?: string; + action: Action; + protocolQuery: JsonQuery; + dataPath: string[]; + clientMethod: string; + callsite?: CallSite; + transaction?: PrismaPromiseTransaction; + extensions: MergedExtensionsList; + args?: any; + headers?: Record; + unpacker?: Unpacker; + otelParentCtx?: Context; + otelChildCtx?: Context; + customDataProxyFetch?: (fetch: Fetch) => Fetch; +}; + +declare type RequestResponse = { + ok: boolean; + url: string; + statusText?: string; + status: number; + headers: NodeHeaders; + text: () => Promise; + json: () => Promise; +}; + +declare type RequiredExtensionArgs = NameArgs & ResultArgs & ModelArgs & ClientArgs & QueryOptions; +export { RequiredExtensionArgs } +export { RequiredExtensionArgs as UserArgs } + +export declare type RequiredKeys = { + [K in keyof O]-?: {} extends Pick_2 ? never : K; +}[keyof O]; + +declare function resolveDatasourceUrl({ inlineDatasources, overrideDatasources, env, clientVersion, }: { + inlineDatasources: GetPrismaClientConfig['inlineDatasources']; + overrideDatasources: Datasources; + env: Record; + clientVersion: string; +}): string; + +export declare type Result = T extends { + [K: symbol]: { + types: { + payload: any; + }; + }; +} ? GetResult : GetResult<{ + composites: {}; + objects: {}; + scalars: {}; +}, {}, F>; + +export declare type Result_2 = Result; + +declare namespace Result_3 { + export { + Operation, + FluentOperation, + Count, + GetFindResult, + SelectablePayloadFields, + SelectField, + DefaultSelection, + UnwrapPayload, + GetCountResult, + Aggregate, + GetAggregateResult, + GetBatchResult, + GetGroupByResult, + GetResult + } +} + +declare type Result_4 = { + map(fn: (value: T) => U): Result_4; + flatMap(fn: (value: T) => Result_4): Result_4; +} & ({ + readonly ok: true; + readonly value: T; +} | { + readonly ok: false; + readonly error: Error_2; +}); + +export declare type ResultArg = { + [FieldName in string]: ResultFieldDefinition; +}; + +export declare type ResultArgs = { + result: { + [ModelName in string]: ResultArg; + }; +}; + +export declare type ResultArgsFieldCompute = (model: any) => unknown; + +export declare type ResultFieldDefinition = { + needs?: { + [FieldName in string]: boolean; + }; + compute: ResultArgsFieldCompute; +}; + +declare interface ResultSet { + /** + * List of column types appearing in a database query, in the same order as `columnNames`. + * They are used within the Query Engine to convert values from JS to Quaint values. + */ + columnTypes: Array; + /** + * List of column names appearing in a database query, in the same order as `columnTypes`. + */ + columnNames: Array; + /** + * List of rows retrieved from a database query. + * Each row is a list of values, whose length matches `columnNames` and `columnTypes`. + */ + rows: Array>; + /** + * The last ID of an `INSERT` statement, if any. + * This is required for `AUTO_INCREMENT` columns in databases based on MySQL and SQLite. + */ + lastInsertId?: string; +} + +export declare type Return = T extends (...args: any[]) => infer R ? R : T; + +declare type Runtime = "edge-routine" | "workerd" | "deno" | "lagon" | "react-native" | "netlify" | "electron" | "node" | "bun" | "edge-light" | "fastly" | "unknown"; + +declare type RuntimeDataModel = { + readonly models: Record; + readonly enums: Record; + readonly types: Record; +}; + +declare type RuntimeEnum = Omit; + +declare type RuntimeModel = Omit; + +export declare type Select = T extends U ? T : never; + +export declare type SelectablePayloadFields = { + objects: { + [k in K]: O; + }; +} | { + composites: { + [k in K]: O; + }; +}; + +export declare type SelectField

, K extends PropertyKey> = P extends { + objects: Record; +} ? P['objects'][K] : P extends { + composites: Record; +} ? P['composites'][K] : never; + +declare type Selection_2 = Record; +export { Selection_2 as Selection } + +/** + * An interface that represents a span. A span represents a single operation + * within a trace. Examples of span might include remote procedure calls or a + * in-process function calls to sub-components. A Trace has a single, top-level + * "root" Span that in turn may have zero or more child Spans, which in turn + * may have children. + * + * Spans are created by the {@link Tracer.startSpan} method. + */ +declare interface Span { + /** + * Returns the {@link SpanContext} object associated with this Span. + * + * Get an immutable, serializable identifier for this span that can be used + * to create new child spans. Returned SpanContext is usable even after the + * span ends. + * + * @returns the SpanContext object associated with this Span. + */ + spanContext(): SpanContext; + /** + * Sets an attribute to the span. + * + * Sets a single Attribute with the key and value passed as arguments. + * + * @param key the key for this attribute. + * @param value the value for this attribute. Setting a value null or + * undefined is invalid and will result in undefined behavior. + */ + setAttribute(key: string, value: SpanAttributeValue): this; + /** + * Sets attributes to the span. + * + * @param attributes the attributes that will be added. + * null or undefined attribute values + * are invalid and will result in undefined behavior. + */ + setAttributes(attributes: SpanAttributes): this; + /** + * Adds an event to the Span. + * + * @param name the name of the event. + * @param [attributesOrStartTime] the attributes that will be added; these are + * associated with this event. Can be also a start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [startTime] start time of the event. + */ + addEvent(name: string, attributesOrStartTime?: SpanAttributes | TimeInput, startTime?: TimeInput): this; + /** + * Sets a status to the span. If used, this will override the default Span + * status. Default is {@link SpanStatusCode.UNSET}. SetStatus overrides the value + * of previous calls to SetStatus on the Span. + * + * @param status the SpanStatus to set. + */ + setStatus(status: SpanStatus): this; + /** + * Updates the Span name. + * + * This will override the name provided via {@link Tracer.startSpan}. + * + * Upon this update, any sampling behavior based on Span name will depend on + * the implementation. + * + * @param name the Span name. + */ + updateName(name: string): this; + /** + * Marks the end of Span execution. + * + * Call to End of a Span MUST not have any effects on child spans. Those may + * still be running and can be ended later. + * + * Do not return `this`. The Span generally should not be used after it + * is ended so chaining is not desired in this context. + * + * @param [endTime] the time to set as Span's end time. If not provided, + * use the current time as the span's end time. + */ + end(endTime?: TimeInput): void; + /** + * Returns the flag whether this span will be recorded. + * + * @returns true if this Span is active and recording information like events + * with the `AddEvent` operation and attributes using `setAttributes`. + */ + isRecording(): boolean; + /** + * Sets exception as a span event + * @param exception the exception the only accepted values are string or Error + * @param [time] the time to set as Span's event time. If not provided, + * use the current time. + */ + recordException(exception: Exception, time?: TimeInput): void; +} + +/** + * @deprecated please use {@link Attributes} + */ +declare type SpanAttributes = Attributes; + +/** + * @deprecated please use {@link AttributeValue} + */ +declare type SpanAttributeValue = AttributeValue; + +declare type SpanCallback = (span?: Span, context?: Context) => R; + +/** + * A SpanContext represents the portion of a {@link Span} which must be + * serialized and propagated along side of a {@link Baggage}. + */ +declare interface SpanContext { + /** + * The ID of the trace that this span belongs to. It is worldwide unique + * with practically sufficient probability by being made as 16 randomly + * generated bytes, encoded as a 32 lowercase hex characters corresponding to + * 128 bits. + */ + traceId: string; + /** + * The ID of the Span. It is globally unique with practically sufficient + * probability by being made as 8 randomly generated bytes, encoded as a 16 + * lowercase hex characters corresponding to 64 bits. + */ + spanId: string; + /** + * Only true if the SpanContext was propagated from a remote parent. + */ + isRemote?: boolean; + /** + * Trace flags to propagate. + * + * It is represented as 1 byte (bitmap). Bit to represent whether trace is + * sampled or not. When set, the least significant bit documents that the + * caller may have recorded trace data. A caller who does not record trace + * data out-of-band leaves this flag unset. + * + * see {@link TraceFlags} for valid flag values. + */ + traceFlags: number; + /** + * Tracing-system-specific info to propagate. + * + * The tracestate field value is a `list` as defined below. The `list` is a + * series of `list-members` separated by commas `,`, and a list-member is a + * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs + * surrounding `list-members` are ignored. There can be a maximum of 32 + * `list-members` in a `list`. + * More Info: https://www.w3.org/TR/trace-context/#tracestate-field + * + * Examples: + * Single tracing system (generic format): + * tracestate: rojo=00f067aa0ba902b7 + * Multiple tracing systems (with different formatting): + * tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE + */ + traceState?: TraceState; +} + +declare enum SpanKind { + /** Default value. Indicates that the span is used internally. */ + INTERNAL = 0, + /** + * Indicates that the span covers server-side handling of an RPC or other + * remote request. + */ + SERVER = 1, + /** + * Indicates that the span covers the client-side wrapper around an RPC or + * other remote request. + */ + CLIENT = 2, + /** + * Indicates that the span describes producer sending a message to a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + PRODUCER = 3, + /** + * Indicates that the span describes consumer receiving a message from a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + CONSUMER = 4 +} + +/** + * Options needed for span creation + */ +declare interface SpanOptions { + /** + * The SpanKind of a span + * @default {@link SpanKind.INTERNAL} + */ + kind?: SpanKind; + /** A span's attributes */ + attributes?: SpanAttributes; + /** {@link Link}s span to other spans */ + links?: Link[]; + /** A manually specified start time for the created `Span` object. */ + startTime?: TimeInput; + /** The new span should be a root span. (Ignore parent from context). */ + root?: boolean; +} + +declare interface SpanStatus { + /** The status code of this message. */ + code: SpanStatusCode; + /** A developer-facing error message. */ + message?: string; +} + +/** + * An enumeration of status codes. + */ +declare enum SpanStatusCode { + /** + * The default status. + */ + UNSET = 0, + /** + * The operation has been validated by an Application developer or + * Operator to have completed successfully. + */ + OK = 1, + /** + * The operation contains an error. + */ + ERROR = 2 +} + +/** + * A SQL instance can be nested within each other to build SQL strings. + */ +export declare class Sql { + readonly values: Value[]; + readonly strings: string[]; + constructor(rawStrings: readonly string[], rawValues: readonly RawValue[]); + get text(): string; + get sql(): string; + get statement(): string; + inspect(): { + text: string; + sql: string; + values: unknown[]; + }; +} + +/** + * Create a SQL object from a template string. + */ +export declare function sqltag(strings: readonly string[], ...values: readonly RawValue[]): Sql; + +/** + * Defines TimeInput. + * + * hrtime, epoch milliseconds, performance.now() or Date + */ +declare type TimeInput = HrTime | number | Date; + +export declare type ToTuple = T extends any[] ? T : [T]; + +declare interface TraceState { + /** + * Create a new TraceState which inherits from this TraceState and has the + * given key set. + * The new entry will always be added in the front of the list of states. + * + * @param key key of the TraceState entry. + * @param value value of the TraceState entry. + */ + set(key: string, value: string): TraceState; + /** + * Return a new TraceState which inherits from this TraceState but does not + * contain the given key. + * + * @param key the key for the TraceState entry to be removed. + */ + unset(key: string): TraceState; + /** + * Returns the value to which the specified key is mapped, or `undefined` if + * this map contains no mapping for the key. + * + * @param key with which the specified value is to be associated. + * @returns the value to which the specified key is mapped, or `undefined` if + * this map contains no mapping for the key. + */ + get(key: string): string | undefined; + /** + * Serializes the TraceState to a `list` as defined below. The `list` is a + * series of `list-members` separated by commas `,`, and a list-member is a + * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs + * surrounding `list-members` are ignored. There can be a maximum of 32 + * `list-members` in a `list`. + * + * @returns the serialized string. + */ + serialize(): string; +} + +declare interface TracingHelper { + isEnabled(): boolean; + getTraceParent(context?: Context): string; + createEngineSpan(engineSpanEvent: EngineSpanEvent): void; + getActiveContext(): Context | undefined; + runInChildSpan(nameOrOptions: string | ExtendedSpanOptions, callback: SpanCallback): R; +} + +declare interface Transaction extends Queryable { + /** + * Transaction options. + */ + readonly options: TransactionOptions; + /** + * Commit the transaction. + */ + commit(): Promise>; + /** + * Rolls back the transaction. + */ + rollback(): Promise>; +} + +declare namespace Transaction_2 { + export { + IsolationLevel, + Options, + InteractiveTransactionInfo, + TransactionHeaders + } +} + +declare type TransactionHeaders = { + traceparent?: string; +}; + +declare type TransactionOptions = { + usePhantomQuery: boolean; +}; + +declare type TransactionOptions_2 = { + kind: 'itx'; + options: InteractiveTransactionOptions; +} | { + kind: 'batch'; + options: BatchTransactionOptions; +}; + +export declare type TypeMapCbDef = Fn<{ + extArgs: InternalArgs; +}, TypeMapDef>; + +/** Shared */ +export declare type TypeMapDef = Record; + +declare namespace Types { + export { + Result_3 as Result, + Extensions_2 as Extensions, + Utils, + Public_2 as Public, + OperationPayload as Payload + } +} +export { Types } + +declare type UnknownErrorParams = { + clientVersion: string; + batchRequestIdx?: number; +}; + +declare type Unpacker = (data: any) => any; + +export declare type UnwrapPayload

= {} extends P ? unknown : { + [K in keyof P]: P[K] extends { + scalars: infer S; + composites: infer C; + }[] ? Array> : P[K] extends { + scalars: infer S; + composites: infer C; + } | null ? S & UnwrapPayload | Select : never; +}; + +export declare type UnwrapPromise

= P extends Promise ? R : P; + +export declare type UnwrapTuple = { + [K in keyof Tuple]: K extends `${number}` ? Tuple[K] extends PrismaPromise ? X : UnwrapPromise : UnwrapPromise; +}; + +/** + * Input that flows from the user into the Client. + */ +declare type UserArgs_2 = any; + +declare namespace Utils { + export { + EmptyToUnknown, + NeverToUnknown, + PatchFlat, + Omit_2 as Omit, + Pick_2 as Pick, + ComputeDeep, + Compute, + OptionalFlat, + ReadonlyDeep, + Narrowable, + Narrow, + Exact, + Cast, + JsonObject, + JsonArray, + JsonValue, + Record_2 as Record, + UnwrapPromise, + UnwrapTuple, + Path, + Fn, + Call, + RequiredKeys, + OptionalKeys, + Optional, + Return, + ToTuple, + RenameAndNestPayloadKeys, + PayloadToResult, + Select, + Equals, + Or, + JsPromise + } +} + +declare function validator(): (select: Exact) => S; + +declare function validator, O extends keyof C[M] & Operation>(client: C, model: M, operation: O): (select: Exact>) => S; + +declare function validator, O extends keyof C[M] & Operation, P extends keyof Args>(client: C, model: M, operation: O, prop: P): (select: Exact[P]>) => S; + +/** + * Values supported by SQL engine. + */ +export declare type Value = unknown; + +export declare function warnEnvConflicts(envPaths: any): void; + +export declare const warnOnce: (key: string, message: string, ...args: unknown[]) => void; + +declare type WasmLoadingConfig = { + /** + * WASM-bindgen runtime for corresponding module + */ + getRuntime: () => { + __wbg_set_wasm(exports: unknown): any; + QueryEngine: QueryEngineConstructor; + }; + /** + * Loads the raw wasm module for the wasm query engine. This configuration is + * generated specifically for each type of client, eg. Node.js client and Edge + * clients will have different implementations. + * @remarks this is a callback on purpose, we only load the wasm if needed. + * @remarks only used by LibraryEngine.ts + */ + getQueryEngineWasmModule: () => Promise; +}; + +export { } diff --git a/backend/prisma/generated/client-db1/runtime/library.js b/backend/prisma/generated/client-db1/runtime/library.js new file mode 100644 index 0000000..bfa4065 --- /dev/null +++ b/backend/prisma/generated/client-db1/runtime/library.js @@ -0,0 +1,141 @@ +"use strict";var Ol=Object.create;var At=Object.defineProperty;var Fl=Object.getOwnPropertyDescriptor;var Ml=Object.getOwnPropertyNames;var $l=Object.getPrototypeOf,ql=Object.prototype.hasOwnProperty;var X=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Or=(e,r)=>{for(var t in r)At(e,t,{get:r[t],enumerable:!0})},to=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ml(r))!ql.call(e,i)&&i!==t&&At(e,i,{get:()=>r[i],enumerable:!(n=Fl(r,i))||n.enumerable});return e};var _=(e,r,t)=>(t=e!=null?Ol($l(e)):{},to(r||!e||!e.__esModule?At(t,"default",{value:e,enumerable:!0}):t,e)),Bl=e=>to(At({},"__esModule",{value:!0}),e);var bo=X((Rd,Vn)=>{"use strict";var v=Vn.exports;Vn.exports.default=v;var D="\x1B[",Br="\x1B]",dr="\x07",Nt=";",Eo=process.env.TERM_PROGRAM==="Apple_Terminal";v.cursorTo=(e,r)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");return typeof r!="number"?D+(e+1)+"G":D+(r+1)+";"+(e+1)+"H"};v.cursorMove=(e,r)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");let t="";return e<0?t+=D+-e+"D":e>0&&(t+=D+e+"C"),r<0?t+=D+-r+"A":r>0&&(t+=D+r+"B"),t};v.cursorUp=(e=1)=>D+e+"A";v.cursorDown=(e=1)=>D+e+"B";v.cursorForward=(e=1)=>D+e+"C";v.cursorBackward=(e=1)=>D+e+"D";v.cursorLeft=D+"G";v.cursorSavePosition=Eo?"\x1B7":D+"s";v.cursorRestorePosition=Eo?"\x1B8":D+"u";v.cursorGetPosition=D+"6n";v.cursorNextLine=D+"E";v.cursorPrevLine=D+"F";v.cursorHide=D+"?25l";v.cursorShow=D+"?25h";v.eraseLines=e=>{let r="";for(let t=0;t[Br,"8",Nt,Nt,r,dr,e,Br,"8",Nt,Nt,dr].join("");v.image=(e,r={})=>{let t=`${Br}1337;File=inline=1`;return r.width&&(t+=`;width=${r.width}`),r.height&&(t+=`;height=${r.height}`),r.preserveAspectRatio===!1&&(t+=";preserveAspectRatio=0"),t+":"+e.toString("base64")+dr};v.iTerm={setCwd:(e=process.cwd())=>`${Br}50;CurrentDir=${e}${dr}`,annotation:(e,r={})=>{let t=`${Br}1337;`,n=typeof r.x<"u",i=typeof r.y<"u";if((n||i)&&!(n&&i&&typeof r.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return e=e.replace(/\|/g,""),t+=r.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",r.length>0?t+=(n?[e,r.length,r.x,r.y]:[r.length,e]).join("|"):t+=e,t+dr}}});var jn=X((Ad,wo)=>{"use strict";wo.exports=(e,r=process.argv)=>{let t=e.startsWith("-")?"":e.length===1?"-":"--",n=r.indexOf(t+e),i=r.indexOf("--");return n!==-1&&(i===-1||n{"use strict";var pu=require("os"),xo=require("tty"),pe=jn(),{env:G}=process,je;pe("no-color")||pe("no-colors")||pe("color=false")||pe("color=never")?je=0:(pe("color")||pe("colors")||pe("color=true")||pe("color=always"))&&(je=1);"FORCE_COLOR"in G&&(G.FORCE_COLOR==="true"?je=1:G.FORCE_COLOR==="false"?je=0:je=G.FORCE_COLOR.length===0?1:Math.min(parseInt(G.FORCE_COLOR,10),3));function Un(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Qn(e,r){if(je===0)return 0;if(pe("color=16m")||pe("color=full")||pe("color=truecolor"))return 3;if(pe("color=256"))return 2;if(e&&!r&&je===void 0)return 0;let t=je||0;if(G.TERM==="dumb")return t;if(process.platform==="win32"){let n=pu.release().split(".");return Number(n[0])>=10&&Number(n[2])>=10586?Number(n[2])>=14931?3:2:1}if("CI"in G)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(n=>n in G)||G.CI_NAME==="codeship"?1:t;if("TEAMCITY_VERSION"in G)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(G.TEAMCITY_VERSION)?1:0;if(G.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in G){let n=parseInt((G.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(G.TERM_PROGRAM){case"iTerm.app":return n>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(G.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(G.TERM)||"COLORTERM"in G?1:t}function mu(e){let r=Qn(e,e&&e.isTTY);return Un(r)}Po.exports={supportsColor:mu,stdout:Un(Qn(!0,xo.isatty(1))),stderr:Un(Qn(!0,xo.isatty(2)))}});var So=X((_d,Co)=>{"use strict";var du=vo(),fr=jn();function To(e){if(/^\d{3,4}$/.test(e)){let t=/(\d{1,2})(\d{2})/.exec(e);return{major:0,minor:parseInt(t[1],10),patch:parseInt(t[2],10)}}let r=(e||"").split(".").map(t=>parseInt(t,10));return{major:r[0],minor:r[1],patch:r[2]}}function Gn(e){let{env:r}=process;if("FORCE_HYPERLINK"in r)return!(r.FORCE_HYPERLINK.length>0&&parseInt(r.FORCE_HYPERLINK,10)===0);if(fr("no-hyperlink")||fr("no-hyperlinks")||fr("hyperlink=false")||fr("hyperlink=never"))return!1;if(fr("hyperlink=true")||fr("hyperlink=always")||"NETLIFY"in r)return!0;if(!du.supportsColor(e)||e&&!e.isTTY||process.platform==="win32"||"CI"in r||"TEAMCITY_VERSION"in r)return!1;if("TERM_PROGRAM"in r){let t=To(r.TERM_PROGRAM_VERSION);switch(r.TERM_PROGRAM){case"iTerm.app":return t.major===3?t.minor>=1:t.major>3;case"WezTerm":return t.major>=20200620;case"vscode":return t.major>1||t.major===1&&t.minor>=72}}if("VTE_VERSION"in r){if(r.VTE_VERSION==="0.50.0")return!1;let t=To(r.VTE_VERSION);return t.major>0||t.minor>=50}return!1}Co.exports={supportsHyperlink:Gn,stdout:Gn(process.stdout),stderr:Gn(process.stderr)}});var Ao=X((kd,Vr)=>{"use strict";var fu=bo(),Jn=So(),Ro=(e,r,{target:t="stdout",...n}={})=>Jn[t]?fu.link(e,r):n.fallback===!1?e:typeof n.fallback=="function"?n.fallback(e,r):`${e} (\u200B${r}\u200B)`;Vr.exports=(e,r,t={})=>Ro(e,r,t);Vr.exports.stderr=(e,r,t={})=>Ro(e,r,{target:"stderr",...t});Vr.exports.isSupported=Jn.stdout;Vr.exports.stderr.isSupported=Jn.stderr});var $o=X((Wd,Iu)=>{Iu.exports={name:"dotenv",version:"16.0.3",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{require:"./lib/main.js",types:"./lib/main.d.ts",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard","lint-readme":"standard-markdown",pretest:"npm run lint && npm run dts-check",test:"tap tests/*.js --100 -Rspec",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@types/node":"^17.0.9",decache:"^4.6.1",dtslint:"^3.7.0",sinon:"^12.0.1",standard:"^16.0.4","standard-markdown":"^7.1.0","standard-version":"^9.3.2",tap:"^15.1.6",tar:"^6.1.11",typescript:"^4.5.4"},engines:{node:">=12"}}});var Bo=X((Kd,qt)=>{"use strict";var _u=require("fs"),qo=require("path"),ku=require("os"),Du=$o(),Lu=Du.version,Nu=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function Ou(e){let r={},t=e.toString();t=t.replace(/\r\n?/mg,` +`);let n;for(;(n=Nu.exec(t))!=null;){let i=n[1],o=n[2]||"";o=o.trim();let s=o[0];o=o.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),s==='"'&&(o=o.replace(/\\n/g,` +`),o=o.replace(/\\r/g,"\r")),r[i]=o}return r}function Kn(e){console.log(`[dotenv@${Lu}][DEBUG] ${e}`)}function Fu(e){return e[0]==="~"?qo.join(ku.homedir(),e.slice(1)):e}function Mu(e){let r=qo.resolve(process.cwd(),".env"),t="utf8",n=!!(e&&e.debug),i=!!(e&&e.override);e&&(e.path!=null&&(r=Fu(e.path)),e.encoding!=null&&(t=e.encoding));try{let o=$t.parse(_u.readFileSync(r,{encoding:t}));return Object.keys(o).forEach(function(s){Object.prototype.hasOwnProperty.call(process.env,s)?(i===!0&&(process.env[s]=o[s]),n&&Kn(i===!0?`"${s}" is already defined in \`process.env\` and WAS overwritten`:`"${s}" is already defined in \`process.env\` and was NOT overwritten`)):process.env[s]=o[s]}),{parsed:o}}catch(o){return n&&Kn(`Failed to load ${r} ${o.message}`),{error:o}}}var $t={config:Mu,parse:Ou};qt.exports.config=$t.config;qt.exports.parse=$t.parse;qt.exports=$t});var Jo=X((tf,Go)=>{"use strict";Go.exports=e=>{let r=e.match(/^[ \t]*(?=\S)/gm);return r?r.reduce((t,n)=>Math.min(t,n.length),1/0):0}});var Wo=X((nf,Ho)=>{"use strict";var Vu=Jo();Ho.exports=e=>{let r=Vu(e);if(r===0)return e;let t=new RegExp(`^[ \\t]{${r}}`,"gm");return e.replace(t,"")}});var Zn=X((of,ju)=>{ju.exports={name:"@prisma/engines-version",version:"5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9",main:"index.js",types:"index.d.ts",license:"Apache-2.0",author:"Tim Suchanek ",prisma:{enginesVersion:"5a9203d0590c951969e85a7d07215503f4672eb9"},repository:{type:"git",url:"https://github.com/prisma/engines-wrapper.git",directory:"packages/engines-version"},devDependencies:{"@types/node":"18.19.15",typescript:"4.9.5"},files:["index.js","index.d.ts"],scripts:{build:"tsc -d"}}});var Xn=X(Vt=>{"use strict";Object.defineProperty(Vt,"__esModule",{value:!0});Vt.enginesVersion=void 0;Vt.enginesVersion=Zn().prisma.enginesVersion});var ii=X((If,Yo)=>{"use strict";Yo.exports=(e,r=1,t)=>{if(t={indent:" ",includeEmptyLines:!1,...t},typeof e!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if(typeof r!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof r}\``);if(typeof t.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof t.indent}\``);if(r===0)return e;let n=t.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(n,t.indent.repeat(r))}});var rs=X((Df,es)=>{"use strict";es.exports=({onlyFirst:e=!1}={})=>{let r=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(r,e?void 0:"g")}});var li=X((Lf,ts)=>{"use strict";var Zu=rs();ts.exports=e=>typeof e=="string"?e.replace(Zu(),""):e});var ns=X((Ff,Ut)=>{"use strict";Ut.exports=(e={})=>{let r;if(e.repoUrl)r=e.repoUrl;else if(e.user&&e.repo)r=`https://github.com/${e.user}/${e.repo}`;else throw new Error("You need to specify either the `repoUrl` option or both the `user` and `repo` options");let t=new URL(`${r}/issues/new`),n=["body","title","labels","template","milestone","assignee","projects"];for(let i of n){let o=e[i];if(o!==void 0){if(i==="labels"||i==="projects"){if(!Array.isArray(o))throw new TypeError(`The \`${i}\` option should be an array`);o=o.join(",")}t.searchParams.set(i,o)}}return t.toString()};Ut.exports.default=Ut.exports});var Hi=X((C0,Ba)=>{"use strict";Ba.exports=function(){function e(r,t,n,i,o){return rn?n+1:r+1:i===o?t:t+1}return function(r,t){if(r===t)return 0;if(r.length>t.length){var n=r;r=t,t=n}for(var i=r.length,o=t.length;i>0&&r.charCodeAt(i-1)===t.charCodeAt(o-1);)i--,o--;for(var s=0;sOn,Decimal:()=>Te,Extensions:()=>Dn,MetricsClient:()=>yr,NotFoundError:()=>Le,PrismaClientInitializationError:()=>S,PrismaClientKnownRequestError:()=>V,PrismaClientRustPanicError:()=>ue,PrismaClientUnknownRequestError:()=>j,PrismaClientValidationError:()=>K,Public:()=>Ln,Sql:()=>oe,defineDmmfProperty:()=>os,detectRuntime:()=>gn,empty:()=>as,getPrismaClient:()=>Dl,join:()=>ss,makeStrictEnum:()=>Ll,objectEnumValues:()=>Jt,raw:()=>yi,sqltag:()=>Ei,warnEnvConflicts:()=>Nl,warnOnce:()=>Kr});module.exports=Bl(sd);var Dn={};Or(Dn,{defineExtension:()=>no,getExtensionContext:()=>io});function no(e){return typeof e=="function"?e:r=>r.$extends(e)}function io(e){return e}var Ln={};Or(Ln,{validator:()=>oo});function oo(...e){return r=>r}var It={};Or(It,{$:()=>co,bgBlack:()=>zl,bgBlue:()=>eu,bgCyan:()=>tu,bgGreen:()=>Zl,bgMagenta:()=>ru,bgRed:()=>Yl,bgWhite:()=>nu,bgYellow:()=>Xl,black:()=>Jl,blue:()=>Ze,bold:()=>W,cyan:()=>_e,dim:()=>Ie,gray:()=>Fr,green:()=>$e,grey:()=>Kl,hidden:()=>Ql,inverse:()=>Ul,italic:()=>jl,magenta:()=>Hl,red:()=>ce,reset:()=>Vl,strikethrough:()=>Gl,underline:()=>ee,white:()=>Wl,yellow:()=>de});var Nn,so,ao,lo,uo=!0;typeof process<"u"&&({FORCE_COLOR:Nn,NODE_DISABLE_COLORS:so,NO_COLOR:ao,TERM:lo}=process.env||{},uo=process.stdout&&process.stdout.isTTY);var co={enabled:!so&&ao==null&&lo!=="dumb"&&(Nn!=null&&Nn!=="0"||uo)};function F(e,r){let t=new RegExp(`\\x1b\\[${r}m`,"g"),n=`\x1B[${e}m`,i=`\x1B[${r}m`;return function(o){return!co.enabled||o==null?o:n+(~(""+o).indexOf(i)?o.replace(t,i+n):o)+i}}var Vl=F(0,0),W=F(1,22),Ie=F(2,22),jl=F(3,23),ee=F(4,24),Ul=F(7,27),Ql=F(8,28),Gl=F(9,29),Jl=F(30,39),ce=F(31,39),$e=F(32,39),de=F(33,39),Ze=F(34,39),Hl=F(35,39),_e=F(36,39),Wl=F(37,39),Fr=F(90,39),Kl=F(90,39),zl=F(40,49),Yl=F(41,49),Zl=F(42,49),Xl=F(43,49),eu=F(44,49),ru=F(45,49),tu=F(46,49),nu=F(47,49);var iu=100,po=["green","yellow","blue","magenta","cyan","red"],Mr=[],mo=Date.now(),ou=0;globalThis.DEBUG??(globalThis.DEBUG=process.env.DEBUG??"");globalThis.DEBUG_COLORS??(globalThis.DEBUG_COLORS=process.env.DEBUG_COLORS?process.env.DEBUG_COLORS==="true":!0);var $r={enable(e){typeof e=="string"&&(globalThis.DEBUG=e)},disable(){let e=globalThis.DEBUG;return globalThis.DEBUG="",e},enabled(e){let r=globalThis.DEBUG.split(",").map(i=>i.replace(/[.+?^${}()|[\]\\]/g,"\\$&")),t=r.some(i=>i===""||i[0]==="-"?!1:e.match(RegExp(i.split("*").join(".*")+"$"))),n=r.some(i=>i===""||i[0]!=="-"?!1:e.match(RegExp(i.slice(1).split("*").join(".*")+"$")));return t&&!n},log:(...e)=>{let[r,t,...n]=e,i;typeof require=="function"&&typeof process<"u"&&typeof process.stderr<"u"&&typeof process.stderr.write=="function"?i=(...o)=>{let s=require("util");process.stderr.write(s.format(...o)+` +`)}:i=console.warn??console.log,i(`${r} ${t}`,...n)},formatters:{}};function su(e){let r={color:po[ou++%po.length],enabled:$r.enabled(e),namespace:e,log:$r.log,extend:()=>{}},t=(...n)=>{let{enabled:i,namespace:o,color:s,log:a}=r;if(n.length!==0&&Mr.push([o,...n]),Mr.length>iu&&Mr.shift(),$r.enabled(o)||i){let l=n.map(c=>typeof c=="string"?c:au(c)),u=`+${Date.now()-mo}ms`;mo=Date.now(),globalThis.DEBUG_COLORS?a(It[s](W(o)),...l,It[s](u)):a(o,...l,u)}};return new Proxy(t,{get:(n,i)=>r[i],set:(n,i,o)=>r[i]=o})}var On=new Proxy(su,{get:(e,r)=>$r[r],set:(e,r,t)=>$r[r]=t});function au(e,r=2){let t=new Set;return JSON.stringify(e,(n,i)=>{if(typeof i=="object"&&i!==null){if(t.has(i))return"[Circular *]";t.add(i)}else if(typeof i=="bigint")return i.toString();return i},r)}function fo(e=7500){let r=Mr.map(([t,...n])=>`${t} ${n.map(i=>typeof i=="string"?i:JSON.stringify(i)).join(" ")}`).join(` +`);return r.length!!(e&&typeof e=="object"),Dt=e=>e&&!!e[ke],we=(e,r,t)=>{if(Dt(e)){let n=e[ke](),{matched:i,selections:o}=n.match(r);return i&&o&&Object.keys(o).forEach(s=>t(s,o[s])),i}if($n(e)){if(!$n(r))return!1;if(Array.isArray(e)){if(!Array.isArray(r))return!1;let n=[],i=[],o=[];for(let s of e.keys()){let a=e[s];Dt(a)&&a[lu]?o.push(a):o.length?i.push(a):n.push(a)}if(o.length){if(o.length>1)throw new Error("Pattern error: Using `...P.array(...)` several times in a single pattern is not allowed.");if(r.lengthwe(u,s[c],t))&&i.every((u,c)=>we(u,a[c],t))&&(o.length===0||we(o[0],l,t))}return e.length===r.length&&e.every((s,a)=>we(s,r[a],t))}return Object.keys(e).every(n=>{let i=e[n];return(n in r||Dt(o=i)&&o[ke]().matcherType==="optional")&&we(i,r[n],t);var o})}return Object.is(r,e)},Ve=e=>{var r,t,n;return $n(e)?Dt(e)?(r=(t=(n=e[ke]()).getSelectionKeys)==null?void 0:t.call(n))!=null?r:[]:Array.isArray(e)?qr(e,Ve):qr(Object.values(e),Ve):[]},qr=(e,r)=>e.reduce((t,n)=>t.concat(r(n)),[]);function fe(e){return Object.assign(e,{optional:()=>uu(e),and:r=>B(e,r),or:r=>cu(e,r),select:r=>r===void 0?yo(e):yo(r,e)})}function uu(e){return fe({[ke]:()=>({match:r=>{let t={},n=(i,o)=>{t[i]=o};return r===void 0?(Ve(e).forEach(i=>n(i,void 0)),{matched:!0,selections:t}):{matched:we(e,r,n),selections:t}},getSelectionKeys:()=>Ve(e),matcherType:"optional"})})}function B(...e){return fe({[ke]:()=>({match:r=>{let t={},n=(i,o)=>{t[i]=o};return{matched:e.every(i=>we(i,r,n)),selections:t}},getSelectionKeys:()=>qr(e,Ve),matcherType:"and"})})}function cu(...e){return fe({[ke]:()=>({match:r=>{let t={},n=(i,o)=>{t[i]=o};return qr(e,Ve).forEach(i=>n(i,void 0)),{matched:e.some(i=>we(i,r,n)),selections:t}},getSelectionKeys:()=>qr(e,Ve),matcherType:"or"})})}function k(e){return{[ke]:()=>({match:r=>({matched:!!e(r)})})}}function yo(...e){let r=typeof e[0]=="string"?e[0]:void 0,t=e.length===2?e[1]:typeof e[0]=="string"?void 0:e[0];return fe({[ke]:()=>({match:n=>{let i={[r??Lt]:n};return{matched:t===void 0||we(t,n,(o,s)=>{i[o]=s}),selections:i}},getSelectionKeys:()=>[r??Lt].concat(t===void 0?[]:Ve(t))})})}function Ee(e){return typeof e=="number"}function Xe(e){return typeof e=="string"}function qe(e){return typeof e=="bigint"}var bd=fe(k(function(e){return!0}));var er=e=>Object.assign(fe(e),{startsWith:r=>{return er(B(e,(t=r,k(n=>Xe(n)&&n.startsWith(t)))));var t},endsWith:r=>{return er(B(e,(t=r,k(n=>Xe(n)&&n.endsWith(t)))));var t},minLength:r=>er(B(e,(t=>k(n=>Xe(n)&&n.length>=t))(r))),maxLength:r=>er(B(e,(t=>k(n=>Xe(n)&&n.length<=t))(r))),includes:r=>{return er(B(e,(t=r,k(n=>Xe(n)&&n.includes(t)))));var t},regex:r=>{return er(B(e,(t=r,k(n=>Xe(n)&&!!n.match(t)))));var t}}),wd=er(k(Xe)),be=e=>Object.assign(fe(e),{between:(r,t)=>be(B(e,((n,i)=>k(o=>Ee(o)&&n<=o&&i>=o))(r,t))),lt:r=>be(B(e,(t=>k(n=>Ee(n)&&nbe(B(e,(t=>k(n=>Ee(n)&&n>t))(r))),lte:r=>be(B(e,(t=>k(n=>Ee(n)&&n<=t))(r))),gte:r=>be(B(e,(t=>k(n=>Ee(n)&&n>=t))(r))),int:()=>be(B(e,k(r=>Ee(r)&&Number.isInteger(r)))),finite:()=>be(B(e,k(r=>Ee(r)&&Number.isFinite(r)))),positive:()=>be(B(e,k(r=>Ee(r)&&r>0))),negative:()=>be(B(e,k(r=>Ee(r)&&r<0)))}),xd=be(k(Ee)),Be=e=>Object.assign(fe(e),{between:(r,t)=>Be(B(e,((n,i)=>k(o=>qe(o)&&n<=o&&i>=o))(r,t))),lt:r=>Be(B(e,(t=>k(n=>qe(n)&&nBe(B(e,(t=>k(n=>qe(n)&&n>t))(r))),lte:r=>Be(B(e,(t=>k(n=>qe(n)&&n<=t))(r))),gte:r=>Be(B(e,(t=>k(n=>qe(n)&&n>=t))(r))),positive:()=>Be(B(e,k(r=>qe(r)&&r>0))),negative:()=>Be(B(e,k(r=>qe(r)&&r<0)))}),Pd=Be(k(qe)),vd=fe(k(function(e){return typeof e=="boolean"})),Td=fe(k(function(e){return typeof e=="symbol"})),Cd=fe(k(function(e){return e==null}));var qn={matched:!1,value:void 0};function mr(e){return new Bn(e,qn)}var Bn=class e{constructor(r,t){this.input=void 0,this.state=void 0,this.input=r,this.state=t}with(...r){if(this.state.matched)return this;let t=r[r.length-1],n=[r[0]],i;r.length===3&&typeof r[1]=="function"?i=r[1]:r.length>2&&n.push(...r.slice(1,r.length-1));let o=!1,s={},a=(u,c)=>{o=!0,s[u]=c},l=!n.some(u=>we(u,this.input,a))||i&&!i(this.input)?qn:{matched:!0,value:t(o?Lt in s?s[Lt]:s:this.input,this.input)};return new e(this.input,l)}when(r,t){if(this.state.matched)return this;let n=!!r(this.input);return new e(this.input,n?{matched:!0,value:t(this.input,this.input)}:qn)}otherwise(r){return this.state.matched?this.state.value:r(this.input)}exhaustive(){if(this.state.matched)return this.state.value;let r;try{r=JSON.stringify(this.input)}catch{r=this.input}throw new Error(`Pattern matching error: no pattern matches value ${r}`)}run(){return this.exhaustive()}returnType(){return this}};var Lo=require("util");var Io=_(Ao());function jr(e){return(0,Io.default)(e,e,{fallback:ee})}var gu={warn:de("prisma:warn")},hu={warn:()=>!process.env.PRISMA_DISABLE_WARNINGS};function Ur(e,...r){hu.warn()&&console.warn(`${gu.warn} ${e}`,...r)}var yu=(0,Lo.promisify)(Do.default.exec),ie=N("prisma:get-platform"),Eu=["1.0.x","1.1.x","3.0.x"];async function No(){let e=Ft.default.platform(),r=process.arch;if(e==="freebsd"){let s=await Mt("freebsd-version");if(s&&s.trim().length>0){let l=/^(\d+)\.?/.exec(s);if(l)return{platform:"freebsd",targetDistro:`freebsd${l[1]}`,arch:r}}}if(e!=="linux")return{platform:e,arch:r};let t=await wu(),n=await Au(),i=Pu({arch:r,archFromUname:n,familyDistro:t.familyDistro}),{libssl:o}=await vu(i);return{platform:"linux",libssl:o,arch:r,archFromUname:n,...t}}function bu(e){let r=/^ID="?([^"\n]*)"?$/im,t=/^ID_LIKE="?([^"\n]*)"?$/im,n=r.exec(e),i=n&&n[1]&&n[1].toLowerCase()||"",o=t.exec(e),s=o&&o[1]&&o[1].toLowerCase()||"",a=mr({id:i,idLike:s}).with({id:"alpine"},({id:l})=>({targetDistro:"musl",familyDistro:l,originalDistro:l})).with({id:"raspbian"},({id:l})=>({targetDistro:"arm",familyDistro:"debian",originalDistro:l})).with({id:"nixos"},({id:l})=>({targetDistro:"nixos",originalDistro:l,familyDistro:"nixos"})).with({id:"debian"},{id:"ubuntu"},({id:l})=>({targetDistro:"debian",familyDistro:"debian",originalDistro:l})).with({id:"rhel"},{id:"centos"},{id:"fedora"},({id:l})=>({targetDistro:"rhel",familyDistro:"rhel",originalDistro:l})).when(({idLike:l})=>l.includes("debian")||l.includes("ubuntu"),({id:l})=>({targetDistro:"debian",familyDistro:"debian",originalDistro:l})).when(({idLike:l})=>i==="arch"||l.includes("arch"),({id:l})=>({targetDistro:"debian",familyDistro:"arch",originalDistro:l})).when(({idLike:l})=>l.includes("centos")||l.includes("fedora")||l.includes("rhel")||l.includes("suse"),({id:l})=>({targetDistro:"rhel",familyDistro:"rhel",originalDistro:l})).otherwise(({id:l})=>({targetDistro:void 0,familyDistro:void 0,originalDistro:l}));return ie(`Found distro info: +${JSON.stringify(a,null,2)}`),a}async function wu(){let e="/etc/os-release";try{let r=await Hn.default.readFile(e,{encoding:"utf-8"});return bu(r)}catch{return{targetDistro:void 0,familyDistro:void 0,originalDistro:void 0}}}function xu(e){let r=/^OpenSSL\s(\d+\.\d+)\.\d+/.exec(e);if(r){let t=`${r[1]}.x`;return Oo(t)}}function _o(e){let r=/libssl\.so\.(\d)(\.\d)?/.exec(e);if(r){let t=`${r[1]}${r[2]??".0"}.x`;return Oo(t)}}function Oo(e){let r=(()=>{if(Mo(e))return e;let t=e.split(".");return t[1]="0",t.join(".")})();if(Eu.includes(r))return r}function Pu(e){return mr(e).with({familyDistro:"musl"},()=>(ie('Trying platform-specific paths for "alpine"'),["/lib"])).with({familyDistro:"debian"},({archFromUname:r})=>(ie('Trying platform-specific paths for "debian" (and "ubuntu")'),[`/usr/lib/${r}-linux-gnu`,`/lib/${r}-linux-gnu`])).with({familyDistro:"rhel"},()=>(ie('Trying platform-specific paths for "rhel"'),["/lib64","/usr/lib64"])).otherwise(({familyDistro:r,arch:t,archFromUname:n})=>(ie(`Don't know any platform-specific paths for "${r}" on ${t} (${n})`),[]))}async function vu(e){let r='grep -v "libssl.so.0"',t=await ko(e);if(t){ie(`Found libssl.so file using platform-specific paths: ${t}`);let o=_o(t);if(ie(`The parsed libssl version is: ${o}`),o)return{libssl:o,strategy:"libssl-specific-path"}}ie('Falling back to "ldconfig" and other generic paths');let n=await Mt(`ldconfig -p | sed "s/.*=>s*//" | sed "s|.*/||" | grep libssl | sort | ${r}`);if(n||(n=await ko(["/lib64","/usr/lib64","/lib"])),n){ie(`Found libssl.so file using "ldconfig" or other generic paths: ${n}`);let o=_o(n);if(ie(`The parsed libssl version is: ${o}`),o)return{libssl:o,strategy:"ldconfig"}}let i=await Mt("openssl version -v");if(i){ie(`Found openssl binary with version: ${i}`);let o=xu(i);if(ie(`The parsed openssl version is: ${o}`),o)return{libssl:o,strategy:"openssl-binary"}}return ie("Couldn't find any version of libssl or OpenSSL in the system"),{}}async function ko(e){for(let r of e){let t=await Tu(r);if(t)return t}}async function Tu(e){try{return(await Hn.default.readdir(e)).find(t=>t.startsWith("libssl.so.")&&!t.startsWith("libssl.so.0"))}catch(r){if(r.code==="ENOENT")return;throw r}}async function rr(){let{binaryTarget:e}=await Fo();return e}function Cu(e){return e.binaryTarget!==void 0}async function Wn(){let{memoized:e,...r}=await Fo();return r}var Ot={};async function Fo(){if(Cu(Ot))return Promise.resolve({...Ot,memoized:!0});let e=await No(),r=Su(e);return Ot={...e,binaryTarget:r},{...Ot,memoized:!1}}function Su(e){let{platform:r,arch:t,archFromUname:n,libssl:i,targetDistro:o,familyDistro:s,originalDistro:a}=e;r==="linux"&&!["x64","arm64"].includes(t)&&Ur(`Prisma only officially supports Linux on amd64 (x86_64) and arm64 (aarch64) system architectures. If you are using your own custom Prisma engines, you can ignore this warning, as long as you've compiled the engines for your system architecture "${n}".`);let l="1.1.x";if(r==="linux"&&i===void 0){let c=mr({familyDistro:s}).with({familyDistro:"debian"},()=>"Please manually install OpenSSL via `apt-get update -y && apt-get install -y openssl` and try installing Prisma again. If you're running Prisma on Docker, add this command to your Dockerfile, or switch to an image that already has OpenSSL installed.").otherwise(()=>"Please manually install OpenSSL and try installing Prisma again.");Ur(`Prisma failed to detect the libssl/openssl version to use, and may not work as expected. Defaulting to "openssl-${l}". +${c}`)}let u="debian";if(r==="linux"&&o===void 0&&Ur(`Prisma doesn't know which engines to download for the Linux distro "${a}". Falling back to Prisma engines built "${u}". +Please report your experience by creating an issue at ${jr("https://github.com/prisma/prisma/issues")} so we can add your distro to the list of known supported distros.`),r==="darwin"&&t==="arm64")return"darwin-arm64";if(r==="darwin")return"darwin";if(r==="win32")return"windows";if(r==="freebsd")return o;if(r==="openbsd")return"openbsd";if(r==="netbsd")return"netbsd";if(r==="linux"&&o==="nixos")return"linux-nixos";if(r==="linux"&&t==="arm64")return`${o==="musl"?"linux-musl-arm64":"linux-arm64"}-openssl-${i||l}`;if(r==="linux"&&t==="arm")return`linux-arm-openssl-${i||l}`;if(r==="linux"&&o==="musl"){let c="linux-musl";return!i||Mo(i)?c:`${c}-openssl-${i}`}return r==="linux"&&o&&i?`${o}-openssl-${i}`:(r!=="linux"&&Ur(`Prisma detected unknown OS "${r}" and may not work as expected. Defaulting to "linux".`),i?`${u}-openssl-${i}`:o?`${o}-openssl-${l}`:`${u}-openssl-${l}`)}async function Ru(e){try{return await e()}catch{return}}function Mt(e){return Ru(async()=>{let r=await yu(e);return ie(`Command "${e}" successfully returned "${r.stdout}"`),r.stdout})}async function Au(){return typeof Ft.default.machine=="function"?Ft.default.machine():(await Mt("uname -m"))?.trim()}function Mo(e){return e.startsWith("1.")}var Yn=_(Bo()),Bt=_(require("fs"));var gr=_(require("path"));function Vo(e){let r=e.ignoreProcessEnv?{}:process.env,t=n=>n.match(/(.?\${(?:[a-zA-Z0-9_]+)?})/g)?.reduce(function(o,s){let a=/(.?)\${([a-zA-Z0-9_]+)?}/g.exec(s);if(!a)return o;let l=a[1],u,c;if(l==="\\")c=a[0],u=c.replace("\\$","$");else{let p=a[2];c=a[0].substring(l.length),u=Object.hasOwnProperty.call(r,p)?r[p]:e.parsed[p]||"",u=t(u)}return o.replace(c,u)},n)??n;for(let n in e.parsed){let i=Object.hasOwnProperty.call(r,n)?r[n]:e.parsed[n];e.parsed[n]=t(i)}for(let n in e.parsed)r[n]=e.parsed[n];return e}var zn=N("prisma:tryLoadEnv");function Qr({rootEnvPath:e,schemaEnvPath:r},t={conflictCheck:"none"}){let n=jo(e);t.conflictCheck!=="none"&&$u(n,r,t.conflictCheck);let i=null;return Uo(n?.path,r)||(i=jo(r)),!n&&!i&&zn("No Environment variables loaded"),i?.dotenvResult.error?console.error(ce(W("Schema Env Error: "))+i.dotenvResult.error):{message:[n?.message,i?.message].filter(Boolean).join(` +`),parsed:{...n?.dotenvResult?.parsed,...i?.dotenvResult?.parsed}}}function $u(e,r,t){let n=e?.dotenvResult.parsed,i=!Uo(e?.path,r);if(n&&r&&i&&Bt.default.existsSync(r)){let o=Yn.default.parse(Bt.default.readFileSync(r)),s=[];for(let a in o)n[a]===o[a]&&s.push(a);if(s.length>0){let a=gr.default.relative(process.cwd(),e.path),l=gr.default.relative(process.cwd(),r);if(t==="error"){let u=`There is a conflict between env var${s.length>1?"s":""} in ${ee(a)} and ${ee(l)} +Conflicting env vars: +${s.map(c=>` ${W(c)}`).join(` +`)} + +We suggest to move the contents of ${ee(l)} to ${ee(a)} to consolidate your env vars. +`;throw new Error(u)}else if(t==="warn"){let u=`Conflict for env var${s.length>1?"s":""} ${s.map(c=>W(c)).join(", ")} in ${ee(a)} and ${ee(l)} +Env vars from ${ee(l)} overwrite the ones from ${ee(a)} + `;console.warn(`${de("warn(prisma)")} ${u}`)}}}}function jo(e){if(qu(e)){zn(`Environment variables loaded from ${e}`);let r=Yn.default.config({path:e,debug:process.env.DOTENV_CONFIG_DEBUG?!0:void 0});return{dotenvResult:Vo(r),message:Ie(`Environment variables loaded from ${gr.default.relative(process.cwd(),e)}`),path:e}}else zn(`Environment variables not found at ${e}`);return null}function Uo(e,r){return e&&r&&gr.default.resolve(e)===gr.default.resolve(r)}function qu(e){return!!(e&&Bt.default.existsSync(e))}var Qo="library";function Gr(e){let r=Bu();return r||(e?.config.engineType==="library"?"library":e?.config.engineType==="binary"?"binary":Qo)}function Bu(){let e=process.env.PRISMA_CLIENT_ENGINE_TYPE;return e==="library"?"library":e==="binary"?"binary":void 0}var Uu=_(Xn());var M=_(require("path")),Qu=_(Xn()),gf=N("prisma:engines");function Ko(){return M.default.join(__dirname,"../")}var hf="libquery-engine";M.default.join(__dirname,"../query-engine-darwin");M.default.join(__dirname,"../query-engine-darwin-arm64");M.default.join(__dirname,"../query-engine-debian-openssl-1.0.x");M.default.join(__dirname,"../query-engine-debian-openssl-1.1.x");M.default.join(__dirname,"../query-engine-debian-openssl-3.0.x");M.default.join(__dirname,"../query-engine-linux-static-x64");M.default.join(__dirname,"../query-engine-linux-static-arm64");M.default.join(__dirname,"../query-engine-rhel-openssl-1.0.x");M.default.join(__dirname,"../query-engine-rhel-openssl-1.1.x");M.default.join(__dirname,"../query-engine-rhel-openssl-3.0.x");M.default.join(__dirname,"../libquery_engine-darwin.dylib.node");M.default.join(__dirname,"../libquery_engine-darwin-arm64.dylib.node");M.default.join(__dirname,"../libquery_engine-debian-openssl-1.0.x.so.node");M.default.join(__dirname,"../libquery_engine-debian-openssl-1.1.x.so.node");M.default.join(__dirname,"../libquery_engine-debian-openssl-3.0.x.so.node");M.default.join(__dirname,"../libquery_engine-linux-arm64-openssl-1.0.x.so.node");M.default.join(__dirname,"../libquery_engine-linux-arm64-openssl-1.1.x.so.node");M.default.join(__dirname,"../libquery_engine-linux-arm64-openssl-3.0.x.so.node");M.default.join(__dirname,"../libquery_engine-linux-musl.so.node");M.default.join(__dirname,"../libquery_engine-linux-musl-openssl-3.0.x.so.node");M.default.join(__dirname,"../libquery_engine-rhel-openssl-1.0.x.so.node");M.default.join(__dirname,"../libquery_engine-rhel-openssl-1.1.x.so.node");M.default.join(__dirname,"../libquery_engine-rhel-openssl-3.0.x.so.node");M.default.join(__dirname,"../query_engine-windows.dll.node");var ei=_(require("fs")),zo=N("chmodPlusX");function ri(e){if(process.platform==="win32")return;let r=ei.default.statSync(e),t=r.mode|64|8|1;if(r.mode===t){zo(`Execution permissions of ${e} are fine`);return}let n=t.toString(8).slice(-3);zo(`Have to call chmodPlusX on ${e}`),ei.default.chmodSync(e,n)}function ti(e){let r=e.e,t=a=>`Prisma cannot find the required \`${a}\` system library in your system`,n=r.message.includes("cannot open shared object file"),i=`Please refer to the documentation about Prisma's system requirements: ${jr("https://pris.ly/d/system-requirements")}`,o=`Unable to require(\`${Ie(e.id)}\`).`,s=mr({message:r.message,code:r.code}).with({code:"ENOENT"},()=>"File does not exist.").when(({message:a})=>n&&a.includes("libz"),()=>`${t("libz")}. Please install it and try again.`).when(({message:a})=>n&&a.includes("libgcc_s"),()=>`${t("libgcc_s")}. Please install it and try again.`).when(({message:a})=>n&&a.includes("libssl"),()=>{let a=e.platformInfo.libssl?`openssl-${e.platformInfo.libssl}`:"openssl";return`${t("libssl")}. Please install ${a} and try again.`}).when(({message:a})=>a.includes("GLIBC"),()=>`Prisma has detected an incompatible version of the \`glibc\` C standard library installed in your system. This probably means your system may be too old to run Prisma. ${i}`).when(({message:a})=>e.platformInfo.platform==="linux"&&a.includes("symbol not found"),()=>`The Prisma engines are not compatible with your system ${e.platformInfo.originalDistro} on (${e.platformInfo.archFromUname}) which uses the \`${e.platformInfo.binaryTarget}\` binaryTarget by default. ${i}`).otherwise(()=>`The Prisma engines do not seem to be compatible with your system. ${i}`);return`${o} +${s} + +Details: ${r.message}`}var De;(r=>{let e;(E=>(E.findUnique="findUnique",E.findUniqueOrThrow="findUniqueOrThrow",E.findFirst="findFirst",E.findFirstOrThrow="findFirstOrThrow",E.findMany="findMany",E.create="create",E.createMany="createMany",E.update="update",E.updateMany="updateMany",E.upsert="upsert",E.delete="delete",E.deleteMany="deleteMany",E.groupBy="groupBy",E.count="count",E.aggregate="aggregate",E.findRaw="findRaw",E.aggregateRaw="aggregateRaw"))(e=r.ModelAction||(r.ModelAction={}))})(De||(De={}));var Jr=_(require("path"));function ni(e){return Jr.default.sep===Jr.default.posix.sep?e:e.split(Jr.default.sep).join(Jr.default.posix.sep)}var Zo=_(ii());function si(e){return String(new oi(e))}var oi=class{constructor(r){this.config=r}toString(){let{config:r}=this,t=r.provider.fromEnvVar?`env("${r.provider.fromEnvVar}")`:r.provider.value,n=JSON.parse(JSON.stringify({provider:t,binaryTargets:Gu(r.binaryTargets)}));return`generator ${r.name} { +${(0,Zo.default)(Ju(n),2)} +}`}};function Gu(e){let r;if(e.length>0){let t=e.find(n=>n.fromEnvVar!==null);t?r=`env("${t.fromEnvVar}")`:r=e.map(n=>n.native?"native":n.value)}else r=void 0;return r}function Ju(e){let r=Object.keys(e).reduce((t,n)=>Math.max(t,n.length),0);return Object.entries(e).map(([t,n])=>`${t.padEnd(r)} = ${Hu(n)}`).join(` +`)}function Hu(e){return JSON.parse(JSON.stringify(e,(r,t)=>Array.isArray(t)?`[${t.map(n=>JSON.stringify(n)).join(", ")}]`:JSON.stringify(t)))}var Wr={};Or(Wr,{error:()=>zu,info:()=>Ku,log:()=>Wu,query:()=>Yu,should:()=>Xo,tags:()=>Hr,warn:()=>ai});var Hr={error:ce("prisma:error"),warn:de("prisma:warn"),info:_e("prisma:info"),query:Ze("prisma:query")},Xo={warn:()=>!process.env.PRISMA_DISABLE_WARNINGS};function Wu(...e){console.log(...e)}function ai(e,...r){Xo.warn()&&console.warn(`${Hr.warn} ${e}`,...r)}function Ku(e,...r){console.info(`${Hr.info} ${e}`,...r)}function zu(e,...r){console.error(`${Hr.error} ${e}`,...r)}function Yu(e,...r){console.log(`${Hr.query} ${e}`,...r)}function jt(e,r){if(!e)throw new Error(`${r}. This should never happen. If you see this error, please, open an issue at https://pris.ly/prisma-prisma-bug-report`)}function tr(e,r){throw new Error(r)}function ui(e,r){return Object.prototype.hasOwnProperty.call(e,r)}var ci=(e,r)=>e.reduce((t,n)=>(t[r(n)]=n,t),{});function hr(e,r){let t={};for(let n of Object.keys(e))t[n]=r(e[n],n);return t}function pi(e,r){if(e.length===0)return;let t=e[0];for(let n=1;n{is.has(e)||(is.add(e),ai(r,...t))};var V=class extends Error{constructor(r,{code:t,clientVersion:n,meta:i,batchRequestIdx:o}){super(r),this.name="PrismaClientKnownRequestError",this.code=t,this.clientVersion=n,this.meta=i,Object.defineProperty(this,"batchRequestIdx",{value:o,enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return"PrismaClientKnownRequestError"}};w(V,"PrismaClientKnownRequestError");var Le=class extends V{constructor(r,t){super(r,{code:"P2025",clientVersion:t}),this.name="NotFoundError"}};w(Le,"NotFoundError");var S=class e extends Error{constructor(r,t,n){super(r),this.name="PrismaClientInitializationError",this.clientVersion=t,this.errorCode=n,Error.captureStackTrace(e)}get[Symbol.toStringTag](){return"PrismaClientInitializationError"}};w(S,"PrismaClientInitializationError");var ue=class extends Error{constructor(r,t){super(r),this.name="PrismaClientRustPanicError",this.clientVersion=t}get[Symbol.toStringTag](){return"PrismaClientRustPanicError"}};w(ue,"PrismaClientRustPanicError");var j=class extends Error{constructor(r,{clientVersion:t,batchRequestIdx:n}){super(r),this.name="PrismaClientUnknownRequestError",this.clientVersion=t,Object.defineProperty(this,"batchRequestIdx",{value:n,writable:!0,enumerable:!1})}get[Symbol.toStringTag](){return"PrismaClientUnknownRequestError"}};w(j,"PrismaClientUnknownRequestError");var K=class extends Error{constructor(t,{clientVersion:n}){super(t);this.name="PrismaClientValidationError";this.clientVersion=n}get[Symbol.toStringTag](){return"PrismaClientValidationError"}};w(K,"PrismaClientValidationError");var yr=class{constructor(r){this._engine=r}prometheus(r){return this._engine.metrics({format:"prometheus",...r})}json(r){return this._engine.metrics({format:"json",...r})}};function zr(e){let r;return{get(){return r||(r={value:e()}),r.value}}}function os(e,r){let t=zr(()=>Xu(r));Object.defineProperty(e,"dmmf",{get:()=>t.get()})}function Xu(e){return{datamodel:{models:mi(e.models),enums:mi(e.enums),types:mi(e.types)}}}function mi(e){return Object.entries(e).map(([r,t])=>({name:r,...t}))}var Gt=Symbol(),di=new WeakMap,Ne=class{constructor(r){r===Gt?di.set(this,`Prisma.${this._getName()}`):di.set(this,`new Prisma.${this._getNamespace()}.${this._getName()}()`)}_getName(){return this.constructor.name}toString(){return di.get(this)}},Yr=class extends Ne{_getNamespace(){return"NullTypes"}},Zr=class extends Yr{};fi(Zr,"DbNull");var Xr=class extends Yr{};fi(Xr,"JsonNull");var et=class extends Yr{};fi(et,"AnyNull");var Jt={classes:{DbNull:Zr,JsonNull:Xr,AnyNull:et},instances:{DbNull:new Zr(Gt),JsonNull:new Xr(Gt),AnyNull:new et(Gt)}};function fi(e,r){Object.defineProperty(e,"name",{value:r,configurable:!0})}function rt(e){return{ok:!1,error:e,map(){return rt(e)},flatMap(){return rt(e)}}}var gi=class{constructor(){this.registeredErrors=[]}consumeError(r){return this.registeredErrors[r]}registerNewError(r){let t=0;for(;this.registeredErrors[t]!==void 0;)t++;return this.registeredErrors[t]={error:r},t}},hi=e=>{let r=new gi,t=nr(r,e.startTransaction.bind(e)),n={errorRegistry:r,queryRaw:nr(r,e.queryRaw.bind(e)),executeRaw:nr(r,e.executeRaw.bind(e)),provider:e.provider,startTransaction:async(...i)=>(await t(...i)).map(s=>ec(r,s))};return e.getConnectionInfo&&(n.getConnectionInfo=rc(r,e.getConnectionInfo.bind(e))),n},ec=(e,r)=>({provider:r.provider,options:r.options,queryRaw:nr(e,r.queryRaw.bind(r)),executeRaw:nr(e,r.executeRaw.bind(r)),commit:nr(e,r.commit.bind(r)),rollback:nr(e,r.rollback.bind(r))});function nr(e,r){return async(...t)=>{try{return await r(...t)}catch(n){let i=e.registerNewError(n);return rt({kind:"GenericJs",id:i})}}}function rc(e,r){return(...t)=>{try{return r(...t)}catch(n){let i=e.registerNewError(n);return rt({kind:"GenericJs",id:i})}}}var Al=_(Zn());var Il=require("async_hooks"),_l=require("events"),kl=_(require("fs")),St=_(require("path"));var oe=class e{constructor(r,t){if(r.length-1!==t.length)throw r.length===0?new TypeError("Expected at least 1 string"):new TypeError(`Expected ${r.length} strings to have ${r.length-1} values`);let n=t.reduce((s,a)=>s+(a instanceof e?a.values.length:1),0);this.values=new Array(n),this.strings=new Array(n+1),this.strings[0]=r[0];let i=0,o=0;for(;ie.getPropertyValue(t))},getPropertyDescriptor(t){return e.getPropertyDescriptor?.(t)}}}var cs=require("util");var Ht={enumerable:!0,configurable:!0,writable:!0};function Wt(e){let r=new Set(e);return{getOwnPropertyDescriptor:()=>Ht,has:(t,n)=>r.has(n),set:(t,n,i)=>r.add(n)&&Reflect.set(t,n,i),ownKeys:()=>[...r]}}var ls=Symbol.for("nodejs.util.inspect.custom");function Pe(e,r){let t=tc(r),n=new Set,i=new Proxy(e,{get(o,s){if(n.has(s))return o[s];let a=t.get(s);return a?a.getPropertyValue(s):o[s]},has(o,s){if(n.has(s))return!0;let a=t.get(s);return a?a.has?.(s)??!0:Reflect.has(o,s)},ownKeys(o){let s=us(Reflect.ownKeys(o),t),a=us(Array.from(t.keys()),t);return[...new Set([...s,...a,...n])]},set(o,s,a){return t.get(s)?.getPropertyDescriptor?.(s)?.writable===!1?!1:(n.add(s),Reflect.set(o,s,a))},getOwnPropertyDescriptor(o,s){let a=Reflect.getOwnPropertyDescriptor(o,s);if(a&&!a.configurable)return a;let l=t.get(s);return l?l.getPropertyDescriptor?{...Ht,...l?.getPropertyDescriptor(s)}:Ht:a},defineProperty(o,s,a){return n.add(s),Reflect.defineProperty(o,s,a)}});return i[ls]=function(o,s,a=cs.inspect){let l={...this};return delete l[ls],a(l,s)},i}function tc(e){let r=new Map;for(let t of e){let n=t.getKeys();for(let i of n)r.set(i,t)}return r}function us(e,r){return e.filter(t=>r.get(t)?.has?.(t)??!0)}function nt(e){return{getKeys(){return e},has(){return!1},getPropertyValue(){}}}function Er(e,r){return{batch:e,transaction:r?.kind==="batch"?{isolationLevel:r.options.isolationLevel}:void 0}}var br=class{constructor(r=0,t){this.context=t;this.lines=[];this.currentLine="";this.currentIndent=0;this.currentIndent=r}write(r){return typeof r=="string"?this.currentLine+=r:r.write(this),this}writeJoined(r,t){let n=t.length-1;for(let i=0;i0&&this.currentIndent--,this}addMarginSymbol(r){return this.marginSymbol=r,this}toString(){return this.lines.concat(this.indentedCurrentLine()).join(` +`)}getCurrentLineLength(){return this.currentLine.length}indentedCurrentLine(){let r=this.currentLine.padStart(this.currentLine.length+2*this.currentIndent);return this.marginSymbol?this.marginSymbol+r.slice(1):r}};function ps(e){return e.substring(0,1).toLowerCase()+e.substring(1)}function wr(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function Kt(e){return e.toString()!=="Invalid Date"}var xr=9e15,Je=1e9,bi="0123456789abcdef",Yt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Zt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",wi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-xr,maxE:xr,crypto:!1},gs,Oe,x=!0,en="[DecimalError] ",Ge=en+"Invalid argument: ",hs=en+"Precision limit exceeded",ys=en+"crypto unavailable",Es="[object Decimal]",re=Math.floor,Q=Math.pow,nc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ic=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,oc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,bs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,he=1e7,b=7,sc=9007199254740991,ac=Yt.length-1,xi=Zt.length-1,d={toStringTag:Es};d.absoluteValue=d.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),y(e)};d.ceil=function(){return y(new this.constructor(this),this.e+1,2)};d.clampedTo=d.clamp=function(e,r){var t,n=this,i=n.constructor;if(e=new i(e),r=new i(r),!e.s||!r.s)return new i(NaN);if(e.gt(r))throw Error(Ge+r);return t=n.cmp(e),t<0?e:n.cmp(r)>0?r:new i(n)};d.comparedTo=d.cmp=function(e){var r,t,n,i,o=this,s=o.d,a=(e=new o.constructor(e)).d,l=o.s,u=e.s;if(!s||!a)return!l||!u?NaN:l!==u?l:s===a?0:!s^l<0?1:-1;if(!s[0]||!a[0])return s[0]?l:a[0]?-u:0;if(l!==u)return l;if(o.e!==e.e)return o.e>e.e^l<0?1:-1;for(n=s.length,i=a.length,r=0,t=na[r]^l<0?1:-1;return n===i?0:n>i^l<0?1:-1};d.cosine=d.cos=function(){var e,r,t=this,n=t.constructor;return t.d?t.d[0]?(e=n.precision,r=n.rounding,n.precision=e+Math.max(t.e,t.sd())+b,n.rounding=1,t=lc(n,Ts(n,t)),n.precision=e,n.rounding=r,y(Oe==2||Oe==3?t.neg():t,e,r,!0)):new n(1):new n(NaN)};d.cubeRoot=d.cbrt=function(){var e,r,t,n,i,o,s,a,l,u,c=this,p=c.constructor;if(!c.isFinite()||c.isZero())return new p(c);for(x=!1,o=c.s*Q(c.s*c,1/3),!o||Math.abs(o)==1/0?(t=z(c.d),e=c.e,(o=(e-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Q(t,1/3),e=re((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?t="5e"+e:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+e),n=new p(t),n.s=c.s):n=new p(o.toString()),s=(e=p.precision)+3;;)if(a=n,l=a.times(a).times(a),u=l.plus(c),n=O(u.plus(c).times(a),u.plus(l),s+2,1),z(a.d).slice(0,s)===(t=z(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(y(a,e+1,0),a.times(a).times(a).eq(c))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(y(n,e+1,1),r=!n.times(n).times(n).eq(c));break}return x=!0,y(n,e,p.rounding,r)};d.decimalPlaces=d.dp=function(){var e,r=this.d,t=NaN;if(r){if(e=r.length-1,t=(e-re(this.e/b))*b,e=r[e],e)for(;e%10==0;e/=10)t--;t<0&&(t=0)}return t};d.dividedBy=d.div=function(e){return O(this,new this.constructor(e))};d.dividedToIntegerBy=d.divToInt=function(e){var r=this,t=r.constructor;return y(O(r,new t(e),0,1,1),t.precision,t.rounding)};d.equals=d.eq=function(e){return this.cmp(e)===0};d.floor=function(){return y(new this.constructor(this),this.e+1,3)};d.greaterThan=d.gt=function(e){return this.cmp(e)>0};d.greaterThanOrEqualTo=d.gte=function(e){var r=this.cmp(e);return r==1||r===0};d.hyperbolicCosine=d.cosh=function(){var e,r,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(e=Math.ceil(i/3),r=(1/tn(4,e)).toString()):(e=16,r="2.3283064365386962890625e-10"),o=Pr(s,1,o.times(r),new s(1),!0);for(var l,u=e,c=new s(8);u--;)l=o.times(o),o=a.minus(l.times(c.minus(l.times(c))));return y(o,s.precision=t,s.rounding=n,!0)};d.hyperbolicSine=d.sinh=function(){var e,r,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(r=o.precision,t=o.rounding,o.precision=r+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=Pr(o,2,i,i,!0);else{e=1.4*Math.sqrt(n),e=e>16?16:e|0,i=i.times(1/tn(5,e)),i=Pr(o,2,i,i,!0);for(var s,a=new o(5),l=new o(16),u=new o(20);e--;)s=i.times(i),i=i.times(a.plus(s.times(l.times(s).plus(u))))}return o.precision=r,o.rounding=t,y(i,r,t,!0)};d.hyperbolicTangent=d.tanh=function(){var e,r,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(e=n.precision,r=n.rounding,n.precision=e+7,n.rounding=1,O(t.sinh(),t.cosh(),n.precision=e,n.rounding=r)):new n(t.s)};d.inverseCosine=d.acos=function(){var e,r=this,t=r.constructor,n=r.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?r.isNeg()?ge(t,i,o):new t(0):new t(NaN):r.isZero()?ge(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,r=r.asin(),e=ge(t,i+4,o).times(.5),t.precision=i,t.rounding=o,e.minus(r))};d.inverseHyperbolicCosine=d.acosh=function(){var e,r,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(e=n.precision,r=n.rounding,n.precision=e+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,x=!1,t=t.times(t).minus(1).sqrt().plus(t),x=!0,n.precision=e,n.rounding=r,t.ln()):new n(t)};d.inverseHyperbolicSine=d.asinh=function(){var e,r,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(e=n.precision,r=n.rounding,n.precision=e+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,x=!1,t=t.times(t).plus(1).sqrt().plus(t),x=!0,n.precision=e,n.rounding=r,t.ln())};d.inverseHyperbolicTangent=d.atanh=function(){var e,r,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=o.precision,r=o.rounding,n=i.sd(),Math.max(n,e)<2*-i.e-1?y(new o(i),e,r,!0):(o.precision=t=n-i.e,i=O(i.plus(1),new o(1).minus(i),t+e,1),o.precision=e+4,o.rounding=1,i=i.ln(),o.precision=e,o.rounding=r,i.times(.5))):new o(NaN)};d.inverseSine=d.asin=function(){var e,r,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(r=i.abs().cmp(1),t=o.precision,n=o.rounding,r!==-1?r===0?(e=ge(o,t+4,n).times(.5),e.s=i.s,e):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};d.inverseTangent=d.atan=function(){var e,r,t,n,i,o,s,a,l,u=this,c=u.constructor,p=c.precision,m=c.rounding;if(u.isFinite()){if(u.isZero())return new c(u);if(u.abs().eq(1)&&p+4<=xi)return s=ge(c,p+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new c(NaN);if(p+4<=xi)return s=ge(c,p+4,m).times(.5),s.s=u.s,s}for(c.precision=a=p+10,c.rounding=1,t=Math.min(28,a/b+2|0),e=t;e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(x=!1,r=Math.ceil(a/b),n=1,l=u.times(u),s=new c(u),i=u;e!==-1;)if(i=i.times(l),o=s.minus(i.div(n+=2)),i=i.times(l),s=o.plus(i.div(n+=2)),s.d[r]!==void 0)for(e=r;s.d[e]===o.d[e]&&e--;);return t&&(s=s.times(2<this.d.length-2};d.isNaN=function(){return!this.s};d.isNegative=d.isNeg=function(){return this.s<0};d.isPositive=d.isPos=function(){return this.s>0};d.isZero=function(){return!!this.d&&this.d[0]===0};d.lessThan=d.lt=function(e){return this.cmp(e)<0};d.lessThanOrEqualTo=d.lte=function(e){return this.cmp(e)<1};d.logarithm=d.log=function(e){var r,t,n,i,o,s,a,l,u=this,c=u.constructor,p=c.precision,m=c.rounding,f=5;if(e==null)e=new c(10),r=!0;else{if(e=new c(e),t=e.d,e.s<0||!t||!t[0]||e.eq(1))return new c(NaN);r=e.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new c(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(r)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(x=!1,a=p+f,s=Qe(u,a),n=r?Xt(c,a+10):Qe(e,a),l=O(s,n,a,1),it(l.d,i=p,m))do if(a+=10,s=Qe(u,a),n=r?Xt(c,a+10):Qe(e,a),l=O(s,n,a,1),!o){+z(l.d).slice(i+1,i+15)+1==1e14&&(l=y(l,p+1,0));break}while(it(l.d,i+=10,m));return x=!0,y(l,p,m)};d.minus=d.sub=function(e){var r,t,n,i,o,s,a,l,u,c,p,m,f=this,g=f.constructor;if(e=new g(e),!f.d||!e.d)return!f.s||!e.s?e=new g(NaN):f.d?e.s=-e.s:e=new g(e.d||f.s!==e.s?f:NaN),e;if(f.s!=e.s)return e.s=-e.s,f.plus(e);if(u=f.d,m=e.d,a=g.precision,l=g.rounding,!u[0]||!m[0]){if(m[0])e.s=-e.s;else if(u[0])e=new g(f);else return new g(l===3?-0:0);return x?y(e,a,l):e}if(t=re(e.e/b),c=re(f.e/b),u=u.slice(),o=c-t,o){for(p=o<0,p?(r=u,o=-o,s=m.length):(r=m,t=c,s=u.length),n=Math.max(Math.ceil(a/b),s)+2,o>n&&(o=n,r.length=1),r.reverse(),n=o;n--;)r.push(0);r.reverse()}else{for(n=u.length,s=m.length,p=n0;--n)u[s++]=0;for(n=m.length;n>o;){if(u[--n]s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=u.length,i=c.length,s-i<0&&(i=s,t=c,c=u,u=t),r=0;i;)r=(u[--i]=u[i]+c[i]+r)/he|0,u[i]%=he;for(r&&(u.unshift(r),++n),s=u.length;u[--s]==0;)u.pop();return e.d=u,e.e=rn(u,n),x?y(e,a,l):e};d.precision=d.sd=function(e){var r,t=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(Ge+e);return t.d?(r=ws(t.d),e&&t.e+1>r&&(r=t.e+1)):r=NaN,r};d.round=function(){var e=this,r=e.constructor;return y(new r(e),e.e+1,r.rounding)};d.sine=d.sin=function(){var e,r,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(e=n.precision,r=n.rounding,n.precision=e+Math.max(t.e,t.sd())+b,n.rounding=1,t=cc(n,Ts(n,t)),n.precision=e,n.rounding=r,y(Oe>2?t.neg():t,e,r,!0)):new n(NaN)};d.squareRoot=d.sqrt=function(){var e,r,t,n,i,o,s=this,a=s.d,l=s.e,u=s.s,c=s.constructor;if(u!==1||!a||!a[0])return new c(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(x=!1,u=Math.sqrt(+s),u==0||u==1/0?(r=z(a),(r.length+l)%2==0&&(r+="0"),u=Math.sqrt(r),l=re((l+1)/2)-(l<0||l%2),u==1/0?r="5e"+l:(r=u.toExponential(),r=r.slice(0,r.indexOf("e")+1)+l),n=new c(r)):n=new c(u.toString()),t=(l=c.precision)+3;;)if(o=n,n=o.plus(O(s,o,t+2,1)).times(.5),z(o.d).slice(0,t)===(r=z(n.d)).slice(0,t))if(r=r.slice(t-3,t+1),r=="9999"||!i&&r=="4999"){if(!i&&(y(o,l+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(y(n,l+1,1),e=!n.times(n).eq(s));break}return x=!0,y(n,l,c.rounding,e)};d.tangent=d.tan=function(){var e,r,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(e=n.precision,r=n.rounding,n.precision=e+10,n.rounding=1,t=t.sin(),t.s=1,t=O(t,new n(1).minus(t.times(t)).sqrt(),e+10,0),n.precision=e,n.rounding=r,y(Oe==2||Oe==4?t.neg():t,e,r,!0)):new n(NaN)};d.times=d.mul=function(e){var r,t,n,i,o,s,a,l,u,c=this,p=c.constructor,m=c.d,f=(e=new p(e)).d;if(e.s*=c.s,!m||!m[0]||!f||!f[0])return new p(!e.s||m&&!m[0]&&!f||f&&!f[0]&&!m?NaN:!m||!f?e.s/0:e.s*0);for(t=re(c.e/b)+re(e.e/b),l=m.length,u=f.length,l=0;){for(r=0,i=l+n;i>n;)a=o[i]+f[n]*m[i-n-1]+r,o[i--]=a%he|0,r=a/he|0;o[i]=(o[i]+r)%he|0}for(;!o[--s];)o.pop();return r?++t:o.shift(),e.d=o,e.e=rn(o,t),x?y(e,p.precision,p.rounding):e};d.toBinary=function(e,r){return Ti(this,2,e,r)};d.toDecimalPlaces=d.toDP=function(e,r){var t=this,n=t.constructor;return t=new n(t),e===void 0?t:(se(e,0,Je),r===void 0?r=n.rounding:se(r,0,8),y(t,e+t.e+1,r))};d.toExponential=function(e,r){var t,n=this,i=n.constructor;return e===void 0?t=ve(n,!0):(se(e,0,Je),r===void 0?r=i.rounding:se(r,0,8),n=y(new i(n),e+1,r),t=ve(n,!0,e+1)),n.isNeg()&&!n.isZero()?"-"+t:t};d.toFixed=function(e,r){var t,n,i=this,o=i.constructor;return e===void 0?t=ve(i):(se(e,0,Je),r===void 0?r=o.rounding:se(r,0,8),n=y(new o(i),e+i.e+1,r),t=ve(n,!1,e+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};d.toFraction=function(e){var r,t,n,i,o,s,a,l,u,c,p,m,f=this,g=f.d,h=f.constructor;if(!g)return new h(f);if(u=t=new h(1),n=l=new h(0),r=new h(n),o=r.e=ws(g)-f.e-1,s=o%b,r.d[0]=Q(10,s<0?b+s:s),e==null)e=o>0?r:u;else{if(a=new h(e),!a.isInt()||a.lt(u))throw Error(Ge+a);e=a.gt(r)?o>0?r:u:a}for(x=!1,a=new h(z(g)),c=h.precision,h.precision=o=g.length*b*2;p=O(a,r,0,1,1),i=t.plus(p.times(n)),i.cmp(e)!=1;)t=n,n=i,i=u,u=l.plus(p.times(i)),l=i,i=r,r=a.minus(p.times(i)),a=i;return i=O(e.minus(t),n,0,1,1),l=l.plus(i.times(u)),t=t.plus(i.times(n)),l.s=u.s=f.s,m=O(u,n,o,1).minus(f).abs().cmp(O(l,t,o,1).minus(f).abs())<1?[u,n]:[l,t],h.precision=c,x=!0,m};d.toHexadecimal=d.toHex=function(e,r){return Ti(this,16,e,r)};d.toNearest=function(e,r){var t=this,n=t.constructor;if(t=new n(t),e==null){if(!t.d)return t;e=new n(1),r=n.rounding}else{if(e=new n(e),r===void 0?r=n.rounding:se(r,0,8),!t.d)return e.s?t:e;if(!e.d)return e.s&&(e.s=t.s),e}return e.d[0]?(x=!1,t=O(t,e,0,r,1).times(e),x=!0,y(t)):(e.s=t.s,t=e),t};d.toNumber=function(){return+this};d.toOctal=function(e,r){return Ti(this,8,e,r)};d.toPower=d.pow=function(e){var r,t,n,i,o,s,a=this,l=a.constructor,u=+(e=new l(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new l(Q(+a,u));if(a=new l(a),a.eq(1))return a;if(n=l.precision,o=l.rounding,e.eq(1))return y(a,n,o);if(r=re(e.e/b),r>=e.d.length-1&&(t=u<0?-u:u)<=sc)return i=xs(l,a,t,n),e.s<0?new l(1).div(i):y(i,n,o);if(s=a.s,s<0){if(rl.maxE+1||r0?s/0:0):(x=!1,l.rounding=a.s=1,t=Math.min(12,(r+"").length),i=Pi(e.times(Qe(a,n+t)),n),i.d&&(i=y(i,n+5,1),it(i.d,n,o)&&(r=n+10,i=y(Pi(e.times(Qe(a,r+t)),r),r+5,1),+z(i.d).slice(n+1,n+15)+1==1e14&&(i=y(i,n+1,0)))),i.s=s,x=!0,l.rounding=o,y(i,n,o))};d.toPrecision=function(e,r){var t,n=this,i=n.constructor;return e===void 0?t=ve(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(se(e,1,Je),r===void 0?r=i.rounding:se(r,0,8),n=y(new i(n),e,r),t=ve(n,e<=n.e||n.e<=i.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+t:t};d.toSignificantDigits=d.toSD=function(e,r){var t=this,n=t.constructor;return e===void 0?(e=n.precision,r=n.rounding):(se(e,1,Je),r===void 0?r=n.rounding:se(r,0,8)),y(new n(t),e,r)};d.toString=function(){var e=this,r=e.constructor,t=ve(e,e.e<=r.toExpNeg||e.e>=r.toExpPos);return e.isNeg()&&!e.isZero()?"-"+t:t};d.truncated=d.trunc=function(){return y(new this.constructor(this),this.e+1,1)};d.valueOf=d.toJSON=function(){var e=this,r=e.constructor,t=ve(e,e.e<=r.toExpNeg||e.e>=r.toExpPos);return e.isNeg()?"-"+t:t};function z(e){var r,t,n,i=e.length-1,o="",s=e[0];if(i>0){for(o+=s,r=1;rt)throw Error(Ge+e)}function it(e,r,t,n){var i,o,s,a;for(o=e[0];o>=10;o/=10)--r;return--r<0?(r+=b,i=0):(i=Math.ceil((r+1)/b),r%=b),o=Q(10,b-r),a=e[i]%o|0,n==null?r<3?(r==0?a=a/100|0:r==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(e[i+1]/o/100|0)==Q(10,r-2)-1||(a==o/2||a==0)&&(e[i+1]/o/100|0)==0:r<4?(r==0?a=a/1e3|0:r==1?a=a/100|0:r==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(e[i+1]/o/1e3|0)==Q(10,r-3)-1,s}function zt(e,r,t){for(var n,i=[0],o,s=0,a=e.length;st-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function lc(e,r){var t,n,i;if(r.isZero())return r;n=r.d.length,n<32?(t=Math.ceil(n/3),i=(1/tn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),e.precision+=t,r=Pr(e,1,r.times(i),new e(1));for(var o=t;o--;){var s=r.times(r);r=s.times(s).minus(s).times(8).plus(1)}return e.precision-=t,r}var O=function(){function e(n,i,o){var s,a=0,l=n.length;for(n=n.slice();l--;)s=n[l]*i+a,n[l]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function r(n,i,o,s){var a,l;if(o!=s)l=o>s?1:-1;else for(a=l=0;ai[a]?1:-1;break}return l}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]1;)n.shift()}return function(n,i,o,s,a,l){var u,c,p,m,f,g,h,A,T,C,E,I,me,le,Nr,U,ne,Ae,Y,pr,Rt=n.constructor,kn=n.s==i.s?1:-1,Z=n.d,L=i.d;if(!Z||!Z[0]||!L||!L[0])return new Rt(!n.s||!i.s||(Z?L&&Z[0]==L[0]:!L)?NaN:Z&&Z[0]==0||!L?kn*0:kn/0);for(l?(f=1,c=n.e-i.e):(l=he,f=b,c=re(n.e/f)-re(i.e/f)),Y=L.length,ne=Z.length,T=new Rt(kn),C=T.d=[],p=0;L[p]==(Z[p]||0);p++);if(L[p]>(Z[p]||0)&&c--,o==null?(le=o=Rt.precision,s=Rt.rounding):a?le=o+(n.e-i.e)+1:le=o,le<0)C.push(1),g=!0;else{if(le=le/f+2|0,p=0,Y==1){for(m=0,L=L[0],le++;(p1&&(L=e(L,m,l),Z=e(Z,m,l),Y=L.length,ne=Z.length),U=Y,E=Z.slice(0,Y),I=E.length;I=l/2&&++Ae;do m=0,u=r(L,E,Y,I),u<0?(me=E[0],Y!=I&&(me=me*l+(E[1]||0)),m=me/Ae|0,m>1?(m>=l&&(m=l-1),h=e(L,m,l),A=h.length,I=E.length,u=r(h,E,A,I),u==1&&(m--,t(h,Y=10;m/=10)p++;T.e=p+c*f-1,y(T,a?o+T.e+1:o,s,g)}return T}}();function y(e,r,t,n){var i,o,s,a,l,u,c,p,m,f=e.constructor;e:if(r!=null){if(p=e.d,!p)return e;for(i=1,a=p[0];a>=10;a/=10)i++;if(o=r-i,o<0)o+=b,s=r,c=p[m=0],l=c/Q(10,i-s-1)%10|0;else if(m=Math.ceil((o+1)/b),a=p.length,m>=a)if(n){for(;a++<=m;)p.push(0);c=l=0,i=1,o%=b,s=o-b+1}else break e;else{for(c=a=p[m],i=1;a>=10;a/=10)i++;o%=b,s=o-b+i,l=s<0?0:c/Q(10,i-s-1)%10|0}if(n=n||r<0||p[m+1]!==void 0||(s<0?c:c%Q(10,i-s-1)),u=t<4?(l||n)&&(t==0||t==(e.s<0?3:2)):l>5||l==5&&(t==4||n||t==6&&(o>0?s>0?c/Q(10,i-s):0:p[m-1])%10&1||t==(e.s<0?8:7)),r<1||!p[0])return p.length=0,u?(r-=e.e+1,p[0]=Q(10,(b-r%b)%b),e.e=-r||0):p[0]=e.e=0,e;if(o==0?(p.length=m,a=1,m--):(p.length=m+1,a=Q(10,b-o),p[m]=s>0?(c/Q(10,i-s)%Q(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=p[0];s>=10;s/=10)o++;for(s=p[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(e.e++,p[0]==he&&(p[0]=1));break}else{if(p[m]+=a,p[m]!=he)break;p[m--]=0,a=1}for(o=p.length;p[--o]===0;)p.pop()}return x&&(e.e>f.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+Ue(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):i<0?(o="0."+Ue(-i-1)+o,t&&(n=t-s)>0&&(o+=Ue(n))):i>=s?(o+=Ue(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Ue(n))):((n=i+1)0&&(i+1===s&&(o+="."),o+=Ue(n))),o}function rn(e,r){var t=e[0];for(r*=b;t>=10;t/=10)r++;return r}function Xt(e,r,t){if(r>ac)throw x=!0,t&&(e.precision=t),Error(hs);return y(new e(Yt),r,1,!0)}function ge(e,r,t){if(r>xi)throw Error(hs);return y(new e(Zt),r,t,!0)}function ws(e){var r=e.length-1,t=r*b+1;if(r=e[r],r){for(;r%10==0;r/=10)t--;for(r=e[0];r>=10;r/=10)t++}return t}function Ue(e){for(var r="";e--;)r+="0";return r}function xs(e,r,t,n){var i,o=new e(1),s=Math.ceil(n/b+4);for(x=!1;;){if(t%2&&(o=o.times(r),ds(o.d,s)&&(i=!0)),t=re(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}r=r.times(r),ds(r.d,s)}return x=!0,o}function ms(e){return e.d[e.d.length-1]&1}function Ps(e,r,t){for(var n,i=new e(r[0]),o=0;++o17)return new m(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(r==null?(x=!1,l=g):l=r,a=new m(.03125);e.e>-2;)e=e.times(a),p+=5;for(n=Math.log(Q(2,p))/Math.LN10*2+5|0,l+=n,t=o=s=new m(1),m.precision=l;;){if(o=y(o.times(e),l,1),t=t.times(++c),a=s.plus(O(o,t,l,1)),z(a.d).slice(0,l)===z(s.d).slice(0,l)){for(i=p;i--;)s=y(s.times(s),l,1);if(r==null)if(u<3&&it(s.d,l-n,f,u))m.precision=l+=10,t=o=a=new m(1),c=0,u++;else return y(s,m.precision=g,f,x=!0);else return m.precision=g,s}s=a}}function Qe(e,r){var t,n,i,o,s,a,l,u,c,p,m,f=1,g=10,h=e,A=h.d,T=h.constructor,C=T.rounding,E=T.precision;if(h.s<0||!A||!A[0]||!h.e&&A[0]==1&&A.length==1)return new T(A&&!A[0]?-1/0:h.s!=1?NaN:A?0:h);if(r==null?(x=!1,c=E):c=r,T.precision=c+=g,t=z(A),n=t.charAt(0),Math.abs(o=h.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)h=h.times(e),t=z(h.d),n=t.charAt(0),f++;o=h.e,n>1?(h=new T("0."+t),o++):h=new T(n+"."+t.slice(1))}else return u=Xt(T,c+2,E).times(o+""),h=Qe(new T(n+"."+t.slice(1)),c-g).plus(u),T.precision=E,r==null?y(h,E,C,x=!0):h;for(p=h,l=s=h=O(h.minus(1),h.plus(1),c,1),m=y(h.times(h),c,1),i=3;;){if(s=y(s.times(m),c,1),u=l.plus(O(s,new T(i),c,1)),z(u.d).slice(0,c)===z(l.d).slice(0,c))if(l=l.times(2),o!==0&&(l=l.plus(Xt(T,c+2,E).times(o+""))),l=O(l,new T(f),c,1),r==null)if(it(l.d,c-g,C,a))T.precision=c+=g,u=s=h=O(p.minus(1),p.plus(1),c,1),m=y(h.times(h),c,1),i=a=1;else return y(l,T.precision=E,C,x=!0);else return T.precision=E,l;l=u,i+=2}}function vs(e){return String(e.s*e.s/0)}function vi(e,r){var t,n,i;for((t=r.indexOf("."))>-1&&(r=r.replace(".","")),(n=r.search(/e/i))>0?(t<0&&(t=n),t+=+r.slice(n+1),r=r.substring(0,n)):t<0&&(t=r.length),n=0;r.charCodeAt(n)===48;n++);for(i=r.length;r.charCodeAt(i-1)===48;--i);if(r=r.slice(n,i),r){if(i-=n,e.e=t=t-n-1,e.d=[],n=(t+1)%b,t<0&&(n+=b),ne.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(r=r.replace(/(\d)_(?=\d)/g,"$1"),bs.test(r))return vi(e,r)}else if(r==="Infinity"||r==="NaN")return+r||(e.s=NaN),e.e=NaN,e.d=null,e;if(ic.test(r))t=16,r=r.toLowerCase();else if(nc.test(r))t=2;else if(oc.test(r))t=8;else throw Error(Ge+r);for(o=r.search(/p/i),o>0?(l=+r.slice(o+1),r=r.substring(2,o)):r=r.slice(2),o=r.indexOf("."),s=o>=0,n=e.constructor,s&&(r=r.replace(".",""),a=r.length,o=a-o,i=xs(n,new n(t),o,o*2)),u=zt(r,t,he),c=u.length-1,o=c;u[o]===0;--o)u.pop();return o<0?new n(e.s*0):(e.e=rn(u,c),e.d=u,x=!1,s&&(e=O(e,i,a*4)),l&&(e=e.times(Math.abs(l)<54?Q(2,l):or.pow(2,l))),x=!0,e)}function cc(e,r){var t,n=r.d.length;if(n<3)return r.isZero()?r:Pr(e,2,r,r);t=1.4*Math.sqrt(n),t=t>16?16:t|0,r=r.times(1/tn(5,t)),r=Pr(e,2,r,r);for(var i,o=new e(5),s=new e(16),a=new e(20);t--;)i=r.times(r),r=r.times(o.plus(i.times(s.times(i).minus(a))));return r}function Pr(e,r,t,n,i){var o,s,a,l,u=1,c=e.precision,p=Math.ceil(c/b);for(x=!1,l=t.times(t),a=new e(n);;){if(s=O(a.times(l),new e(r++*r++),c,1),a=i?n.plus(s):n.minus(s),n=O(s.times(l),new e(r++*r++),c,1),s=a.plus(n),s.d[p]!==void 0){for(o=p;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return x=!0,s.d.length=p+1,s}function tn(e,r){for(var t=e;--r;)t*=e;return t}function Ts(e,r){var t,n=r.s<0,i=ge(e,e.precision,1),o=i.times(.5);if(r=r.abs(),r.lte(o))return Oe=n?4:1,r;if(t=r.divToInt(i),t.isZero())Oe=n?3:2;else{if(r=r.minus(t.times(i)),r.lte(o))return Oe=ms(t)?n?2:3:n?4:1,r;Oe=ms(t)?n?1:4:n?3:2}return r.minus(i).abs()}function Ti(e,r,t,n){var i,o,s,a,l,u,c,p,m,f=e.constructor,g=t!==void 0;if(g?(se(t,1,Je),n===void 0?n=f.rounding:se(n,0,8)):(t=f.precision,n=f.rounding),!e.isFinite())c=vs(e);else{for(c=ve(e),s=c.indexOf("."),g?(i=2,r==16?t=t*4-3:r==8&&(t=t*3-2)):i=r,s>=0&&(c=c.replace(".",""),m=new f(1),m.e=c.length-s,m.d=zt(ve(m),10,i),m.e=m.d.length),p=zt(c,10,i),o=l=p.length;p[--l]==0;)p.pop();if(!p[0])c=g?"0p+0":"0";else{if(s<0?o--:(e=new f(e),e.d=p,e.e=o,e=O(e,m,t,n,0,i),p=e.d,o=e.e,u=gs),s=p[t],a=i/2,u=u||p[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(e.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&p[t-1]&1||n===(e.s<0?8:7)),p.length=t,u)for(;++p[--t]>i-1;)p[t]=0,t||(++o,p.unshift(1));for(l=p.length;!p[l-1];--l);for(s=0,c="";s1)if(r==16||r==8){for(s=r==16?4:3,--l;l%s;l++)c+="0";for(p=zt(c,i,r),l=p.length;!p[l-1];--l);for(s=1,c="1.";sl)for(o-=l;o--;)c+="0";else or)return e.length=r,!0}function pc(e){return new this(e).abs()}function mc(e){return new this(e).acos()}function dc(e){return new this(e).acosh()}function fc(e,r){return new this(e).plus(r)}function gc(e){return new this(e).asin()}function hc(e){return new this(e).asinh()}function yc(e){return new this(e).atan()}function Ec(e){return new this(e).atanh()}function bc(e,r){e=new this(e),r=new this(r);var t,n=this.precision,i=this.rounding,o=n+4;return!e.s||!r.s?t=new this(NaN):!e.d&&!r.d?(t=ge(this,o,1).times(r.s>0?.25:.75),t.s=e.s):!r.d||e.isZero()?(t=r.s<0?ge(this,n,i):new this(0),t.s=e.s):!e.d||r.isZero()?(t=ge(this,o,1).times(.5),t.s=e.s):r.s<0?(this.precision=o,this.rounding=1,t=this.atan(O(e,r,o,1)),r=ge(this,o,1),this.precision=n,this.rounding=i,t=e.s<0?t.minus(r):t.plus(r)):t=this.atan(O(e,r,o,1)),t}function wc(e){return new this(e).cbrt()}function xc(e){return y(e=new this(e),e.e+1,2)}function Pc(e,r,t){return new this(e).clamp(r,t)}function vc(e){if(!e||typeof e!="object")throw Error(en+"Object expected");var r,t,n,i=e.defaults===!0,o=["precision",1,Je,"rounding",0,8,"toExpNeg",-xr,0,"toExpPos",0,xr,"maxE",0,xr,"minE",-xr,0,"modulo",0,9];for(r=0;r=o[r+1]&&n<=o[r+2])this[t]=n;else throw Error(Ge+t+": "+n);if(t="crypto",i&&(this[t]=wi[t]),(n=e[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ys);else this[t]=!1;else throw Error(Ge+t+": "+n);return this}function Tc(e){return new this(e).cos()}function Cc(e){return new this(e).cosh()}function Cs(e){var r,t,n;function i(o){var s,a,l,u=this;if(!(u instanceof i))return new i(o);if(u.constructor=i,fs(o)){u.s=o.s,x?!o.d||o.e>i.maxE?(u.e=NaN,u.d=null):o.e=10;a/=10)s++;x?s>i.maxE?(u.e=NaN,u.d=null):s=429e7?r[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(r=crypto.randomBytes(n*=4);o=214e7?crypto.randomBytes(4).copy(r,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(ys);else for(;o=10;i/=10)n++;n`}};function Tr(e){return e instanceof ot}var nn=class{constructor(r){this.value=r}write(r){r.write(this.value)}markAsError(){this.value.markAsError()}};var on=e=>e,sn={bold:on,red:on,green:on,dim:on,enabled:!1},Ss={bold:W,red:ce,green:$e,dim:Ie,enabled:!0},Cr={write(e){e.writeLine(",")}};var Ce=class{constructor(r){this.contents=r;this.isUnderlined=!1;this.color=r=>r}underline(){return this.isUnderlined=!0,this}setColor(r){return this.color=r,this}write(r){let t=r.getCurrentLineLength();r.write(this.color(this.contents)),this.isUnderlined&&r.afterNextNewline(()=>{r.write(" ".repeat(t)).writeLine(this.color("~".repeat(this.contents.length)))})}};var He=class{constructor(){this.hasError=!1}markAsError(){return this.hasError=!0,this}};var Sr=class extends He{constructor(){super(...arguments);this.items=[]}addItem(t){return this.items.push(new nn(t)),this}getField(t){return this.items[t]}getPrintWidth(){return this.items.length===0?2:Math.max(...this.items.map(n=>n.value.getPrintWidth()))+2}write(t){if(this.items.length===0){this.writeEmpty(t);return}this.writeWithItems(t)}writeEmpty(t){let n=new Ce("[]");this.hasError&&n.setColor(t.context.colors.red).underline(),t.write(n)}writeWithItems(t){let{colors:n}=t.context;t.writeLine("[").withIndent(()=>t.writeJoined(Cr,this.items).newLine()).write("]"),this.hasError&&t.afterNextNewline(()=>{t.writeLine(n.red("~".repeat(this.getPrintWidth())))})}};var Rs=": ",an=class{constructor(r,t){this.name=r;this.value=t;this.hasError=!1}markAsError(){this.hasError=!0}getPrintWidth(){return this.name.length+this.value.getPrintWidth()+Rs.length}write(r){let t=new Ce(this.name);this.hasError&&t.underline().setColor(r.context.colors.red),r.write(t).write(Rs).write(this.value)}};var J=class e extends He{constructor(){super(...arguments);this.fields={};this.suggestions=[]}addField(t){this.fields[t.name]=t}addSuggestion(t){this.suggestions.push(t)}getField(t){return this.fields[t]}getDeepField(t){let[n,...i]=t,o=this.getField(n);if(!o)return;let s=o;for(let a of i){let l;if(s.value instanceof e?l=s.value.getField(a):s.value instanceof Sr&&(l=s.value.getField(Number(a))),!l)return;s=l}return s}getDeepFieldValue(t){return t.length===0?this:this.getDeepField(t)?.value}hasField(t){return!!this.getField(t)}removeAllFields(){this.fields={}}removeField(t){delete this.fields[t]}getFields(){return this.fields}isEmpty(){return Object.keys(this.fields).length===0}getFieldValue(t){return this.getField(t)?.value}getDeepSubSelectionValue(t){let n=this;for(let i of t){if(!(n instanceof e))return;let o=n.getSubSelectionValue(i);if(!o)return;n=o}return n}getDeepSelectionParent(t){let n=this.getSelectionParent();if(!n)return;let i=n;for(let o of t){let s=i.value.getFieldValue(o);if(!s||!(s instanceof e))return;let a=s.getSelectionParent();if(!a)return;i=a}return i}getSelectionParent(){let t=this.getField("select");if(t?.value instanceof e)return{kind:"select",value:t.value};let n=this.getField("include");if(n?.value instanceof e)return{kind:"include",value:n.value}}getSubSelectionValue(t){return this.getSelectionParent()?.value.fields[t].value}getPrintWidth(){let t=Object.values(this.fields);return t.length==0?2:Math.max(...t.map(i=>i.getPrintWidth()))+2}write(t){let n=Object.values(this.fields);if(n.length===0&&this.suggestions.length===0){this.writeEmpty(t);return}this.writeWithContents(t,n)}writeEmpty(t){let n=new Ce("{}");this.hasError&&n.setColor(t.context.colors.red).underline(),t.write(n)}writeWithContents(t,n){t.writeLine("{").withIndent(()=>{t.writeJoined(Cr,[...n,...this.suggestions]).newLine()}),t.write("}"),this.hasError&&t.afterNextNewline(()=>{t.writeLine(t.context.colors.red("~".repeat(this.getPrintWidth())))})}};var H=class extends He{constructor(t){super();this.text=t}getPrintWidth(){return this.text.length}write(t){let n=new Ce(this.text);this.hasError&&n.underline().setColor(t.context.colors.red),t.write(n)}};var Ci=class{constructor(r){this.errorMessages=[];this.arguments=r}write(r){r.write(this.arguments)}addErrorMessage(r){this.errorMessages.push(r)}renderAllMessages(r){return this.errorMessages.map(t=>t(r)).join(` +`)}};function ln(e){return new Ci(As(e))}function As(e){let r=new J;for(let[t,n]of Object.entries(e)){let i=new an(t,Is(n));r.addField(i)}return r}function Is(e){if(typeof e=="string")return new H(JSON.stringify(e));if(typeof e=="number"||typeof e=="boolean")return new H(String(e));if(typeof e=="bigint")return new H(`${e}n`);if(e===null)return new H("null");if(e===void 0)return new H("undefined");if(vr(e))return new H(`new Prisma.Decimal("${e.toFixed()}")`);if(e instanceof Uint8Array)return Buffer.isBuffer(e)?new H(`Buffer.alloc(${e.byteLength})`):new H(`new Uint8Array(${e.byteLength})`);if(e instanceof Date){let r=Kt(e)?e.toISOString():"Invalid Date";return new H(`new Date("${r}")`)}return e instanceof Ne?new H(`Prisma.${e._getName()}`):Tr(e)?new H(`prisma.${ps(e.modelName)}.$fields.${e.name}`):Array.isArray(e)?Yc(e):typeof e=="object"?As(e):new H(Object.prototype.toString.call(e))}function Yc(e){let r=new Sr;for(let t of e)r.addItem(Is(t));return r}function _s(e){if(e===void 0)return"";let r=ln(e);return new br(0,{colors:sn}).write(r).toString()}var Zc="P2037";function sr({error:e,user_facing_error:r},t,n){return r.error_code?new V(Xc(r,n),{code:r.error_code,clientVersion:t,meta:r.meta,batchRequestIdx:r.batch_request_idx}):new j(e,{clientVersion:t,batchRequestIdx:r.batch_request_idx})}function Xc(e,r){let t=e.message;return(r==="postgresql"||r==="postgres"||r==="mysql")&&e.error_code===Zc&&(t+=` +Prisma Accelerate has built-in connection pooling to prevent such errors: https://pris.ly/client/error-accelerate`),t}var st="";function ks(e){var r=e.split(` +`);return r.reduce(function(t,n){var i=tp(n)||ip(n)||ap(n)||pp(n)||up(n);return i&&t.push(i),t},[])}var ep=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,rp=/\((\S*)(?::(\d+))(?::(\d+))\)/;function tp(e){var r=ep.exec(e);if(!r)return null;var t=r[2]&&r[2].indexOf("native")===0,n=r[2]&&r[2].indexOf("eval")===0,i=rp.exec(r[2]);return n&&i!=null&&(r[2]=i[1],r[3]=i[2],r[4]=i[3]),{file:t?null:r[2],methodName:r[1]||st,arguments:t?[r[2]]:[],lineNumber:r[3]?+r[3]:null,column:r[4]?+r[4]:null}}var np=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;function ip(e){var r=np.exec(e);return r?{file:r[2],methodName:r[1]||st,arguments:[],lineNumber:+r[3],column:r[4]?+r[4]:null}:null}var op=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,sp=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;function ap(e){var r=op.exec(e);if(!r)return null;var t=r[3]&&r[3].indexOf(" > eval")>-1,n=sp.exec(r[3]);return t&&n!=null&&(r[3]=n[1],r[4]=n[2],r[5]=null),{file:r[3],methodName:r[1]||st,arguments:r[2]?r[2].split(","):[],lineNumber:r[4]?+r[4]:null,column:r[5]?+r[5]:null}}var lp=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i;function up(e){var r=lp.exec(e);return r?{file:r[3],methodName:r[1]||st,arguments:[],lineNumber:+r[4],column:r[5]?+r[5]:null}:null}var cp=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;function pp(e){var r=cp.exec(e);return r?{file:r[2],methodName:r[1]||st,arguments:[],lineNumber:+r[3],column:r[4]?+r[4]:null}:null}var Si=class{getLocation(){return null}},Ri=class{constructor(){this._error=new Error}getLocation(){let r=this._error.stack;if(!r)return null;let n=ks(r).find(i=>{if(!i.file)return!1;let o=ni(i.file);return o!==""&&!o.includes("@prisma")&&!o.includes("/packages/client/src/runtime/")&&!o.endsWith("/runtime/binary.js")&&!o.endsWith("/runtime/library.js")&&!o.endsWith("/runtime/edge.js")&&!o.endsWith("/runtime/edge-esm.js")&&!o.startsWith("internal/")&&!i.methodName.includes("new ")&&!i.methodName.includes("getCallSite")&&!i.methodName.includes("Proxy.")&&i.methodName.split(".").length<4});return!n||!n.file?null:{fileName:n.file,lineNumber:n.lineNumber,columnNumber:n.column}}};function We(e){return e==="minimal"?typeof $EnabledCallSite=="function"&&e!=="minimal"?new $EnabledCallSite:new Si:new Ri}var Ds={_avg:!0,_count:!0,_sum:!0,_min:!0,_max:!0};function Rr(e={}){let r=dp(e);return Object.entries(r).reduce((n,[i,o])=>(Ds[i]!==void 0?n.select[i]={select:o}:n[i]=o,n),{select:{}})}function dp(e={}){return typeof e._count=="boolean"?{...e,_count:{_all:e._count}}:e}function un(e={}){return r=>(typeof e._count=="boolean"&&(r._count=r._count._all),r)}function Ls(e,r){let t=un(e);return r({action:"aggregate",unpacker:t,argsMapper:Rr})(e)}function fp(e={}){let{select:r,...t}=e;return typeof r=="object"?Rr({...t,_count:r}):Rr({...t,_count:{_all:!0}})}function gp(e={}){return typeof e.select=="object"?r=>un(e)(r)._count:r=>un(e)(r)._count._all}function Ns(e,r){return r({action:"count",unpacker:gp(e),argsMapper:fp})(e)}function hp(e={}){let r=Rr(e);if(Array.isArray(r.by))for(let t of r.by)typeof t=="string"&&(r.select[t]=!0);else typeof r.by=="string"&&(r.select[r.by]=!0);return r}function yp(e={}){return r=>(typeof e?._count=="boolean"&&r.forEach(t=>{t._count=t._count._all}),r)}function Os(e,r){return r({action:"groupBy",unpacker:yp(e),argsMapper:hp})(e)}function Fs(e,r,t){if(r==="aggregate")return n=>Ls(n,t);if(r==="count")return n=>Ns(n,t);if(r==="groupBy")return n=>Os(n,t)}function Ms(e,r){let t=r.fields.filter(i=>!i.relationName),n=ci(t,i=>i.name);return new Proxy({},{get(i,o){if(o in i||typeof o=="symbol")return i[o];let s=n[o];if(s)return new ot(e,o,s.type,s.isList,s.kind==="enum")},...Wt(Object.keys(n))})}var $s=e=>Array.isArray(e)?e:e.split("."),Ai=(e,r)=>$s(r).reduce((t,n)=>t&&t[n],e),qs=(e,r,t)=>$s(r).reduceRight((n,i,o,s)=>Object.assign({},Ai(e,s.slice(0,o)),{[i]:n}),t);function Ep(e,r){return e===void 0||r===void 0?[]:[...r,"select",e]}function bp(e,r,t){return r===void 0?e??{}:qs(r,t,e||!0)}function Ii(e,r,t,n,i,o){let a=e._runtimeDataModel.models[r].fields.reduce((l,u)=>({...l,[u.name]:u}),{});return l=>{let u=We(e._errorFormat),c=Ep(n,i),p=bp(l,o,c),m=t({dataPath:c,callsite:u})(p),f=wp(e,r);return new Proxy(m,{get(g,h){if(!f.includes(h))return g[h];let T=[a[h].type,t,h],C=[c,p];return Ii(e,...T,...C)},...Wt([...f,...Object.getOwnPropertyNames(m)])})}}function wp(e,r){return e._runtimeDataModel.models[r].fields.filter(t=>t.kind==="object").map(t=>t.name)}var Gs=_(ii());var Qs=_(require("fs"));var Bs={keyword:_e,entity:_e,value:e=>W(Ze(e)),punctuation:Ze,directive:_e,function:_e,variable:e=>W(Ze(e)),string:e=>W($e(e)),boolean:de,number:_e,comment:Fr};var xp=e=>e,cn={},Pp=0,P={manual:cn.Prism&&cn.Prism.manual,disableWorkerMessageHandler:cn.Prism&&cn.Prism.disableWorkerMessageHandler,util:{encode:function(e){if(e instanceof ye){let r=e;return new ye(r.type,P.util.encode(r.content),r.alias)}else return Array.isArray(e)?e.map(P.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(Ae instanceof ye)continue;if(me&&U!=r.length-1){C.lastIndex=ne;var p=C.exec(e);if(!p)break;var c=p.index+(I?p[1].length:0),m=p.index+p[0].length,a=U,l=ne;for(let L=r.length;a=l&&(++U,ne=l);if(r[U]instanceof ye)continue;u=a-U,Ae=e.slice(ne,l),p.index-=ne}else{C.lastIndex=0;var p=C.exec(Ae),u=1}if(!p){if(o)break;continue}I&&(le=p[1]?p[1].length:0);var c=p.index+le,p=p[0].slice(le),m=c+p.length,f=Ae.slice(0,c),g=Ae.slice(m);let Y=[U,u];f&&(++U,ne+=f.length,Y.push(f));let pr=new ye(h,E?P.tokenize(p,E):p,Nr,p,me);if(Y.push(pr),g&&Y.push(g),Array.prototype.splice.apply(r,Y),u!=1&&P.matchGrammar(e,r,t,U,ne,!0,h),o)break}}}},tokenize:function(e,r){let t=[e],n=r.rest;if(n){for(let i in n)r[i]=n[i];delete r.rest}return P.matchGrammar(e,t,r,0,0,!1),t},hooks:{all:{},add:function(e,r){let t=P.hooks.all;t[e]=t[e]||[],t[e].push(r)},run:function(e,r){let t=P.hooks.all[e];if(!(!t||!t.length))for(var n=0,i;i=t[n++];)i(r)}},Token:ye};P.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/};P.languages.javascript=P.languages.extend("clike",{"class-name":[P.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.])\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/});P.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/;P.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:P.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:P.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:P.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:P.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});P.languages.markup&&P.languages.markup.tag.addInlined("script","javascript");P.languages.js=P.languages.javascript;P.languages.typescript=P.languages.extend("javascript",{keyword:/\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\b/,builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/});P.languages.ts=P.languages.typescript;function ye(e,r,t,n,i){this.type=e,this.content=r,this.alias=t,this.length=(n||"").length|0,this.greedy=!!i}ye.stringify=function(e,r){return typeof e=="string"?e:Array.isArray(e)?e.map(function(t){return ye.stringify(t,r)}).join(""):vp(e.type)(e.content)};function vp(e){return Bs[e]||xp}function Vs(e){return Tp(e,P.languages.javascript)}function Tp(e,r){return P.tokenize(e,r).map(n=>ye.stringify(n)).join("")}var js=_(Wo());function Us(e){return(0,js.default)(e)}var pn=class e{static read(r){let t;try{t=Qs.default.readFileSync(r,"utf-8")}catch{return null}return e.fromContent(t)}static fromContent(r){let t=r.split(/\r?\n/);return new e(1,t)}constructor(r,t){this.firstLineNumber=r,this.lines=t}get lastLineNumber(){return this.firstLineNumber+this.lines.length-1}mapLineAt(r,t){if(rthis.lines.length+this.firstLineNumber)return this;let n=r-this.firstLineNumber,i=[...this.lines];return i[n]=t(i[n]),new e(this.firstLineNumber,i)}mapLines(r){return new e(this.firstLineNumber,this.lines.map((t,n)=>r(t,this.firstLineNumber+n)))}lineAt(r){return this.lines[r-this.firstLineNumber]}prependSymbolAt(r,t){return this.mapLines((n,i)=>i===r?`${t} ${n}`:` ${n}`)}slice(r,t){let n=this.lines.slice(r-1,t).join(` +`);return new e(r,Us(n).split(` +`))}highlight(){let r=Vs(this.toString());return new e(this.firstLineNumber,r.split(` +`))}toString(){return this.lines.join(` +`)}};var Cp={red:ce,gray:Fr,dim:Ie,bold:W,underline:ee,highlightSource:e=>e.highlight()},Sp={red:e=>e,gray:e=>e,dim:e=>e,bold:e=>e,underline:e=>e,highlightSource:e=>e};function Rp({message:e,originalMethod:r,isPanic:t,callArguments:n}){return{functionName:`prisma.${r}()`,message:e,isPanic:t??!1,callArguments:n}}function Ap({callsite:e,message:r,originalMethod:t,isPanic:n,callArguments:i},o){let s=Rp({message:r,originalMethod:t,isPanic:n,callArguments:i});if(!e||typeof window<"u"||process.env.NODE_ENV==="production")return s;let a=e.getLocation();if(!a||!a.lineNumber||!a.columnNumber)return s;let l=Math.max(1,a.lineNumber-3),u=pn.read(a.fileName)?.slice(l,a.lineNumber),c=u?.lineAt(a.lineNumber);if(u&&c){let p=_p(c),m=Ip(c);if(!m)return s;s.functionName=`${m.code})`,s.location=a,n||(u=u.mapLineAt(a.lineNumber,g=>g.slice(0,m.openingBraceIndex))),u=o.highlightSource(u);let f=String(u.lastLineNumber).length;if(s.contextLines=u.mapLines((g,h)=>o.gray(String(h).padStart(f))+" "+g).mapLines(g=>o.dim(g)).prependSymbolAt(a.lineNumber,o.bold(o.red("\u2192"))),i){let g=p+f+1;g+=2,s.callArguments=(0,Gs.default)(i,g).slice(g)}}return s}function Ip(e){let r=Object.keys(De.ModelAction).join("|"),n=new RegExp(String.raw`\.(${r})\(`).exec(e);if(n){let i=n.index+n[0].length,o=e.lastIndexOf(" ",n.index)+1;return{code:e.slice(o,i),openingBraceIndex:i}}return null}function _p(e){let r=0;for(let t=0;t{if("rejectOnNotFound"in n.args){let o=Ar({originalMethod:n.clientMethod,callsite:n.callsite,message:"'rejectOnNotFound' option is not supported"});throw new K(o,{clientVersion:r})}return await t(n).catch(o=>{throw o instanceof V&&o.code==="P2025"?new Le(`No ${e} found`,r):o})}}function Se(e){return e.replace(/^./,r=>r.toLowerCase())}var Np=["findUnique","findUniqueOrThrow","findFirst","findFirstOrThrow","create","update","upsert","delete"],Op=["aggregate","count","groupBy"];function _i(e,r){let t=e._extensions.getAllModelExtensions(r)??{},n=[Fp(e,r),$p(e,r),tt(t),te("name",()=>r),te("$name",()=>r),te("$parent",()=>e._appliedParent)];return Pe({},n)}function Fp(e,r){let t=Se(r),n=Object.keys(De.ModelAction).concat("count");return{getKeys(){return n},getPropertyValue(i){let o=i,s=l=>e._request(l);s=Js(o,r,e._clientVersion,s);let a=l=>u=>{let c=We(e._errorFormat);return e._createPrismaPromise(p=>{let m={args:u,dataPath:[],action:o,model:r,clientMethod:`${t}.${i}`,jsModelName:t,transaction:p,callsite:c};return s({...m,...l})})};return Np.includes(o)?Ii(e,r,a):Mp(i)?Fs(e,i,a):a({})}}}function Mp(e){return Op.includes(e)}function $p(e,r){return ir(te("fields",()=>{let t=e._runtimeDataModel.models[r];return Ms(r,t)}))}function Hs(e){return e.replace(/^./,r=>r.toUpperCase())}var ki=Symbol();function at(e){let r=[qp(e),te(ki,()=>e),te("$parent",()=>e._appliedParent)],t=e._extensions.getAllClientExtensions();return t&&r.push(tt(t)),Pe(e,r)}function qp(e){let r=Object.keys(e._runtimeDataModel.models),t=r.map(Se),n=[...new Set(r.concat(t))];return ir({getKeys(){return n},getPropertyValue(i){let o=Hs(i);if(e._runtimeDataModel.models[o]!==void 0)return _i(e,o);if(e._runtimeDataModel.models[i]!==void 0)return _i(e,i)},getPropertyDescriptor(i){if(!t.includes(i))return{enumerable:!1}}})}function Ws(e){return e[ki]?e[ki]:e}function Ks(e){if(typeof e=="function")return e(this);if(e.client?.__AccelerateEngine){let t=e.client.__AccelerateEngine;this._originalClient._engine=new t(this._originalClient._accelerateEngineConfig)}let r=Object.create(this._originalClient,{_extensions:{value:this._extensions.append(e)},_appliedParent:{value:this,configurable:!0},$use:{value:void 0},$on:{value:void 0}});return at(r)}function zs({result:e,modelName:r,select:t,extensions:n}){let i=n.getAllComputedFields(r);if(!i)return e;let o=[],s=[];for(let a of Object.values(i)){if(t){if(!t[a.name])continue;let l=a.needs.filter(u=>!t[u]);l.length>0&&s.push(nt(l))}Bp(e,a.needs)&&o.push(Vp(a,Pe(e,o)))}return o.length>0||s.length>0?Pe(e,[...o,...s]):e}function Bp(e,r){return r.every(t=>ui(e,t))}function Vp(e,r){return ir(te(e.name,()=>e.compute(r)))}function mn({visitor:e,result:r,args:t,runtimeDataModel:n,modelName:i}){if(Array.isArray(r)){for(let s=0;sc.name===o);if(!l||l.kind!=="object"||!l.relationName)continue;let u=typeof s=="object"?s:{};r[o]=mn({visitor:i,result:r[o],args:u,modelName:l.type,runtimeDataModel:n})}}function Zs({result:e,modelName:r,args:t,extensions:n,runtimeDataModel:i}){return n.isEmpty()||e==null||typeof e!="object"||!i.models[r]?e:mn({result:e,args:t??{},modelName:r,runtimeDataModel:i,visitor:(s,a,l)=>zs({result:s,modelName:Se(a),select:l.select,extensions:n})})}function Xs(e){if(e instanceof oe)return jp(e);if(Array.isArray(e)){let t=[e[0]];for(let n=1;n{let o=r.customDataProxyFetch;return"transaction"in r&&i!==void 0&&(r.transaction?.kind==="batch"&&r.transaction.lock.then(),r.transaction=i),n===t.length?e._executeRequest(r):t[n]({model:r.model,operation:r.model?r.action:r.clientMethod,args:Xs(r.args??{}),__internalParams:r,query:(s,a=r)=>{let l=a.customDataProxyFetch;return a.customDataProxyFetch=oa(o,l),a.args=s,ra(e,a,t,n+1)}})})}function ta(e,r){let{jsModelName:t,action:n,clientMethod:i}=r,o=t?n:i;if(e._extensions.isEmpty())return e._executeRequest(r);let s=e._extensions.getAllQueryCallbacks(t??"$none",o);return ra(e,r,s)}function na(e){return r=>{let t={requests:r},n=r[0].extensions.getAllBatchQueryCallbacks();return n.length?ia(t,n,0,e):e(t)}}function ia(e,r,t,n){if(t===r.length)return n(e);let i=e.customDataProxyFetch,o=e.requests[0].transaction;return r[t]({args:{queries:e.requests.map(s=>({model:s.modelName,operation:s.action,args:s.args})),transaction:o?{isolationLevel:o.kind==="batch"?o.isolationLevel:void 0}:void 0},__internalParams:e,query(s,a=e){let l=a.customDataProxyFetch;return a.customDataProxyFetch=oa(i,l),ia(a,r,t+1,n)}})}var ea=e=>e;function oa(e=ea,r=ea){return t=>e(r(t))}function aa(e,r,t){let n=Se(t);return!r.result||!(r.result.$allModels||r.result[n])?e:Up({...e,...sa(r.name,e,r.result.$allModels),...sa(r.name,e,r.result[n])})}function Up(e){let r=new xe,t=(n,i)=>r.getOrCreate(n,()=>i.has(n)?[n]:(i.add(n),e[n]?e[n].needs.flatMap(o=>t(o,i)):[n]));return hr(e,n=>({...n,needs:t(n.name,new Set)}))}function sa(e,r,t){return t?hr(t,({needs:n,compute:i},o)=>({name:o,needs:n?Object.keys(n).filter(s=>n[s]):[],compute:Qp(r,o,i)})):{}}function Qp(e,r,t){let n=e?.[r]?.compute;return n?i=>t({...i,[r]:n(i)}):t}function la(e,r){if(!r)return e;let t={...e};for(let n of Object.values(r))if(e[n.name])for(let i of n.needs)t[i]=!0;return t}var dn=class{constructor(r,t){this.extension=r;this.previous=t;this.computedFieldsCache=new xe;this.modelExtensionsCache=new xe;this.queryCallbacksCache=new xe;this.clientExtensions=zr(()=>this.extension.client?{...this.previous?.getAllClientExtensions(),...this.extension.client}:this.previous?.getAllClientExtensions());this.batchCallbacks=zr(()=>{let r=this.previous?.getAllBatchQueryCallbacks()??[],t=this.extension.query?.$__internalBatch;return t?r.concat(t):r})}getAllComputedFields(r){return this.computedFieldsCache.getOrCreate(r,()=>aa(this.previous?.getAllComputedFields(r),this.extension,r))}getAllClientExtensions(){return this.clientExtensions.get()}getAllModelExtensions(r){return this.modelExtensionsCache.getOrCreate(r,()=>{let t=Se(r);return!this.extension.model||!(this.extension.model[t]||this.extension.model.$allModels)?this.previous?.getAllModelExtensions(r):{...this.previous?.getAllModelExtensions(r),...this.extension.model.$allModels,...this.extension.model[t]}})}getAllQueryCallbacks(r,t){return this.queryCallbacksCache.getOrCreate(`${r}:${t}`,()=>{let n=this.previous?.getAllQueryCallbacks(r,t)??[],i=[],o=this.extension.query;return!o||!(o[r]||o.$allModels||o[t]||o.$allOperations)?n:(o[r]!==void 0&&(o[r][t]!==void 0&&i.push(o[r][t]),o[r].$allOperations!==void 0&&i.push(o[r].$allOperations)),r!=="$none"&&o.$allModels!==void 0&&(o.$allModels[t]!==void 0&&i.push(o.$allModels[t]),o.$allModels.$allOperations!==void 0&&i.push(o.$allModels.$allOperations)),o[t]!==void 0&&i.push(o[t]),o.$allOperations!==void 0&&i.push(o.$allOperations),n.concat(i))})}getAllBatchQueryCallbacks(){return this.batchCallbacks.get()}},fn=class e{constructor(r){this.head=r}static empty(){return new e}static single(r){return new e(new dn(r))}isEmpty(){return this.head===void 0}append(r){return new e(new dn(r,this.head))}getAllComputedFields(r){return this.head?.getAllComputedFields(r)}getAllClientExtensions(){return this.head?.getAllClientExtensions()}getAllModelExtensions(r){return this.head?.getAllModelExtensions(r)}getAllQueryCallbacks(r,t){return this.head?.getAllQueryCallbacks(r,t)??[]}getAllBatchQueryCallbacks(){return this.head?.getAllBatchQueryCallbacks()??[]}};var ua=N("prisma:client"),ca={Vercel:"vercel","Netlify CI":"netlify"};function pa({postinstall:e,ciName:r,clientVersion:t}){if(ua("checkPlatformCaching:postinstall",e),ua("checkPlatformCaching:ciName",r),e===!0&&r&&r in ca){let n=`Prisma has detected that this project was built on ${r}, which caches dependencies. This leads to an outdated Prisma Client because Prisma's auto-generation isn't triggered. To fix this, make sure to run the \`prisma generate\` command during the build process. + +Learn how: https://pris.ly/d/${ca[r]}-build`;throw console.error(n),new S(n,t)}}function ma(e,r){return e?e.datasources?e.datasources:e.datasourceUrl?{[r[0]]:{url:e.datasourceUrl}}:{}:{}}var Gp="Cloudflare-Workers",Jp="node";function gn(){return typeof Netlify=="object"?"netlify":typeof EdgeRuntime=="string"?"edge-light":globalThis.navigator?.userAgent===Gp?"workerd":globalThis.Deno?"deno":globalThis.__lagon__?"lagon":globalThis.process?.release?.name===Jp?"node":globalThis.Bun?"bun":globalThis.fastly?"fastly":"unknown"}var ya=_(require("fs")),ut=_(require("path"));function hn(e){let{runtimeBinaryTarget:r}=e;return`Add "${r}" to \`binaryTargets\` in the "schema.prisma" file and run \`prisma generate\` after saving it: + +${Hp(e)}`}function Hp(e){let{generator:r,generatorBinaryTargets:t,runtimeBinaryTarget:n}=e,i={fromEnvVar:null,value:n},o=[...t,i];return si({...r,binaryTargets:o})}function Ke(e){let{runtimeBinaryTarget:r}=e;return`Prisma Client could not locate the Query Engine for runtime "${r}".`}function ze(e){let{searchedLocations:r}=e;return`The following locations have been searched: +${[...new Set(r)].map(i=>` ${i}`).join(` +`)}`}function da(e){let{runtimeBinaryTarget:r}=e;return`${Ke(e)} + +This happened because \`binaryTargets\` have been pinned, but the actual deployment also required "${r}". +${hn(e)} + +${ze(e)}`}function yn(e){return`We would appreciate if you could take the time to share some information with us. +Please help us by answering a few questions: https://pris.ly/${e}`}function En(e){let{errorStack:r}=e;return r?.match(/\/\.next|\/next@|\/next\//)?` + +We detected that you are using Next.js, learn how to fix this: https://pris.ly/d/engine-not-found-nextjs.`:""}function fa(e){let{queryEngineName:r}=e;return`${Ke(e)}${En(e)} + +This is likely caused by a bundler that has not copied "${r}" next to the resulting bundle. +Ensure that "${r}" has been copied next to the bundle or in "${e.expectedLocation}". + +${yn("engine-not-found-bundler-investigation")} + +${ze(e)}`}function ga(e){let{runtimeBinaryTarget:r,generatorBinaryTargets:t}=e,n=t.find(i=>i.native);return`${Ke(e)} + +This happened because Prisma Client was generated for "${n?.value??"unknown"}", but the actual deployment required "${r}". +${hn(e)} + +${ze(e)}`}function ha(e){let{queryEngineName:r}=e;return`${Ke(e)}${En(e)} + +This is likely caused by tooling that has not copied "${r}" to the deployment folder. +Ensure that you ran \`prisma generate\` and that "${r}" has been copied to "${e.expectedLocation}". + +${yn("engine-not-found-tooling-investigation")} + +${ze(e)}`}var Wp=N("prisma:client:engines:resolveEnginePath"),Kp=()=>new RegExp("runtime[\\\\/]library\\.m?js$");async function Ea(e,r){let t={binary:process.env.PRISMA_QUERY_ENGINE_BINARY,library:process.env.PRISMA_QUERY_ENGINE_LIBRARY}[e]??r.prismaPath;if(t!==void 0)return t;let{enginePath:n,searchedLocations:i}=await zp(e,r);if(Wp("enginePath",n),n!==void 0&&e==="binary"&&ri(n),n!==void 0)return r.prismaPath=n;let o=await rr(),s=r.generator?.binaryTargets??[],a=s.some(m=>m.native),l=!s.some(m=>m.value===o),u=__filename.match(Kp())===null,c={searchedLocations:i,generatorBinaryTargets:s,generator:r.generator,runtimeBinaryTarget:o,queryEngineName:ba(e,o),expectedLocation:ut.default.relative(process.cwd(),r.dirname),errorStack:new Error().stack},p;throw a&&l?p=ga(c):l?p=da(c):u?p=fa(c):p=ha(c),new S(p,r.clientVersion)}async function zp(engineType,config){let binaryTarget=await rr(),searchedLocations=[],dirname=eval("__dirname"),searchLocations=[config.dirname,ut.default.resolve(dirname,".."),config.generator?.output?.value??dirname,ut.default.resolve(dirname,"../../../.prisma/client"),"/tmp/prisma-engines",config.cwd];__filename.includes("resolveEnginePath")&&searchLocations.push(Ko());for(let e of searchLocations){let r=ba(engineType,binaryTarget),t=ut.default.join(e,r);if(searchedLocations.push(e),ya.default.existsSync(t))return{enginePath:t,searchedLocations}}return{enginePath:void 0,searchedLocations}}function ba(e,r){return e==="library"?kt(r,"fs"):`query-engine-${r}${r==="windows"?".exe":""}`}var Di=_(li());function wa(e){return e?e.replace(/".*"/g,'"X"').replace(/[\s:\[]([+-]?([0-9]*[.])?[0-9]+)/g,r=>`${r[0]}5`):""}function xa(e){return e.split(` +`).map(r=>r.replace(/^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)\s*/,"").replace(/\+\d+\s*ms$/,"")).join(` +`)}var Pa=_(ns());function va({title:e,user:r="prisma",repo:t="prisma",template:n="bug_report.yml",body:i}){return(0,Pa.default)({user:r,repo:t,template:n,title:e,body:i})}function Ta({version:e,binaryTarget:r,title:t,description:n,engineVersion:i,database:o,query:s}){let a=fo(6e3-(s?.length??0)),l=xa((0,Di.default)(a)),u=n?`# Description +\`\`\` +${n} +\`\`\``:"",c=(0,Di.default)(`Hi Prisma Team! My Prisma Client just crashed. This is the report: +## Versions + +| Name | Version | +|-----------------|--------------------| +| Node | ${process.version?.padEnd(19)}| +| OS | ${r?.padEnd(19)}| +| Prisma Client | ${e?.padEnd(19)}| +| Query Engine | ${i?.padEnd(19)}| +| Database | ${o?.padEnd(19)}| + +${u} + +## Logs +\`\`\` +${l} +\`\`\` + +## Client Snippet +\`\`\`ts +// PLEASE FILL YOUR CODE SNIPPET HERE +\`\`\` + +## Schema +\`\`\`prisma +// PLEASE ADD YOUR SCHEMA HERE IF POSSIBLE +\`\`\` + +## Prisma Engine Query +\`\`\` +${s?wa(s):""} +\`\`\` +`),p=va({title:t,body:c});return`${t} + +This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic. + +${ee(p)} + +If you want the Prisma team to look into it, please open the link above \u{1F64F} +To increase the chance of success, please post your schema and a snippet of +how you used Prisma Client in the issue. +`}function Ir({inlineDatasources:e,overrideDatasources:r,env:t,clientVersion:n}){let i,o=Object.keys(e)[0],s=e[o]?.url,a=r[o]?.url;if(o===void 0?i=void 0:a?i=a:s?.value?i=s.value:s?.fromEnvVar&&(i=t[s.fromEnvVar]),s?.fromEnvVar!==void 0&&i===void 0)throw new S(`error: Environment variable not found: ${s.fromEnvVar}.`,n);if(i===void 0)throw new S("error: Missing URL environment variable, value, or override.",n);return i}var bn=class extends Error{constructor(r,t){super(r),this.clientVersion=t.clientVersion,this.cause=t.cause}get[Symbol.toStringTag](){return this.name}};var ae=class extends bn{constructor(r,t){super(r,t),this.isRetryable=t.isRetryable??!0}};function R(e,r){return{...e,isRetryable:r}}var _r=class extends ae{constructor(t){super("This request must be retried",R(t,!0));this.name="ForcedRetryError";this.code="P5001"}};w(_r,"ForcedRetryError");var ar=class extends ae{constructor(t,n){super(t,R(n,!1));this.name="InvalidDatasourceError";this.code="P6001"}};w(ar,"InvalidDatasourceError");var lr=class extends ae{constructor(t,n){super(t,R(n,!1));this.name="NotImplementedYetError";this.code="P5004"}};w(lr,"NotImplementedYetError");var $=class extends ae{constructor(r,t){super(r,t),this.response=t.response;let n=this.response.headers.get("prisma-request-id");if(n){let i=`(The request id was: ${n})`;this.message=this.message+" "+i}}};var ur=class extends ${constructor(t){super("Schema needs to be uploaded",R(t,!0));this.name="SchemaMissingError";this.code="P5005"}};w(ur,"SchemaMissingError");var Li="This request could not be understood by the server",ct=class extends ${constructor(t,n,i){super(n||Li,R(t,!1));this.name="BadRequestError";this.code="P5000";i&&(this.code=i)}};w(ct,"BadRequestError");var pt=class extends ${constructor(t,n){super("Engine not started: healthcheck timeout",R(t,!0));this.name="HealthcheckTimeoutError";this.code="P5013";this.logs=n}};w(pt,"HealthcheckTimeoutError");var mt=class extends ${constructor(t,n,i){super(n,R(t,!0));this.name="EngineStartupError";this.code="P5014";this.logs=i}};w(mt,"EngineStartupError");var dt=class extends ${constructor(t){super("Engine version is not supported",R(t,!1));this.name="EngineVersionNotSupportedError";this.code="P5012"}};w(dt,"EngineVersionNotSupportedError");var Ni="Request timed out",ft=class extends ${constructor(t,n=Ni){super(n,R(t,!1));this.name="GatewayTimeoutError";this.code="P5009"}};w(ft,"GatewayTimeoutError");var Yp="Interactive transaction error",gt=class extends ${constructor(t,n=Yp){super(n,R(t,!1));this.name="InteractiveTransactionError";this.code="P5015"}};w(gt,"InteractiveTransactionError");var Zp="Request parameters are invalid",ht=class extends ${constructor(t,n=Zp){super(n,R(t,!1));this.name="InvalidRequestError";this.code="P5011"}};w(ht,"InvalidRequestError");var Oi="Requested resource does not exist",yt=class extends ${constructor(t,n=Oi){super(n,R(t,!1));this.name="NotFoundError";this.code="P5003"}};w(yt,"NotFoundError");var Fi="Unknown server error",kr=class extends ${constructor(t,n,i){super(n||Fi,R(t,!0));this.name="ServerError";this.code="P5006";this.logs=i}};w(kr,"ServerError");var Mi="Unauthorized, check your connection string",Et=class extends ${constructor(t,n=Mi){super(n,R(t,!1));this.name="UnauthorizedError";this.code="P5007"}};w(Et,"UnauthorizedError");var $i="Usage exceeded, retry again later",bt=class extends ${constructor(t,n=$i){super(n,R(t,!0));this.name="UsageExceededError";this.code="P5008"}};w(bt,"UsageExceededError");async function Xp(e){let r;try{r=await e.text()}catch{return{type:"EmptyError"}}try{let t=JSON.parse(r);if(typeof t=="string")switch(t){case"InternalDataProxyError":return{type:"DataProxyError",body:t};default:return{type:"UnknownTextError",body:t}}if(typeof t=="object"&&t!==null){if("is_panic"in t&&"message"in t&&"error_code"in t)return{type:"QueryEngineError",body:t};if("EngineNotStarted"in t||"InteractiveTransactionMisrouted"in t||"InvalidRequestError"in t){let n=Object.values(t)[0].reason;return typeof n=="string"&&!["SchemaMissing","EngineVersionNotSupported"].includes(n)?{type:"UnknownJsonError",body:t}:{type:"DataProxyError",body:t}}}return{type:"UnknownJsonError",body:t}}catch{return r===""?{type:"EmptyError"}:{type:"UnknownTextError",body:r}}}async function wt(e,r){if(e.ok)return;let t={clientVersion:r,response:e},n=await Xp(e);if(n.type==="QueryEngineError")throw new V(n.body.message,{code:n.body.error_code,clientVersion:r});if(n.type==="DataProxyError"){if(n.body==="InternalDataProxyError")throw new kr(t,"Internal Data Proxy error");if("EngineNotStarted"in n.body){if(n.body.EngineNotStarted.reason==="SchemaMissing")return new ur(t);if(n.body.EngineNotStarted.reason==="EngineVersionNotSupported")throw new dt(t);if("EngineStartupError"in n.body.EngineNotStarted.reason){let{msg:i,logs:o}=n.body.EngineNotStarted.reason.EngineStartupError;throw new mt(t,i,o)}if("KnownEngineStartupError"in n.body.EngineNotStarted.reason){let{msg:i,error_code:o}=n.body.EngineNotStarted.reason.KnownEngineStartupError;throw new S(i,r,o)}if("HealthcheckTimeout"in n.body.EngineNotStarted.reason){let{logs:i}=n.body.EngineNotStarted.reason.HealthcheckTimeout;throw new pt(t,i)}}if("InteractiveTransactionMisrouted"in n.body){let i={IDParseError:"Could not parse interactive transaction ID",NoQueryEngineFoundError:"Could not find Query Engine for the specified host and transaction ID",TransactionStartError:"Could not start interactive transaction"};throw new gt(t,i[n.body.InteractiveTransactionMisrouted.reason])}if("InvalidRequestError"in n.body)throw new ht(t,n.body.InvalidRequestError.reason)}if(e.status===401||e.status===403)throw new Et(t,Dr(Mi,n));if(e.status===404)return new yt(t,Dr(Oi,n));if(e.status===429)throw new bt(t,Dr($i,n));if(e.status===504)throw new ft(t,Dr(Ni,n));if(e.status>=500)throw new kr(t,Dr(Fi,n));if(e.status>=400)throw new ct(t,Dr(Li,n))}function Dr(e,r){return r.type==="EmptyError"?e:`${e}: ${JSON.stringify(r)}`}function Ca(e){let r=Math.pow(2,e)*50,t=Math.ceil(Math.random()*r)-Math.ceil(r/2),n=r+t;return new Promise(i=>setTimeout(()=>i(n),n))}var Fe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Sa(e){let r=new TextEncoder().encode(e),t="",n=r.byteLength,i=n%3,o=n-i,s,a,l,u,c;for(let p=0;p>18,a=(c&258048)>>12,l=(c&4032)>>6,u=c&63,t+=Fe[s]+Fe[a]+Fe[l]+Fe[u];return i==1?(c=r[o],s=(c&252)>>2,a=(c&3)<<4,t+=Fe[s]+Fe[a]+"=="):i==2&&(c=r[o]<<8|r[o+1],s=(c&64512)>>10,a=(c&1008)>>4,l=(c&15)<<2,t+=Fe[s]+Fe[a]+Fe[l]+"="),t}function Ra(e){if(!!e.generator?.previewFeatures.some(t=>t.toLowerCase().includes("metrics")))throw new S("The `metrics` preview feature is not yet available with Accelerate.\nPlease remove `metrics` from the `previewFeatures` in your schema.\n\nMore information about Accelerate: https://pris.ly/d/accelerate",e.clientVersion)}function em(e){return e[0]*1e3+e[1]/1e6}function Aa(e){return new Date(em(e))}var Ia={"@prisma/debug":"workspace:*","@prisma/engines-version":"5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9","@prisma/fetch-engine":"workspace:*","@prisma/get-platform":"workspace:*"};var xt=class extends ae{constructor(t,n){super(`Cannot fetch data from service: +${t}`,R(n,!0));this.name="RequestError";this.code="P5010"}};w(xt,"RequestError");async function cr(e,r,t=n=>n){let n=r.clientVersion;try{return typeof fetch=="function"?await t(fetch)(e,r):await t(qi)(e,r)}catch(i){let o=i.message??"Unknown error";throw new xt(o,{clientVersion:n})}}function tm(e){return{...e.headers,"Content-Type":"application/json"}}function nm(e){return{method:e.method,headers:tm(e)}}function im(e,r){return{text:()=>Promise.resolve(Buffer.concat(e).toString()),json:()=>Promise.resolve().then(()=>JSON.parse(Buffer.concat(e).toString())),ok:r.statusCode>=200&&r.statusCode<=299,status:r.statusCode,url:r.url,headers:new Bi(r.headers)}}async function qi(e,r={}){let t=om("https"),n=nm(r),i=[],{origin:o}=new URL(e);return new Promise((s,a)=>{let l=t.request(e,n,u=>{let{statusCode:c,headers:{location:p}}=u;c>=301&&c<=399&&p&&(p.startsWith("http")===!1?s(qi(`${o}${p}`,r)):s(qi(p,r))),u.on("data",m=>i.push(m)),u.on("end",()=>s(im(i,u))),u.on("error",a)});l.on("error",a),l.end(r.body??"")})}var om=typeof require<"u"?require:()=>{},Bi=class{constructor(r={}){this.headers=new Map;for(let[t,n]of Object.entries(r))if(typeof n=="string")this.headers.set(t,n);else if(Array.isArray(n))for(let i of n)this.headers.set(t,i)}append(r,t){this.headers.set(r,t)}delete(r){this.headers.delete(r)}get(r){return this.headers.get(r)??null}has(r){return this.headers.has(r)}set(r,t){this.headers.set(r,t)}forEach(r,t){for(let[n,i]of this.headers)r.call(t,i,n,this)}};var sm=/^[1-9][0-9]*\.[0-9]+\.[0-9]+$/,_a=N("prisma:client:dataproxyEngine");async function am(e,r){let t=Ia["@prisma/engines-version"],n=r.clientVersion??"unknown";if(process.env.PRISMA_CLIENT_DATA_PROXY_CLIENT_VERSION)return process.env.PRISMA_CLIENT_DATA_PROXY_CLIENT_VERSION;if(e.includes("accelerate")&&n!=="0.0.0"&&n!=="in-memory")return n;let[i,o]=n?.split("-")??[];if(o===void 0&&sm.test(i))return i;if(o!==void 0||n==="0.0.0"||n==="in-memory"){if(e.startsWith("localhost")||e.startsWith("127.0.0.1"))return"0.0.0";let[s]=t.split("-")??[],[a,l,u]=s.split("."),c=lm(`<=${a}.${l}.${u}`),p=await cr(c,{clientVersion:n});if(!p.ok)throw new Error(`Failed to fetch stable Prisma version, unpkg.com status ${p.status} ${p.statusText}, response body: ${await p.text()||""}`);let m=await p.text();_a("length of body fetched from unpkg.com",m.length);let f;try{f=JSON.parse(m)}catch(g){throw console.error("JSON.parse error: body fetched from unpkg.com: ",m),g}return f.version}throw new lr("Only `major.minor.patch` versions are supported by Accelerate.",{clientVersion:n})}async function ka(e,r){let t=await am(e,r);return _a("version",t),t}function lm(e){return encodeURI(`https://unpkg.com/prisma@${e}/package.json`)}var Da=3,Vi=N("prisma:client:dataproxyEngine"),ji=class{constructor({apiKey:r,tracingHelper:t,logLevel:n,logQueries:i,engineHash:o}){this.apiKey=r,this.tracingHelper=t,this.logLevel=n,this.logQueries=i,this.engineHash=o}build({traceparent:r,interactiveTransaction:t}={}){let n={Authorization:`Bearer ${this.apiKey}`,"Prisma-Engine-Hash":this.engineHash};this.tracingHelper.isEnabled()&&(n.traceparent=r??this.tracingHelper.getTraceParent()),t&&(n["X-transaction-id"]=t.id);let i=this.buildCaptureSettings();return i.length>0&&(n["X-capture-telemetry"]=i.join(", ")),n}buildCaptureSettings(){let r=[];return this.tracingHelper.isEnabled()&&r.push("tracing"),this.logLevel&&r.push(this.logLevel),this.logQueries&&r.push("query"),r}},Pt=class{constructor(r){this.name="DataProxyEngine";Ra(r),this.config=r,this.env={...r.env,...typeof process<"u"?process.env:{}},this.inlineSchema=Sa(r.inlineSchema),this.inlineDatasources=r.inlineDatasources,this.inlineSchemaHash=r.inlineSchemaHash,this.clientVersion=r.clientVersion,this.engineHash=r.engineVersion,this.logEmitter=r.logEmitter,this.tracingHelper=r.tracingHelper}apiKey(){return this.headerBuilder.apiKey}version(){return this.engineHash}async start(){this.startPromise!==void 0&&await this.startPromise,this.startPromise=(async()=>{let[r,t]=this.extractHostAndApiKey();this.host=r,this.headerBuilder=new ji({apiKey:t,tracingHelper:this.tracingHelper,logLevel:this.config.logLevel,logQueries:this.config.logQueries,engineHash:this.engineHash}),this.remoteClientVersion=await ka(r,this.config),Vi("host",this.host)})(),await this.startPromise}async stop(){}propagateResponseExtensions(r){r?.logs?.length&&r.logs.forEach(t=>{switch(t.level){case"debug":case"error":case"trace":case"warn":case"info":break;case"query":{let n=typeof t.attributes.query=="string"?t.attributes.query:"";if(!this.tracingHelper.isEnabled()){let[i]=n.split("/* traceparent");n=i}this.logEmitter.emit("query",{query:n,timestamp:Aa(t.timestamp),duration:Number(t.attributes.duration_ms),params:t.attributes.params,target:t.attributes.target})}}}),r?.traces?.length&&this.tracingHelper.createEngineSpan({span:!0,spans:r.traces})}onBeforeExit(){throw new Error('"beforeExit" hook is not applicable to the remote query engine')}async url(r){return await this.start(),`https://${this.host}/${this.remoteClientVersion}/${this.inlineSchemaHash}/${r}`}async uploadSchema(){let r={name:"schemaUpload",internal:!0};return this.tracingHelper.runInChildSpan(r,async()=>{let t=await cr(await this.url("schema"),{method:"PUT",headers:this.headerBuilder.build(),body:this.inlineSchema,clientVersion:this.clientVersion});t.ok||Vi("schema response status",t.status);let n=await wt(t,this.clientVersion);if(n)throw this.logEmitter.emit("warn",{message:`Error while uploading schema: ${n.message}`,timestamp:new Date,target:""}),n;this.logEmitter.emit("info",{message:`Schema (re)uploaded (hash: ${this.inlineSchemaHash})`,timestamp:new Date,target:""})})}request(r,{traceparent:t,interactiveTransaction:n,customDataProxyFetch:i}){return this.requestInternal({body:r,traceparent:t,interactiveTransaction:n,customDataProxyFetch:i})}async requestBatch(r,{traceparent:t,transaction:n,customDataProxyFetch:i}){let o=n?.kind==="itx"?n.options:void 0,s=Er(r,n),{batchResult:a,elapsed:l}=await this.requestInternal({body:s,customDataProxyFetch:i,interactiveTransaction:o,traceparent:t});return a.map(u=>"errors"in u&&u.errors.length>0?sr(u.errors[0],this.clientVersion,this.config.activeProvider):{data:u,elapsed:l})}requestInternal({body:r,traceparent:t,customDataProxyFetch:n,interactiveTransaction:i}){return this.withRetry({actionGerund:"querying",callback:async({logHttpCall:o})=>{let s=i?`${i.payload.endpoint}/graphql`:await this.url("graphql");o(s);let a=await cr(s,{method:"POST",headers:this.headerBuilder.build({traceparent:t,interactiveTransaction:i}),body:JSON.stringify(r),clientVersion:this.clientVersion},n);a.ok||Vi("graphql response status",a.status),await this.handleError(await wt(a,this.clientVersion));let l=await a.json(),u=l.extensions;if(u&&this.propagateResponseExtensions(u),l.errors)throw l.errors.length===1?sr(l.errors[0],this.config.clientVersion,this.config.activeProvider):new j(l.errors,{clientVersion:this.config.clientVersion});return l}})}async transaction(r,t,n){let i={start:"starting",commit:"committing",rollback:"rolling back"};return this.withRetry({actionGerund:`${i[r]} transaction`,callback:async({logHttpCall:o})=>{if(r==="start"){let s=JSON.stringify({max_wait:n.maxWait,timeout:n.timeout,isolation_level:n.isolationLevel}),a=await this.url("transaction/start");o(a);let l=await cr(a,{method:"POST",headers:this.headerBuilder.build({traceparent:t.traceparent}),body:s,clientVersion:this.clientVersion});await this.handleError(await wt(l,this.clientVersion));let u=await l.json(),c=u.extensions;c&&this.propagateResponseExtensions(c);let p=u.id,m=u["data-proxy"].endpoint;return{id:p,payload:{endpoint:m}}}else{let s=`${n.payload.endpoint}/${r}`;o(s);let a=await cr(s,{method:"POST",headers:this.headerBuilder.build({traceparent:t.traceparent}),clientVersion:this.clientVersion});await this.handleError(await wt(a,this.clientVersion));let u=(await a.json()).extensions;u&&this.propagateResponseExtensions(u);return}}})}extractHostAndApiKey(){let r={clientVersion:this.clientVersion},t=Object.keys(this.inlineDatasources)[0],n=Ir({inlineDatasources:this.inlineDatasources,overrideDatasources:this.config.overrideDatasources,clientVersion:this.clientVersion,env:this.env}),i;try{i=new URL(n)}catch{throw new ar(`Error validating datasource \`${t}\`: the URL must start with the protocol \`prisma://\``,r)}let{protocol:o,host:s,searchParams:a}=i;if(o!=="prisma:")throw new ar(`Error validating datasource \`${t}\`: the URL must start with the protocol \`prisma://\``,r);let l=a.get("api_key");if(l===null||l.length<1)throw new ar(`Error validating datasource \`${t}\`: the URL must contain a valid API key`,r);return[s,l]}metrics(){throw new lr("Metrics are not yet supported for Accelerate",{clientVersion:this.clientVersion})}async withRetry(r){for(let t=0;;t++){let n=i=>{this.logEmitter.emit("info",{message:`Calling ${i} (n=${t})`,timestamp:new Date,target:""})};try{return await r.callback({logHttpCall:n})}catch(i){if(!(i instanceof ae)||!i.isRetryable)throw i;if(t>=Da)throw i instanceof _r?i.cause:i;this.logEmitter.emit("warn",{message:`Attempt ${t+1}/${Da} failed for ${r.actionGerund}: ${i.message??"(unknown)"}`,timestamp:new Date,target:""});let o=await Ca(t);this.logEmitter.emit("warn",{message:`Retrying after ${o}ms`,timestamp:new Date,target:""})}}}async handleError(r){if(r instanceof ur)throw await this.uploadSchema(),new _r({clientVersion:this.clientVersion,cause:r});if(r)throw r}};function La(e){if(e?.kind==="itx")return e.options.id}var Qi=_(require("os")),Na=_(require("path"));var Ui=Symbol("PrismaLibraryEngineCache");function um(){let e=globalThis;return e[Ui]===void 0&&(e[Ui]={}),e[Ui]}function cm(e){let r=um();if(r[e]!==void 0)return r[e];let t=Na.default.toNamespacedPath(e),n={exports:{}},i=0;return process.platform!=="win32"&&(i=Qi.default.constants.dlopen.RTLD_LAZY|Qi.default.constants.dlopen.RTLD_DEEPBIND),process.dlopen(n,t,i),r[e]=n.exports,n.exports}var Oa={async loadLibrary(e){let r=await Wn(),t=await Ea("library",e);try{return e.tracingHelper.runInChildSpan({name:"loadLibrary",internal:!0},()=>cm(t))}catch(n){let i=ti({e:n,platformInfo:r,id:t});throw new S(i,e.clientVersion)}}};var Gi,Fa={async loadLibrary(e){let{clientVersion:r,adapter:t,engineWasm:n}=e;if(t===void 0)throw new S(`The \`adapter\` option for \`PrismaClient\` is required in this context (${gn()})`,r);if(n===void 0)throw new S("WASM engine was unexpectedly `undefined`",r);Gi===void 0&&(Gi=(async()=>{let o=n.getRuntime(),s=await n.getQueryEngineWasmModule();if(s==null)throw new S("The loaded wasm module was unexpectedly `undefined` or `null` once loaded",r);let a={"./query_engine_bg.js":o},l=new WebAssembly.Instance(s,a);return o.__wbg_set_wasm(l.exports),o.QueryEngine})());let i=await Gi;return{debugPanic(){return Promise.reject("{}")},dmmf(){return Promise.resolve("{}")},version(){return{commit:"unknown",version:"unknown"}},QueryEngine:i}}};var pm="P2036",Re=N("prisma:client:libraryEngine");function mm(e){return e.item_type==="query"&&"query"in e}function dm(e){return"level"in e?e.level==="error"&&e.message==="PANIC":!1}var Ma=[...Mn,"native"],$a=0,vt=class{constructor(r,t){this.name="LibraryEngine";this.libraryLoader=t??Oa,r.engineWasm!==void 0&&(this.libraryLoader=t??Fa),this.config=r,this.libraryStarted=!1,this.logQueries=r.logQueries??!1,this.logLevel=r.logLevel??"error",this.logEmitter=r.logEmitter,this.datamodel=r.inlineSchema,r.enableDebugLogs&&(this.logLevel="debug");let n=Object.keys(r.overrideDatasources)[0],i=r.overrideDatasources[n]?.url;n!==void 0&&i!==void 0&&(this.datasourceOverrides={[n]:i}),this.libraryInstantiationPromise=this.instantiateLibrary(),this.checkForTooManyEngines()}checkForTooManyEngines(){$a===10&&console.warn(`${de("warn(prisma-client)")} This is the 10th instance of Prisma Client being started. Make sure this is intentional.`)}async transaction(r,t,n){await this.start();let i=JSON.stringify(t),o;if(r==="start"){let a=JSON.stringify({max_wait:n.maxWait,timeout:n.timeout,isolation_level:n.isolationLevel});o=await this.engine?.startTransaction(a,i)}else r==="commit"?o=await this.engine?.commitTransaction(n.id,i):r==="rollback"&&(o=await this.engine?.rollbackTransaction(n.id,i));let s=this.parseEngineResponse(o);if(fm(s)){let a=this.getExternalAdapterError(s);throw a?a.error:new V(s.message,{code:s.error_code,clientVersion:this.config.clientVersion,meta:s.meta})}return s}async instantiateLibrary(){if(Re("internalSetup"),this.libraryInstantiationPromise)return this.libraryInstantiationPromise;Fn(),this.binaryTarget=await this.getCurrentBinaryTarget(),await this.loadEngine(),this.version()}async getCurrentBinaryTarget(){{if(this.binaryTarget)return this.binaryTarget;let r=await rr();if(!Ma.includes(r))throw new S(`Unknown ${ce("PRISMA_QUERY_ENGINE_LIBRARY")} ${ce(W(r))}. Possible binaryTargets: ${$e(Ma.join(", "))} or a path to the query engine library. +You may have to run ${$e("prisma generate")} for your changes to take effect.`,this.config.clientVersion);return r}}parseEngineResponse(r){if(!r)throw new j("Response from the Engine was empty",{clientVersion:this.config.clientVersion});try{return JSON.parse(r)}catch{throw new j("Unable to JSON.parse response from engine",{clientVersion:this.config.clientVersion})}}async loadEngine(){if(!this.engine){this.QueryEngineConstructor||(this.library=await this.libraryLoader.loadLibrary(this.config),this.QueryEngineConstructor=this.library.QueryEngine);try{let r=new WeakRef(this),{adapter:t}=this.config;t&&Re("Using driver adapter: %O",t),this.engine=new this.QueryEngineConstructor({datamodel:this.datamodel,env:process.env,logQueries:this.config.logQueries??!1,ignoreEnvVarErrors:!0,datasourceOverrides:this.datasourceOverrides??{},logLevel:this.logLevel,configDir:this.config.cwd,engineProtocol:"json"},n=>{r.deref()?.logger(n)},t),$a++}catch(r){let t=r,n=this.parseInitError(t.message);throw typeof n=="string"?t:new S(n.message,this.config.clientVersion,n.error_code)}}}logger(r){let t=this.parseEngineResponse(r);if(t){if("span"in t){this.config.tracingHelper.createEngineSpan(t);return}t.level=t?.level.toLowerCase()??"unknown",mm(t)?this.logEmitter.emit("query",{timestamp:new Date,query:t.query,params:t.params,duration:Number(t.duration_ms),target:t.module_path}):dm(t)?this.loggerRustPanic=new ue(Ji(this,`${t.message}: ${t.reason} in ${t.file}:${t.line}:${t.column}`),this.config.clientVersion):this.logEmitter.emit(t.level,{timestamp:new Date,message:t.message,target:t.module_path})}}parseInitError(r){try{return JSON.parse(r)}catch{}return r}parseRequestError(r){try{return JSON.parse(r)}catch{}return r}onBeforeExit(){throw new Error('"beforeExit" hook is not applicable to the library engine since Prisma 5.0.0, it is only relevant and implemented for the binary engine. Please add your event listener to the `process` object directly instead.')}async start(){if(await this.libraryInstantiationPromise,await this.libraryStoppingPromise,this.libraryStartingPromise)return Re(`library already starting, this.libraryStarted: ${this.libraryStarted}`),this.libraryStartingPromise;if(this.libraryStarted)return;let r=async()=>{Re("library starting");try{let t={traceparent:this.config.tracingHelper.getTraceParent()};await this.engine?.connect(JSON.stringify(t)),this.libraryStarted=!0,Re("library started")}catch(t){let n=this.parseInitError(t.message);throw typeof n=="string"?t:new S(n.message,this.config.clientVersion,n.error_code)}finally{this.libraryStartingPromise=void 0}};return this.libraryStartingPromise=this.config.tracingHelper.runInChildSpan("connect",r),this.libraryStartingPromise}async stop(){if(await this.libraryStartingPromise,await this.executingQueryPromise,this.libraryStoppingPromise)return Re("library is already stopping"),this.libraryStoppingPromise;if(!this.libraryStarted)return;let r=async()=>{await new Promise(n=>setTimeout(n,5)),Re("library stopping");let t={traceparent:this.config.tracingHelper.getTraceParent()};await this.engine?.disconnect(JSON.stringify(t)),this.libraryStarted=!1,this.libraryStoppingPromise=void 0,Re("library stopped")};return this.libraryStoppingPromise=this.config.tracingHelper.runInChildSpan("disconnect",r),this.libraryStoppingPromise}version(){return this.versionInfo=this.library?.version(),this.versionInfo?.version??"unknown"}debugPanic(r){return this.library?.debugPanic(r)}async request(r,{traceparent:t,interactiveTransaction:n}){Re(`sending request, this.libraryStarted: ${this.libraryStarted}`);let i=JSON.stringify({traceparent:t}),o=JSON.stringify(r);try{await this.start(),this.executingQueryPromise=this.engine?.query(o,i,n?.id),this.lastQuery=o;let s=this.parseEngineResponse(await this.executingQueryPromise);if(s.errors)throw s.errors.length===1?this.buildQueryError(s.errors[0]):new j(JSON.stringify(s.errors),{clientVersion:this.config.clientVersion});if(this.loggerRustPanic)throw this.loggerRustPanic;return{data:s,elapsed:0}}catch(s){if(s instanceof S)throw s;if(s.code==="GenericFailure"&&s.message?.startsWith("PANIC:"))throw new ue(Ji(this,s.message),this.config.clientVersion);let a=this.parseRequestError(s.message);throw typeof a=="string"?s:new j(`${a.message} +${a.backtrace}`,{clientVersion:this.config.clientVersion})}}async requestBatch(r,{transaction:t,traceparent:n}){Re("requestBatch");let i=Er(r,t);await this.start(),this.lastQuery=JSON.stringify(i),this.executingQueryPromise=this.engine.query(this.lastQuery,JSON.stringify({traceparent:n}),La(t));let o=await this.executingQueryPromise,s=this.parseEngineResponse(o);if(s.errors)throw s.errors.length===1?this.buildQueryError(s.errors[0]):new j(JSON.stringify(s.errors),{clientVersion:this.config.clientVersion});let{batchResult:a,errors:l}=s;if(Array.isArray(a))return a.map(u=>u.errors&&u.errors.length>0?this.loggerRustPanic??this.buildQueryError(u.errors[0]):{data:u,elapsed:0});throw l&&l.length===1?new Error(l[0].error):new Error(JSON.stringify(s))}buildQueryError(r){if(r.user_facing_error.is_panic)return new ue(Ji(this,r.user_facing_error.message),this.config.clientVersion);let t=this.getExternalAdapterError(r.user_facing_error);return t?t.error:sr(r,this.config.clientVersion,this.config.activeProvider)}getExternalAdapterError(r){if(r.error_code===pm&&this.config.adapter){let t=r.meta?.id;jt(typeof t=="number","Malformed external JS error received from the engine");let n=this.config.adapter.errorRegistry.consumeError(t);return jt(n,"External error with reported id was not registered"),n}}async metrics(r){await this.start();let t=await this.engine.metrics(JSON.stringify(r));return r.format==="prometheus"?t:this.parseEngineResponse(t)}};function fm(e){return typeof e=="object"&&e!==null&&e.error_code!==void 0}function Ji(e,r){return Ta({binaryTarget:e.binaryTarget,title:r,version:e.config.clientVersion,engineVersion:e.versionInfo?.commit,database:e.config.activeProvider,query:e.lastQuery})}function qa({copyEngine:e=!0},r){let t;try{t=Ir({inlineDatasources:r.inlineDatasources,overrideDatasources:r.overrideDatasources,env:{...r.env,...process.env},clientVersion:r.clientVersion})}catch{}e&&t?.startsWith("prisma://")&&Kr("recommend--no-engine","In production, we recommend using `prisma generate --no-engine` (See: `prisma generate --help`)");let n=Gr(r.generator),i=!!(t?.startsWith("prisma://")||!e),o=!!r.adapter,s=n==="library",a=n==="binary";if(i&&o||o&&!1){let l;throw e?t?.startsWith("prisma://")?l=["Prisma Client was configured to use the `adapter` option but the URL was a `prisma://` URL.","Please either use the `prisma://` URL or remove the `adapter` from the Prisma Client constructor."]:l=["Prisma Client was configured to use both the `adapter` and Accelerate, please chose one."]:l=["Prisma Client was configured to use the `adapter` option but `prisma generate` was run with `--no-engine`.","Please run `prisma generate` without `--no-engine` to be able to use Prisma Client with the adapter."],new K(l.join(` +`),{clientVersion:r.clientVersion})}if(i)return new Pt(r);if(s)return new vt(r);throw new K("Invalid client engine type, please use `library` or `binary`",{clientVersion:r.clientVersion})}function wn({generator:e}){return e?.previewFeatures??[]}var Ga=_(Hi());function Ua(e,r){let t=Qa(e),n=gm(t),i=ym(n);i?xn(i,r):r.addErrorMessage(()=>"Unknown error")}function Qa(e){return e.errors.flatMap(r=>r.kind==="Union"?Qa(r):[r])}function gm(e){let r=new Map,t=[];for(let n of e){if(n.kind!=="InvalidArgumentType"){t.push(n);continue}let i=`${n.selectionPath.join(".")}:${n.argumentPath.join(".")}`,o=r.get(i);o?r.set(i,{...n,argument:{...n.argument,typeNames:hm(o.argument.typeNames,n.argument.typeNames)}}):r.set(i,n)}return t.push(...r.values()),t}function hm(e,r){return[...new Set(e.concat(r))]}function ym(e){return pi(e,(r,t)=>{let n=Va(r),i=Va(t);return n!==i?n-i:ja(r)-ja(t)})}function Va(e){let r=0;return Array.isArray(e.selectionPath)&&(r+=e.selectionPath.length),Array.isArray(e.argumentPath)&&(r+=e.argumentPath.length),r}function ja(e){switch(e.kind){case"InvalidArgumentValue":case"ValueTooLarge":return 20;case"InvalidArgumentType":return 10;case"RequiredArgumentMissing":return-10;default:return 0}}var Me=class{constructor(r,t){this.name=r;this.value=t;this.isRequired=!1}makeRequired(){return this.isRequired=!0,this}write(r){let{colors:{green:t}}=r.context;r.addMarginSymbol(t(this.isRequired?"+":"?")),r.write(t(this.name)),this.isRequired||r.write(t("?")),r.write(t(": ")),typeof this.value=="string"?r.write(t(this.value)):r.write(this.value)}};var Pn=class{constructor(){this.fields=[]}addField(r,t){return this.fields.push({write(n){let{green:i,dim:o}=n.context.colors;n.write(i(o(`${r}: ${t}`))).addMarginSymbol(i(o("+")))}}),this}write(r){let{colors:{green:t}}=r.context;r.writeLine(t("{")).withIndent(()=>{r.writeJoined(Cr,this.fields).newLine()}).write(t("}")).addMarginSymbol(t("+"))}};function xn(e,r){switch(e.kind){case"IncludeAndSelect":Em(e,r);break;case"IncludeOnScalar":bm(e,r);break;case"EmptySelection":wm(e,r);break;case"UnknownSelectionField":xm(e,r);break;case"UnknownArgument":Pm(e,r);break;case"UnknownInputField":vm(e,r);break;case"RequiredArgumentMissing":Tm(e,r);break;case"InvalidArgumentType":Cm(e,r);break;case"InvalidArgumentValue":Sm(e,r);break;case"ValueTooLarge":Rm(e,r);break;case"SomeFieldsMissing":Am(e,r);break;case"TooManyFieldsGiven":Im(e,r);break;case"Union":Ua(e,r);break;default:throw new Error("not implemented: "+e.kind)}}function Em(e,r){let t=r.arguments.getDeepSubSelectionValue(e.selectionPath);t&&t instanceof J&&(t.getField("include")?.markAsError(),t.getField("select")?.markAsError()),r.addErrorMessage(n=>`Please ${n.bold("either")} use ${n.green("`include`")} or ${n.green("`select`")}, but ${n.red("not both")} at the same time.`)}function bm(e,r){let[t,n]=vn(e.selectionPath),i=e.outputType,o=r.arguments.getDeepSelectionParent(t)?.value;if(o&&(o.getField(n)?.markAsError(),i))for(let s of i.fields)s.isRelation&&o.addSuggestion(new Me(s.name,"true"));r.addErrorMessage(s=>{let a=`Invalid scalar field ${s.red(`\`${n}\``)} for ${s.bold("include")} statement`;return i?a+=` on model ${s.bold(i.name)}. ${Tt(s)}`:a+=".",a+=` +Note that ${s.bold("include")} statements only accept relation fields.`,a})}function wm(e,r){let t=e.outputType,n=r.arguments.getDeepSelectionParent(e.selectionPath)?.value,i=n?.isEmpty()??!1;n&&(n.removeAllFields(),Wa(n,t)),r.addErrorMessage(o=>i?`The ${o.red("`select`")} statement for type ${o.bold(t.name)} must not be empty. ${Tt(o)}`:`The ${o.red("`select`")} statement for type ${o.bold(t.name)} needs ${o.bold("at least one truthy value")}.`)}function xm(e,r){let[t,n]=vn(e.selectionPath),i=r.arguments.getDeepSelectionParent(t);i&&(i.value.getField(n)?.markAsError(),Wa(i.value,e.outputType)),r.addErrorMessage(o=>{let s=[`Unknown field ${o.red(`\`${n}\``)}`];return i&&s.push(`for ${o.bold(i.kind)} statement`),s.push(`on model ${o.bold(`\`${e.outputType.name}\``)}.`),s.push(Tt(o)),s.join(" ")})}function Pm(e,r){let t=e.argumentPath[0],n=r.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof J&&(n.getField(t)?.markAsError(),_m(n,e.arguments)),r.addErrorMessage(i=>Ja(i,t,e.arguments.map(o=>o.name)))}function vm(e,r){let[t,n]=vn(e.argumentPath),i=r.arguments.getDeepSubSelectionValue(e.selectionPath);if(i instanceof J){i.getDeepField(e.argumentPath)?.markAsError();let o=i.getDeepFieldValue(t);o instanceof J&&Ka(o,e.inputType)}r.addErrorMessage(o=>Ja(o,n,e.inputType.fields.map(s=>s.name)))}function Ja(e,r,t){let n=[`Unknown argument \`${e.red(r)}\`.`],i=Dm(r,t);return i&&n.push(`Did you mean \`${e.green(i)}\`?`),t.length>0&&n.push(Tt(e)),n.join(" ")}function Tm(e,r){let t;r.addErrorMessage(l=>t?.value instanceof H&&t.value.text==="null"?`Argument \`${l.green(o)}\` must not be ${l.red("null")}.`:`Argument \`${l.green(o)}\` is missing.`);let n=r.arguments.getDeepSubSelectionValue(e.selectionPath);if(!(n instanceof J))return;let[i,o]=vn(e.argumentPath),s=new Pn,a=n.getDeepFieldValue(i);if(a instanceof J)if(t=a.getField(o),t&&a.removeField(o),e.inputTypes.length===1&&e.inputTypes[0].kind==="object"){for(let l of e.inputTypes[0].fields)s.addField(l.name,l.typeNames.join(" | "));a.addSuggestion(new Me(o,s).makeRequired())}else{let l=e.inputTypes.map(Ha).join(" | ");a.addSuggestion(new Me(o,l).makeRequired())}}function Ha(e){return e.kind==="list"?`${Ha(e.elementType)}[]`:e.name}function Cm(e,r){let t=e.argument.name,n=r.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof J&&n.getDeepFieldValue(e.argumentPath)?.markAsError(),r.addErrorMessage(i=>{let o=Tn("or",e.argument.typeNames.map(s=>i.green(s)));return`Argument \`${i.bold(t)}\`: Invalid value provided. Expected ${o}, provided ${i.red(e.inferredType)}.`})}function Sm(e,r){let t=e.argument.name,n=r.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof J&&n.getDeepFieldValue(e.argumentPath)?.markAsError(),r.addErrorMessage(i=>{let o=[`Invalid value for argument \`${i.bold(t)}\``];if(e.underlyingError&&o.push(`: ${e.underlyingError}`),o.push("."),e.argument.typeNames.length>0){let s=Tn("or",e.argument.typeNames.map(a=>i.green(a)));o.push(` Expected ${s}.`)}return o.join("")})}function Rm(e,r){let t=e.argument.name,n=r.arguments.getDeepSubSelectionValue(e.selectionPath),i;if(n instanceof J){let s=n.getDeepField(e.argumentPath)?.value;s?.markAsError(),s instanceof H&&(i=s.text)}r.addErrorMessage(o=>{let s=["Unable to fit value"];return i&&s.push(o.red(i)),s.push(`into a 64-bit signed integer for field \`${o.bold(t)}\``),s.join(" ")})}function Am(e,r){let t=e.argumentPath[e.argumentPath.length-1],n=r.arguments.getDeepSubSelectionValue(e.selectionPath);if(n instanceof J){let i=n.getDeepFieldValue(e.argumentPath);i instanceof J&&Ka(i,e.inputType)}r.addErrorMessage(i=>{let o=[`Argument \`${i.bold(t)}\` of type ${i.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1?e.constraints.requiredFields?o.push(`${i.green("at least one of")} ${Tn("or",e.constraints.requiredFields.map(s=>`\`${i.bold(s)}\``))} arguments.`):o.push(`${i.green("at least one")} argument.`):o.push(`${i.green(`at least ${e.constraints.minFieldCount}`)} arguments.`),o.push(Tt(i)),o.join(" ")})}function Im(e,r){let t=e.argumentPath[e.argumentPath.length-1],n=r.arguments.getDeepSubSelectionValue(e.selectionPath),i=[];if(n instanceof J){let o=n.getDeepFieldValue(e.argumentPath);o instanceof J&&(o.markAsError(),i=Object.keys(o.getFields()))}r.addErrorMessage(o=>{let s=[`Argument \`${o.bold(t)}\` of type ${o.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1&&e.constraints.maxFieldCount==1?s.push(`${o.green("exactly one")} argument,`):e.constraints.maxFieldCount==1?s.push(`${o.green("at most one")} argument,`):s.push(`${o.green(`at most ${e.constraints.maxFieldCount}`)} arguments,`),s.push(`but you provided ${Tn("and",i.map(a=>o.red(a)))}. Please choose`),e.constraints.maxFieldCount===1?s.push("one."):s.push(`${e.constraints.maxFieldCount}.`),s.join(" ")})}function Wa(e,r){for(let t of r.fields)e.hasField(t.name)||e.addSuggestion(new Me(t.name,"true"))}function _m(e,r){for(let t of r)e.hasField(t.name)||e.addSuggestion(new Me(t.name,t.typeNames.join(" | ")))}function Ka(e,r){if(r.kind==="object")for(let t of r.fields)e.hasField(t.name)||e.addSuggestion(new Me(t.name,t.typeNames.join(" | ")))}function vn(e){let r=[...e],t=r.pop();if(!t)throw new Error("unexpected empty path");return[r,t]}function Tt({green:e,enabled:r}){return"Available options are "+(r?`listed in ${e("green")}`:"marked with ?")+"."}function Tn(e,r){if(r.length===1)return r[0];let t=[...r],n=t.pop();return`${t.join(", ")} ${e} ${n}`}var km=3;function Dm(e,r){let t=1/0,n;for(let i of r){let o=(0,Ga.default)(e,i);o>km||o({name:r.name,typeName:"boolean",isRelation:r.kind==="object"}))}}isRawAction(){return["executeRaw","queryRaw","runCommandRaw","findRaw","aggregateRaw"].includes(this.params.action)}getComputedFields(){if(this.params.modelName)return this.params.extensions.getAllComputedFields(this.params.modelName)}findField(r){return this.model?.fields.find(t=>t.name===r)}nestSelection(r){let t=this.findField(r),n=t?.kind==="object"?t.type:void 0;return new e({...this.params,modelName:n,selectionPath:this.params.selectionPath.concat(r)})}nestArgument(r){return new e({...this.params,argumentPath:this.params.argumentPath.concat(r)})}};var Xa=e=>({command:e});var el=e=>e.strings.reduce((r,t,n)=>`${r}@P${n}${t}`);function Ct(e){try{return rl(e,"fast")}catch{return rl(e,"slow")}}function rl(e,r){return JSON.stringify(e.map(t=>Vm(t,r)))}function Vm(e,r){return typeof e=="bigint"?{prisma__type:"bigint",prisma__value:e.toString()}:wr(e)?{prisma__type:"date",prisma__value:e.toJSON()}:Te.isDecimal(e)?{prisma__type:"decimal",prisma__value:e.toJSON()}:Buffer.isBuffer(e)?{prisma__type:"bytes",prisma__value:e.toString("base64")}:jm(e)||ArrayBuffer.isView(e)?{prisma__type:"bytes",prisma__value:Buffer.from(e).toString("base64")}:typeof e=="object"&&r==="slow"?nl(e):e}function jm(e){return e instanceof ArrayBuffer||e instanceof SharedArrayBuffer?!0:typeof e=="object"&&e!==null?e[Symbol.toStringTag]==="ArrayBuffer"||e[Symbol.toStringTag]==="SharedArrayBuffer":!1}function nl(e){if(typeof e!="object"||e===null)return e;if(typeof e.toJSON=="function")return e.toJSON();if(Array.isArray(e))return e.map(tl);let r={};for(let t of Object.keys(e))r[t]=tl(e[t]);return r}function tl(e){return typeof e=="bigint"?e.toString():nl(e)}var Um=/^(\s*alter\s)/i,il=N("prisma:client");function zi(e,r,t,n){if(!(e!=="postgresql"&&e!=="cockroachdb")&&t.length>0&&Um.exec(r))throw new Error(`Running ALTER using ${n} is not supported +Using the example below you can still execute your query with Prisma, but please note that it is vulnerable to SQL injection attacks and requires you to take care of input sanitization. + +Example: + await prisma.$executeRawUnsafe(\`ALTER USER prisma WITH PASSWORD '\${password}'\`) + +More Information: https://pris.ly/d/execute-raw +`)}var Yi=({clientMethod:e,activeProvider:r})=>t=>{let n="",i;if(Array.isArray(t)){let[o,...s]=t;n=o,i={values:Ct(s||[]),__prismaRawParameters__:!0}}else switch(r){case"sqlite":case"mysql":{n=t.sql,i={values:Ct(t.values),__prismaRawParameters__:!0};break}case"cockroachdb":case"postgresql":case"postgres":{n=t.text,i={values:Ct(t.values),__prismaRawParameters__:!0};break}case"sqlserver":{n=el(t),i={values:Ct(t.values),__prismaRawParameters__:!0};break}default:throw new Error(`The ${r} provider does not support ${e}`)}return i?.values?il(`prisma.${e}(${n}, ${i.values})`):il(`prisma.${e}(${n})`),{query:n,parameters:i}},ol={requestArgsToMiddlewareArgs(e){return[e.strings,...e.values]},middlewareArgsToRequestArgs(e){let[r,...t]=e;return new oe(r,t)}},sl={requestArgsToMiddlewareArgs(e){return[e]},middlewareArgsToRequestArgs(e){return e[0]}};function Zi(e){return function(t){let n,i=(o=e)=>{try{return o===void 0||o?.kind==="itx"?n??(n=al(t(o))):al(t(o))}catch(s){return Promise.reject(s)}};return{then(o,s){return i().then(o,s)},catch(o){return i().catch(o)},finally(o){return i().finally(o)},requestTransaction(o){let s=i(o);return s.requestTransaction?s.requestTransaction(o):s},[Symbol.toStringTag]:"PrismaPromise"}}}function al(e){return typeof e.then=="function"?e:Promise.resolve(e)}var ll={isEnabled(){return!1},getTraceParent(){return"00-10-10-00"},async createEngineSpan(){},getActiveContext(){},runInChildSpan(e,r){return r()}},Xi=class{isEnabled(){return this.getGlobalTracingHelper().isEnabled()}getTraceParent(r){return this.getGlobalTracingHelper().getTraceParent(r)}createEngineSpan(r){return this.getGlobalTracingHelper().createEngineSpan(r)}getActiveContext(){return this.getGlobalTracingHelper().getActiveContext()}runInChildSpan(r,t){return this.getGlobalTracingHelper().runInChildSpan(r,t)}getGlobalTracingHelper(){return globalThis.PRISMA_INSTRUMENTATION?.helper??ll}};function ul(e){return e.includes("tracing")?new Xi:ll}function cl(e,r=()=>{}){let t,n=new Promise(i=>t=i);return{then(i){return--e===0&&t(r()),i?.(n)}}}var Qm=["$connect","$disconnect","$on","$transaction","$use","$extends"],pl=Qm;function ml(e){return typeof e=="string"?e:e.reduce((r,t)=>{let n=typeof t=="string"?t:t.level;return n==="query"?r:r&&(t==="info"||r==="info")?"info":n},void 0)}var Sn=class{constructor(){this._middlewares=[]}use(r){this._middlewares.push(r)}get(r){return this._middlewares[r]}has(r){return!!this._middlewares[r]}length(){return this._middlewares.length}};var fl=_(li());function Rn(e){return typeof e.batchRequestIdx=="number"}function An(e){return e===null?e:Array.isArray(e)?e.map(An):typeof e=="object"?Gm(e)?Jm(e):hr(e,An):e}function Gm(e){return e!==null&&typeof e=="object"&&typeof e.$type=="string"}function Jm({$type:e,value:r}){switch(e){case"BigInt":return BigInt(r);case"Bytes":return Buffer.from(r,"base64");case"DateTime":return new Date(r);case"Decimal":return new Te(r);case"Json":return JSON.parse(r);default:tr(r,"Unknown tagged value")}}function dl(e){if(e.action!=="findUnique"&&e.action!=="findUniqueOrThrow")return;let r=[];return e.modelName&&r.push(e.modelName),e.query.arguments&&r.push(eo(e.query.arguments)),r.push(eo(e.query.selection)),r.join("")}function eo(e){return`(${Object.keys(e).sort().map(t=>{let n=e[t];return typeof n=="object"&&n!==null?`(${t} ${eo(n)})`:t}).join(" ")})`}var Hm={aggregate:!1,aggregateRaw:!1,createMany:!0,createOne:!0,deleteMany:!0,deleteOne:!0,executeRaw:!0,findFirst:!1,findFirstOrThrow:!1,findMany:!1,findRaw:!1,findUnique:!1,findUniqueOrThrow:!1,groupBy:!1,queryRaw:!1,runCommandRaw:!0,updateMany:!0,updateOne:!0,upsertOne:!0};function ro(e){return Hm[e]}var In=class{constructor(r){this.options=r;this.tickActive=!1;this.batches={}}request(r){let t=this.options.batchBy(r);return t?(this.batches[t]||(this.batches[t]=[],this.tickActive||(this.tickActive=!0,process.nextTick(()=>{this.dispatchBatches(),this.tickActive=!1}))),new Promise((n,i)=>{this.batches[t].push({request:r,resolve:n,reject:i})})):this.options.singleLoader(r)}dispatchBatches(){for(let r in this.batches){let t=this.batches[r];delete this.batches[r],t.length===1?this.options.singleLoader(t[0].request).then(n=>{n instanceof Error?t[0].reject(n):t[0].resolve(n)}).catch(n=>{t[0].reject(n)}):(t.sort((n,i)=>this.options.batchOrder(n.request,i.request)),this.options.batchLoader(t.map(n=>n.request)).then(n=>{if(n instanceof Error)for(let i=0;i{for(let i=0;i{let{transaction:o,otelParentCtx:s}=n[0],a=n.map(p=>p.protocolQuery),l=this.client._tracingHelper.getTraceParent(s),u=n.some(p=>ro(p.protocolQuery.action));return(await this.client._engine.requestBatch(a,{traceparent:l,transaction:Km(o),containsWrite:u,customDataProxyFetch:i})).map((p,m)=>{if(p instanceof Error)return p;try{return this.mapQueryEngineResult(n[m],p)}catch(f){return f}})}),singleLoader:async n=>{let i=n.transaction?.kind==="itx"?gl(n.transaction):void 0,o=await this.client._engine.request(n.protocolQuery,{traceparent:this.client._tracingHelper.getTraceParent(),interactiveTransaction:i,isWrite:ro(n.protocolQuery.action),customDataProxyFetch:n.customDataProxyFetch});return this.mapQueryEngineResult(n,o)},batchBy:n=>n.transaction?.id?`transaction-${n.transaction.id}`:dl(n.protocolQuery),batchOrder(n,i){return n.transaction?.kind==="batch"&&i.transaction?.kind==="batch"?n.transaction.index-i.transaction.index:0}})}async request(r){try{return await this.dataloader.request(r)}catch(t){let{clientMethod:n,callsite:i,transaction:o,args:s,modelName:a}=r;this.handleAndLogRequestError({error:t,clientMethod:n,callsite:i,transaction:o,args:s,modelName:a})}}mapQueryEngineResult({dataPath:r,unpacker:t},n){let i=n?.data,o=n?.elapsed,s=this.unpack(i,r,t);return process.env.PRISMA_CLIENT_GET_TIME?{data:s,elapsed:o}:s}handleAndLogRequestError(r){try{this.handleRequestError(r)}catch(t){throw this.logEmitter&&this.logEmitter.emit("error",{message:t.message,target:r.clientMethod,timestamp:new Date}),t}}handleRequestError({error:r,clientMethod:t,callsite:n,transaction:i,args:o,modelName:s}){if(Wm(r),zm(r,i)||r instanceof Le)throw r;if(r instanceof V&&Ym(r)){let l=hl(r.meta);Cn({args:o,errors:[l],callsite:n,errorFormat:this.client._errorFormat,originalMethod:t,clientVersion:this.client._clientVersion})}let a=r.message;if(n&&(a=Ar({callsite:n,originalMethod:t,isPanic:r.isPanic,showColors:this.client._errorFormat==="pretty",message:a})),a=this.sanitizeMessage(a),r.code){let l=s?{modelName:s,...r.meta}:r.meta;throw new V(a,{code:r.code,clientVersion:this.client._clientVersion,meta:l,batchRequestIdx:r.batchRequestIdx})}else{if(r.isPanic)throw new ue(a,this.client._clientVersion);if(r instanceof j)throw new j(a,{clientVersion:this.client._clientVersion,batchRequestIdx:r.batchRequestIdx});if(r instanceof S)throw new S(a,this.client._clientVersion);if(r instanceof ue)throw new ue(a,this.client._clientVersion)}throw r.clientVersion=this.client._clientVersion,r}sanitizeMessage(r){return this.client._errorFormat&&this.client._errorFormat!=="pretty"?(0,fl.default)(r):r}unpack(r,t,n){if(!r||(r.data&&(r=r.data),!r))return r;let i=Object.values(r)[0],o=t.filter(a=>a!=="select"&&a!=="include"),s=An(Ai(i,o));return n?n(s):s}get[Symbol.toStringTag](){return"RequestHandler"}};function Km(e){if(e){if(e.kind==="batch")return{kind:"batch",options:{isolationLevel:e.isolationLevel}};if(e.kind==="itx")return{kind:"itx",options:gl(e)};tr(e,"Unknown transaction kind")}}function gl(e){return{id:e.id,payload:e.payload}}function zm(e,r){return Rn(e)&&r?.kind==="batch"&&e.batchRequestIdx!==r.index}function Ym(e){return e.code==="P2009"||e.code==="P2012"}function hl(e){if(e.kind==="Union")return{kind:"Union",errors:e.errors.map(hl)};if(Array.isArray(e.selectionPath)){let[,...r]=e.selectionPath;return{...e,selectionPath:r}}return e}var yl="5.10.2";var El=yl;function bl(e){return e.map(r=>{let t={};for(let n of Object.keys(r))t[n]=wl(r[n]);return t})}function wl({prisma__type:e,prisma__value:r}){switch(e){case"bigint":return BigInt(r);case"bytes":return Buffer.from(r,"base64");case"decimal":return new Te(r);case"datetime":case"date":return new Date(r);case"time":return new Date(`1970-01-01T${r}Z`);case"array":return r.map(wl);default:return r}}var Tl=_(Hi());var q=class extends Error{constructor(r){super(r+` +Read more at https://pris.ly/d/client-constructor`),this.name="PrismaClientConstructorValidationError"}get[Symbol.toStringTag](){return"PrismaClientConstructorValidationError"}};w(q,"PrismaClientConstructorValidationError");var xl=["datasources","datasourceUrl","errorFormat","adapter","log","transactionOptions","__internal"],Pl=["pretty","colorless","minimal"],vl=["info","query","warn","error"],Xm={datasources:(e,{datasourceNames:r})=>{if(e){if(typeof e!="object"||Array.isArray(e))throw new q(`Invalid value ${JSON.stringify(e)} for "datasources" provided to PrismaClient constructor`);for(let[t,n]of Object.entries(e)){if(!r.includes(t)){let i=Lr(t,r)||` Available datasources: ${r.join(", ")}`;throw new q(`Unknown datasource ${t} provided to PrismaClient constructor.${i}`)}if(typeof n!="object"||Array.isArray(n))throw new q(`Invalid value ${JSON.stringify(e)} for datasource "${t}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`);if(n&&typeof n=="object")for(let[i,o]of Object.entries(n)){if(i!=="url")throw new q(`Invalid value ${JSON.stringify(e)} for datasource "${t}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`);if(typeof o!="string")throw new q(`Invalid value ${JSON.stringify(o)} for datasource "${t}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`)}}}},adapter:(e,r)=>{if(e===null)return;if(e===void 0)throw new q('"adapter" property must not be undefined, use null to conditionally disable driver adapters.');if(!wn(r).includes("driverAdapters"))throw new q('"adapter" property can only be provided to PrismaClient constructor when "driverAdapters" preview feature is enabled.');if(Gr()==="binary")throw new q('Cannot use a driver adapter with the "binary" Query Engine. Please use the "library" Query Engine.')},datasourceUrl:e=>{if(typeof e<"u"&&typeof e!="string")throw new q(`Invalid value ${JSON.stringify(e)} for "datasourceUrl" provided to PrismaClient constructor. +Expected string or undefined.`)},errorFormat:e=>{if(e){if(typeof e!="string")throw new q(`Invalid value ${JSON.stringify(e)} for "errorFormat" provided to PrismaClient constructor.`);if(!Pl.includes(e)){let r=Lr(e,Pl);throw new q(`Invalid errorFormat ${e} provided to PrismaClient constructor.${r}`)}}},log:e=>{if(!e)return;if(!Array.isArray(e))throw new q(`Invalid value ${JSON.stringify(e)} for "log" provided to PrismaClient constructor.`);function r(t){if(typeof t=="string"&&!vl.includes(t)){let n=Lr(t,vl);throw new q(`Invalid log level "${t}" provided to PrismaClient constructor.${n}`)}}for(let t of e){r(t);let n={level:r,emit:i=>{let o=["stdout","event"];if(!o.includes(i)){let s=Lr(i,o);throw new q(`Invalid value ${JSON.stringify(i)} for "emit" in logLevel provided to PrismaClient constructor.${s}`)}}};if(t&&typeof t=="object")for(let[i,o]of Object.entries(t))if(n[i])n[i](o);else throw new q(`Invalid property ${i} for "log" provided to PrismaClient constructor`)}},transactionOptions:e=>{if(!e)return;let r=e.maxWait;if(r!=null&&r<=0)throw new q(`Invalid value ${r} for maxWait in "transactionOptions" provided to PrismaClient constructor. maxWait needs to be greater than 0`);let t=e.timeout;if(t!=null&&t<=0)throw new q(`Invalid value ${t} for timeout in "transactionOptions" provided to PrismaClient constructor. timeout needs to be greater than 0`)},__internal:e=>{if(!e)return;let r=["debug","engine","configOverride"];if(typeof e!="object")throw new q(`Invalid value ${JSON.stringify(e)} for "__internal" to PrismaClient constructor`);for(let[t]of Object.entries(e))if(!r.includes(t)){let n=Lr(t,r);throw new q(`Invalid property ${JSON.stringify(t)} for "__internal" provided to PrismaClient constructor.${n}`)}}};function Cl(e,r){for(let[t,n]of Object.entries(e)){if(!xl.includes(t)){let i=Lr(t,xl);throw new q(`Unknown property ${t} provided to PrismaClient constructor.${i}`)}Xm[t](n,r)}if(e.datasourceUrl&&e.datasources)throw new q('Can not use "datasourceUrl" and "datasources" options at the same time. Pick one of them')}function Lr(e,r){if(r.length===0||typeof e!="string")return"";let t=ed(e,r);return t?` Did you mean "${t}"?`:""}function ed(e,r){if(r.length===0)return null;let t=r.map(i=>({value:i,distance:(0,Tl.default)(e,i)}));t.sort((i,o)=>i.distance{let n=new Array(e.length),i=null,o=!1,s=0,a=()=>{o||(s++,s===e.length&&(o=!0,i?t(i):r(n)))},l=u=>{o||(o=!0,t(u))};for(let u=0;u{n[u]=c,a()},c=>{if(!Rn(c)){l(c);return}c.batchRequestIdx===u?l(c):(i||(i=c),a())})})}var Ye=N("prisma:client");typeof globalThis=="object"&&(globalThis.NODE_CLIENT=!0);var rd={requestArgsToMiddlewareArgs:e=>e,middlewareArgsToRequestArgs:e=>e},td=Symbol.for("prisma.client.transaction.id"),nd={id:0,nextId(){return++this.id}};function Dl(e){class r{constructor(n){this._originalClient=this;this._middlewares=new Sn;this._createPrismaPromise=Zi();this.$extends=Ks;e=n?.__internal?.configOverride?.(e)??e,pa(e),n&&Cl(n,e);let i=n?.adapter?hi(n.adapter):void 0,o=new _l.EventEmitter().on("error",()=>{});this._extensions=fn.empty(),this._previewFeatures=wn(e),this._clientVersion=e.clientVersion??El,this._activeProvider=e.activeProvider,this._tracingHelper=ul(this._previewFeatures);let s={rootEnvPath:e.relativeEnvPaths.rootEnvPath&&St.default.resolve(e.dirname,e.relativeEnvPaths.rootEnvPath),schemaEnvPath:e.relativeEnvPaths.schemaEnvPath&&St.default.resolve(e.dirname,e.relativeEnvPaths.schemaEnvPath)},a=!i&&Qr(s,{conflictCheck:"none"})||e.injectableEdgeEnv?.();try{let l=n??{},u=l.__internal??{},c=u.debug===!0;c&&N.enable("prisma:client");let p=St.default.resolve(e.dirname,e.relativePath);kl.default.existsSync(p)||(p=e.dirname),Ye("dirname",e.dirname),Ye("relativePath",e.relativePath),Ye("cwd",p);let m=u.engine||{};if(l.errorFormat?this._errorFormat=l.errorFormat:process.env.NODE_ENV==="production"?this._errorFormat="minimal":process.env.NO_COLOR?this._errorFormat="colorless":this._errorFormat="colorless",this._runtimeDataModel=e.runtimeDataModel,this._engineConfig={cwd:p,dirname:e.dirname,enableDebugLogs:c,allowTriggerPanic:m.allowTriggerPanic,datamodelPath:St.default.join(e.dirname,e.filename??"schema.prisma"),prismaPath:m.binaryPath??void 0,engineEndpoint:m.endpoint,generator:e.generator,showColors:this._errorFormat==="pretty",logLevel:l.log&&ml(l.log),logQueries:l.log&&!!(typeof l.log=="string"?l.log==="query":l.log.find(f=>typeof f=="string"?f==="query":f.level==="query")),env:a?.parsed??{},flags:[],engineWasm:e.engineWasm,clientVersion:e.clientVersion,engineVersion:e.engineVersion,previewFeatures:this._previewFeatures,activeProvider:e.activeProvider,inlineSchema:e.inlineSchema,overrideDatasources:ma(l,e.datasourceNames),inlineDatasources:e.inlineDatasources,inlineSchemaHash:e.inlineSchemaHash,tracingHelper:this._tracingHelper,transactionOptions:{maxWait:l.transactionOptions?.maxWait??2e3,timeout:l.transactionOptions?.timeout??5e3,isolationLevel:l.transactionOptions?.isolationLevel},logEmitter:o,isBundled:e.isBundled,adapter:i},this._accelerateEngineConfig={...this._engineConfig,accelerateUtils:{resolveDatasourceUrl:Ir,getBatchRequestPayload:Er,prismaGraphQLToJSError:sr,PrismaClientUnknownRequestError:j,PrismaClientInitializationError:S,PrismaClientKnownRequestError:V,debug:N("prisma:client:accelerateEngine"),engineVersion:Al.version,clientVersion:e.clientVersion}},Ye("clientVersion",e.clientVersion),this._engine=qa(e,this._engineConfig),this._requestHandler=new _n(this,o),l.log)for(let f of l.log){let g=typeof f=="string"?f:f.emit==="stdout"?f.level:null;g&&this.$on(g,h=>{Wr.log(`${Wr.tags[g]??""}`,h.message||h.query)})}this._metrics=new yr(this._engine)}catch(l){throw l.clientVersion=this._clientVersion,l}return this._appliedParent=at(this)}get[Symbol.toStringTag](){return"PrismaClient"}$use(n){this._middlewares.use(n)}$on(n,i){n==="beforeExit"?this._engine.onBeforeExit(i):n&&this._engineConfig.logEmitter.on(n,i)}$connect(){try{return this._engine.start()}catch(n){throw n.clientVersion=this._clientVersion,n}}async $disconnect(){try{await this._engine.stop()}catch(n){throw n.clientVersion=this._clientVersion,n}finally{go()}}$executeRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"executeRaw",args:o,transaction:n,clientMethod:i,argsMapper:Yi({clientMethod:i,activeProvider:a}),callsite:We(this._errorFormat),dataPath:[],middlewareArgsMapper:s})}$executeRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0){let[s,a]=Rl(n,i);return zi(this._activeProvider,s.text,s.values,Array.isArray(n)?"prisma.$executeRaw``":"prisma.$executeRaw(sql``)"),this.$executeRawInternal(o,"$executeRaw",s,a)}throw new K("`$executeRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#executeraw\n",{clientVersion:this._clientVersion})})}$executeRawUnsafe(n,...i){return this._createPrismaPromise(o=>(zi(this._activeProvider,n,i,"prisma.$executeRawUnsafe(, [...values])"),this.$executeRawInternal(o,"$executeRawUnsafe",[n,...i])))}$runCommandRaw(n){if(e.activeProvider!=="mongodb")throw new K(`The ${e.activeProvider} provider does not support $runCommandRaw. Use the mongodb provider.`,{clientVersion:this._clientVersion});return this._createPrismaPromise(i=>this._request({args:n,clientMethod:"$runCommandRaw",dataPath:[],action:"runCommandRaw",argsMapper:Xa,callsite:We(this._errorFormat),transaction:i}))}async $queryRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"queryRaw",args:o,transaction:n,clientMethod:i,argsMapper:Yi({clientMethod:i,activeProvider:a}),callsite:We(this._errorFormat),dataPath:[],middlewareArgsMapper:s}).then(bl)}$queryRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0)return this.$queryRawInternal(o,"$queryRaw",...Rl(n,i));throw new K("`$queryRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#queryraw\n",{clientVersion:this._clientVersion})})}$queryRawUnsafe(n,...i){return this._createPrismaPromise(o=>this.$queryRawInternal(o,"$queryRawUnsafe",[n,...i]))}_transactionWithArray({promises:n,options:i}){let o=nd.nextId(),s=cl(n.length),a=n.map((l,u)=>{if(l?.[Symbol.toStringTag]!=="PrismaPromise")throw new Error("All elements of the array need to be Prisma Client promises. Hint: Please make sure you are not awaiting the Prisma client calls you intended to pass in the $transaction function.");let c=i?.isolationLevel??this._engineConfig.transactionOptions.isolationLevel,p={kind:"batch",id:o,index:u,isolationLevel:c,lock:s};return l.requestTransaction?.(p)??l});return Sl(a)}async _transactionWithCallback({callback:n,options:i}){let o={traceparent:this._tracingHelper.getTraceParent()},s={maxWait:i?.maxWait??this._engineConfig.transactionOptions.maxWait,timeout:i?.timeout??this._engineConfig.transactionOptions.timeout,isolationLevel:i?.isolationLevel??this._engineConfig.transactionOptions.isolationLevel},a=await this._engine.transaction("start",o,s),l;try{let u={kind:"itx",...a};l=await n(this._createItxClient(u)),await this._engine.transaction("commit",o,a)}catch(u){throw await this._engine.transaction("rollback",o,a).catch(()=>{}),u}return l}_createItxClient(n){return at(Pe(Ws(this),[te("_appliedParent",()=>this._appliedParent._createItxClient(n)),te("_createPrismaPromise",()=>Zi(n)),te(td,()=>n.id),nt(pl)]))}$transaction(n,i){let o;typeof n=="function"?o=()=>this._transactionWithCallback({callback:n,options:i}):o=()=>this._transactionWithArray({promises:n,options:i});let s={name:"transaction",attributes:{method:"$transaction"}};return this._tracingHelper.runInChildSpan(s,o)}_request(n){n.otelParentCtx=this._tracingHelper.getActiveContext();let i=n.middlewareArgsMapper??rd,o={args:i.requestArgsToMiddlewareArgs(n.args),dataPath:n.dataPath,runInTransaction:!!n.transaction,action:n.action,model:n.model},s={middleware:{name:"middleware",middleware:!0,attributes:{method:"$use"},active:!1},operation:{name:"operation",attributes:{method:o.action,model:o.model,name:o.model?`${o.model}.${o.action}`:o.action}}},a=-1,l=async u=>{let c=this._middlewares.get(++a);if(c)return this._tracingHelper.runInChildSpan(s.middleware,A=>c(u,T=>(A?.end(),l(T))));let{runInTransaction:p,args:m,...f}=u,g={...n,...f};m&&(g.args=i.middlewareArgsToRequestArgs(m)),n.transaction!==void 0&&p===!1&&delete g.transaction;let h=await ta(this,g);return g.model?Zs({result:h,modelName:g.model,args:g.args,extensions:this._extensions,runtimeDataModel:this._runtimeDataModel}):h};return this._tracingHelper.runInChildSpan(s.operation,()=>new Il.AsyncResource("prisma-client-request").runInAsyncScope(()=>l(o)))}async _executeRequest({args:n,clientMethod:i,dataPath:o,callsite:s,action:a,model:l,argsMapper:u,transaction:c,unpacker:p,otelParentCtx:m,customDataProxyFetch:f}){try{n=u?u(n):n;let g={name:"serialize"},h=this._tracingHelper.runInChildSpan(g,()=>za({modelName:l,runtimeDataModel:this._runtimeDataModel,action:a,args:n,clientMethod:i,callsite:s,extensions:this._extensions,errorFormat:this._errorFormat,clientVersion:this._clientVersion}));return N.enabled("prisma:client")&&(Ye("Prisma Client call:"),Ye(`prisma.${i}(${_s(n)})`),Ye("Generated request:"),Ye(JSON.stringify(h,null,2)+` +`)),c?.kind==="batch"&&await c.lock,this._requestHandler.request({protocolQuery:h,modelName:l,action:a,clientMethod:i,dataPath:o,callsite:s,args:n,extensions:this._extensions,transaction:c,unpacker:p,otelParentCtx:m,otelChildCtx:this._tracingHelper.getActiveContext(),customDataProxyFetch:f})}catch(g){throw g.clientVersion=this._clientVersion,g}}get $metrics(){if(!this._hasPreviewFlag("metrics"))throw new K("`metrics` preview feature must be enabled in order to access metrics API",{clientVersion:this._clientVersion});return this._metrics}_hasPreviewFlag(n){return!!this._engineConfig.previewFeatures?.includes(n)}}return r}function Rl(e,r){return id(e)?[new oe(e,r),ol]:[e,sl]}function id(e){return Array.isArray(e)&&Array.isArray(e.raw)}var od=new Set(["toJSON","$$typeof","asymmetricMatch",Symbol.iterator,Symbol.toStringTag,Symbol.isConcatSpreadable,Symbol.toPrimitive]);function Ll(e){return new Proxy(e,{get(r,t){if(t in r)return r[t];if(!od.has(t))throw new TypeError(`Invalid enum value: ${String(t)}`)}})}function Nl(e){Qr(e,{conflictCheck:"warn"})}0&&(module.exports={Debug,Decimal,Extensions,MetricsClient,NotFoundError,PrismaClientInitializationError,PrismaClientKnownRequestError,PrismaClientRustPanicError,PrismaClientUnknownRequestError,PrismaClientValidationError,Public,Sql,defineDmmfProperty,detectRuntime,empty,getPrismaClient,join,makeStrictEnum,objectEnumValues,raw,sqltag,warnEnvConflicts,warnOnce}); +/*! Bundled license information: + +decimal.js/decimal.mjs: + (*! + * decimal.js v10.4.3 + * An arbitrary-precision Decimal type for JavaScript. + * https://github.com/MikeMcl/decimal.js + * Copyright (c) 2022 Michael Mclaughlin + * MIT Licence + *) +*/ +//# sourceMappingURL=library.js.map diff --git a/backend/prisma/generated/client-db1/runtime/wasm.js b/backend/prisma/generated/client-db1/runtime/wasm.js new file mode 100644 index 0000000..8ae42fb --- /dev/null +++ b/backend/prisma/generated/client-db1/runtime/wasm.js @@ -0,0 +1,29 @@ +"use strict";var Ps=Object.create;var It=Object.defineProperty;var Cs=Object.getOwnPropertyDescriptor;var Ts=Object.getOwnPropertyNames;var As=Object.getPrototypeOf,Rs=Object.prototype.hasOwnProperty;var ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Ce=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),st=(e,t)=>{for(var r in t)It(e,r,{get:t[r],enumerable:!0})},Pn=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ts(t))!Rs.call(e,i)&&i!==r&&It(e,i,{get:()=>t[i],enumerable:!(n=Cs(t,i))||n.enumerable});return e};var Le=(e,t,r)=>(r=e!=null?Ps(As(e)):{},Pn(t||!e||!e.__esModule?It(r,"default",{value:e,enumerable:!0}):r,e)),kr=e=>Pn(It({},"__esModule",{value:!0}),e);var y,c=ye(()=>{"use strict";y={nextTick:(e,...t)=>{setTimeout(()=>{e(...t)},0)},env:{},version:"",cwd:()=>"/",stderr:{},argv:["/bin/node"]}});var v,p=ye(()=>{"use strict";v=globalThis.performance??(()=>{let e=Date.now();return{now:()=>Date.now()-e}})()});var x,f=ye(()=>{"use strict";x=()=>{};x.prototype=x});var b,m=ye(()=>{"use strict";b=class{constructor(t){this.value=t}deref(){return this.value}}});var Vn=Ce(Qe=>{"use strict";d();c();p();f();m();var Sn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ss=Sn(e=>{"use strict";e.byteLength=l,e.toByteArray=g,e.fromByteArray=S;var t=[],r=[],n=typeof Uint8Array<"u"?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(o=0,s=i.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var I=A.indexOf("=");I===-1&&(I=R);var _=I===R?0:4-I%4;return[I,_]}function l(A){var R=a(A),I=R[0],_=R[1];return(I+_)*3/4-_}function u(A,R,I){return(R+I)*3/4-I}function g(A){var R,I=a(A),_=I[0],F=I[1],k=new n(u(A,_,F)),N=0,ie=F>0?_-4:_,V;for(V=0;V>16&255,k[N++]=R>>8&255,k[N++]=R&255;return F===2&&(R=r[A.charCodeAt(V)]<<2|r[A.charCodeAt(V+1)]>>4,k[N++]=R&255),F===1&&(R=r[A.charCodeAt(V)]<<10|r[A.charCodeAt(V+1)]<<4|r[A.charCodeAt(V+2)]>>2,k[N++]=R>>8&255,k[N++]=R&255),k}function h(A){return t[A>>18&63]+t[A>>12&63]+t[A>>6&63]+t[A&63]}function E(A,R,I){for(var _,F=[],k=R;kie?ie:N+k));return _===1?(R=A[I-1],F.push(t[R>>2]+t[R<<4&63]+"==")):_===2&&(R=(A[I-2]<<8)+A[I-1],F.push(t[R>>10]+t[R>>4&63]+t[R<<2&63]+"=")),F.join("")}}),ks=Sn(e=>{e.read=function(t,r,n,i,o){var s,a,l=o*8-i-1,u=(1<>1,h=-7,E=n?o-1:0,S=n?-1:1,A=t[r+E];for(E+=S,s=A&(1<<-h)-1,A>>=-h,h+=l;h>0;s=s*256+t[r+E],E+=S,h-=8);for(a=s&(1<<-h)-1,s>>=-h,h+=i;h>0;a=a*256+t[r+E],E+=S,h-=8);if(s===0)s=1-g;else{if(s===u)return a?NaN:(A?-1:1)*(1/0);a=a+Math.pow(2,i),s=s-g}return(A?-1:1)*a*Math.pow(2,s-i)},e.write=function(t,r,n,i,o,s){var a,l,u,g=s*8-o-1,h=(1<>1,S=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,A=i?0:s-1,R=i?1:-1,I=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(l=isNaN(r)?1:0,a=h):(a=Math.floor(Math.log(r)/Math.LN2),r*(u=Math.pow(2,-a))<1&&(a--,u*=2),a+E>=1?r+=S/u:r+=S*Math.pow(2,1-E),r*u>=2&&(a++,u/=2),a+E>=h?(l=0,a=h):a+E>=1?(l=(r*u-1)*Math.pow(2,o),a=a+E):(l=r*Math.pow(2,E-1)*Math.pow(2,o),a=0));o>=8;t[n+A]=l&255,A+=R,l/=256,o-=8);for(a=a<0;t[n+A]=a&255,A+=R,a/=256,g-=8);t[n+A-R]|=I*128}}),Mr=Ss(),Ve=ks(),Cn=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Qe.Buffer=C;Qe.SlowBuffer=Ns;Qe.INSPECT_MAX_BYTES=50;var _t=2147483647;Qe.kMaxLength=_t;C.TYPED_ARRAY_SUPPORT=Ms();!C.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function Ms(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch{return!1}}Object.defineProperty(C.prototype,"parent",{enumerable:!0,get:function(){if(C.isBuffer(this))return this.buffer}});Object.defineProperty(C.prototype,"offset",{enumerable:!0,get:function(){if(C.isBuffer(this))return this.byteOffset}});function we(e){if(e>_t)throw new RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,C.prototype),t}function C(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return _r(e)}return kn(e,t,r)}C.poolSize=8192;function kn(e,t,r){if(typeof e=="string")return Is(e,t);if(ArrayBuffer.isView(e))return _s(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(ue(e,ArrayBuffer)||e&&ue(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(ue(e,SharedArrayBuffer)||e&&ue(e.buffer,SharedArrayBuffer)))return On(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return C.from(n,t,r);let i=Ls(e);if(i)return i;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return C.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}C.from=function(e,t,r){return kn(e,t,r)};Object.setPrototypeOf(C.prototype,Uint8Array.prototype);Object.setPrototypeOf(C,Uint8Array);function Mn(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function Os(e,t,r){return Mn(e),e<=0?we(e):t!==void 0?typeof r=="string"?we(e).fill(t,r):we(e).fill(t):we(e)}C.alloc=function(e,t,r){return Os(e,t,r)};function _r(e){return Mn(e),we(e<0?0:Lr(e)|0)}C.allocUnsafe=function(e){return _r(e)};C.allocUnsafeSlow=function(e){return _r(e)};function Is(e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!C.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let r=In(e,t)|0,n=we(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}function Or(e){let t=e.length<0?0:Lr(e.length)|0,r=we(t);for(let n=0;n=_t)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+_t.toString(16)+" bytes");return e|0}function Ns(e){return+e!=e&&(e=0),C.alloc(+e)}C.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==C.prototype};C.compare=function(e,t){if(ue(e,Uint8Array)&&(e=C.from(e,e.offset,e.byteLength)),ue(t,Uint8Array)&&(t=C.from(t,t.offset,t.byteLength)),!C.isBuffer(e)||!C.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let r=e.length,n=t.length;for(let i=0,o=Math.min(r,n);in.length?(C.isBuffer(o)||(o=C.from(o)),o.copy(n,i)):Uint8Array.prototype.set.call(n,o,i);else if(C.isBuffer(o))o.copy(n,i);else throw new TypeError('"list" argument must be an Array of Buffers');i+=o.length}return n};function In(e,t){if(C.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||ue(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Ir(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return Un(e).length;default:if(i)return n?-1:Ir(e).length;t=(""+t).toLowerCase(),i=!0}}C.byteLength=In;function Fs(e,t,r){let n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return Ws(this,t,r);case"utf8":case"utf-8":return Ln(this,t,r);case"ascii":return Qs(this,t,r);case"latin1":case"binary":return Js(this,t,r);case"base64":return Vs(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Gs(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}C.prototype._isBuffer=!0;function Ne(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}C.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tt&&(e+=" ... "),""};Cn&&(C.prototype[Cn]=C.prototype.inspect);C.prototype.compare=function(e,t,r,n,i){if(ue(e,Uint8Array)&&(e=C.from(e,e.offset,e.byteLength)),!C.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),r===void 0&&(r=e?e.length:0),n===void 0&&(n=0),i===void 0&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;let o=i-n,s=r-t,a=Math.min(o,s),l=this.slice(n,i),u=e.slice(t,r);for(let g=0;g2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,Fr(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=C.from(t,n)),C.isBuffer(t))return t.length===0?-1:Tn(e,t,r,n,i);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):Tn(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function Tn(e,t,r,n,i){let o=1,s=e.length,a=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;o=2,s/=2,a/=2,r/=2}function l(g,h){return o===1?g[h]:g.readUInt16BE(h*o)}let u;if(i){let g=-1;for(u=r;us&&(r=s-a),u=r;u>=0;u--){let g=!0;for(let h=0;hi&&(n=i)):n=i;let o=t.length;n>o/2&&(n=o/2);let s;for(s=0;s>>0,isFinite(r)?(r=r>>>0,n===void 0&&(n="utf8")):(n=r,r=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let i=this.length-t;if((r===void 0||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return Ds(this,e,t,r);case"utf8":case"utf-8":return Bs(this,e,t,r);case"ascii":case"latin1":case"binary":return $s(this,e,t,r);case"base64":return qs(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Us(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}};C.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Vs(e,t,r){return t===0&&r===e.length?Mr.fromByteArray(e):Mr.fromByteArray(e.slice(t,r))}function Ln(e,t,r){r=Math.min(e.length,r);let n=[],i=t;for(;i239?4:o>223?3:o>191?2:1;if(i+a<=r){let l,u,g,h;switch(a){case 1:o<128&&(s=o);break;case 2:l=e[i+1],(l&192)===128&&(h=(o&31)<<6|l&63,h>127&&(s=h));break;case 3:l=e[i+1],u=e[i+2],(l&192)===128&&(u&192)===128&&(h=(o&15)<<12|(l&63)<<6|u&63,h>2047&&(h<55296||h>57343)&&(s=h));break;case 4:l=e[i+1],u=e[i+2],g=e[i+3],(l&192)===128&&(u&192)===128&&(g&192)===128&&(h=(o&15)<<18|(l&63)<<12|(u&63)<<6|g&63,h>65535&&h<1114112&&(s=h))}}s===null?(s=65533,a=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),i+=a}return js(n)}var An=4096;function js(e){let t=e.length;if(t<=An)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn)&&(r=n);let i="";for(let o=t;or&&(e=r),t<0?(t+=r,t<0&&(t=0)):t>r&&(t=r),tr)throw new RangeError("Trying to access beyond buffer length")}C.prototype.readUintLE=C.prototype.readUIntLE=function(e,t,r){e=e>>>0,t=t>>>0,r||Q(e,t,this.length);let n=this[e],i=1,o=0;for(;++o>>0,t=t>>>0,r||Q(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n};C.prototype.readUint8=C.prototype.readUInt8=function(e,t){return e=e>>>0,t||Q(e,1,this.length),this[e]};C.prototype.readUint16LE=C.prototype.readUInt16LE=function(e,t){return e=e>>>0,t||Q(e,2,this.length),this[e]|this[e+1]<<8};C.prototype.readUint16BE=C.prototype.readUInt16BE=function(e,t){return e=e>>>0,t||Q(e,2,this.length),this[e]<<8|this[e+1]};C.prototype.readUint32LE=C.prototype.readUInt32LE=function(e,t){return e=e>>>0,t||Q(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};C.prototype.readUint32BE=C.prototype.readUInt32BE=function(e,t){return e=e>>>0,t||Q(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};C.prototype.readBigUInt64LE=Te(function(e){e=e>>>0,je(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&at(e,this.length-8);let n=t+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,i=this[++e]+this[++e]*2**8+this[++e]*2**16+r*2**24;return BigInt(n)+(BigInt(i)<>>0,je(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&at(e,this.length-8);let n=t*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],i=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+r;return(BigInt(n)<>>0,t=t>>>0,r||Q(e,t,this.length);let n=this[e],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*t)),n};C.prototype.readIntBE=function(e,t,r){e=e>>>0,t=t>>>0,r||Q(e,t,this.length);let n=t,i=1,o=this[e+--n];for(;n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o};C.prototype.readInt8=function(e,t){return e=e>>>0,t||Q(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};C.prototype.readInt16LE=function(e,t){e=e>>>0,t||Q(e,2,this.length);let r=this[e]|this[e+1]<<8;return r&32768?r|4294901760:r};C.prototype.readInt16BE=function(e,t){e=e>>>0,t||Q(e,2,this.length);let r=this[e+1]|this[e]<<8;return r&32768?r|4294901760:r};C.prototype.readInt32LE=function(e,t){return e=e>>>0,t||Q(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};C.prototype.readInt32BE=function(e,t){return e=e>>>0,t||Q(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};C.prototype.readBigInt64LE=Te(function(e){e=e>>>0,je(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&at(e,this.length-8);let n=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(r<<24);return(BigInt(n)<>>0,je(e,"offset");let t=this[e],r=this[e+7];(t===void 0||r===void 0)&&at(e,this.length-8);let n=(t<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(n)<>>0,t||Q(e,4,this.length),Ve.read(this,e,!0,23,4)};C.prototype.readFloatBE=function(e,t){return e=e>>>0,t||Q(e,4,this.length),Ve.read(this,e,!1,23,4)};C.prototype.readDoubleLE=function(e,t){return e=e>>>0,t||Q(e,8,this.length),Ve.read(this,e,!0,52,8)};C.prototype.readDoubleBE=function(e,t){return e=e>>>0,t||Q(e,8,this.length),Ve.read(this,e,!1,52,8)};function te(e,t,r,n,i,o){if(!C.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}C.prototype.writeUintLE=C.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t=t>>>0,r=r>>>0,!n){let s=Math.pow(2,8*r)-1;te(this,e,t,r,s,0)}let i=1,o=0;for(this[t]=e&255;++o>>0,r=r>>>0,!n){let s=Math.pow(2,8*r)-1;te(this,e,t,r,s,0)}let i=r-1,o=1;for(this[t+i]=e&255;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r};C.prototype.writeUint8=C.prototype.writeUInt8=function(e,t,r){return e=+e,t=t>>>0,r||te(this,e,t,1,255,0),this[t]=e&255,t+1};C.prototype.writeUint16LE=C.prototype.writeUInt16LE=function(e,t,r){return e=+e,t=t>>>0,r||te(this,e,t,2,65535,0),this[t]=e&255,this[t+1]=e>>>8,t+2};C.prototype.writeUint16BE=C.prototype.writeUInt16BE=function(e,t,r){return e=+e,t=t>>>0,r||te(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=e&255,t+2};C.prototype.writeUint32LE=C.prototype.writeUInt32LE=function(e,t,r){return e=+e,t=t>>>0,r||te(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=e&255,t+4};C.prototype.writeUint32BE=C.prototype.writeUInt32BE=function(e,t,r){return e=+e,t=t>>>0,r||te(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};function Nn(e,t,r,n,i){qn(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=s,s=s>>8,e[r++]=s,s=s>>8,e[r++]=s,s=s>>8,e[r++]=s,r}function Fn(e,t,r,n,i){qn(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o=o>>8,e[r+6]=o,o=o>>8,e[r+5]=o,o=o>>8,e[r+4]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=s,s=s>>8,e[r+2]=s,s=s>>8,e[r+1]=s,s=s>>8,e[r]=s,r+8}C.prototype.writeBigUInt64LE=Te(function(e,t=0){return Nn(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))});C.prototype.writeBigUInt64BE=Te(function(e,t=0){return Fn(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))});C.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t=t>>>0,!n){let a=Math.pow(2,8*r-1);te(this,e,t,r,a-1,-a)}let i=0,o=1,s=0;for(this[t]=e&255;++i>0)-s&255;return t+r};C.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t=t>>>0,!n){let a=Math.pow(2,8*r-1);te(this,e,t,r,a-1,-a)}let i=r-1,o=1,s=0;for(this[t+i]=e&255;--i>=0&&(o*=256);)e<0&&s===0&&this[t+i+1]!==0&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+r};C.prototype.writeInt8=function(e,t,r){return e=+e,t=t>>>0,r||te(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=e&255,t+1};C.prototype.writeInt16LE=function(e,t,r){return e=+e,t=t>>>0,r||te(this,e,t,2,32767,-32768),this[t]=e&255,this[t+1]=e>>>8,t+2};C.prototype.writeInt16BE=function(e,t,r){return e=+e,t=t>>>0,r||te(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=e&255,t+2};C.prototype.writeInt32LE=function(e,t,r){return e=+e,t=t>>>0,r||te(this,e,t,4,2147483647,-2147483648),this[t]=e&255,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4};C.prototype.writeInt32BE=function(e,t,r){return e=+e,t=t>>>0,r||te(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};C.prototype.writeBigInt64LE=Te(function(e,t=0){return Nn(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});C.prototype.writeBigInt64BE=Te(function(e,t=0){return Fn(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Dn(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Bn(e,t,r,n,i){return t=+t,r=r>>>0,i||Dn(e,t,r,4,34028234663852886e22,-34028234663852886e22),Ve.write(e,t,r,n,23,4),r+4}C.prototype.writeFloatLE=function(e,t,r){return Bn(this,e,t,!0,r)};C.prototype.writeFloatBE=function(e,t,r){return Bn(this,e,t,!1,r)};function $n(e,t,r,n,i){return t=+t,r=r>>>0,i||Dn(e,t,r,8,17976931348623157e292,-17976931348623157e292),Ve.write(e,t,r,n,52,8),r+8}C.prototype.writeDoubleLE=function(e,t,r){return $n(this,e,t,!0,r)};C.prototype.writeDoubleBE=function(e,t,r){return $n(this,e,t,!1,r)};C.prototype.copy=function(e,t,r,n){if(!C.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),!n&&n!==0&&(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>0,r=r===void 0?this.length:r>>>0,e||(e=0);let i;if(typeof e=="number")for(i=t;i2**32?i=Rn(String(r)):typeof r=="bigint"&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=Rn(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n},RangeError);function Rn(e){let t="",r=e.length,n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function Hs(e,t,r){je(t,"offset"),(e[t]===void 0||e[t+r]===void 0)&&at(t,e.length-(r+1))}function qn(e,t,r,n,i,o){if(e>r||e3?t===0||t===BigInt(0)?a=`>= 0${s} and < 2${s} ** ${(o+1)*8}${s}`:a=`>= -(2${s} ** ${(o+1)*8-1}${s}) and < 2 ** ${(o+1)*8-1}${s}`:a=`>= ${t}${s} and <= ${r}${s}`,new Ue.ERR_OUT_OF_RANGE("value",a,e)}Hs(n,i,o)}function je(e,t){if(typeof e!="number")throw new Ue.ERR_INVALID_ARG_TYPE(t,"number",e)}function at(e,t,r){throw Math.floor(e)!==e?(je(e,r),new Ue.ERR_OUT_OF_RANGE(r||"offset","an integer",e)):t<0?new Ue.ERR_BUFFER_OUT_OF_BOUNDS:new Ue.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}var Ks=/[^+/0-9A-Za-z-_]/g;function zs(e){if(e=e.split("=")[0],e=e.trim().replace(Ks,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function Ir(e,t){t=t||1/0;let r,n=e.length,i=null,o=[];for(let s=0;s55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}else if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return o}function Ys(e){let t=[];for(let r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function Un(e){return Mr.toByteArray(zs(e))}function Lt(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function ue(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function Fr(e){return e!==e}var Xs=function(){let e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){let n=r*16;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function Te(e){return typeof BigInt>"u"?ea:e}function ea(){throw new Error("BigInt not supported")}});var w,d=ye(()=>{"use strict";w=Le(Vn())});function ta(){return!1}var ra,na,Wn,Gn=ye(()=>{"use strict";d();c();p();f();m();ra={},na={existsSync:ta,promises:ra},Wn=na});var ii=Ce((mp,ni)=>{"use strict";d();c();p();f();m();ni.exports=(Bt(),kr(qr)).format});var qr={};st(qr,{default:()=>sa,deprecate:()=>si,format:()=>ai,inspect:()=>$t,promisify:()=>oi});function oi(e){return(...t)=>new Promise((r,n)=>{e(...t,(i,o)=>{i?n(i):r(o)})})}function si(e,t){return(...r)=>(console.warn(t),e(...r))}function $t(e){return JSON.stringify(e,(t,r)=>typeof r=="function"?r.toString():typeof r=="bigint"?`${r}n`:r instanceof Error?{...r,message:r.message,stack:r.stack}:r)}var ai,oa,sa,Bt=ye(()=>{"use strict";d();c();p();f();m();ai=ii(),oa={promisify:oi,deprecate:si,inspect:$t,format:ai},sa=oa});function pa(...e){return e.join("/")}function fa(...e){return e.join("/")}var pi,ma,da,ut,fi=ye(()=>{"use strict";d();c();p();f();m();pi="/",ma={sep:pi},da={resolve:pa,posix:ma,join:fa,sep:pi},ut=da});var Ut,di=ye(()=>{"use strict";d();c();p();f();m();Ut=class{constructor(){this.events={}}on(t,r){return this.events[t]||(this.events[t]=[]),this.events[t].push(r),this}emit(t,...r){return this.events[t]?(this.events[t].forEach(n=>{n(...r)}),!0):!1}}});var hi=Ce((Af,gi)=>{"use strict";d();c();p();f();m();gi.exports=(e,t=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof e!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if(typeof t!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(t===0)return e;let n=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(n,r.indent.repeat(t))}});var Ei=Ce((Bf,wi)=>{"use strict";d();c();p();f();m();wi.exports=({onlyFirst:e=!1}={})=>{let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}});var xi=Ce((Qf,bi)=>{"use strict";d();c();p();f();m();var ba=Ei();bi.exports=e=>typeof e=="string"?e.replace(ba(),""):e});var Ti=Ce((zg,Ca)=>{Ca.exports={name:"@prisma/engines-version",version:"5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9",main:"index.js",types:"index.d.ts",license:"Apache-2.0",author:"Tim Suchanek ",prisma:{enginesVersion:"5a9203d0590c951969e85a7d07215503f4672eb9"},repository:{type:"git",url:"https://github.com/prisma/engines-wrapper.git",directory:"packages/engines-version"},devDependencies:{"@types/node":"18.19.15",typescript:"4.9.5"},files:["index.js","index.d.ts"],scripts:{build:"tsc -d"}}});var Ai=Ce(()=>{"use strict";d();c();p();f();m()});var dn=Ce((PP,Oo)=>{"use strict";d();c();p();f();m();Oo.exports=function(){function e(t,r,n,i,o){return tn?n+1:t+1:i===o?r:r+1}return function(t,r){if(t===r)return 0;if(t.length>r.length){var n=t;t=r,r=n}for(var i=t.length,o=r.length;i>0&&t.charCodeAt(i-1)===r.charCodeAt(o-1);)i--,o--;for(var s=0;sUr,Decimal:()=>me,Extensions:()=>Dr,MetricsClient:()=>Ge,NotFoundError:()=>Ee,PrismaClientInitializationError:()=>D,PrismaClientKnownRequestError:()=>J,PrismaClientRustPanicError:()=>be,PrismaClientUnknownRequestError:()=>W,PrismaClientValidationError:()=>G,Public:()=>Br,Sql:()=>re,defineDmmfProperty:()=>Ci,detectRuntime:()=>Ie,empty:()=>Si,getPrismaClient:()=>bs,join:()=>Ri,makeStrictEnum:()=>xs,objectEnumValues:()=>Qt,raw:()=>Zr,sqltag:()=>Xr,warnEnvConflicts:()=>void 0,warnOnce:()=>mt});module.exports=kr(Gu);d();c();p();f();m();var Dr={};st(Dr,{defineExtension:()=>jn,getExtensionContext:()=>Qn});d();c();p();f();m();d();c();p();f();m();function jn(e){return typeof e=="function"?e:t=>t.$extends(e)}d();c();p();f();m();function Qn(e){return e}var Br={};st(Br,{validator:()=>Jn});d();c();p();f();m();d();c();p();f();m();function Jn(...e){return t=>t}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var $r,Hn,Kn,zn,Yn=!0;typeof y<"u"&&({FORCE_COLOR:$r,NODE_DISABLE_COLORS:Hn,NO_COLOR:Kn,TERM:zn}=y.env||{},Yn=y.stdout&&y.stdout.isTTY);var ia={enabled:!Hn&&Kn==null&&zn!=="dumb"&&($r!=null&&$r!=="0"||Yn)};function q(e,t){let r=new RegExp(`\\x1b\\[${t}m`,"g"),n=`\x1B[${e}m`,i=`\x1B[${t}m`;return function(o){return!ia.enabled||o==null?o:n+(~(""+o).indexOf(i)?o.replace(r,i+n):o)+i}}var Qc=q(0,0),Nt=q(1,22),Ft=q(2,22),Jc=q(3,23),Zn=q(4,24),Wc=q(7,27),Gc=q(8,28),Hc=q(9,29),Kc=q(30,39),Je=q(31,39),Xn=q(32,39),Dt=q(33,39),ei=q(34,39),zc=q(35,39),ti=q(36,39),Yc=q(37,39),ri=q(90,39),Zc=q(90,39),Xc=q(40,49),ep=q(41,49),tp=q(42,49),rp=q(43,49),np=q(44,49),ip=q(45,49),op=q(46,49),sp=q(47,49);d();c();p();f();m();var aa=100,li=["green","yellow","blue","magenta","cyan","red"],qt=[],ui=Date.now(),la=0;globalThis.DEBUG??=y.env.DEBUG??"";globalThis.DEBUG_COLORS??=y.env.DEBUG_COLORS?y.env.DEBUG_COLORS==="true":!0;var lt={enable(e){typeof e=="string"&&(globalThis.DEBUG=e)},disable(){let e=globalThis.DEBUG;return globalThis.DEBUG="",e},enabled(e){let t=globalThis.DEBUG.split(",").map(i=>i.replace(/[.+?^${}()|[\]\\]/g,"\\$&")),r=t.some(i=>i===""||i[0]==="-"?!1:e.match(RegExp(i.split("*").join(".*")+"$"))),n=t.some(i=>i===""||i[0]!=="-"?!1:e.match(RegExp(i.slice(1).split("*").join(".*")+"$")));return r&&!n},log:(...e)=>{let[t,r,...n]=e,i;typeof require=="function"&&typeof y<"u"&&typeof y.stderr<"u"&&typeof y.stderr.write=="function"?i=(...o)=>{let s=(Bt(),kr(qr));y.stderr.write(s.format(...o)+` +`)}:i=console.warn??console.log,i(`${t} ${r}`,...n)},formatters:{}};function ua(e){let t={color:li[la++%li.length],enabled:lt.enabled(e),namespace:e,log:lt.log,extend:()=>{}},r=(...n)=>{let{enabled:i,namespace:o,color:s,log:a}=t;if(n.length!==0&&qt.push([o,...n]),qt.length>aa&&qt.shift(),lt.enabled(o)||i){let l=n.map(g=>typeof g=="string"?g:ca(g)),u=`+${Date.now()-ui}ms`;ui=Date.now(),a(o,...l,u)}};return new Proxy(r,{get:(n,i)=>t[i],set:(n,i,o)=>t[i]=o})}var Ur=new Proxy(ua,{get:(e,t)=>lt[t],set:(e,t,r)=>lt[t]=r});function ca(e,t=2){let r=new Set;return JSON.stringify(e,(n,i)=>{if(typeof i=="object"&&i!==null){if(r.has(i))return"[Circular *]";r.add(i)}else if(typeof i=="bigint")return i.toString();return i},t)}function ci(){qt.length=0}var oe=Ur;d();c();p();f();m();d();c();p();f();m();var Vr=["darwin","darwin-arm64","debian-openssl-1.0.x","debian-openssl-1.1.x","debian-openssl-3.0.x","rhel-openssl-1.0.x","rhel-openssl-1.1.x","rhel-openssl-3.0.x","linux-arm64-openssl-1.1.x","linux-arm64-openssl-1.0.x","linux-arm64-openssl-3.0.x","linux-arm-openssl-1.1.x","linux-arm-openssl-1.0.x","linux-arm-openssl-3.0.x","linux-musl","linux-musl-openssl-3.0.x","linux-musl-arm64-openssl-1.1.x","linux-musl-arm64-openssl-3.0.x","linux-nixos","linux-static-x64","linux-static-arm64","windows","freebsd11","freebsd12","freebsd13","freebsd14","freebsd15","openbsd","netbsd","arm"];d();c();p();f();m();var mi="library";function ct(e){let t=ga();return t||(e?.config.engineType==="library"?"library":e?.config.engineType==="binary"?"binary":mi)}function ga(){let e=y.env.PRISMA_CLIENT_ENGINE_TYPE;return e==="library"?"library":e==="binary"?"binary":void 0}d();c();p();f();m();d();c();p();f();m();var Fe;(t=>{let e;(k=>(k.findUnique="findUnique",k.findUniqueOrThrow="findUniqueOrThrow",k.findFirst="findFirst",k.findFirstOrThrow="findFirstOrThrow",k.findMany="findMany",k.create="create",k.createMany="createMany",k.update="update",k.updateMany="updateMany",k.upsert="upsert",k.delete="delete",k.deleteMany="deleteMany",k.groupBy="groupBy",k.count="count",k.aggregate="aggregate",k.findRaw="findRaw",k.aggregateRaw="aggregateRaw"))(e=t.ModelAction||={})})(Fe||={});var ft={};st(ft,{error:()=>wa,info:()=>ya,log:()=>ha,query:()=>Ea,should:()=>yi,tags:()=>pt,warn:()=>jr});d();c();p();f();m();var pt={error:Je("prisma:error"),warn:Dt("prisma:warn"),info:ti("prisma:info"),query:ei("prisma:query")},yi={warn:()=>!y.env.PRISMA_DISABLE_WARNINGS};function ha(...e){console.log(...e)}function jr(e,...t){yi.warn()&&console.warn(`${pt.warn} ${e}`,...t)}function ya(e,...t){console.info(`${pt.info} ${e}`,...t)}function wa(e,...t){console.error(`${pt.error} ${e}`,...t)}function Ea(e,...t){console.log(`${pt.query} ${e}`,...t)}d();c();p();f();m();function Vt(e,t){if(!e)throw new Error(`${t}. This should never happen. If you see this error, please, open an issue at https://pris.ly/prisma-prisma-bug-report`)}d();c();p();f();m();function De(e,t){throw new Error(t)}d();c();p();f();m();function Qr(e,t){return Object.prototype.hasOwnProperty.call(e,t)}d();c();p();f();m();var Jr=(e,t)=>e.reduce((r,n)=>(r[t(n)]=n,r),{});d();c();p();f();m();function We(e,t){let r={};for(let n of Object.keys(e))r[n]=t(e[n],n);return r}d();c();p();f();m();function Wr(e,t){if(e.length===0)return;let r=e[0];for(let n=1;n{vi.has(e)||(vi.add(e),jr(t,...r))};d();c();p();f();m();var J=class extends Error{constructor(t,{code:r,clientVersion:n,meta:i,batchRequestIdx:o}){super(t),this.name="PrismaClientKnownRequestError",this.code=r,this.clientVersion=n,this.meta=i,Object.defineProperty(this,"batchRequestIdx",{value:o,enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return"PrismaClientKnownRequestError"}};X(J,"PrismaClientKnownRequestError");var Ee=class extends J{constructor(t,r){super(t,{code:"P2025",clientVersion:r}),this.name="NotFoundError"}};X(Ee,"NotFoundError");d();c();p();f();m();var D=class e extends Error{constructor(t,r,n){super(t),this.name="PrismaClientInitializationError",this.clientVersion=r,this.errorCode=n,Error.captureStackTrace(e)}get[Symbol.toStringTag](){return"PrismaClientInitializationError"}};X(D,"PrismaClientInitializationError");d();c();p();f();m();var be=class extends Error{constructor(t,r){super(t),this.name="PrismaClientRustPanicError",this.clientVersion=r}get[Symbol.toStringTag](){return"PrismaClientRustPanicError"}};X(be,"PrismaClientRustPanicError");d();c();p();f();m();var W=class extends Error{constructor(t,{clientVersion:r,batchRequestIdx:n}){super(t),this.name="PrismaClientUnknownRequestError",this.clientVersion=r,Object.defineProperty(this,"batchRequestIdx",{value:n,writable:!0,enumerable:!1})}get[Symbol.toStringTag](){return"PrismaClientUnknownRequestError"}};X(W,"PrismaClientUnknownRequestError");d();c();p();f();m();var G=class extends Error{constructor(r,{clientVersion:n}){super(r);this.name="PrismaClientValidationError";this.clientVersion=n}get[Symbol.toStringTag](){return"PrismaClientValidationError"}};X(G,"PrismaClientValidationError");d();c();p();f();m();var Ge=class{constructor(t){this._engine=t}prometheus(t){return this._engine.metrics({format:"prometheus",...t})}json(t){return this._engine.metrics({format:"json",...t})}};d();c();p();f();m();d();c();p();f();m();function dt(e){let t;return{get(){return t||(t={value:e()}),t.value}}}function Ci(e,t){let r=dt(()=>xa(t));Object.defineProperty(e,"dmmf",{get:()=>r.get()})}function xa(e){throw new Error("Prisma.dmmf is not available when running in edge runtimes.")}function Gr(e){return Object.entries(e).map(([t,r])=>({name:t,...r}))}d();c();p();f();m();var jt=Symbol(),Hr=new WeakMap,xe=class{constructor(t){t===jt?Hr.set(this,`Prisma.${this._getName()}`):Hr.set(this,`new Prisma.${this._getNamespace()}.${this._getName()}()`)}_getName(){return this.constructor.name}toString(){return Hr.get(this)}},gt=class extends xe{_getNamespace(){return"NullTypes"}},ht=class extends gt{};Kr(ht,"DbNull");var yt=class extends gt{};Kr(yt,"JsonNull");var wt=class extends gt{};Kr(wt,"AnyNull");var Qt={classes:{DbNull:ht,JsonNull:yt,AnyNull:wt},instances:{DbNull:new ht(jt),JsonNull:new yt(jt),AnyNull:new wt(jt)}};function Kr(e,t){Object.defineProperty(e,"name",{value:t,configurable:!0})}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();function Et(e){return{ok:!1,error:e,map(){return Et(e)},flatMap(){return Et(e)}}}var zr=class{constructor(){this.registeredErrors=[]}consumeError(t){return this.registeredErrors[t]}registerNewError(t){let r=0;for(;this.registeredErrors[r]!==void 0;)r++;return this.registeredErrors[r]={error:t},r}},Yr=e=>{let t=new zr,r=Be(t,e.startTransaction.bind(e)),n={errorRegistry:t,queryRaw:Be(t,e.queryRaw.bind(e)),executeRaw:Be(t,e.executeRaw.bind(e)),provider:e.provider,startTransaction:async(...i)=>(await r(...i)).map(s=>va(t,s))};return e.getConnectionInfo&&(n.getConnectionInfo=Pa(t,e.getConnectionInfo.bind(e))),n},va=(e,t)=>({provider:t.provider,options:t.options,queryRaw:Be(e,t.queryRaw.bind(t)),executeRaw:Be(e,t.executeRaw.bind(t)),commit:Be(e,t.commit.bind(t)),rollback:Be(e,t.rollback.bind(t))});function Be(e,t){return async(...r)=>{try{return await t(...r)}catch(n){let i=e.registerNewError(n);return Et({kind:"GenericJs",id:i})}}}function Pa(e,t){return(...r)=>{try{return t(...r)}catch(n){let i=e.registerNewError(n);return Et({kind:"GenericJs",id:i})}}}var Es=Le(Ti());var IA=Le(Ai());di();Gn();fi();d();c();p();f();m();var re=class e{constructor(t,r){if(t.length-1!==r.length)throw t.length===0?new TypeError("Expected at least 1 string"):new TypeError(`Expected ${t.length} strings to have ${t.length-1} values`);let n=r.reduce((s,a)=>s+(a instanceof e?a.values.length:1),0);this.values=new Array(n),this.strings=new Array(n+1),this.strings[0]=t[0];let i=0,o=0;for(;ie.getPropertyValue(r))},getPropertyDescriptor(r){return e.getPropertyDescriptor?.(r)}}}d();c();p();f();m();Bt();d();c();p();f();m();var Jt={enumerable:!0,configurable:!0,writable:!0};function Wt(e){let t=new Set(e);return{getOwnPropertyDescriptor:()=>Jt,has:(r,n)=>t.has(n),set:(r,n,i)=>t.add(n)&&Reflect.set(r,n,i),ownKeys:()=>[...t]}}var ki=Symbol.for("nodejs.util.inspect.custom");function pe(e,t){let r=Ta(t),n=new Set,i=new Proxy(e,{get(o,s){if(n.has(s))return o[s];let a=r.get(s);return a?a.getPropertyValue(s):o[s]},has(o,s){if(n.has(s))return!0;let a=r.get(s);return a?a.has?.(s)??!0:Reflect.has(o,s)},ownKeys(o){let s=Mi(Reflect.ownKeys(o),r),a=Mi(Array.from(r.keys()),r);return[...new Set([...s,...a,...n])]},set(o,s,a){return r.get(s)?.getPropertyDescriptor?.(s)?.writable===!1?!1:(n.add(s),Reflect.set(o,s,a))},getOwnPropertyDescriptor(o,s){let a=Reflect.getOwnPropertyDescriptor(o,s);if(a&&!a.configurable)return a;let l=r.get(s);return l?l.getPropertyDescriptor?{...Jt,...l?.getPropertyDescriptor(s)}:Jt:a},defineProperty(o,s,a){return n.add(s),Reflect.defineProperty(o,s,a)}});return i[ki]=function(o,s,a=$t){let l={...this};return delete l[ki],a(l,s)},i}function Ta(e){let t=new Map;for(let r of e){let n=r.getKeys();for(let i of n)t.set(i,r)}return t}function Mi(e,t){return e.filter(r=>t.get(r)?.has?.(r)??!0)}d();c();p();f();m();function xt(e){return{getKeys(){return e},has(){return!1},getPropertyValue(){}}}d();c();p();f();m();function Gt(e,t){return{batch:e,transaction:t?.kind==="batch"?{isolationLevel:t.options.isolationLevel}:void 0}}d();c();p();f();m();d();c();p();f();m();var He=class{constructor(t=0,r){this.context=r;this.lines=[];this.currentLine="";this.currentIndent=0;this.currentIndent=t}write(t){return typeof t=="string"?this.currentLine+=t:t.write(this),this}writeJoined(t,r){let n=r.length-1;for(let i=0;i0&&this.currentIndent--,this}addMarginSymbol(t){return this.marginSymbol=t,this}toString(){return this.lines.concat(this.indentedCurrentLine()).join(` +`)}getCurrentLineLength(){return this.currentLine.length}indentedCurrentLine(){let t=this.currentLine.padStart(this.currentLine.length+2*this.currentIndent);return this.marginSymbol?this.marginSymbol+t.slice(1):t}};d();c();p();f();m();d();c();p();f();m();function Oi(e){return e.substring(0,1).toLowerCase()+e.substring(1)}d();c();p();f();m();function Ke(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function Ht(e){return e.toString()!=="Invalid Date"}d();c();p();f();m();d();c();p();f();m();var ze=9e15,ke=1e9,en="0123456789abcdef",zt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Yt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",tn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-ze,maxE:ze,crypto:!1},Ni,ve,L=!0,Xt="[DecimalError] ",Se=Xt+"Invalid argument: ",Fi=Xt+"Precision limit exceeded",Di=Xt+"crypto unavailable",Bi="[object Decimal]",Z=Math.floor,j=Math.pow,Aa=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Ra=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Sa=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,$i=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,le=1e7,O=7,ka=9007199254740991,Ma=zt.length-1,rn=Yt.length-1,T={toStringTag:Bi};T.absoluteValue=T.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),M(e)};T.ceil=function(){return M(new this.constructor(this),this.e+1,2)};T.clampedTo=T.clamp=function(e,t){var r,n=this,i=n.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(Se+t);return r=n.cmp(e),r<0?e:n.cmp(t)>0?t:new i(n)};T.comparedTo=T.cmp=function(e){var t,r,n,i,o=this,s=o.d,a=(e=new o.constructor(e)).d,l=o.s,u=e.s;if(!s||!a)return!l||!u?NaN:l!==u?l:s===a?0:!s^l<0?1:-1;if(!s[0]||!a[0])return s[0]?l:a[0]?-u:0;if(l!==u)return l;if(o.e!==e.e)return o.e>e.e^l<0?1:-1;for(n=s.length,i=a.length,t=0,r=na[t]^l<0?1:-1;return n===i?0:n>i^l<0?1:-1};T.cosine=T.cos=function(){var e,t,r=this,n=r.constructor;return r.d?r.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+O,n.rounding=1,r=Oa(n,Qi(n,r)),n.precision=e,n.rounding=t,M(ve==2||ve==3?r.neg():r,e,t,!0)):new n(1):new n(NaN)};T.cubeRoot=T.cbrt=function(){var e,t,r,n,i,o,s,a,l,u,g=this,h=g.constructor;if(!g.isFinite()||g.isZero())return new h(g);for(L=!1,o=g.s*j(g.s*g,1/3),!o||Math.abs(o)==1/0?(r=z(g.d),e=g.e,(o=(e-r.length+1)%3)&&(r+=o==1||o==-2?"0":"00"),o=j(r,1/3),e=Z((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?r="5e"+e:(r=o.toExponential(),r=r.slice(0,r.indexOf("e")+1)+e),n=new h(r),n.s=g.s):n=new h(o.toString()),s=(e=h.precision)+3;;)if(a=n,l=a.times(a).times(a),u=l.plus(g),n=B(u.plus(g).times(a),u.plus(l),s+2,1),z(a.d).slice(0,s)===(r=z(n.d)).slice(0,s))if(r=r.slice(s-3,s+1),r=="9999"||!i&&r=="4999"){if(!i&&(M(a,e+1,0),a.times(a).times(a).eq(g))){n=a;break}s+=4,i=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(M(n,e+1,1),t=!n.times(n).times(n).eq(g));break}return L=!0,M(n,e,h.rounding,t)};T.decimalPlaces=T.dp=function(){var e,t=this.d,r=NaN;if(t){if(e=t.length-1,r=(e-Z(this.e/O))*O,e=t[e],e)for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r};T.dividedBy=T.div=function(e){return B(this,new this.constructor(e))};T.dividedToIntegerBy=T.divToInt=function(e){var t=this,r=t.constructor;return M(B(t,new r(e),0,1,1),r.precision,r.rounding)};T.equals=T.eq=function(e){return this.cmp(e)===0};T.floor=function(){return M(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(e){return this.cmp(e)>0};T.greaterThanOrEqualTo=T.gte=function(e){var t=this.cmp(e);return t==1||t===0};T.hyperbolicCosine=T.cosh=function(){var e,t,r,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;r=s.precision,n=s.rounding,s.precision=r+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(e=Math.ceil(i/3),t=(1/tr(4,e)).toString()):(e=16,t="2.3283064365386962890625e-10"),o=Ye(s,1,o.times(t),new s(1),!0);for(var l,u=e,g=new s(8);u--;)l=o.times(o),o=a.minus(l.times(g.minus(l.times(g))));return M(o,s.precision=r,s.rounding=n,!0)};T.hyperbolicSine=T.sinh=function(){var e,t,r,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(t=o.precision,r=o.rounding,o.precision=t+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=Ye(o,2,i,i,!0);else{e=1.4*Math.sqrt(n),e=e>16?16:e|0,i=i.times(1/tr(5,e)),i=Ye(o,2,i,i,!0);for(var s,a=new o(5),l=new o(16),u=new o(20);e--;)s=i.times(i),i=i.times(a.plus(s.times(l.times(s).plus(u))))}return o.precision=t,o.rounding=r,M(i,t,r,!0)};T.hyperbolicTangent=T.tanh=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+7,n.rounding=1,B(r.sinh(),r.cosh(),n.precision=e,n.rounding=t)):new n(r.s)};T.inverseCosine=T.acos=function(){var e,t=this,r=t.constructor,n=t.abs().cmp(1),i=r.precision,o=r.rounding;return n!==-1?n===0?t.isNeg()?ae(r,i,o):new r(0):new r(NaN):t.isZero()?ae(r,i+4,o).times(.5):(r.precision=i+6,r.rounding=1,t=t.asin(),e=ae(r,i+4,o).times(.5),r.precision=i,r.rounding=o,e.minus(t))};T.inverseHyperbolicCosine=T.acosh=function(){var e,t,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,L=!1,r=r.times(r).minus(1).sqrt().plus(r),L=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)};T.inverseHyperbolicSine=T.asinh=function(){var e,t,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,L=!1,r=r.times(r).plus(1).sqrt().plus(r),L=!0,n.precision=e,n.rounding=t,r.ln())};T.inverseHyperbolicTangent=T.atanh=function(){var e,t,r,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=o.precision,t=o.rounding,n=i.sd(),Math.max(n,e)<2*-i.e-1?M(new o(i),e,t,!0):(o.precision=r=n-i.e,i=B(i.plus(1),new o(1).minus(i),r+e,1),o.precision=e+4,o.rounding=1,i=i.ln(),o.precision=e,o.rounding=t,i.times(.5))):new o(NaN)};T.inverseSine=T.asin=function(){var e,t,r,n,i=this,o=i.constructor;return i.isZero()?new o(i):(t=i.abs().cmp(1),r=o.precision,n=o.rounding,t!==-1?t===0?(e=ae(o,r+4,n).times(.5),e.s=i.s,e):new o(NaN):(o.precision=r+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=r,o.rounding=n,i.times(2)))};T.inverseTangent=T.atan=function(){var e,t,r,n,i,o,s,a,l,u=this,g=u.constructor,h=g.precision,E=g.rounding;if(u.isFinite()){if(u.isZero())return new g(u);if(u.abs().eq(1)&&h+4<=rn)return s=ae(g,h+4,E).times(.25),s.s=u.s,s}else{if(!u.s)return new g(NaN);if(h+4<=rn)return s=ae(g,h+4,E).times(.5),s.s=u.s,s}for(g.precision=a=h+10,g.rounding=1,r=Math.min(28,a/O+2|0),e=r;e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(L=!1,t=Math.ceil(a/O),n=1,l=u.times(u),s=new g(u),i=u;e!==-1;)if(i=i.times(l),o=s.minus(i.div(n+=2)),i=i.times(l),s=o.plus(i.div(n+=2)),s.d[t]!==void 0)for(e=t;s.d[e]===o.d[e]&&e--;);return r&&(s=s.times(2<this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(e){return this.cmp(e)<0};T.lessThanOrEqualTo=T.lte=function(e){return this.cmp(e)<1};T.logarithm=T.log=function(e){var t,r,n,i,o,s,a,l,u=this,g=u.constructor,h=g.precision,E=g.rounding,S=5;if(e==null)e=new g(10),t=!0;else{if(e=new g(e),r=e.d,e.s<0||!r||!r[0]||e.eq(1))return new g(NaN);t=e.eq(10)}if(r=u.d,u.s<0||!r||!r[0]||u.eq(1))return new g(r&&!r[0]?-1/0:u.s!=1?NaN:r?0:1/0);if(t)if(r.length>1)o=!0;else{for(i=r[0];i%10===0;)i/=10;o=i!==1}if(L=!1,a=h+S,s=Re(u,a),n=t?Zt(g,a+10):Re(e,a),l=B(s,n,a,1),vt(l.d,i=h,E))do if(a+=10,s=Re(u,a),n=t?Zt(g,a+10):Re(e,a),l=B(s,n,a,1),!o){+z(l.d).slice(i+1,i+15)+1==1e14&&(l=M(l,h+1,0));break}while(vt(l.d,i+=10,E));return L=!0,M(l,h,E)};T.minus=T.sub=function(e){var t,r,n,i,o,s,a,l,u,g,h,E,S=this,A=S.constructor;if(e=new A(e),!S.d||!e.d)return!S.s||!e.s?e=new A(NaN):S.d?e.s=-e.s:e=new A(e.d||S.s!==e.s?S:NaN),e;if(S.s!=e.s)return e.s=-e.s,S.plus(e);if(u=S.d,E=e.d,a=A.precision,l=A.rounding,!u[0]||!E[0]){if(E[0])e.s=-e.s;else if(u[0])e=new A(S);else return new A(l===3?-0:0);return L?M(e,a,l):e}if(r=Z(e.e/O),g=Z(S.e/O),u=u.slice(),o=g-r,o){for(h=o<0,h?(t=u,o=-o,s=E.length):(t=E,r=g,s=u.length),n=Math.max(Math.ceil(a/O),s)+2,o>n&&(o=n,t.length=1),t.reverse(),n=o;n--;)t.push(0);t.reverse()}else{for(n=u.length,s=E.length,h=n0;--n)u[s++]=0;for(n=E.length;n>o;){if(u[--n]s?o+1:s+1,i>s&&(i=s,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for(s=u.length,i=g.length,s-i<0&&(i=s,r=g,g=u,u=r),t=0;i;)t=(u[--i]=u[i]+g[i]+t)/le|0,u[i]%=le;for(t&&(u.unshift(t),++n),s=u.length;u[--s]==0;)u.pop();return e.d=u,e.e=er(u,n),L?M(e,a,l):e};T.precision=T.sd=function(e){var t,r=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(Se+e);return r.d?(t=qi(r.d),e&&r.e+1>t&&(t=r.e+1)):t=NaN,t};T.round=function(){var e=this,t=e.constructor;return M(new t(e),e.e+1,t.rounding)};T.sine=T.sin=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+O,n.rounding=1,r=_a(n,Qi(n,r)),n.precision=e,n.rounding=t,M(ve>2?r.neg():r,e,t,!0)):new n(NaN)};T.squareRoot=T.sqrt=function(){var e,t,r,n,i,o,s=this,a=s.d,l=s.e,u=s.s,g=s.constructor;if(u!==1||!a||!a[0])return new g(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(L=!1,u=Math.sqrt(+s),u==0||u==1/0?(t=z(a),(t.length+l)%2==0&&(t+="0"),u=Math.sqrt(t),l=Z((l+1)/2)-(l<0||l%2),u==1/0?t="5e"+l:(t=u.toExponential(),t=t.slice(0,t.indexOf("e")+1)+l),n=new g(t)):n=new g(u.toString()),r=(l=g.precision)+3;;)if(o=n,n=o.plus(B(s,o,r+2,1)).times(.5),z(o.d).slice(0,r)===(t=z(n.d)).slice(0,r))if(t=t.slice(r-3,r+1),t=="9999"||!i&&t=="4999"){if(!i&&(M(o,l+1,0),o.times(o).eq(s))){n=o;break}r+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(M(n,l+1,1),e=!n.times(n).eq(s));break}return L=!0,M(n,l,g.rounding,e)};T.tangent=T.tan=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,r=r.sin(),r.s=1,r=B(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,M(ve==2||ve==4?r.neg():r,e,t,!0)):new n(NaN)};T.times=T.mul=function(e){var t,r,n,i,o,s,a,l,u,g=this,h=g.constructor,E=g.d,S=(e=new h(e)).d;if(e.s*=g.s,!E||!E[0]||!S||!S[0])return new h(!e.s||E&&!E[0]&&!S||S&&!S[0]&&!E?NaN:!E||!S?e.s/0:e.s*0);for(r=Z(g.e/O)+Z(e.e/O),l=E.length,u=S.length,l=0;){for(t=0,i=l+n;i>n;)a=o[i]+S[n]*E[i-n-1]+t,o[i--]=a%le|0,t=a/le|0;o[i]=(o[i]+t)%le|0}for(;!o[--s];)o.pop();return t?++r:o.shift(),e.d=o,e.e=er(o,r),L?M(e,h.precision,h.rounding):e};T.toBinary=function(e,t){return sn(this,2,e,t)};T.toDecimalPlaces=T.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(ne(e,0,ke),t===void 0?t=n.rounding:ne(t,0,8),M(r,e+r.e+1,t))};T.toExponential=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=fe(n,!0):(ne(e,0,ke),t===void 0?t=i.rounding:ne(t,0,8),n=M(new i(n),e+1,t),r=fe(n,!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r};T.toFixed=function(e,t){var r,n,i=this,o=i.constructor;return e===void 0?r=fe(i):(ne(e,0,ke),t===void 0?t=o.rounding:ne(t,0,8),n=M(new o(i),e+i.e+1,t),r=fe(n,!1,e+n.e+1)),i.isNeg()&&!i.isZero()?"-"+r:r};T.toFraction=function(e){var t,r,n,i,o,s,a,l,u,g,h,E,S=this,A=S.d,R=S.constructor;if(!A)return new R(S);if(u=r=new R(1),n=l=new R(0),t=new R(n),o=t.e=qi(A)-S.e-1,s=o%O,t.d[0]=j(10,s<0?O+s:s),e==null)e=o>0?t:u;else{if(a=new R(e),!a.isInt()||a.lt(u))throw Error(Se+a);e=a.gt(t)?o>0?t:u:a}for(L=!1,a=new R(z(A)),g=R.precision,R.precision=o=A.length*O*2;h=B(a,t,0,1,1),i=r.plus(h.times(n)),i.cmp(e)!=1;)r=n,n=i,i=u,u=l.plus(h.times(i)),l=i,i=t,t=a.minus(h.times(i)),a=i;return i=B(e.minus(r),n,0,1,1),l=l.plus(i.times(u)),r=r.plus(i.times(n)),l.s=u.s=S.s,E=B(u,n,o,1).minus(S).abs().cmp(B(l,r,o,1).minus(S).abs())<1?[u,n]:[l,r],R.precision=g,L=!0,E};T.toHexadecimal=T.toHex=function(e,t){return sn(this,16,e,t)};T.toNearest=function(e,t){var r=this,n=r.constructor;if(r=new n(r),e==null){if(!r.d)return r;e=new n(1),t=n.rounding}else{if(e=new n(e),t===void 0?t=n.rounding:ne(t,0,8),!r.d)return e.s?r:e;if(!e.d)return e.s&&(e.s=r.s),e}return e.d[0]?(L=!1,r=B(r,e,0,t,1).times(e),L=!0,M(r)):(e.s=r.s,r=e),r};T.toNumber=function(){return+this};T.toOctal=function(e,t){return sn(this,8,e,t)};T.toPower=T.pow=function(e){var t,r,n,i,o,s,a=this,l=a.constructor,u=+(e=new l(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new l(j(+a,u));if(a=new l(a),a.eq(1))return a;if(n=l.precision,o=l.rounding,e.eq(1))return M(a,n,o);if(t=Z(e.e/O),t>=e.d.length-1&&(r=u<0?-u:u)<=ka)return i=Ui(l,a,r,n),e.s<0?new l(1).div(i):M(i,n,o);if(s=a.s,s<0){if(tl.maxE+1||t0?s/0:0):(L=!1,l.rounding=a.s=1,r=Math.min(12,(t+"").length),i=nn(e.times(Re(a,n+r)),n),i.d&&(i=M(i,n+5,1),vt(i.d,n,o)&&(t=n+10,i=M(nn(e.times(Re(a,t+r)),t),t+5,1),+z(i.d).slice(n+1,n+15)+1==1e14&&(i=M(i,n+1,0)))),i.s=s,L=!0,l.rounding=o,M(i,n,o))};T.toPrecision=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=fe(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(ne(e,1,ke),t===void 0?t=i.rounding:ne(t,0,8),n=M(new i(n),e,t),r=fe(n,e<=n.e||n.e<=i.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r};T.toSignificantDigits=T.toSD=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(ne(e,1,ke),t===void 0?t=n.rounding:ne(t,0,8)),M(new n(r),e,t)};T.toString=function(){var e=this,t=e.constructor,r=fe(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+r:r};T.truncated=T.trunc=function(){return M(new this.constructor(this),this.e+1,1)};T.valueOf=T.toJSON=function(){var e=this,t=e.constructor,r=fe(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+r:r};function z(e){var t,r,n,i=e.length-1,o="",s=e[0];if(i>0){for(o+=s,t=1;tr)throw Error(Se+e)}function vt(e,t,r,n){var i,o,s,a;for(o=e[0];o>=10;o/=10)--t;return--t<0?(t+=O,i=0):(i=Math.ceil((t+1)/O),t%=O),o=j(10,O-t),a=e[i]%o|0,n==null?t<3?(t==0?a=a/100|0:t==1&&(a=a/10|0),s=r<4&&a==99999||r>3&&a==49999||a==5e4||a==0):s=(r<4&&a+1==o||r>3&&a+1==o/2)&&(e[i+1]/o/100|0)==j(10,t-2)-1||(a==o/2||a==0)&&(e[i+1]/o/100|0)==0:t<4?(t==0?a=a/1e3|0:t==1?a=a/100|0:t==2&&(a=a/10|0),s=(n||r<4)&&a==9999||!n&&r>3&&a==4999):s=((n||r<4)&&a+1==o||!n&&r>3&&a+1==o/2)&&(e[i+1]/o/1e3|0)==j(10,t-3)-1,s}function Kt(e,t,r){for(var n,i=[0],o,s=0,a=e.length;sr-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/r|0,i[n]%=r)}return i.reverse()}function Oa(e,t){var r,n,i;if(t.isZero())return t;n=t.d.length,n<32?(r=Math.ceil(n/3),i=(1/tr(4,r)).toString()):(r=16,i="2.3283064365386962890625e-10"),e.precision+=r,t=Ye(e,1,t.times(i),new e(1));for(var o=r;o--;){var s=t.times(t);t=s.times(s).minus(s).times(8).plus(1)}return e.precision-=r,t}var B=function(){function e(n,i,o){var s,a=0,l=n.length;for(n=n.slice();l--;)s=n[l]*i+a,n[l]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function t(n,i,o,s){var a,l;if(o!=s)l=o>s?1:-1;else for(a=l=0;ai[a]?1:-1;break}return l}function r(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]1;)n.shift()}return function(n,i,o,s,a,l){var u,g,h,E,S,A,R,I,_,F,k,N,ie,V,Ar,kt,ot,Rr,se,Mt,Ot=n.constructor,Sr=n.s==i.s?1:-1,Y=n.d,$=i.d;if(!Y||!Y[0]||!$||!$[0])return new Ot(!n.s||!i.s||(Y?$&&Y[0]==$[0]:!$)?NaN:Y&&Y[0]==0||!$?Sr*0:Sr/0);for(l?(S=1,g=n.e-i.e):(l=le,S=O,g=Z(n.e/S)-Z(i.e/S)),se=$.length,ot=Y.length,_=new Ot(Sr),F=_.d=[],h=0;$[h]==(Y[h]||0);h++);if($[h]>(Y[h]||0)&&g--,o==null?(V=o=Ot.precision,s=Ot.rounding):a?V=o+(n.e-i.e)+1:V=o,V<0)F.push(1),A=!0;else{if(V=V/S+2|0,h=0,se==1){for(E=0,$=$[0],V++;(h1&&($=e($,E,l),Y=e(Y,E,l),se=$.length,ot=Y.length),kt=se,k=Y.slice(0,se),N=k.length;N=l/2&&++Rr;do E=0,u=t($,k,se,N),u<0?(ie=k[0],se!=N&&(ie=ie*l+(k[1]||0)),E=ie/Rr|0,E>1?(E>=l&&(E=l-1),R=e($,E,l),I=R.length,N=k.length,u=t(R,k,I,N),u==1&&(E--,r(R,se=10;E/=10)h++;_.e=h+g*S-1,M(_,a?o+_.e+1:o,s,A)}return _}}();function M(e,t,r,n){var i,o,s,a,l,u,g,h,E,S=e.constructor;e:if(t!=null){if(h=e.d,!h)return e;for(i=1,a=h[0];a>=10;a/=10)i++;if(o=t-i,o<0)o+=O,s=t,g=h[E=0],l=g/j(10,i-s-1)%10|0;else if(E=Math.ceil((o+1)/O),a=h.length,E>=a)if(n){for(;a++<=E;)h.push(0);g=l=0,i=1,o%=O,s=o-O+1}else break e;else{for(g=a=h[E],i=1;a>=10;a/=10)i++;o%=O,s=o-O+i,l=s<0?0:g/j(10,i-s-1)%10|0}if(n=n||t<0||h[E+1]!==void 0||(s<0?g:g%j(10,i-s-1)),u=r<4?(l||n)&&(r==0||r==(e.s<0?3:2)):l>5||l==5&&(r==4||n||r==6&&(o>0?s>0?g/j(10,i-s):0:h[E-1])%10&1||r==(e.s<0?8:7)),t<1||!h[0])return h.length=0,u?(t-=e.e+1,h[0]=j(10,(O-t%O)%O),e.e=-t||0):h[0]=e.e=0,e;if(o==0?(h.length=E,a=1,E--):(h.length=E+1,a=j(10,O-o),h[E]=s>0?(g/j(10,i-s)%j(10,s)|0)*a:0),u)for(;;)if(E==0){for(o=1,s=h[0];s>=10;s/=10)o++;for(s=h[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(e.e++,h[0]==le&&(h[0]=1));break}else{if(h[E]+=a,h[E]!=le)break;h[E--]=0,a=1}for(o=h.length;h[--o]===0;)h.pop()}return L&&(e.e>S.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+Ae(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):i<0?(o="0."+Ae(-i-1)+o,r&&(n=r-s)>0&&(o+=Ae(n))):i>=s?(o+=Ae(i+1-s),r&&(n=r-i-1)>0&&(o=o+"."+Ae(n))):((n=i+1)0&&(i+1===s&&(o+="."),o+=Ae(n))),o}function er(e,t){var r=e[0];for(t*=O;r>=10;r/=10)t++;return t}function Zt(e,t,r){if(t>Ma)throw L=!0,r&&(e.precision=r),Error(Fi);return M(new e(zt),t,1,!0)}function ae(e,t,r){if(t>rn)throw Error(Fi);return M(new e(Yt),t,r,!0)}function qi(e){var t=e.length-1,r=t*O+1;if(t=e[t],t){for(;t%10==0;t/=10)r--;for(t=e[0];t>=10;t/=10)r++}return r}function Ae(e){for(var t="";e--;)t+="0";return t}function Ui(e,t,r,n){var i,o=new e(1),s=Math.ceil(n/O+4);for(L=!1;;){if(r%2&&(o=o.times(t),_i(o.d,s)&&(i=!0)),r=Z(r/2),r===0){r=o.d.length-1,i&&o.d[r]===0&&++o.d[r];break}t=t.times(t),_i(t.d,s)}return L=!0,o}function Ii(e){return e.d[e.d.length-1]&1}function Vi(e,t,r){for(var n,i=new e(t[0]),o=0;++o17)return new E(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(t==null?(L=!1,l=A):l=t,a=new E(.03125);e.e>-2;)e=e.times(a),h+=5;for(n=Math.log(j(2,h))/Math.LN10*2+5|0,l+=n,r=o=s=new E(1),E.precision=l;;){if(o=M(o.times(e),l,1),r=r.times(++g),a=s.plus(B(o,r,l,1)),z(a.d).slice(0,l)===z(s.d).slice(0,l)){for(i=h;i--;)s=M(s.times(s),l,1);if(t==null)if(u<3&&vt(s.d,l-n,S,u))E.precision=l+=10,r=o=a=new E(1),g=0,u++;else return M(s,E.precision=A,S,L=!0);else return E.precision=A,s}s=a}}function Re(e,t){var r,n,i,o,s,a,l,u,g,h,E,S=1,A=10,R=e,I=R.d,_=R.constructor,F=_.rounding,k=_.precision;if(R.s<0||!I||!I[0]||!R.e&&I[0]==1&&I.length==1)return new _(I&&!I[0]?-1/0:R.s!=1?NaN:I?0:R);if(t==null?(L=!1,g=k):g=t,_.precision=g+=A,r=z(I),n=r.charAt(0),Math.abs(o=R.e)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)R=R.times(e),r=z(R.d),n=r.charAt(0),S++;o=R.e,n>1?(R=new _("0."+r),o++):R=new _(n+"."+r.slice(1))}else return u=Zt(_,g+2,k).times(o+""),R=Re(new _(n+"."+r.slice(1)),g-A).plus(u),_.precision=k,t==null?M(R,k,F,L=!0):R;for(h=R,l=s=R=B(R.minus(1),R.plus(1),g,1),E=M(R.times(R),g,1),i=3;;){if(s=M(s.times(E),g,1),u=l.plus(B(s,new _(i),g,1)),z(u.d).slice(0,g)===z(l.d).slice(0,g))if(l=l.times(2),o!==0&&(l=l.plus(Zt(_,g+2,k).times(o+""))),l=B(l,new _(S),g,1),t==null)if(vt(l.d,g-A,F,a))_.precision=g+=A,u=s=R=B(h.minus(1),h.plus(1),g,1),E=M(R.times(R),g,1),i=a=1;else return M(l,_.precision=k,F,L=!0);else return _.precision=k,l;l=u,i+=2}}function ji(e){return String(e.s*e.s/0)}function on(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;t.charCodeAt(n)===48;n++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(n,i),t){if(i-=n,e.e=r=r-n-1,e.d=[],n=(r+1)%O,r<0&&(n+=O),ne.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),$i.test(t))return on(e,t)}else if(t==="Infinity"||t==="NaN")return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(Ra.test(t))r=16,t=t.toLowerCase();else if(Aa.test(t))r=2;else if(Sa.test(t))r=8;else throw Error(Se+t);for(o=t.search(/p/i),o>0?(l=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),o=t.indexOf("."),s=o>=0,n=e.constructor,s&&(t=t.replace(".",""),a=t.length,o=a-o,i=Ui(n,new n(r),o,o*2)),u=Kt(t,r,le),g=u.length-1,o=g;u[o]===0;--o)u.pop();return o<0?new n(e.s*0):(e.e=er(u,g),e.d=u,L=!1,s&&(e=B(e,i,a*4)),l&&(e=e.times(Math.abs(l)<54?j(2,l):qe.pow(2,l))),L=!0,e)}function _a(e,t){var r,n=t.d.length;if(n<3)return t.isZero()?t:Ye(e,2,t,t);r=1.4*Math.sqrt(n),r=r>16?16:r|0,t=t.times(1/tr(5,r)),t=Ye(e,2,t,t);for(var i,o=new e(5),s=new e(16),a=new e(20);r--;)i=t.times(t),t=t.times(o.plus(i.times(s.times(i).minus(a))));return t}function Ye(e,t,r,n,i){var o,s,a,l,u=1,g=e.precision,h=Math.ceil(g/O);for(L=!1,l=r.times(r),a=new e(n);;){if(s=B(a.times(l),new e(t++*t++),g,1),a=i?n.plus(s):n.minus(s),n=B(s.times(l),new e(t++*t++),g,1),s=a.plus(n),s.d[h]!==void 0){for(o=h;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return L=!0,s.d.length=h+1,s}function tr(e,t){for(var r=e;--t;)r*=e;return r}function Qi(e,t){var r,n=t.s<0,i=ae(e,e.precision,1),o=i.times(.5);if(t=t.abs(),t.lte(o))return ve=n?4:1,t;if(r=t.divToInt(i),r.isZero())ve=n?3:2;else{if(t=t.minus(r.times(i)),t.lte(o))return ve=Ii(r)?n?2:3:n?4:1,t;ve=Ii(r)?n?1:4:n?3:2}return t.minus(i).abs()}function sn(e,t,r,n){var i,o,s,a,l,u,g,h,E,S=e.constructor,A=r!==void 0;if(A?(ne(r,1,ke),n===void 0?n=S.rounding:ne(n,0,8)):(r=S.precision,n=S.rounding),!e.isFinite())g=ji(e);else{for(g=fe(e),s=g.indexOf("."),A?(i=2,t==16?r=r*4-3:t==8&&(r=r*3-2)):i=t,s>=0&&(g=g.replace(".",""),E=new S(1),E.e=g.length-s,E.d=Kt(fe(E),10,i),E.e=E.d.length),h=Kt(g,10,i),o=l=h.length;h[--l]==0;)h.pop();if(!h[0])g=A?"0p+0":"0";else{if(s<0?o--:(e=new S(e),e.d=h,e.e=o,e=B(e,E,r,n,0,i),h=e.d,o=e.e,u=Ni),s=h[r],a=i/2,u=u||h[r+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(e.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&h[r-1]&1||n===(e.s<0?8:7)),h.length=r,u)for(;++h[--r]>i-1;)h[r]=0,r||(++o,h.unshift(1));for(l=h.length;!h[l-1];--l);for(s=0,g="";s1)if(t==16||t==8){for(s=t==16?4:3,--l;l%s;l++)g+="0";for(h=Kt(g,i,t),l=h.length;!h[l-1];--l);for(s=1,g="1.";sl)for(o-=l;o--;)g+="0";else ot)return e.length=t,!0}function La(e){return new this(e).abs()}function Na(e){return new this(e).acos()}function Fa(e){return new this(e).acosh()}function Da(e,t){return new this(e).plus(t)}function Ba(e){return new this(e).asin()}function $a(e){return new this(e).asinh()}function qa(e){return new this(e).atan()}function Ua(e){return new this(e).atanh()}function Va(e,t){e=new this(e),t=new this(t);var r,n=this.precision,i=this.rounding,o=n+4;return!e.s||!t.s?r=new this(NaN):!e.d&&!t.d?(r=ae(this,o,1).times(t.s>0?.25:.75),r.s=e.s):!t.d||e.isZero()?(r=t.s<0?ae(this,n,i):new this(0),r.s=e.s):!e.d||t.isZero()?(r=ae(this,o,1).times(.5),r.s=e.s):t.s<0?(this.precision=o,this.rounding=1,r=this.atan(B(e,t,o,1)),t=ae(this,o,1),this.precision=n,this.rounding=i,r=e.s<0?r.minus(t):r.plus(t)):r=this.atan(B(e,t,o,1)),r}function ja(e){return new this(e).cbrt()}function Qa(e){return M(e=new this(e),e.e+1,2)}function Ja(e,t,r){return new this(e).clamp(t,r)}function Wa(e){if(!e||typeof e!="object")throw Error(Xt+"Object expected");var t,r,n,i=e.defaults===!0,o=["precision",1,ke,"rounding",0,8,"toExpNeg",-ze,0,"toExpPos",0,ze,"maxE",0,ze,"minE",-ze,0,"modulo",0,9];for(t=0;t=o[t+1]&&n<=o[t+2])this[r]=n;else throw Error(Se+r+": "+n);if(r="crypto",i&&(this[r]=tn[r]),(n=e[r])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[r]=!0;else throw Error(Di);else this[r]=!1;else throw Error(Se+r+": "+n);return this}function Ga(e){return new this(e).cos()}function Ha(e){return new this(e).cosh()}function Ji(e){var t,r,n;function i(o){var s,a,l,u=this;if(!(u instanceof i))return new i(o);if(u.constructor=i,Li(o)){u.s=o.s,L?!o.d||o.e>i.maxE?(u.e=NaN,u.d=null):o.e=10;a/=10)s++;L?s>i.maxE?(u.e=NaN,u.d=null):s=429e7?t[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(n*=4);o=214e7?crypto.randomBytes(4).copy(t,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(Di);else for(;o=10;i/=10)n++;n`}};function Xe(e){return e instanceof Pt}d();c();p();f();m();d();c();p();f();m();var rr=class{constructor(t){this.value=t}write(t){t.write(this.value)}markAsError(){this.value.markAsError()}};d();c();p();f();m();var nr=e=>e,ir={bold:nr,red:nr,green:nr,dim:nr,enabled:!1},Wi={bold:Nt,red:Je,green:Xn,dim:Ft,enabled:!0},et={write(e){e.writeLine(",")}};d();c();p();f();m();var de=class{constructor(t){this.contents=t;this.isUnderlined=!1;this.color=t=>t}underline(){return this.isUnderlined=!0,this}setColor(t){return this.color=t,this}write(t){let r=t.getCurrentLineLength();t.write(this.color(this.contents)),this.isUnderlined&&t.afterNextNewline(()=>{t.write(" ".repeat(r)).writeLine(this.color("~".repeat(this.contents.length)))})}};d();c();p();f();m();var Me=class{constructor(){this.hasError=!1}markAsError(){return this.hasError=!0,this}};var tt=class extends Me{constructor(){super(...arguments);this.items=[]}addItem(r){return this.items.push(new rr(r)),this}getField(r){return this.items[r]}getPrintWidth(){return this.items.length===0?2:Math.max(...this.items.map(n=>n.value.getPrintWidth()))+2}write(r){if(this.items.length===0){this.writeEmpty(r);return}this.writeWithItems(r)}writeEmpty(r){let n=new de("[]");this.hasError&&n.setColor(r.context.colors.red).underline(),r.write(n)}writeWithItems(r){let{colors:n}=r.context;r.writeLine("[").withIndent(()=>r.writeJoined(et,this.items).newLine()).write("]"),this.hasError&&r.afterNextNewline(()=>{r.writeLine(n.red("~".repeat(this.getPrintWidth())))})}};d();c();p();f();m();var Gi=": ",or=class{constructor(t,r){this.name=t;this.value=r;this.hasError=!1}markAsError(){this.hasError=!0}getPrintWidth(){return this.name.length+this.value.getPrintWidth()+Gi.length}write(t){let r=new de(this.name);this.hasError&&r.underline().setColor(t.context.colors.red),t.write(r).write(Gi).write(this.value)}};d();c();p();f();m();var H=class e extends Me{constructor(){super(...arguments);this.fields={};this.suggestions=[]}addField(r){this.fields[r.name]=r}addSuggestion(r){this.suggestions.push(r)}getField(r){return this.fields[r]}getDeepField(r){let[n,...i]=r,o=this.getField(n);if(!o)return;let s=o;for(let a of i){let l;if(s.value instanceof e?l=s.value.getField(a):s.value instanceof tt&&(l=s.value.getField(Number(a))),!l)return;s=l}return s}getDeepFieldValue(r){return r.length===0?this:this.getDeepField(r)?.value}hasField(r){return!!this.getField(r)}removeAllFields(){this.fields={}}removeField(r){delete this.fields[r]}getFields(){return this.fields}isEmpty(){return Object.keys(this.fields).length===0}getFieldValue(r){return this.getField(r)?.value}getDeepSubSelectionValue(r){let n=this;for(let i of r){if(!(n instanceof e))return;let o=n.getSubSelectionValue(i);if(!o)return;n=o}return n}getDeepSelectionParent(r){let n=this.getSelectionParent();if(!n)return;let i=n;for(let o of r){let s=i.value.getFieldValue(o);if(!s||!(s instanceof e))return;let a=s.getSelectionParent();if(!a)return;i=a}return i}getSelectionParent(){let r=this.getField("select");if(r?.value instanceof e)return{kind:"select",value:r.value};let n=this.getField("include");if(n?.value instanceof e)return{kind:"include",value:n.value}}getSubSelectionValue(r){return this.getSelectionParent()?.value.fields[r].value}getPrintWidth(){let r=Object.values(this.fields);return r.length==0?2:Math.max(...r.map(i=>i.getPrintWidth()))+2}write(r){let n=Object.values(this.fields);if(n.length===0&&this.suggestions.length===0){this.writeEmpty(r);return}this.writeWithContents(r,n)}writeEmpty(r){let n=new de("{}");this.hasError&&n.setColor(r.context.colors.red).underline(),r.write(n)}writeWithContents(r,n){r.writeLine("{").withIndent(()=>{r.writeJoined(et,[...n,...this.suggestions]).newLine()}),r.write("}"),this.hasError&&r.afterNextNewline(()=>{r.writeLine(r.context.colors.red("~".repeat(this.getPrintWidth())))})}};d();c();p();f();m();var K=class extends Me{constructor(r){super();this.text=r}getPrintWidth(){return this.text.length}write(r){let n=new de(this.text);this.hasError&&n.underline().setColor(r.context.colors.red),r.write(n)}};var an=class{constructor(t){this.errorMessages=[];this.arguments=t}write(t){t.write(this.arguments)}addErrorMessage(t){this.errorMessages.push(t)}renderAllMessages(t){return this.errorMessages.map(r=>r(t)).join(` +`)}};function sr(e){return new an(Hi(e))}function Hi(e){let t=new H;for(let[r,n]of Object.entries(e)){let i=new or(r,Ki(n));t.addField(i)}return t}function Ki(e){if(typeof e=="string")return new K(JSON.stringify(e));if(typeof e=="number"||typeof e=="boolean")return new K(String(e));if(typeof e=="bigint")return new K(`${e}n`);if(e===null)return new K("null");if(e===void 0)return new K("undefined");if(Ze(e))return new K(`new Prisma.Decimal("${e.toFixed()}")`);if(e instanceof Uint8Array)return w.Buffer.isBuffer(e)?new K(`Buffer.alloc(${e.byteLength})`):new K(`new Uint8Array(${e.byteLength})`);if(e instanceof Date){let t=Ht(e)?e.toISOString():"Invalid Date";return new K(`new Date("${t}")`)}return e instanceof xe?new K(`Prisma.${e._getName()}`):Xe(e)?new K(`prisma.${Oi(e.modelName)}.$fields.${e.name}`):Array.isArray(e)?bl(e):typeof e=="object"?Hi(e):new K(Object.prototype.toString.call(e))}function bl(e){let t=new tt;for(let r of e)t.addItem(Ki(r));return t}function zi(e){if(e===void 0)return"";let t=sr(e);return new He(0,{colors:ir}).write(t).toString()}d();c();p();f();m();var xl="P2037";function ar({error:e,user_facing_error:t},r,n){return t.error_code?new J(vl(t,n),{code:t.error_code,clientVersion:r,meta:t.meta,batchRequestIdx:t.batch_request_idx}):new W(e,{clientVersion:r,batchRequestIdx:t.batch_request_idx})}function vl(e,t){let r=e.message;return(t==="postgresql"||t==="postgres"||t==="mysql")&&e.error_code===xl&&(r+=` +Prisma Accelerate has built-in connection pooling to prevent such errors: https://pris.ly/client/error-accelerate`),r}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var ln=class{getLocation(){return null}};function Oe(e){return typeof $EnabledCallSite=="function"&&e!=="minimal"?new $EnabledCallSite:new ln}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var Yi={_avg:!0,_count:!0,_sum:!0,_min:!0,_max:!0};function rt(e={}){let t=Cl(e);return Object.entries(t).reduce((n,[i,o])=>(Yi[i]!==void 0?n.select[i]={select:o}:n[i]=o,n),{select:{}})}function Cl(e={}){return typeof e._count=="boolean"?{...e,_count:{_all:e._count}}:e}function lr(e={}){return t=>(typeof e._count=="boolean"&&(t._count=t._count._all),t)}function Zi(e,t){let r=lr(e);return t({action:"aggregate",unpacker:r,argsMapper:rt})(e)}d();c();p();f();m();function Tl(e={}){let{select:t,...r}=e;return typeof t=="object"?rt({...r,_count:t}):rt({...r,_count:{_all:!0}})}function Al(e={}){return typeof e.select=="object"?t=>lr(e)(t)._count:t=>lr(e)(t)._count._all}function Xi(e,t){return t({action:"count",unpacker:Al(e),argsMapper:Tl})(e)}d();c();p();f();m();function Rl(e={}){let t=rt(e);if(Array.isArray(t.by))for(let r of t.by)typeof r=="string"&&(t.select[r]=!0);else typeof t.by=="string"&&(t.select[t.by]=!0);return t}function Sl(e={}){return t=>(typeof e?._count=="boolean"&&t.forEach(r=>{r._count=r._count._all}),t)}function eo(e,t){return t({action:"groupBy",unpacker:Sl(e),argsMapper:Rl})(e)}function to(e,t,r){if(t==="aggregate")return n=>Zi(n,r);if(t==="count")return n=>Xi(n,r);if(t==="groupBy")return n=>eo(n,r)}d();c();p();f();m();function ro(e,t){let r=t.fields.filter(i=>!i.relationName),n=Jr(r,i=>i.name);return new Proxy({},{get(i,o){if(o in i||typeof o=="symbol")return i[o];let s=n[o];if(s)return new Pt(e,o,s.type,s.isList,s.kind==="enum")},...Wt(Object.keys(n))})}d();c();p();f();m();d();c();p();f();m();var no=e=>Array.isArray(e)?e:e.split("."),un=(e,t)=>no(t).reduce((r,n)=>r&&r[n],e),io=(e,t,r)=>no(t).reduceRight((n,i,o,s)=>Object.assign({},un(e,s.slice(0,o)),{[i]:n}),r);function kl(e,t){return e===void 0||t===void 0?[]:[...t,"select",e]}function Ml(e,t,r){return t===void 0?e??{}:io(t,r,e||!0)}function cn(e,t,r,n,i,o){let a=e._runtimeDataModel.models[t].fields.reduce((l,u)=>({...l,[u.name]:u}),{});return l=>{let u=Oe(e._errorFormat),g=kl(n,i),h=Ml(l,o,g),E=r({dataPath:g,callsite:u})(h),S=Ol(e,t);return new Proxy(E,{get(A,R){if(!S.includes(R))return A[R];let _=[a[R].type,r,R],F=[g,h];return cn(e,..._,...F)},...Wt([...S,...Object.getOwnPropertyNames(E)])})}}function Ol(e,t){return e._runtimeDataModel.models[t].fields.filter(r=>r.kind==="object").map(r=>r.name)}d();c();p();f();m();d();c();p();f();m();var Il=Le(hi());var _l={red:Je,gray:ri,dim:Ft,bold:Nt,underline:Zn,highlightSource:e=>e.highlight()},Ll={red:e=>e,gray:e=>e,dim:e=>e,bold:e=>e,underline:e=>e,highlightSource:e=>e};function Nl({message:e,originalMethod:t,isPanic:r,callArguments:n}){return{functionName:`prisma.${t}()`,message:e,isPanic:r??!1,callArguments:n}}function Fl({functionName:e,location:t,message:r,isPanic:n,contextLines:i,callArguments:o},s){let a=[""],l=t?" in":":";if(n?(a.push(s.red(`Oops, an unknown error occurred! This is ${s.bold("on us")}, you did nothing wrong.`)),a.push(s.red(`It occurred in the ${s.bold(`\`${e}\``)} invocation${l}`))):a.push(s.red(`Invalid ${s.bold(`\`${e}\``)} invocation${l}`)),t&&a.push(s.underline(Dl(t))),i){a.push("");let u=[i.toString()];o&&(u.push(o),u.push(s.dim(")"))),a.push(u.join("")),o&&a.push("")}else a.push(""),o&&a.push(o),a.push("");return a.push(r),a.join(` +`)}function Dl(e){let t=[e.fileName];return e.lineNumber&&t.push(String(e.lineNumber)),e.columnNumber&&t.push(String(e.columnNumber)),t.join(":")}function nt(e){let t=e.showColors?_l:Ll,r;return typeof $getTemplateParameters<"u"?r=$getTemplateParameters(e,t):r=Nl(e),Fl(r,t)}function oo(e,t,r,n){return e===Fe.ModelAction.findFirstOrThrow||e===Fe.ModelAction.findUniqueOrThrow?Bl(t,r,n):n}function Bl(e,t,r){return async n=>{if("rejectOnNotFound"in n.args){let o=nt({originalMethod:n.clientMethod,callsite:n.callsite,message:"'rejectOnNotFound' option is not supported"});throw new G(o,{clientVersion:t})}return await r(n).catch(o=>{throw o instanceof J&&o.code==="P2025"?new Ee(`No ${e} found`,t):o})}}d();c();p();f();m();function ge(e){return e.replace(/^./,t=>t.toLowerCase())}var $l=["findUnique","findUniqueOrThrow","findFirst","findFirstOrThrow","create","update","upsert","delete"],ql=["aggregate","count","groupBy"];function pn(e,t){let r=e._extensions.getAllModelExtensions(t)??{},n=[Ul(e,t),jl(e,t),bt(r),ee("name",()=>t),ee("$name",()=>t),ee("$parent",()=>e._appliedParent)];return pe({},n)}function Ul(e,t){let r=ge(t),n=Object.keys(Fe.ModelAction).concat("count");return{getKeys(){return n},getPropertyValue(i){let o=i,s=l=>e._request(l);s=oo(o,t,e._clientVersion,s);let a=l=>u=>{let g=Oe(e._errorFormat);return e._createPrismaPromise(h=>{let E={args:u,dataPath:[],action:o,model:t,clientMethod:`${r}.${i}`,jsModelName:r,transaction:h,callsite:g};return s({...E,...l})})};return $l.includes(o)?cn(e,t,a):Vl(i)?to(e,i,a):a({})}}}function Vl(e){return ql.includes(e)}function jl(e,t){return $e(ee("fields",()=>{let r=e._runtimeDataModel.models[t];return ro(t,r)}))}d();c();p();f();m();function so(e){return e.replace(/^./,t=>t.toUpperCase())}var fn=Symbol();function Ct(e){let t=[Ql(e),ee(fn,()=>e),ee("$parent",()=>e._appliedParent)],r=e._extensions.getAllClientExtensions();return r&&t.push(bt(r)),pe(e,t)}function Ql(e){let t=Object.keys(e._runtimeDataModel.models),r=t.map(ge),n=[...new Set(t.concat(r))];return $e({getKeys(){return n},getPropertyValue(i){let o=so(i);if(e._runtimeDataModel.models[o]!==void 0)return pn(e,o);if(e._runtimeDataModel.models[i]!==void 0)return pn(e,i)},getPropertyDescriptor(i){if(!r.includes(i))return{enumerable:!1}}})}function ao(e){return e[fn]?e[fn]:e}function lo(e){if(typeof e=="function")return e(this);if(e.client?.__AccelerateEngine){let r=e.client.__AccelerateEngine;this._originalClient._engine=new r(this._originalClient._accelerateEngineConfig)}let t=Object.create(this._originalClient,{_extensions:{value:this._extensions.append(e)},_appliedParent:{value:this,configurable:!0},$use:{value:void 0},$on:{value:void 0}});return Ct(t)}d();c();p();f();m();d();c();p();f();m();function uo({result:e,modelName:t,select:r,extensions:n}){let i=n.getAllComputedFields(t);if(!i)return e;let o=[],s=[];for(let a of Object.values(i)){if(r){if(!r[a.name])continue;let l=a.needs.filter(u=>!r[u]);l.length>0&&s.push(xt(l))}Jl(e,a.needs)&&o.push(Wl(a,pe(e,o)))}return o.length>0||s.length>0?pe(e,[...o,...s]):e}function Jl(e,t){return t.every(r=>Qr(e,r))}function Wl(e,t){return $e(ee(e.name,()=>e.compute(t)))}d();c();p();f();m();function ur({visitor:e,result:t,args:r,runtimeDataModel:n,modelName:i}){if(Array.isArray(t)){for(let s=0;sg.name===o);if(!l||l.kind!=="object"||!l.relationName)continue;let u=typeof s=="object"?s:{};t[o]=ur({visitor:i,result:t[o],args:u,modelName:l.type,runtimeDataModel:n})}}function po({result:e,modelName:t,args:r,extensions:n,runtimeDataModel:i}){return n.isEmpty()||e==null||typeof e!="object"||!i.models[t]?e:ur({result:e,args:r??{},modelName:t,runtimeDataModel:i,visitor:(s,a,l)=>uo({result:s,modelName:ge(a),select:l.select,extensions:n})})}d();c();p();f();m();d();c();p();f();m();function fo(e){if(e instanceof re)return Gl(e);if(Array.isArray(e)){let r=[e[0]];for(let n=1;n{let o=t.customDataProxyFetch;return"transaction"in t&&i!==void 0&&(t.transaction?.kind==="batch"&&t.transaction.lock.then(),t.transaction=i),n===r.length?e._executeRequest(t):r[n]({model:t.model,operation:t.model?t.action:t.clientMethod,args:fo(t.args??{}),__internalParams:t,query:(s,a=t)=>{let l=a.customDataProxyFetch;return a.customDataProxyFetch=Eo(o,l),a.args=s,go(e,a,r,n+1)}})})}function ho(e,t){let{jsModelName:r,action:n,clientMethod:i}=t,o=r?n:i;if(e._extensions.isEmpty())return e._executeRequest(t);let s=e._extensions.getAllQueryCallbacks(r??"$none",o);return go(e,t,s)}function yo(e){return t=>{let r={requests:t},n=t[0].extensions.getAllBatchQueryCallbacks();return n.length?wo(r,n,0,e):e(r)}}function wo(e,t,r,n){if(r===t.length)return n(e);let i=e.customDataProxyFetch,o=e.requests[0].transaction;return t[r]({args:{queries:e.requests.map(s=>({model:s.modelName,operation:s.action,args:s.args})),transaction:o?{isolationLevel:o.kind==="batch"?o.isolationLevel:void 0}:void 0},__internalParams:e,query(s,a=e){let l=a.customDataProxyFetch;return a.customDataProxyFetch=Eo(i,l),wo(a,t,r+1,n)}})}var mo=e=>e;function Eo(e=mo,t=mo){return r=>e(t(r))}d();c();p();f();m();d();c();p();f();m();function xo(e,t,r){let n=ge(r);return!t.result||!(t.result.$allModels||t.result[n])?e:Hl({...e,...bo(t.name,e,t.result.$allModels),...bo(t.name,e,t.result[n])})}function Hl(e){let t=new ce,r=(n,i)=>t.getOrCreate(n,()=>i.has(n)?[n]:(i.add(n),e[n]?e[n].needs.flatMap(o=>r(o,i)):[n]));return We(e,n=>({...n,needs:r(n.name,new Set)}))}function bo(e,t,r){return r?We(r,({needs:n,compute:i},o)=>({name:o,needs:n?Object.keys(n).filter(s=>n[s]):[],compute:Kl(t,o,i)})):{}}function Kl(e,t,r){let n=e?.[t]?.compute;return n?i=>r({...i,[t]:n(i)}):r}function vo(e,t){if(!t)return e;let r={...e};for(let n of Object.values(t))if(e[n.name])for(let i of n.needs)r[i]=!0;return r}var cr=class{constructor(t,r){this.extension=t;this.previous=r;this.computedFieldsCache=new ce;this.modelExtensionsCache=new ce;this.queryCallbacksCache=new ce;this.clientExtensions=dt(()=>this.extension.client?{...this.previous?.getAllClientExtensions(),...this.extension.client}:this.previous?.getAllClientExtensions());this.batchCallbacks=dt(()=>{let t=this.previous?.getAllBatchQueryCallbacks()??[],r=this.extension.query?.$__internalBatch;return r?t.concat(r):t})}getAllComputedFields(t){return this.computedFieldsCache.getOrCreate(t,()=>xo(this.previous?.getAllComputedFields(t),this.extension,t))}getAllClientExtensions(){return this.clientExtensions.get()}getAllModelExtensions(t){return this.modelExtensionsCache.getOrCreate(t,()=>{let r=ge(t);return!this.extension.model||!(this.extension.model[r]||this.extension.model.$allModels)?this.previous?.getAllModelExtensions(t):{...this.previous?.getAllModelExtensions(t),...this.extension.model.$allModels,...this.extension.model[r]}})}getAllQueryCallbacks(t,r){return this.queryCallbacksCache.getOrCreate(`${t}:${r}`,()=>{let n=this.previous?.getAllQueryCallbacks(t,r)??[],i=[],o=this.extension.query;return!o||!(o[t]||o.$allModels||o[r]||o.$allOperations)?n:(o[t]!==void 0&&(o[t][r]!==void 0&&i.push(o[t][r]),o[t].$allOperations!==void 0&&i.push(o[t].$allOperations)),t!=="$none"&&o.$allModels!==void 0&&(o.$allModels[r]!==void 0&&i.push(o.$allModels[r]),o.$allModels.$allOperations!==void 0&&i.push(o.$allModels.$allOperations)),o[r]!==void 0&&i.push(o[r]),o.$allOperations!==void 0&&i.push(o.$allOperations),n.concat(i))})}getAllBatchQueryCallbacks(){return this.batchCallbacks.get()}},pr=class e{constructor(t){this.head=t}static empty(){return new e}static single(t){return new e(new cr(t))}isEmpty(){return this.head===void 0}append(t){return new e(new cr(t,this.head))}getAllComputedFields(t){return this.head?.getAllComputedFields(t)}getAllClientExtensions(){return this.head?.getAllClientExtensions()}getAllModelExtensions(t){return this.head?.getAllModelExtensions(t)}getAllQueryCallbacks(t,r){return this.head?.getAllQueryCallbacks(t,r)??[]}getAllBatchQueryCallbacks(){return this.head?.getAllBatchQueryCallbacks()??[]}};d();c();p();f();m();var Po=oe("prisma:client"),Co={Vercel:"vercel","Netlify CI":"netlify"};function To({postinstall:e,ciName:t,clientVersion:r}){if(Po("checkPlatformCaching:postinstall",e),Po("checkPlatformCaching:ciName",t),e===!0&&t&&t in Co){let n=`Prisma has detected that this project was built on ${t}, which caches dependencies. This leads to an outdated Prisma Client because Prisma's auto-generation isn't triggered. To fix this, make sure to run the \`prisma generate\` command during the build process. + +Learn how: https://pris.ly/d/${Co[t]}-build`;throw console.error(n),new D(n,r)}}d();c();p();f();m();function Ao(e,t){return e?e.datasources?e.datasources:e.datasourceUrl?{[t[0]]:{url:e.datasourceUrl}}:{}:{}}d();c();p();f();m();d();c();p();f();m();var zl="Cloudflare-Workers",Yl="node";function Ie(){return typeof Netlify=="object"?"netlify":typeof EdgeRuntime=="string"?"edge-light":globalThis.navigator?.userAgent===zl?"workerd":globalThis.Deno?"deno":globalThis.__lagon__?"lagon":globalThis.process?.release?.name===Yl?"node":globalThis.Bun?"bun":globalThis.fastly?"fastly":"unknown"}d();c();p();f();m();d();c();p();f();m();function fr({inlineDatasources:e,overrideDatasources:t,env:r,clientVersion:n}){let i,o=Object.keys(e)[0],s=e[o]?.url,a=t[o]?.url;if(o===void 0?i=void 0:a?i=a:s?.value?i=s.value:s?.fromEnvVar&&(i=r[s.fromEnvVar]),s?.fromEnvVar!==void 0&&i===void 0)throw Ie()==="workerd"?new D(`error: Environment variable not found: ${s.fromEnvVar}. + +In Cloudflare module Workers, environment variables are available only in the Worker's \`env\` parameter of \`fetch\`. +To solve this, provide the connection string directly: https://pris.ly/d/cloudflare-datasource-url`,n):new D(`error: Environment variable not found: ${s.fromEnvVar}.`,n);if(i===void 0)throw new D("error: Missing URL environment variable, value, or override.",n);return i}d();c();p();f();m();d();c();p();f();m();function Ro(e){if(e?.kind==="itx")return e.options.id}d();c();p();f();m();var mn,So={async loadLibrary(e){let{clientVersion:t,adapter:r,engineWasm:n}=e;if(r===void 0)throw new D(`The \`adapter\` option for \`PrismaClient\` is required in this context (${Ie()})`,t);if(n===void 0)throw new D("WASM engine was unexpectedly `undefined`",t);mn===void 0&&(mn=(async()=>{let o=n.getRuntime(),s=await n.getQueryEngineWasmModule();if(s==null)throw new D("The loaded wasm module was unexpectedly `undefined` or `null` once loaded",t);let a={"./query_engine_bg.js":o},l=new WebAssembly.Instance(s,a);return o.__wbg_set_wasm(l.exports),o.QueryEngine})());let i=await mn;return{debugPanic(){return Promise.reject("{}")},dmmf(){return Promise.resolve("{}")},version(){return{commit:"unknown",version:"unknown"}},QueryEngine:i}}};var Zl="P2036",he=oe("prisma:client:libraryEngine");function Xl(e){return e.item_type==="query"&&"query"in e}function eu(e){return"level"in e?e.level==="error"&&e.message==="PANIC":!1}var Iv=[...Vr,"native"],ko=0,At=class{constructor(t,r){this.name="LibraryEngine";this.libraryLoader=r??So,this.config=t,this.libraryStarted=!1,this.logQueries=t.logQueries??!1,this.logLevel=t.logLevel??"error",this.logEmitter=t.logEmitter,this.datamodel=t.inlineSchema,t.enableDebugLogs&&(this.logLevel="debug");let n=Object.keys(t.overrideDatasources)[0],i=t.overrideDatasources[n]?.url;n!==void 0&&i!==void 0&&(this.datasourceOverrides={[n]:i}),this.libraryInstantiationPromise=this.instantiateLibrary(),this.checkForTooManyEngines()}checkForTooManyEngines(){ko===10&&console.warn(`${Dt("warn(prisma-client)")} This is the 10th instance of Prisma Client being started. Make sure this is intentional.`)}async transaction(t,r,n){await this.start();let i=JSON.stringify(r),o;if(t==="start"){let a=JSON.stringify({max_wait:n.maxWait,timeout:n.timeout,isolation_level:n.isolationLevel});o=await this.engine?.startTransaction(a,i)}else t==="commit"?o=await this.engine?.commitTransaction(n.id,i):t==="rollback"&&(o=await this.engine?.rollbackTransaction(n.id,i));let s=this.parseEngineResponse(o);if(tu(s)){let a=this.getExternalAdapterError(s);throw a?a.error:new J(s.message,{code:s.error_code,clientVersion:this.config.clientVersion,meta:s.meta})}return s}async instantiateLibrary(){if(he("internalSetup"),this.libraryInstantiationPromise)return this.libraryInstantiationPromise;this.binaryTarget=await this.getCurrentBinaryTarget(),await this.loadEngine(),this.version()}async getCurrentBinaryTarget(){}parseEngineResponse(t){if(!t)throw new W("Response from the Engine was empty",{clientVersion:this.config.clientVersion});try{return JSON.parse(t)}catch{throw new W("Unable to JSON.parse response from engine",{clientVersion:this.config.clientVersion})}}async loadEngine(){if(!this.engine){this.QueryEngineConstructor||(this.library=await this.libraryLoader.loadLibrary(this.config),this.QueryEngineConstructor=this.library.QueryEngine);try{let t=new b(this),{adapter:r}=this.config;r&&he("Using driver adapter: %O",r),this.engine=new this.QueryEngineConstructor({datamodel:this.datamodel,env:y.env,logQueries:this.config.logQueries??!1,ignoreEnvVarErrors:!0,datasourceOverrides:this.datasourceOverrides??{},logLevel:this.logLevel,configDir:this.config.cwd,engineProtocol:"json"},n=>{t.deref()?.logger(n)},r),ko++}catch(t){let r=t,n=this.parseInitError(r.message);throw typeof n=="string"?r:new D(n.message,this.config.clientVersion,n.error_code)}}}logger(t){let r=this.parseEngineResponse(t);if(r){if("span"in r){this.config.tracingHelper.createEngineSpan(r);return}r.level=r?.level.toLowerCase()??"unknown",Xl(r)?this.logEmitter.emit("query",{timestamp:new Date,query:r.query,params:r.params,duration:Number(r.duration_ms),target:r.module_path}):(eu(r),this.logEmitter.emit(r.level,{timestamp:new Date,message:r.message,target:r.module_path}))}}parseInitError(t){try{return JSON.parse(t)}catch{}return t}parseRequestError(t){try{return JSON.parse(t)}catch{}return t}onBeforeExit(){throw new Error('"beforeExit" hook is not applicable to the library engine since Prisma 5.0.0, it is only relevant and implemented for the binary engine. Please add your event listener to the `process` object directly instead.')}async start(){if(await this.libraryInstantiationPromise,await this.libraryStoppingPromise,this.libraryStartingPromise)return he(`library already starting, this.libraryStarted: ${this.libraryStarted}`),this.libraryStartingPromise;if(this.libraryStarted)return;let t=async()=>{he("library starting");try{let r={traceparent:this.config.tracingHelper.getTraceParent()};await this.engine?.connect(JSON.stringify(r)),this.libraryStarted=!0,he("library started")}catch(r){let n=this.parseInitError(r.message);throw typeof n=="string"?r:new D(n.message,this.config.clientVersion,n.error_code)}finally{this.libraryStartingPromise=void 0}};return this.libraryStartingPromise=this.config.tracingHelper.runInChildSpan("connect",t),this.libraryStartingPromise}async stop(){if(await this.libraryStartingPromise,await this.executingQueryPromise,this.libraryStoppingPromise)return he("library is already stopping"),this.libraryStoppingPromise;if(!this.libraryStarted)return;let t=async()=>{await new Promise(n=>setTimeout(n,5)),he("library stopping");let r={traceparent:this.config.tracingHelper.getTraceParent()};await this.engine?.disconnect(JSON.stringify(r)),this.libraryStarted=!1,this.libraryStoppingPromise=void 0,he("library stopped")};return this.libraryStoppingPromise=this.config.tracingHelper.runInChildSpan("disconnect",t),this.libraryStoppingPromise}version(){return this.versionInfo=this.library?.version(),this.versionInfo?.version??"unknown"}debugPanic(t){return this.library?.debugPanic(t)}async request(t,{traceparent:r,interactiveTransaction:n}){he(`sending request, this.libraryStarted: ${this.libraryStarted}`);let i=JSON.stringify({traceparent:r}),o=JSON.stringify(t);try{await this.start(),this.executingQueryPromise=this.engine?.query(o,i,n?.id),this.lastQuery=o;let s=this.parseEngineResponse(await this.executingQueryPromise);if(s.errors)throw s.errors.length===1?this.buildQueryError(s.errors[0]):new W(JSON.stringify(s.errors),{clientVersion:this.config.clientVersion});if(this.loggerRustPanic)throw this.loggerRustPanic;return{data:s,elapsed:0}}catch(s){if(s instanceof D)throw s;s.code==="GenericFailure"&&s.message?.startsWith("PANIC:");let a=this.parseRequestError(s.message);throw typeof a=="string"?s:new W(`${a.message} +${a.backtrace}`,{clientVersion:this.config.clientVersion})}}async requestBatch(t,{transaction:r,traceparent:n}){he("requestBatch");let i=Gt(t,r);await this.start(),this.lastQuery=JSON.stringify(i),this.executingQueryPromise=this.engine.query(this.lastQuery,JSON.stringify({traceparent:n}),Ro(r));let o=await this.executingQueryPromise,s=this.parseEngineResponse(o);if(s.errors)throw s.errors.length===1?this.buildQueryError(s.errors[0]):new W(JSON.stringify(s.errors),{clientVersion:this.config.clientVersion});let{batchResult:a,errors:l}=s;if(Array.isArray(a))return a.map(u=>u.errors&&u.errors.length>0?this.loggerRustPanic??this.buildQueryError(u.errors[0]):{data:u,elapsed:0});throw l&&l.length===1?new Error(l[0].error):new Error(JSON.stringify(s))}buildQueryError(t){t.user_facing_error.is_panic;let r=this.getExternalAdapterError(t.user_facing_error);return r?r.error:ar(t,this.config.clientVersion,this.config.activeProvider)}getExternalAdapterError(t){if(t.error_code===Zl&&this.config.adapter){let r=t.meta?.id;Vt(typeof r=="number","Malformed external JS error received from the engine");let n=this.config.adapter.errorRegistry.consumeError(r);return Vt(n,"External error with reported id was not registered"),n}}async metrics(t){await this.start();let r=await this.engine.metrics(JSON.stringify(t));return t.format==="prometheus"?r:this.parseEngineResponse(r)}};function tu(e){return typeof e=="object"&&e!==null&&e.error_code!==void 0}d();c();p();f();m();var mr="Accelerate has not been setup correctly. Make sure your client is using `.$extends(withAccelerate())`. See https://pris.ly/d/accelerate-getting-started",dr=class{constructor(t){this.config=t;this.name="AccelerateEngine";this.resolveDatasourceUrl=this.config.accelerateUtils?.resolveDatasourceUrl;this.getBatchRequestPayload=this.config.accelerateUtils?.getBatchRequestPayload;this.prismaGraphQLToJSError=this.config.accelerateUtils?.prismaGraphQLToJSError;this.PrismaClientUnknownRequestError=this.config.accelerateUtils?.PrismaClientUnknownRequestError;this.PrismaClientInitializationError=this.config.accelerateUtils?.PrismaClientInitializationError;this.PrismaClientKnownRequestError=this.config.accelerateUtils?.PrismaClientKnownRequestError;this.debug=this.config.accelerateUtils?.debug;this.engineVersion=this.config.accelerateUtils?.engineVersion;this.clientVersion=this.config.accelerateUtils?.clientVersion}onBeforeExit(t){}async start(){}async stop(){}version(t){return"unknown"}transaction(t,r,n){throw new D(mr,this.config.clientVersion)}metrics(t){throw new D(mr,this.config.clientVersion)}request(t,r){throw new D(mr,this.config.clientVersion)}requestBatch(t,r){throw new D(mr,this.config.clientVersion)}};function Mo({copyEngine:e=!0},t){let r;try{r=fr({inlineDatasources:t.inlineDatasources,overrideDatasources:t.overrideDatasources,env:{...t.env,...y.env},clientVersion:t.clientVersion})}catch{}e&&r?.startsWith("prisma://")&&mt("recommend--no-engine","In production, we recommend using `prisma generate --no-engine` (See: `prisma generate --help`)");let n=ct(t.generator),i=!!(r?.startsWith("prisma://")||!e),o=!!t.adapter,s=n==="library",a=n==="binary";if(i&&o||o&&!1){let l;throw e?r?.startsWith("prisma://")?l=["Prisma Client was configured to use the `adapter` option but the URL was a `prisma://` URL.","Please either use the `prisma://` URL or remove the `adapter` from the Prisma Client constructor."]:l=["Prisma Client was configured to use both the `adapter` and Accelerate, please chose one."]:l=["Prisma Client was configured to use the `adapter` option but `prisma generate` was run with `--no-engine`.","Please run `prisma generate` without `--no-engine` to be able to use Prisma Client with the adapter."],new G(l.join(` +`),{clientVersion:t.clientVersion})}if(o)return new At(t);if(i)return new dr(t);{let l=[`PrismaClient failed to initialize because it wasn't configured to run in this environment (${Ie()}).`,"In order to run Prisma Client in an edge runtime, you will need to configure Accelerate: https://pris.ly/d/accelerate."];throw new G(l.join(` +`),{clientVersion:t.clientVersion})}throw new G("Invalid client engine type, please use `library` or `binary`",{clientVersion:t.clientVersion})}d();c();p();f();m();function gr({generator:e}){return e?.previewFeatures??[]}d();c();p();f();m();d();c();p();f();m();d();c();p();f();m();var Fo=Le(dn());d();c();p();f();m();function Lo(e,t){let r=No(e),n=ru(r),i=iu(n);i?hr(i,t):t.addErrorMessage(()=>"Unknown error")}function No(e){return e.errors.flatMap(t=>t.kind==="Union"?No(t):[t])}function ru(e){let t=new Map,r=[];for(let n of e){if(n.kind!=="InvalidArgumentType"){r.push(n);continue}let i=`${n.selectionPath.join(".")}:${n.argumentPath.join(".")}`,o=t.get(i);o?t.set(i,{...n,argument:{...n.argument,typeNames:nu(o.argument.typeNames,n.argument.typeNames)}}):t.set(i,n)}return r.push(...t.values()),r}function nu(e,t){return[...new Set(e.concat(t))]}function iu(e){return Wr(e,(t,r)=>{let n=Io(t),i=Io(r);return n!==i?n-i:_o(t)-_o(r)})}function Io(e){let t=0;return Array.isArray(e.selectionPath)&&(t+=e.selectionPath.length),Array.isArray(e.argumentPath)&&(t+=e.argumentPath.length),t}function _o(e){switch(e.kind){case"InvalidArgumentValue":case"ValueTooLarge":return 20;case"InvalidArgumentType":return 10;case"RequiredArgumentMissing":return-10;default:return 0}}d();c();p();f();m();var Pe=class{constructor(t,r){this.name=t;this.value=r;this.isRequired=!1}makeRequired(){return this.isRequired=!0,this}write(t){let{colors:{green:r}}=t.context;t.addMarginSymbol(r(this.isRequired?"+":"?")),t.write(r(this.name)),this.isRequired||t.write(r("?")),t.write(r(": ")),typeof this.value=="string"?t.write(r(this.value)):t.write(this.value)}};d();c();p();f();m();var yr=class{constructor(){this.fields=[]}addField(t,r){return this.fields.push({write(n){let{green:i,dim:o}=n.context.colors;n.write(i(o(`${t}: ${r}`))).addMarginSymbol(i(o("+")))}}),this}write(t){let{colors:{green:r}}=t.context;t.writeLine(r("{")).withIndent(()=>{t.writeJoined(et,this.fields).newLine()}).write(r("}")).addMarginSymbol(r("+"))}};function hr(e,t){switch(e.kind){case"IncludeAndSelect":ou(e,t);break;case"IncludeOnScalar":su(e,t);break;case"EmptySelection":au(e,t);break;case"UnknownSelectionField":lu(e,t);break;case"UnknownArgument":uu(e,t);break;case"UnknownInputField":cu(e,t);break;case"RequiredArgumentMissing":pu(e,t);break;case"InvalidArgumentType":fu(e,t);break;case"InvalidArgumentValue":mu(e,t);break;case"ValueTooLarge":du(e,t);break;case"SomeFieldsMissing":gu(e,t);break;case"TooManyFieldsGiven":hu(e,t);break;case"Union":Lo(e,t);break;default:throw new Error("not implemented: "+e.kind)}}function ou(e,t){let r=t.arguments.getDeepSubSelectionValue(e.selectionPath);r&&r instanceof H&&(r.getField("include")?.markAsError(),r.getField("select")?.markAsError()),t.addErrorMessage(n=>`Please ${n.bold("either")} use ${n.green("`include`")} or ${n.green("`select`")}, but ${n.red("not both")} at the same time.`)}function su(e,t){let[r,n]=wr(e.selectionPath),i=e.outputType,o=t.arguments.getDeepSelectionParent(r)?.value;if(o&&(o.getField(n)?.markAsError(),i))for(let s of i.fields)s.isRelation&&o.addSuggestion(new Pe(s.name,"true"));t.addErrorMessage(s=>{let a=`Invalid scalar field ${s.red(`\`${n}\``)} for ${s.bold("include")} statement`;return i?a+=` on model ${s.bold(i.name)}. ${Rt(s)}`:a+=".",a+=` +Note that ${s.bold("include")} statements only accept relation fields.`,a})}function au(e,t){let r=e.outputType,n=t.arguments.getDeepSelectionParent(e.selectionPath)?.value,i=n?.isEmpty()??!1;n&&(n.removeAllFields(),$o(n,r)),t.addErrorMessage(o=>i?`The ${o.red("`select`")} statement for type ${o.bold(r.name)} must not be empty. ${Rt(o)}`:`The ${o.red("`select`")} statement for type ${o.bold(r.name)} needs ${o.bold("at least one truthy value")}.`)}function lu(e,t){let[r,n]=wr(e.selectionPath),i=t.arguments.getDeepSelectionParent(r);i&&(i.value.getField(n)?.markAsError(),$o(i.value,e.outputType)),t.addErrorMessage(o=>{let s=[`Unknown field ${o.red(`\`${n}\``)}`];return i&&s.push(`for ${o.bold(i.kind)} statement`),s.push(`on model ${o.bold(`\`${e.outputType.name}\``)}.`),s.push(Rt(o)),s.join(" ")})}function uu(e,t){let r=e.argumentPath[0],n=t.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof H&&(n.getField(r)?.markAsError(),yu(n,e.arguments)),t.addErrorMessage(i=>Do(i,r,e.arguments.map(o=>o.name)))}function cu(e,t){let[r,n]=wr(e.argumentPath),i=t.arguments.getDeepSubSelectionValue(e.selectionPath);if(i instanceof H){i.getDeepField(e.argumentPath)?.markAsError();let o=i.getDeepFieldValue(r);o instanceof H&&qo(o,e.inputType)}t.addErrorMessage(o=>Do(o,n,e.inputType.fields.map(s=>s.name)))}function Do(e,t,r){let n=[`Unknown argument \`${e.red(t)}\`.`],i=Eu(t,r);return i&&n.push(`Did you mean \`${e.green(i)}\`?`),r.length>0&&n.push(Rt(e)),n.join(" ")}function pu(e,t){let r;t.addErrorMessage(l=>r?.value instanceof K&&r.value.text==="null"?`Argument \`${l.green(o)}\` must not be ${l.red("null")}.`:`Argument \`${l.green(o)}\` is missing.`);let n=t.arguments.getDeepSubSelectionValue(e.selectionPath);if(!(n instanceof H))return;let[i,o]=wr(e.argumentPath),s=new yr,a=n.getDeepFieldValue(i);if(a instanceof H)if(r=a.getField(o),r&&a.removeField(o),e.inputTypes.length===1&&e.inputTypes[0].kind==="object"){for(let l of e.inputTypes[0].fields)s.addField(l.name,l.typeNames.join(" | "));a.addSuggestion(new Pe(o,s).makeRequired())}else{let l=e.inputTypes.map(Bo).join(" | ");a.addSuggestion(new Pe(o,l).makeRequired())}}function Bo(e){return e.kind==="list"?`${Bo(e.elementType)}[]`:e.name}function fu(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof H&&n.getDeepFieldValue(e.argumentPath)?.markAsError(),t.addErrorMessage(i=>{let o=Er("or",e.argument.typeNames.map(s=>i.green(s)));return`Argument \`${i.bold(r)}\`: Invalid value provided. Expected ${o}, provided ${i.red(e.inferredType)}.`})}function mu(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath);n instanceof H&&n.getDeepFieldValue(e.argumentPath)?.markAsError(),t.addErrorMessage(i=>{let o=[`Invalid value for argument \`${i.bold(r)}\``];if(e.underlyingError&&o.push(`: ${e.underlyingError}`),o.push("."),e.argument.typeNames.length>0){let s=Er("or",e.argument.typeNames.map(a=>i.green(a)));o.push(` Expected ${s}.`)}return o.join("")})}function du(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath),i;if(n instanceof H){let s=n.getDeepField(e.argumentPath)?.value;s?.markAsError(),s instanceof K&&(i=s.text)}t.addErrorMessage(o=>{let s=["Unable to fit value"];return i&&s.push(o.red(i)),s.push(`into a 64-bit signed integer for field \`${o.bold(r)}\``),s.join(" ")})}function gu(e,t){let r=e.argumentPath[e.argumentPath.length-1],n=t.arguments.getDeepSubSelectionValue(e.selectionPath);if(n instanceof H){let i=n.getDeepFieldValue(e.argumentPath);i instanceof H&&qo(i,e.inputType)}t.addErrorMessage(i=>{let o=[`Argument \`${i.bold(r)}\` of type ${i.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1?e.constraints.requiredFields?o.push(`${i.green("at least one of")} ${Er("or",e.constraints.requiredFields.map(s=>`\`${i.bold(s)}\``))} arguments.`):o.push(`${i.green("at least one")} argument.`):o.push(`${i.green(`at least ${e.constraints.minFieldCount}`)} arguments.`),o.push(Rt(i)),o.join(" ")})}function hu(e,t){let r=e.argumentPath[e.argumentPath.length-1],n=t.arguments.getDeepSubSelectionValue(e.selectionPath),i=[];if(n instanceof H){let o=n.getDeepFieldValue(e.argumentPath);o instanceof H&&(o.markAsError(),i=Object.keys(o.getFields()))}t.addErrorMessage(o=>{let s=[`Argument \`${o.bold(r)}\` of type ${o.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1&&e.constraints.maxFieldCount==1?s.push(`${o.green("exactly one")} argument,`):e.constraints.maxFieldCount==1?s.push(`${o.green("at most one")} argument,`):s.push(`${o.green(`at most ${e.constraints.maxFieldCount}`)} arguments,`),s.push(`but you provided ${Er("and",i.map(a=>o.red(a)))}. Please choose`),e.constraints.maxFieldCount===1?s.push("one."):s.push(`${e.constraints.maxFieldCount}.`),s.join(" ")})}function $o(e,t){for(let r of t.fields)e.hasField(r.name)||e.addSuggestion(new Pe(r.name,"true"))}function yu(e,t){for(let r of t)e.hasField(r.name)||e.addSuggestion(new Pe(r.name,r.typeNames.join(" | ")))}function qo(e,t){if(t.kind==="object")for(let r of t.fields)e.hasField(r.name)||e.addSuggestion(new Pe(r.name,r.typeNames.join(" | ")))}function wr(e){let t=[...e],r=t.pop();if(!r)throw new Error("unexpected empty path");return[t,r]}function Rt({green:e,enabled:t}){return"Available options are "+(t?`listed in ${e("green")}`:"marked with ?")+"."}function Er(e,t){if(t.length===1)return t[0];let r=[...t],n=r.pop();return`${r.join(", ")} ${e} ${n}`}var wu=3;function Eu(e,t){let r=1/0,n;for(let i of t){let o=(0,Fo.default)(e,i);o>wu||o({name:t.name,typeName:"boolean",isRelation:t.kind==="object"}))}}isRawAction(){return["executeRaw","queryRaw","runCommandRaw","findRaw","aggregateRaw"].includes(this.params.action)}getComputedFields(){if(this.params.modelName)return this.params.extensions.getAllComputedFields(this.params.modelName)}findField(t){return this.model?.fields.find(r=>r.name===t)}nestSelection(t){let r=this.findField(t),n=r?.kind==="object"?r.type:void 0;return new e({...this.params,modelName:n,selectionPath:this.params.selectionPath.concat(t)})}nestArgument(t){return new e({...this.params,argumentPath:this.params.argumentPath.concat(t)})}};d();c();p();f();m();var Qo=e=>({command:e});d();c();p();f();m();d();c();p();f();m();var Jo=e=>e.strings.reduce((t,r,n)=>`${t}@P${n}${r}`);d();c();p();f();m();function St(e){try{return Wo(e,"fast")}catch{return Wo(e,"slow")}}function Wo(e,t){return JSON.stringify(e.map(r=>Su(r,t)))}function Su(e,t){return typeof e=="bigint"?{prisma__type:"bigint",prisma__value:e.toString()}:Ke(e)?{prisma__type:"date",prisma__value:e.toJSON()}:me.isDecimal(e)?{prisma__type:"decimal",prisma__value:e.toJSON()}:w.Buffer.isBuffer(e)?{prisma__type:"bytes",prisma__value:e.toString("base64")}:ku(e)||ArrayBuffer.isView(e)?{prisma__type:"bytes",prisma__value:w.Buffer.from(e).toString("base64")}:typeof e=="object"&&t==="slow"?Ho(e):e}function ku(e){return e instanceof ArrayBuffer||e instanceof SharedArrayBuffer?!0:typeof e=="object"&&e!==null?e[Symbol.toStringTag]==="ArrayBuffer"||e[Symbol.toStringTag]==="SharedArrayBuffer":!1}function Ho(e){if(typeof e!="object"||e===null)return e;if(typeof e.toJSON=="function")return e.toJSON();if(Array.isArray(e))return e.map(Go);let t={};for(let r of Object.keys(e))t[r]=Go(e[r]);return t}function Go(e){return typeof e=="bigint"?e.toString():Ho(e)}var Mu=/^(\s*alter\s)/i,Ko=oe("prisma:client");function yn(e,t,r,n){if(!(e!=="postgresql"&&e!=="cockroachdb")&&r.length>0&&Mu.exec(t))throw new Error(`Running ALTER using ${n} is not supported +Using the example below you can still execute your query with Prisma, but please note that it is vulnerable to SQL injection attacks and requires you to take care of input sanitization. + +Example: + await prisma.$executeRawUnsafe(\`ALTER USER prisma WITH PASSWORD '\${password}'\`) + +More Information: https://pris.ly/d/execute-raw +`)}var wn=({clientMethod:e,activeProvider:t})=>r=>{let n="",i;if(Array.isArray(r)){let[o,...s]=r;n=o,i={values:St(s||[]),__prismaRawParameters__:!0}}else switch(t){case"sqlite":case"mysql":{n=r.sql,i={values:St(r.values),__prismaRawParameters__:!0};break}case"cockroachdb":case"postgresql":case"postgres":{n=r.text,i={values:St(r.values),__prismaRawParameters__:!0};break}case"sqlserver":{n=Jo(r),i={values:St(r.values),__prismaRawParameters__:!0};break}default:throw new Error(`The ${t} provider does not support ${e}`)}return i?.values?Ko(`prisma.${e}(${n}, ${i.values})`):Ko(`prisma.${e}(${n})`),{query:n,parameters:i}},zo={requestArgsToMiddlewareArgs(e){return[e.strings,...e.values]},middlewareArgsToRequestArgs(e){let[t,...r]=e;return new re(t,r)}},Yo={requestArgsToMiddlewareArgs(e){return[e]},middlewareArgsToRequestArgs(e){return e[0]}};d();c();p();f();m();function En(e){return function(r){let n,i=(o=e)=>{try{return o===void 0||o?.kind==="itx"?n??=Zo(r(o)):Zo(r(o))}catch(s){return Promise.reject(s)}};return{then(o,s){return i().then(o,s)},catch(o){return i().catch(o)},finally(o){return i().finally(o)},requestTransaction(o){let s=i(o);return s.requestTransaction?s.requestTransaction(o):s},[Symbol.toStringTag]:"PrismaPromise"}}}function Zo(e){return typeof e.then=="function"?e:Promise.resolve(e)}d();c();p();f();m();var Xo={isEnabled(){return!1},getTraceParent(){return"00-10-10-00"},async createEngineSpan(){},getActiveContext(){},runInChildSpan(e,t){return t()}},bn=class{isEnabled(){return this.getGlobalTracingHelper().isEnabled()}getTraceParent(t){return this.getGlobalTracingHelper().getTraceParent(t)}createEngineSpan(t){return this.getGlobalTracingHelper().createEngineSpan(t)}getActiveContext(){return this.getGlobalTracingHelper().getActiveContext()}runInChildSpan(t,r){return this.getGlobalTracingHelper().runInChildSpan(t,r)}getGlobalTracingHelper(){return globalThis.PRISMA_INSTRUMENTATION?.helper??Xo}};function es(e){return e.includes("tracing")?new bn:Xo}d();c();p();f();m();function ts(e,t=()=>{}){let r,n=new Promise(i=>r=i);return{then(i){return--e===0&&r(t()),i?.(n)}}}d();c();p();f();m();var Ou=["$connect","$disconnect","$on","$transaction","$use","$extends"],rs=Ou;d();c();p();f();m();function ns(e){return typeof e=="string"?e:e.reduce((t,r)=>{let n=typeof r=="string"?r:r.level;return n==="query"?t:t&&(r==="info"||t==="info")?"info":n},void 0)}d();c();p();f();m();var xr=class{constructor(){this._middlewares=[]}use(t){this._middlewares.push(t)}get(t){return this._middlewares[t]}has(t){return!!this._middlewares[t]}length(){return this._middlewares.length}};d();c();p();f();m();var os=Le(xi());d();c();p();f();m();function vr(e){return typeof e.batchRequestIdx=="number"}d();c();p();f();m();function Pr(e){return e===null?e:Array.isArray(e)?e.map(Pr):typeof e=="object"?Iu(e)?_u(e):We(e,Pr):e}function Iu(e){return e!==null&&typeof e=="object"&&typeof e.$type=="string"}function _u({$type:e,value:t}){switch(e){case"BigInt":return BigInt(t);case"Bytes":return w.Buffer.from(t,"base64");case"DateTime":return new Date(t);case"Decimal":return new me(t);case"Json":return JSON.parse(t);default:De(t,"Unknown tagged value")}}d();c();p();f();m();function is(e){if(e.action!=="findUnique"&&e.action!=="findUniqueOrThrow")return;let t=[];return e.modelName&&t.push(e.modelName),e.query.arguments&&t.push(xn(e.query.arguments)),t.push(xn(e.query.selection)),t.join("")}function xn(e){return`(${Object.keys(e).sort().map(r=>{let n=e[r];return typeof n=="object"&&n!==null?`(${r} ${xn(n)})`:r}).join(" ")})`}d();c();p();f();m();var Lu={aggregate:!1,aggregateRaw:!1,createMany:!0,createOne:!0,deleteMany:!0,deleteOne:!0,executeRaw:!0,findFirst:!1,findFirstOrThrow:!1,findMany:!1,findRaw:!1,findUnique:!1,findUniqueOrThrow:!1,groupBy:!1,queryRaw:!1,runCommandRaw:!0,updateMany:!0,updateOne:!0,upsertOne:!0};function vn(e){return Lu[e]}d();c();p();f();m();var Cr=class{constructor(t){this.options=t;this.tickActive=!1;this.batches={}}request(t){let r=this.options.batchBy(t);return r?(this.batches[r]||(this.batches[r]=[],this.tickActive||(this.tickActive=!0,y.nextTick(()=>{this.dispatchBatches(),this.tickActive=!1}))),new Promise((n,i)=>{this.batches[r].push({request:t,resolve:n,reject:i})})):this.options.singleLoader(t)}dispatchBatches(){for(let t in this.batches){let r=this.batches[t];delete this.batches[t],r.length===1?this.options.singleLoader(r[0].request).then(n=>{n instanceof Error?r[0].reject(n):r[0].resolve(n)}).catch(n=>{r[0].reject(n)}):(r.sort((n,i)=>this.options.batchOrder(n.request,i.request)),this.options.batchLoader(r.map(n=>n.request)).then(n=>{if(n instanceof Error)for(let i=0;i{for(let i=0;i{let{transaction:o,otelParentCtx:s}=n[0],a=n.map(h=>h.protocolQuery),l=this.client._tracingHelper.getTraceParent(s),u=n.some(h=>vn(h.protocolQuery.action));return(await this.client._engine.requestBatch(a,{traceparent:l,transaction:Fu(o),containsWrite:u,customDataProxyFetch:i})).map((h,E)=>{if(h instanceof Error)return h;try{return this.mapQueryEngineResult(n[E],h)}catch(S){return S}})}),singleLoader:async n=>{let i=n.transaction?.kind==="itx"?ss(n.transaction):void 0,o=await this.client._engine.request(n.protocolQuery,{traceparent:this.client._tracingHelper.getTraceParent(),interactiveTransaction:i,isWrite:vn(n.protocolQuery.action),customDataProxyFetch:n.customDataProxyFetch});return this.mapQueryEngineResult(n,o)},batchBy:n=>n.transaction?.id?`transaction-${n.transaction.id}`:is(n.protocolQuery),batchOrder(n,i){return n.transaction?.kind==="batch"&&i.transaction?.kind==="batch"?n.transaction.index-i.transaction.index:0}})}async request(t){try{return await this.dataloader.request(t)}catch(r){let{clientMethod:n,callsite:i,transaction:o,args:s,modelName:a}=t;this.handleAndLogRequestError({error:r,clientMethod:n,callsite:i,transaction:o,args:s,modelName:a})}}mapQueryEngineResult({dataPath:t,unpacker:r},n){let i=n?.data,o=n?.elapsed,s=this.unpack(i,t,r);return y.env.PRISMA_CLIENT_GET_TIME?{data:s,elapsed:o}:s}handleAndLogRequestError(t){try{this.handleRequestError(t)}catch(r){throw this.logEmitter&&this.logEmitter.emit("error",{message:r.message,target:t.clientMethod,timestamp:new Date}),r}}handleRequestError({error:t,clientMethod:r,callsite:n,transaction:i,args:o,modelName:s}){if(Nu(t),Du(t,i)||t instanceof Ee)throw t;if(t instanceof J&&Bu(t)){let l=as(t.meta);br({args:o,errors:[l],callsite:n,errorFormat:this.client._errorFormat,originalMethod:r,clientVersion:this.client._clientVersion})}let a=t.message;if(n&&(a=nt({callsite:n,originalMethod:r,isPanic:t.isPanic,showColors:this.client._errorFormat==="pretty",message:a})),a=this.sanitizeMessage(a),t.code){let l=s?{modelName:s,...t.meta}:t.meta;throw new J(a,{code:t.code,clientVersion:this.client._clientVersion,meta:l,batchRequestIdx:t.batchRequestIdx})}else{if(t.isPanic)throw new be(a,this.client._clientVersion);if(t instanceof W)throw new W(a,{clientVersion:this.client._clientVersion,batchRequestIdx:t.batchRequestIdx});if(t instanceof D)throw new D(a,this.client._clientVersion);if(t instanceof be)throw new be(a,this.client._clientVersion)}throw t.clientVersion=this.client._clientVersion,t}sanitizeMessage(t){return this.client._errorFormat&&this.client._errorFormat!=="pretty"?(0,os.default)(t):t}unpack(t,r,n){if(!t||(t.data&&(t=t.data),!t))return t;let i=Object.values(t)[0],o=r.filter(a=>a!=="select"&&a!=="include"),s=Pr(un(i,o));return n?n(s):s}get[Symbol.toStringTag](){return"RequestHandler"}};function Fu(e){if(e){if(e.kind==="batch")return{kind:"batch",options:{isolationLevel:e.isolationLevel}};if(e.kind==="itx")return{kind:"itx",options:ss(e)};De(e,"Unknown transaction kind")}}function ss(e){return{id:e.id,payload:e.payload}}function Du(e,t){return vr(e)&&t?.kind==="batch"&&e.batchRequestIdx!==t.index}function Bu(e){return e.code==="P2009"||e.code==="P2012"}function as(e){if(e.kind==="Union")return{kind:"Union",errors:e.errors.map(as)};if(Array.isArray(e.selectionPath)){let[,...t]=e.selectionPath;return{...e,selectionPath:t}}return e}d();c();p();f();m();var ls="5.10.2";var us=ls;d();c();p();f();m();function cs(e){return e.map(t=>{let r={};for(let n of Object.keys(t))r[n]=ps(t[n]);return r})}function ps({prisma__type:e,prisma__value:t}){switch(e){case"bigint":return BigInt(t);case"bytes":return w.Buffer.from(t,"base64");case"decimal":return new me(t);case"datetime":case"date":return new Date(t);case"time":return new Date(`1970-01-01T${t}Z`);case"array":return t.map(ps);default:return t}}d();c();p();f();m();var gs=Le(dn());d();c();p();f();m();var U=class extends Error{constructor(t){super(t+` +Read more at https://pris.ly/d/client-constructor`),this.name="PrismaClientConstructorValidationError"}get[Symbol.toStringTag](){return"PrismaClientConstructorValidationError"}};X(U,"PrismaClientConstructorValidationError");var fs=["datasources","datasourceUrl","errorFormat","adapter","log","transactionOptions","__internal"],ms=["pretty","colorless","minimal"],ds=["info","query","warn","error"],qu={datasources:(e,{datasourceNames:t})=>{if(e){if(typeof e!="object"||Array.isArray(e))throw new U(`Invalid value ${JSON.stringify(e)} for "datasources" provided to PrismaClient constructor`);for(let[r,n]of Object.entries(e)){if(!t.includes(r)){let i=it(r,t)||` Available datasources: ${t.join(", ")}`;throw new U(`Unknown datasource ${r} provided to PrismaClient constructor.${i}`)}if(typeof n!="object"||Array.isArray(n))throw new U(`Invalid value ${JSON.stringify(e)} for datasource "${r}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`);if(n&&typeof n=="object")for(let[i,o]of Object.entries(n)){if(i!=="url")throw new U(`Invalid value ${JSON.stringify(e)} for datasource "${r}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`);if(typeof o!="string")throw new U(`Invalid value ${JSON.stringify(o)} for datasource "${r}" provided to PrismaClient constructor. +It should have this form: { url: "CONNECTION_STRING" }`)}}}},adapter:(e,t)=>{if(e===null)return;if(e===void 0)throw new U('"adapter" property must not be undefined, use null to conditionally disable driver adapters.');if(!gr(t).includes("driverAdapters"))throw new U('"adapter" property can only be provided to PrismaClient constructor when "driverAdapters" preview feature is enabled.');if(ct()==="binary")throw new U('Cannot use a driver adapter with the "binary" Query Engine. Please use the "library" Query Engine.')},datasourceUrl:e=>{if(typeof e<"u"&&typeof e!="string")throw new U(`Invalid value ${JSON.stringify(e)} for "datasourceUrl" provided to PrismaClient constructor. +Expected string or undefined.`)},errorFormat:e=>{if(e){if(typeof e!="string")throw new U(`Invalid value ${JSON.stringify(e)} for "errorFormat" provided to PrismaClient constructor.`);if(!ms.includes(e)){let t=it(e,ms);throw new U(`Invalid errorFormat ${e} provided to PrismaClient constructor.${t}`)}}},log:e=>{if(!e)return;if(!Array.isArray(e))throw new U(`Invalid value ${JSON.stringify(e)} for "log" provided to PrismaClient constructor.`);function t(r){if(typeof r=="string"&&!ds.includes(r)){let n=it(r,ds);throw new U(`Invalid log level "${r}" provided to PrismaClient constructor.${n}`)}}for(let r of e){t(r);let n={level:t,emit:i=>{let o=["stdout","event"];if(!o.includes(i)){let s=it(i,o);throw new U(`Invalid value ${JSON.stringify(i)} for "emit" in logLevel provided to PrismaClient constructor.${s}`)}}};if(r&&typeof r=="object")for(let[i,o]of Object.entries(r))if(n[i])n[i](o);else throw new U(`Invalid property ${i} for "log" provided to PrismaClient constructor`)}},transactionOptions:e=>{if(!e)return;let t=e.maxWait;if(t!=null&&t<=0)throw new U(`Invalid value ${t} for maxWait in "transactionOptions" provided to PrismaClient constructor. maxWait needs to be greater than 0`);let r=e.timeout;if(r!=null&&r<=0)throw new U(`Invalid value ${r} for timeout in "transactionOptions" provided to PrismaClient constructor. timeout needs to be greater than 0`)},__internal:e=>{if(!e)return;let t=["debug","engine","configOverride"];if(typeof e!="object")throw new U(`Invalid value ${JSON.stringify(e)} for "__internal" to PrismaClient constructor`);for(let[r]of Object.entries(e))if(!t.includes(r)){let n=it(r,t);throw new U(`Invalid property ${JSON.stringify(r)} for "__internal" provided to PrismaClient constructor.${n}`)}}};function hs(e,t){for(let[r,n]of Object.entries(e)){if(!fs.includes(r)){let i=it(r,fs);throw new U(`Unknown property ${r} provided to PrismaClient constructor.${i}`)}qu[r](n,t)}if(e.datasourceUrl&&e.datasources)throw new U('Can not use "datasourceUrl" and "datasources" options at the same time. Pick one of them')}function it(e,t){if(t.length===0||typeof e!="string")return"";let r=Uu(e,t);return r?` Did you mean "${r}"?`:""}function Uu(e,t){if(t.length===0)return null;let r=t.map(i=>({value:i,distance:(0,gs.default)(e,i)}));r.sort((i,o)=>i.distance{let n=new Array(e.length),i=null,o=!1,s=0,a=()=>{o||(s++,s===e.length&&(o=!0,i?r(i):t(n)))},l=u=>{o||(o=!0,r(u))};for(let u=0;u{n[u]=g,a()},g=>{if(!vr(g)){l(g);return}g.batchRequestIdx===u?l(g):(i||(i=g),a())})})}var _e=oe("prisma:client");typeof globalThis=="object"&&(globalThis.NODE_CLIENT=!0);var Vu={requestArgsToMiddlewareArgs:e=>e,middlewareArgsToRequestArgs:e=>e},ju=Symbol.for("prisma.client.transaction.id"),Qu={id:0,nextId(){return++this.id}};function bs(e){class t{constructor(n){this._originalClient=this;this._middlewares=new xr;this._createPrismaPromise=En();this.$extends=lo;e=n?.__internal?.configOverride?.(e)??e,To(e),n&&hs(n,e);let i=n?.adapter?Yr(n.adapter):void 0,o=new Ut().on("error",()=>{});this._extensions=pr.empty(),this._previewFeatures=gr(e),this._clientVersion=e.clientVersion??us,this._activeProvider=e.activeProvider,this._tracingHelper=es(this._previewFeatures);let s={rootEnvPath:e.relativeEnvPaths.rootEnvPath&&ut.resolve(e.dirname,e.relativeEnvPaths.rootEnvPath),schemaEnvPath:e.relativeEnvPaths.schemaEnvPath&&ut.resolve(e.dirname,e.relativeEnvPaths.schemaEnvPath)},a=e.injectableEdgeEnv?.();try{let l=n??{},u=l.__internal??{},g=u.debug===!0;g&&oe.enable("prisma:client");let h=ut.resolve(e.dirname,e.relativePath);Wn.existsSync(h)||(h=e.dirname),_e("dirname",e.dirname),_e("relativePath",e.relativePath),_e("cwd",h);let E=u.engine||{};if(l.errorFormat?this._errorFormat=l.errorFormat:y.env.NODE_ENV==="production"?this._errorFormat="minimal":y.env.NO_COLOR?this._errorFormat="colorless":this._errorFormat="colorless",this._runtimeDataModel=e.runtimeDataModel,this._engineConfig={cwd:h,dirname:e.dirname,enableDebugLogs:g,allowTriggerPanic:E.allowTriggerPanic,datamodelPath:ut.join(e.dirname,e.filename??"schema.prisma"),prismaPath:E.binaryPath??void 0,engineEndpoint:E.endpoint,generator:e.generator,showColors:this._errorFormat==="pretty",logLevel:l.log&&ns(l.log),logQueries:l.log&&!!(typeof l.log=="string"?l.log==="query":l.log.find(S=>typeof S=="string"?S==="query":S.level==="query")),env:a?.parsed??{},flags:[],engineWasm:e.engineWasm,clientVersion:e.clientVersion,engineVersion:e.engineVersion,previewFeatures:this._previewFeatures,activeProvider:e.activeProvider,inlineSchema:e.inlineSchema,overrideDatasources:Ao(l,e.datasourceNames),inlineDatasources:e.inlineDatasources,inlineSchemaHash:e.inlineSchemaHash,tracingHelper:this._tracingHelper,transactionOptions:{maxWait:l.transactionOptions?.maxWait??2e3,timeout:l.transactionOptions?.timeout??5e3,isolationLevel:l.transactionOptions?.isolationLevel},logEmitter:o,isBundled:e.isBundled,adapter:i},this._accelerateEngineConfig={...this._engineConfig,accelerateUtils:{resolveDatasourceUrl:fr,getBatchRequestPayload:Gt,prismaGraphQLToJSError:ar,PrismaClientUnknownRequestError:W,PrismaClientInitializationError:D,PrismaClientKnownRequestError:J,debug:oe("prisma:client:accelerateEngine"),engineVersion:Es.version,clientVersion:e.clientVersion}},_e("clientVersion",e.clientVersion),this._engine=Mo(e,this._engineConfig),this._requestHandler=new Tr(this,o),l.log)for(let S of l.log){let A=typeof S=="string"?S:S.emit==="stdout"?S.level:null;A&&this.$on(A,R=>{ft.log(`${ft.tags[A]??""}`,R.message||R.query)})}this._metrics=new Ge(this._engine)}catch(l){throw l.clientVersion=this._clientVersion,l}return this._appliedParent=Ct(this)}get[Symbol.toStringTag](){return"PrismaClient"}$use(n){this._middlewares.use(n)}$on(n,i){n==="beforeExit"?this._engine.onBeforeExit(i):n&&this._engineConfig.logEmitter.on(n,i)}$connect(){try{return this._engine.start()}catch(n){throw n.clientVersion=this._clientVersion,n}}async $disconnect(){try{await this._engine.stop()}catch(n){throw n.clientVersion=this._clientVersion,n}finally{ci()}}$executeRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"executeRaw",args:o,transaction:n,clientMethod:i,argsMapper:wn({clientMethod:i,activeProvider:a}),callsite:Oe(this._errorFormat),dataPath:[],middlewareArgsMapper:s})}$executeRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0){let[s,a]=ws(n,i);return yn(this._activeProvider,s.text,s.values,Array.isArray(n)?"prisma.$executeRaw``":"prisma.$executeRaw(sql``)"),this.$executeRawInternal(o,"$executeRaw",s,a)}throw new G("`$executeRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#executeraw\n",{clientVersion:this._clientVersion})})}$executeRawUnsafe(n,...i){return this._createPrismaPromise(o=>(yn(this._activeProvider,n,i,"prisma.$executeRawUnsafe(, [...values])"),this.$executeRawInternal(o,"$executeRawUnsafe",[n,...i])))}$runCommandRaw(n){if(e.activeProvider!=="mongodb")throw new G(`The ${e.activeProvider} provider does not support $runCommandRaw. Use the mongodb provider.`,{clientVersion:this._clientVersion});return this._createPrismaPromise(i=>this._request({args:n,clientMethod:"$runCommandRaw",dataPath:[],action:"runCommandRaw",argsMapper:Qo,callsite:Oe(this._errorFormat),transaction:i}))}async $queryRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"queryRaw",args:o,transaction:n,clientMethod:i,argsMapper:wn({clientMethod:i,activeProvider:a}),callsite:Oe(this._errorFormat),dataPath:[],middlewareArgsMapper:s}).then(cs)}$queryRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0)return this.$queryRawInternal(o,"$queryRaw",...ws(n,i));throw new G("`$queryRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#queryraw\n",{clientVersion:this._clientVersion})})}$queryRawUnsafe(n,...i){return this._createPrismaPromise(o=>this.$queryRawInternal(o,"$queryRawUnsafe",[n,...i]))}_transactionWithArray({promises:n,options:i}){let o=Qu.nextId(),s=ts(n.length),a=n.map((l,u)=>{if(l?.[Symbol.toStringTag]!=="PrismaPromise")throw new Error("All elements of the array need to be Prisma Client promises. Hint: Please make sure you are not awaiting the Prisma client calls you intended to pass in the $transaction function.");let g=i?.isolationLevel??this._engineConfig.transactionOptions.isolationLevel,h={kind:"batch",id:o,index:u,isolationLevel:g,lock:s};return l.requestTransaction?.(h)??l});return ys(a)}async _transactionWithCallback({callback:n,options:i}){let o={traceparent:this._tracingHelper.getTraceParent()},s={maxWait:i?.maxWait??this._engineConfig.transactionOptions.maxWait,timeout:i?.timeout??this._engineConfig.transactionOptions.timeout,isolationLevel:i?.isolationLevel??this._engineConfig.transactionOptions.isolationLevel},a=await this._engine.transaction("start",o,s),l;try{let u={kind:"itx",...a};l=await n(this._createItxClient(u)),await this._engine.transaction("commit",o,a)}catch(u){throw await this._engine.transaction("rollback",o,a).catch(()=>{}),u}return l}_createItxClient(n){return Ct(pe(ao(this),[ee("_appliedParent",()=>this._appliedParent._createItxClient(n)),ee("_createPrismaPromise",()=>En(n)),ee(ju,()=>n.id),xt(rs)]))}$transaction(n,i){let o;typeof n=="function"?o=()=>this._transactionWithCallback({callback:n,options:i}):o=()=>this._transactionWithArray({promises:n,options:i});let s={name:"transaction",attributes:{method:"$transaction"}};return this._tracingHelper.runInChildSpan(s,o)}_request(n){n.otelParentCtx=this._tracingHelper.getActiveContext();let i=n.middlewareArgsMapper??Vu,o={args:i.requestArgsToMiddlewareArgs(n.args),dataPath:n.dataPath,runInTransaction:!!n.transaction,action:n.action,model:n.model},s={middleware:{name:"middleware",middleware:!0,attributes:{method:"$use"},active:!1},operation:{name:"operation",attributes:{method:o.action,model:o.model,name:o.model?`${o.model}.${o.action}`:o.action}}},a=-1,l=async u=>{let g=this._middlewares.get(++a);if(g)return this._tracingHelper.runInChildSpan(s.middleware,I=>g(u,_=>(I?.end(),l(_))));let{runInTransaction:h,args:E,...S}=u,A={...n,...S};E&&(A.args=i.middlewareArgsToRequestArgs(E)),n.transaction!==void 0&&h===!1&&delete A.transaction;let R=await ho(this,A);return A.model?po({result:R,modelName:A.model,args:A.args,extensions:this._extensions,runtimeDataModel:this._runtimeDataModel}):R};return this._tracingHelper.runInChildSpan(s.operation,()=>l(o))}async _executeRequest({args:n,clientMethod:i,dataPath:o,callsite:s,action:a,model:l,argsMapper:u,transaction:g,unpacker:h,otelParentCtx:E,customDataProxyFetch:S}){try{n=u?u(n):n;let A={name:"serialize"},R=this._tracingHelper.runInChildSpan(A,()=>Uo({modelName:l,runtimeDataModel:this._runtimeDataModel,action:a,args:n,clientMethod:i,callsite:s,extensions:this._extensions,errorFormat:this._errorFormat,clientVersion:this._clientVersion}));return oe.enabled("prisma:client")&&(_e("Prisma Client call:"),_e(`prisma.${i}(${zi(n)})`),_e("Generated request:"),_e(JSON.stringify(R,null,2)+` +`)),g?.kind==="batch"&&await g.lock,this._requestHandler.request({protocolQuery:R,modelName:l,action:a,clientMethod:i,dataPath:o,callsite:s,args:n,extensions:this._extensions,transaction:g,unpacker:h,otelParentCtx:E,otelChildCtx:this._tracingHelper.getActiveContext(),customDataProxyFetch:S})}catch(A){throw A.clientVersion=this._clientVersion,A}}get $metrics(){if(!this._hasPreviewFlag("metrics"))throw new G("`metrics` preview feature must be enabled in order to access metrics API",{clientVersion:this._clientVersion});return this._metrics}_hasPreviewFlag(n){return!!this._engineConfig.previewFeatures?.includes(n)}}return t}function ws(e,t){return Ju(e)?[new re(e,t),zo]:[e,Yo]}function Ju(e){return Array.isArray(e)&&Array.isArray(e.raw)}d();c();p();f();m();var Wu=new Set(["toJSON","$$typeof","asymmetricMatch",Symbol.iterator,Symbol.toStringTag,Symbol.isConcatSpreadable,Symbol.toPrimitive]);function xs(e){return new Proxy(e,{get(t,r){if(r in t)return t[r];if(!Wu.has(r))throw new TypeError(`Invalid enum value: ${String(r)}`)}})}d();c();p();f();m();0&&(module.exports={Debug,Decimal,Extensions,MetricsClient,NotFoundError,PrismaClientInitializationError,PrismaClientKnownRequestError,PrismaClientRustPanicError,PrismaClientUnknownRequestError,PrismaClientValidationError,Public,Sql,defineDmmfProperty,detectRuntime,empty,getPrismaClient,join,makeStrictEnum,objectEnumValues,raw,sqltag,warnEnvConflicts,warnOnce}); +//# sourceMappingURL=wasm.js.map diff --git a/backend/prisma/generated/client-db1/schema.prisma b/backend/prisma/generated/client-db1/schema.prisma new file mode 100644 index 0000000..1f0d531 --- /dev/null +++ b/backend/prisma/generated/client-db1/schema.prisma @@ -0,0 +1,127 @@ +generator client { + provider = "prisma-client-js" + output = "../generated/client-db1" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model msasuransi { + idasuransi Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + namaasuransi String? @db.VarChar(255) + trregistrasi trregistrasi[] +} + +model mspasien { + idpasien Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + mrpasien String? @db.VarChar(50) + namapasien String? @db.VarChar(255) + tanggallahir DateTime? @db.Date + jeniskelamin String? @db.VarChar(10) + trregistrasi trregistrasi[] +} + +model mspegawai { + idpegawai Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + namapegawai String? @db.VarChar(255) + trregistrasi trregistrasi[] + trtransaksi trtransaksi[] +} + +model msruangpelayanan { + idruangpelayanan Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + namaruangpelayanan String? @db.VarChar(255) + trregistrasi trregistrasi[] +} + +model mstindakan { + idtindakan Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + namatindakan String? @db.VarChar(255) + tariftindakan Decimal? @db.Decimal(18, 2) + trtransaksi trtransaksi[] +} + +model trregistrasi { + idregistrasi Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + tanggalregistrasi DateTime? @db.Timestamp(6) + idpasien Int? + nomorkartuasuransi String? @db.VarChar(100) + idasuransi Int? + idpegawai Int? + idruangpelayanan Int? + msasuransi msasuransi? @relation(fields: [idasuransi], references: [idasuransi], onDelete: NoAction, onUpdate: NoAction) + mspasien mspasien? @relation(fields: [idpasien], references: [idpasien], onDelete: NoAction, onUpdate: NoAction) + mspegawai mspegawai? @relation(fields: [idpegawai], references: [idpegawai], onDelete: NoAction, onUpdate: NoAction) + msruangpelayanan msruangpelayanan? @relation(fields: [idruangpelayanan], references: [idruangpelayanan], onDelete: NoAction, onUpdate: NoAction) + trtransaksi trtransaksi[] +} + +model trtransaksi { + idtransaksi Int @id + created_at DateTime? @default(now()) @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + idregistrasi Int? + idtindakan Int? + jmltindakan Int? + idpegawai Int? + mspegawai mspegawai? @relation(fields: [idpegawai], references: [idpegawai], onDelete: NoAction, onUpdate: NoAction) + trregistrasi trregistrasi? @relation(fields: [idregistrasi], references: [idregistrasi], onDelete: NoAction, onUpdate: NoAction) + mstindakan mstindakan? @relation(fields: [idtindakan], references: [idtindakan], onDelete: NoAction, onUpdate: NoAction) +} + +model msusers { + user_id Int @id(map: "users_pkey") + created_at DateTime? @db.Timestamp(6) + created_by Int? + modified_at DateTime? @db.Timestamp(6) + modified_by Int? + deleted_at DateTime? @db.Timestamp(6) + deleted_by Int? + username String @unique(map: "users_username_key") @db.VarChar(50) + password String + full_name String? @db.VarChar(100) + email String? @db.VarChar(100) + is_active Boolean? @default(true) +} diff --git a/backend/prisma/generated/client-db1/wasm.d.ts b/backend/prisma/generated/client-db1/wasm.d.ts new file mode 100644 index 0000000..34c6161 --- /dev/null +++ b/backend/prisma/generated/client-db1/wasm.d.ts @@ -0,0 +1 @@ +export * from './index' \ No newline at end of file diff --git a/backend/prisma/generated/client-db1/wasm.js b/backend/prisma/generated/client-db1/wasm.js new file mode 100644 index 0000000..792568a --- /dev/null +++ b/backend/prisma/generated/client-db1/wasm.js @@ -0,0 +1,274 @@ + +Object.defineProperty(exports, "__esModule", { value: true }); + +const { + Decimal, + objectEnumValues, + makeStrictEnum, + Public, + detectRuntime, +} = require('./runtime/index-browser.js') + + +const Prisma = {} + +exports.Prisma = Prisma +exports.$Enums = {} + +/** + * Prisma Client JS version: 5.10.2 + * Query Engine version: 5a9203d0590c951969e85a7d07215503f4672eb9 + */ +Prisma.prismaVersion = { + client: "5.10.2", + engine: "5a9203d0590c951969e85a7d07215503f4672eb9" +} + +Prisma.PrismaClientKnownRequestError = () => { + throw new Error(`PrismaClientKnownRequestError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)}; +Prisma.PrismaClientUnknownRequestError = () => { + throw new Error(`PrismaClientUnknownRequestError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.PrismaClientRustPanicError = () => { + throw new Error(`PrismaClientRustPanicError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.PrismaClientInitializationError = () => { + throw new Error(`PrismaClientInitializationError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.PrismaClientValidationError = () => { + throw new Error(`PrismaClientValidationError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.NotFoundError = () => { + throw new Error(`NotFoundError is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.Decimal = Decimal + +/** + * Re-export of sql-template-tag + */ +Prisma.sql = () => { + throw new Error(`sqltag is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.empty = () => { + throw new Error(`empty is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.join = () => { + throw new Error(`join is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.raw = () => { + throw new Error(`raw is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.validator = Public.validator + +/** +* Extensions +*/ +Prisma.getExtensionContext = () => { + throw new Error(`Extensions.getExtensionContext is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.defineExtension = () => { + throw new Error(`Extensions.defineExtension is unable to be run ${runtimeDescription}. +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} + +/** + * Shorthand utilities for JSON filtering + */ +Prisma.DbNull = objectEnumValues.instances.DbNull +Prisma.JsonNull = objectEnumValues.instances.JsonNull +Prisma.AnyNull = objectEnumValues.instances.AnyNull + +Prisma.NullTypes = { + DbNull: objectEnumValues.classes.DbNull, + JsonNull: objectEnumValues.classes.JsonNull, + AnyNull: objectEnumValues.classes.AnyNull +} + +/** + * Enums + */ + +exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ + ReadUncommitted: 'ReadUncommitted', + ReadCommitted: 'ReadCommitted', + RepeatableRead: 'RepeatableRead', + Serializable: 'Serializable' +}); + +exports.Prisma.MsasuransiScalarFieldEnum = { + idasuransi: 'idasuransi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namaasuransi: 'namaasuransi' +}; + +exports.Prisma.MspasienScalarFieldEnum = { + idpasien: 'idpasien', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + mrpasien: 'mrpasien', + namapasien: 'namapasien', + tanggallahir: 'tanggallahir', + jeniskelamin: 'jeniskelamin' +}; + +exports.Prisma.MspegawaiScalarFieldEnum = { + idpegawai: 'idpegawai', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namapegawai: 'namapegawai' +}; + +exports.Prisma.MsruangpelayananScalarFieldEnum = { + idruangpelayanan: 'idruangpelayanan', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namaruangpelayanan: 'namaruangpelayanan' +}; + +exports.Prisma.MstindakanScalarFieldEnum = { + idtindakan: 'idtindakan', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + namatindakan: 'namatindakan', + tariftindakan: 'tariftindakan' +}; + +exports.Prisma.TrregistrasiScalarFieldEnum = { + idregistrasi: 'idregistrasi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + tanggalregistrasi: 'tanggalregistrasi', + idpasien: 'idpasien', + nomorkartuasuransi: 'nomorkartuasuransi', + idasuransi: 'idasuransi', + idpegawai: 'idpegawai', + idruangpelayanan: 'idruangpelayanan' +}; + +exports.Prisma.TrtransaksiScalarFieldEnum = { + idtransaksi: 'idtransaksi', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + idregistrasi: 'idregistrasi', + idtindakan: 'idtindakan', + jmltindakan: 'jmltindakan', + idpegawai: 'idpegawai' +}; + +exports.Prisma.MsusersScalarFieldEnum = { + user_id: 'user_id', + created_at: 'created_at', + created_by: 'created_by', + modified_at: 'modified_at', + modified_by: 'modified_by', + deleted_at: 'deleted_at', + deleted_by: 'deleted_by', + username: 'username', + password: 'password', + full_name: 'full_name', + email: 'email', + is_active: 'is_active' +}; + +exports.Prisma.SortOrder = { + asc: 'asc', + desc: 'desc' +}; + +exports.Prisma.QueryMode = { + default: 'default', + insensitive: 'insensitive' +}; + +exports.Prisma.NullsOrder = { + first: 'first', + last: 'last' +}; + + +exports.Prisma.ModelName = { + msasuransi: 'msasuransi', + mspasien: 'mspasien', + mspegawai: 'mspegawai', + msruangpelayanan: 'msruangpelayanan', + mstindakan: 'mstindakan', + trregistrasi: 'trregistrasi', + trtransaksi: 'trtransaksi', + msusers: 'msusers' +}; + +/** + * This is a stub Prisma Client that will error at runtime if called. + */ +class PrismaClient { + constructor() { + return new Proxy(this, { + get(target, prop) { + const runtime = detectRuntime() + const edgeRuntimeName = { + 'workerd': 'Cloudflare Workers', + 'deno': 'Deno and Deno Deploy', + 'netlify': 'Netlify Edge Functions', + 'edge-light': 'Vercel Edge Functions or Edge Middleware', + }[runtime] + + let message = 'PrismaClient is unable to run in ' + if (edgeRuntimeName !== undefined) { + message += edgeRuntimeName + '. As an alternative, try Accelerate: https://pris.ly/d/accelerate.' + } else { + message += 'this browser environment, or has been bundled for the browser (running in `' + runtime + '`).' + } + + message += ` +If this is unexpected, please open an issue: https://pris.ly/prisma-prisma-bug-report` + + throw new Error(message) + } + }) + } +} + +exports.PrismaClient = PrismaClient + +Object.assign(exports, Prisma) diff --git a/backend/src/404.ts b/backend/src/404.ts new file mode 100644 index 0000000..64e0d24 --- /dev/null +++ b/backend/src/404.ts @@ -0,0 +1,54 @@ +import { Router, Request, Response } from "express"; +import path from "path"; +import fs from "fs"; + +export const router = Router(); + +const htmlIndex = ` + + + + + + 404 - Not Found + + + +

404 - Not Found

+

Maaf, Endpoint yang Anda cari tidak ditemukan.

+ + +`; + +router.use("*", (req: Request, res: Response) => { + if (fs.existsSync(path.join(__dirname, "./views")) === true) { + if (fs.existsSync(path.join(__dirname, "./views/404.html")) === true) { + res.sendFile(path.join(__dirname, "./views", "404.html")); + } else { + fs.writeFileSync( + path.join(__dirname, "./views/404.html"), + htmlIndex + ); + res.sendFile(path.join(__dirname, "./views", "404.html")); + } + } else { + fs.mkdirSync(path.join(__dirname, "./views")); + fs.writeFileSync(path.join(__dirname, "./views/404.html"), htmlIndex); + res.sendFile(path.join(__dirname, "./views", "404.html")); + } +}); diff --git a/backend/src/api/asuransi/users.controller.ts b/backend/src/api/asuransi/users.controller.ts new file mode 100644 index 0000000..ce02796 --- /dev/null +++ b/backend/src/api/asuransi/users.controller.ts @@ -0,0 +1,356 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { body, check, param, query, validationResult } from "express-validator"; +import { + createUserData, + checkUsername, + updateUserDataAll, + updateUserDataPart, + getUserId, + getUserAll, + deleteUserData, +} from "./users.service"; + +export const router = Router(); + +router.get( + "/user_id/:user_id", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const user_id = parseInt(req.params.user_id, 10); + + const getUser: any = await getUserId(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const getUser: any = await getUserAll(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.post( + "/", + [ + body("username") + .notEmpty() + .custom(async (value, { req }) => { + if (value) { + value = value.toString(); + const username = await checkUsername(value); + + if (username) { + return Promise.reject( + "Username sudah terdaftar, silahkan gunakan username lain" + ); + } + } + }), + body("password").notEmpty(), + body("fullname").notEmpty(), + body("email").notEmpty().isEmail(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const createUser: any = await createUserData(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.put( + "/user_id/:user_id", + [ + param("user_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const userId = await getUserId(value); + + if (!userId) { + return Promise.reject( + "User ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("username") + .notEmpty() + .custom(async (value, { req }) => { + value = value.toString(); + const username = await checkUsername(value, req.params?.user_id); + + if (username) { + return Promise.reject( + "Username sudah terdaftar, silahkan gunakan username lain" + ); + } + }), + body("password").notEmpty(), + body("fullname").notEmpty(), + body("email").notEmpty().isEmail(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const user_id = parseInt(req.params.user_id, 10); + + const updateUserAll: any = await updateUserDataAll( + req.body, + user_id + ); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.patch( + "/user_id/:user_id", + [ + param("user_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const userId = await getUserId(value); + + if (!userId) { + return Promise.reject( + "User ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("username") + .optional() + .custom(async (value, { req }) => { + value = value.toString(); + const username = await checkUsername(value); + + if (username) { + return Promise.reject( + "Username sudah terdaftar, silahkan gunakan username lain" + ); + } + }), + body("email").optional().isEmail(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const user_id = parseInt(req.params.user_id, 10); + + const updateUserPart: any = await updateUserDataPart( + req.body, + user_id + ); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.delete( + "/user_id/:user_id", + [ + param("user_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const userId = await getUserId(value); + + if (!userId) { + return Promise.reject( + "User ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const user_id = parseInt(req.params.user_id, 10); + + const deleteUser: any = await deleteUserData(user_id); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); diff --git a/backend/src/api/asuransi/users.repository.ts b/backend/src/api/asuransi/users.repository.ts new file mode 100644 index 0000000..417c585 --- /dev/null +++ b/backend/src/api/asuransi/users.repository.ts @@ -0,0 +1,192 @@ +import { prismaDb1 } from "../../db"; +import { + generateMaxDb1, + selectFieldDb1, + timeHandler, +} from "../../db/database.handler"; +import { dateNow } from "../../middlewares/time"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const createUserRepository = async ( + username: string, + password: string, + fullname: string, + email: string +) => { + const maxUserId = await generateMaxDb1("ms_users_id_seq", "user_id"); + const createUser = await prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: dateNow(), + created_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return createUser; +}; + +const getDataUserId = async (user_id: number) => { + const user = await prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return user; +}; + +const getDataUserAll = async () => { + const user = await prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return user; +} + +const checkDataUsername = async (username: string, user_id?: number) => { + const user = await prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + + return user; +}; + +const updateUserDataAllRepository = async ( + username: string, + password: string, + fullname: string, + email: string, + user_id: number +) => { + const updateUser = await prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: dateNow(), + modified_by: 1, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return updateUser; +}; + +const updateUserDataPartRepository = async ( + updateField: { + [key: string]: any; + modified_at: Date; + modified_by: number; + }, + user_id: number +) => { + const updateUser = await prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + ...updateField, + modified_at: dateNow(), + modified_by: 1, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return updateUser; +}; + +const deleteUserRepository = async (user_id: number) => { + const deleteUser = await prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: dateNow(), + deleted_by: 1, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return deleteUser; +}; + +export { + checkDataUsername, + createUserRepository, + updateUserDataAllRepository, + updateUserDataPartRepository, + getDataUserId, + getDataUserAll, + deleteUserRepository, +}; diff --git a/backend/src/api/asuransi/users.service.ts b/backend/src/api/asuransi/users.service.ts new file mode 100644 index 0000000..8243b19 --- /dev/null +++ b/backend/src/api/asuransi/users.service.ts @@ -0,0 +1,90 @@ +import * as dotenv from "dotenv"; +import { dateNow } from "../../middlewares/time"; +import { + createUserRepository, + checkDataUsername, + updateUserDataAllRepository, + getDataUserId, + getDataUserAll, + updateUserDataPartRepository, + deleteUserRepository, +} from "./users.repository"; +import bcrypt from "bcrypt"; + +dotenv.config(); + +interface DataUser { + username: string; + password: string; + fullname: string; + email: string; +} +const createUserData = async (dataUser: DataUser) => { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = await bcrypt.hash(password, saltRounds); + const createUser = createUserRepository( + username, + passwordHash, + fullname, + email + ); + return createUser; +}; + +const getUserId = async (user_id: number) => { + const getUserId = await getDataUserId(user_id); + return getUserId; +}; + +const getUserAll = async () => { + const getUser = await getDataUserAll(); + return getUser; +}; + +const checkUsername = async (username: string, user_id?: number) => { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = checkDataUsername(username, user_id); + return checkUser; +}; + +const updateUserDataAll = async (dataUser: any, user_id: number) => { + const { username, password, fullname, email } = dataUser; + const saltRounds = 10; + const passwordHash = await bcrypt.hash(password, saltRounds); + const updateUser = await updateUserDataAllRepository( + username, + passwordHash, + fullname, + email, + user_id + ); + return updateUser; +}; + +const updateUserDataPart = async (dataUser: any, user_id: number) => { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = await bcrypt.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + const updateUser = await updateUserDataPartRepository(dataUser, user_id); + return updateUser; +}; + +const deleteUserData = async (user_id: number) => { + const deleteUser = await deleteUserRepository(user_id); + return deleteUser; +}; + +export { + createUserData, + checkUsername, + updateUserDataAll, + updateUserDataPart, + getUserId, + deleteUserData, + getUserAll, +}; diff --git a/backend/src/api/auth/auth.controller.ts b/backend/src/api/auth/auth.controller.ts new file mode 100644 index 0000000..6563658 --- /dev/null +++ b/backend/src/api/auth/auth.controller.ts @@ -0,0 +1,126 @@ +import { Router, Request, Response, NextFunction } from "express"; +import jwt, { TokenExpiredError } from "jsonwebtoken"; +import * as dotenv from "dotenv"; +import nodemailer from "nodemailer"; + +dotenv.config(); + +export const router = Router(); + +router.post( + "/validate-token", + (req: Request, res: Response, next: NextFunction) => { + try { + const token = req.body.token; + if (!token) { + return res.status(400).json({ + metadata: { + code: 400, + msg: "Token required!", + }, + }); + } + + const secretKey: string = process.env.secretKey || ""; + if (typeof token !== "string" || token.trim() === "") { + return res.status(400).json({ + metadata: { + code: 400, + msg: "Invalid token format!", + }, + }); + } + + jwt.verify(token, secretKey, (err: any, decoded: any) => { + if (err) { + if (err instanceof TokenExpiredError) { + // Token telah kedaluwarsa + return res.status(401).json({ + metadata: { + code: 401, + msg: "Token expired!", + }, + }); + } else { + // Token tidak valid atau terjadi kesalahan lainnya + return res.status(401).json({ + metadata: { + code: 401, + msg: "Invalid token!", + }, + }); + } + } else { + // Token valid + return res.status(200).json({ + metadata: { + code: 200, + msg: "Token valid!", + }, + }); + } + }); + } catch (error) { + next(error); + } + } +); + +router.post( + "/check-token-password", + async (req: Request, res: Response, next: NextFunction) => { + try { + const token = req.body.token; + if (!token) { + return res.status(400).json({ + metadata: { + code: 400, + msg: "Token required!", + }, + }); + } + + const secretKey: string = process.env.secretKey || ""; + if (typeof token !== "string" || token.trim() === "") { + return res.status(400).json({ + metadata: { + code: 400, + msg: "Invalid token format!", + }, + }); + } + + jwt.verify(token, secretKey, (err: any, decoded: any) => { + if (err) { + if (err instanceof TokenExpiredError) { + // Token telah kedaluwarsa + return res.status(401).json({ + metadata: { + code: 401, + msg: "Token expired!", + }, + }); + } else { + // Token tidak valid atau terjadi kesalahan lainnya + return res.status(401).json({ + metadata: { + code: 401, + msg: "Invalid token!", + }, + }); + } + } else { + // Token valid + return res.status(200).json({ + metadata: { + code: 200, + msg: "Token valid!", + }, + }); + } + }); + } catch (error) { + next(error); + } + } +); diff --git a/backend/src/api/index.ts b/backend/src/api/index.ts new file mode 100644 index 0000000..f1db3a3 --- /dev/null +++ b/backend/src/api/index.ts @@ -0,0 +1,41 @@ +import { Router } from "express"; +import bodyParser from "body-parser"; +import { authenticateToken, loginAuthentication } from "../middlewares/auth"; +import { router as loginController } from "./login/login.controller"; +import { router as authController } from "./auth/auth.controller"; + +//Master Routing +import { router as usersRouter } from "./master/users/users.controller"; +import { router as pegawaiRouter } from "./master/pegawai/pegawai.controller"; +import { router as asuransiRouter } from "./master/asuransi/asuransi.controller"; +import { router as ruangpelayananRouter } from "./master/ruang_pelayanan/ruangpelayanan.controller"; +import { router as pasienRouter } from "./master/pasien/pasien.controller"; +import { router as tindakanRouter } from "./master/tindakan/tindakan.controller"; + +//Transaction Routing +import { router as registrasiRouter } from "./transaction/registrasi/registrasi.controller"; +import { router as transaksiRouter } from "./transaction/transaksi/transaksi.controller"; + +//Laporan Routing +import { router as laporanRouter } from "./laporan/laporan.controller"; + +const router = Router(); + +router.use(bodyParser.json()); +router.use(bodyParser.urlencoded({ extended: false })); + +router.use("/login", loginAuthentication, loginController); +router.use("/auth", authController); + +router.use("/users", authenticateToken, usersRouter); +router.use("/pegawai", authenticateToken, pegawaiRouter); +router.use("/asuransi", authenticateToken, asuransiRouter); +router.use("/ruangpelayanan", authenticateToken, ruangpelayananRouter); +router.use("/pasien", authenticateToken, pasienRouter); +router.use("/tindakan", authenticateToken, tindakanRouter); + +router.use("/registrasi", authenticateToken, registrasiRouter); +router.use("/transaksi", authenticateToken, transaksiRouter); +router.use("/laporan", authenticateToken, laporanRouter); + +export { router }; diff --git a/backend/src/api/laporan/laporan.controller.ts b/backend/src/api/laporan/laporan.controller.ts new file mode 100644 index 0000000..405124b --- /dev/null +++ b/backend/src/api/laporan/laporan.controller.ts @@ -0,0 +1,34 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { + getDashboardService, +} from "./laporan.service"; + +export const router = Router(); + +router.get( + "/dashboard/", + async (req: Request, res: Response, next: NextFunction) => { + try { + const getDashboard: any = await getDashboardService(); + if (getDashboard) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getDashboard, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); diff --git a/backend/src/api/laporan/laporan.repository.ts b/backend/src/api/laporan/laporan.repository.ts new file mode 100644 index 0000000..e884fe5 --- /dev/null +++ b/backend/src/api/laporan/laporan.repository.ts @@ -0,0 +1,16 @@ +import { prismaDb1 } from "../../db"; +import { + generateMaxDb1, + selectFieldDb1, + timeHandler, +} from "../../db/database.handler"; +import { dateNow } from "../../middlewares/time"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const getDataDashboardRepository = async () => { +}; + +export { + +}; diff --git a/backend/src/api/laporan/laporan.service.ts b/backend/src/api/laporan/laporan.service.ts new file mode 100644 index 0000000..171593f --- /dev/null +++ b/backend/src/api/laporan/laporan.service.ts @@ -0,0 +1,33 @@ +import * as dotenv from "dotenv"; +import { dateNow } from "../../middlewares/time"; +// import { +// getDataDashboardRepository +// } from "./laporan.repository"; +import { getCountPasienRepository } from "./../master/pasien/pasien.repository"; +import { getCountPegawaiRepository } from "./../master/pegawai/pegawai.repository"; +import { getCountTindakanRepository } from "./../master/tindakan/tindakan.repository"; +import { getCountRuangpelayananRepository } from "./../master/ruang_pelayanan/ruangpelayanan.repository"; +import { getCountAsuransiRepository } from "./../master/asuransi/asuransi.repository"; +import { getCountRegistrasiRepository } from "./../transaction/registrasi/registrasi.repository"; + +dotenv.config(); + +const getDashboardService = async () => { + const getCountPasien = await getCountPasienRepository(); + const getCountPegawai = await getCountPegawaiRepository(); + const getCountTindakan = await getCountTindakanRepository(); + const getCountRuangpelayanan = await getCountRuangpelayananRepository(); + const getCountAsuransi = await getCountAsuransiRepository(); + const getCountRegistrasi = await getCountRegistrasiRepository(); + + return { + pasien: getCountPasien, + pegawai: getCountPegawai, + tindakan: getCountTindakan, + ruangpelayanan: getCountRuangpelayanan, + asuransi: getCountAsuransi, + registrasi: getCountRegistrasi, + }; +}; + +export { getDashboardService }; diff --git a/backend/src/api/login/login.controller.ts b/backend/src/api/login/login.controller.ts new file mode 100644 index 0000000..fd69bf2 --- /dev/null +++ b/backend/src/api/login/login.controller.ts @@ -0,0 +1,70 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { body, param, validationResult } from "express-validator"; +import { getLoginUser } from "./login.service"; +import jwt from "jsonwebtoken"; +import * as dotenv from "dotenv"; + +dotenv.config(); +const secretKey: string = process.env.secretKey || ""; +export const router = Router(); + +router.post( + "/", + [body(["username", "password"]).notEmpty()], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(400).send({ + code: 400, + msg: errors.array(), + }); + return; + } + const { username, password } = req.body; + const dataUser = await getLoginUser(req.body); + + let tokenJwt: String | undefined; + if (dataUser && dataUser.metadata.code === 200) { + tokenJwt = jwt.sign( + { + id: dataUser.response.data.user_id, + username: dataUser.response.data.user_name, + }, + secretKey, + { + expiresIn: "1h", + } + ); + + res.cookie("jwt", tokenJwt, { + expires: new Date(Date.now() + 15 * 60000), + httpOnly: true, + }); + + const { password, ...dataUserResponse } = dataUser.response.data; + dataUser.response.data = dataUserResponse; + res.status(200).json({ + metadata: { + code: 200, + msg: "Login Berhasil!", + }, + response: { + data: dataUser.response.data, + token: tokenJwt, + }, + }); + } else { + res.status(200).json({ + metadata: { + code: 201, + msg: dataUser.metadata.msg, + }, + response: {}, + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); diff --git a/backend/src/api/login/login.repository.ts b/backend/src/api/login/login.repository.ts new file mode 100644 index 0000000..5fdfa15 --- /dev/null +++ b/backend/src/api/login/login.repository.ts @@ -0,0 +1,17 @@ +import { prismaDb1 } from "../../db"; + +export const loginUser = async (username: string) => { + const user = await prismaDb1.msusers.findFirst({ + where: { + username: username, + }, + select: { + user_id: true, + username: true, + password: true, + full_name: true, + } + }); + + return user; +}; diff --git a/backend/src/api/login/login.service.ts b/backend/src/api/login/login.service.ts new file mode 100644 index 0000000..b6423bd --- /dev/null +++ b/backend/src/api/login/login.service.ts @@ -0,0 +1,42 @@ +import { loginUser } from "./login.repository"; +import bcrypt from "bcrypt"; + +export const getLoginUser = async (data: any) => { + const { username, password } = data; + + const user: any = await loginUser(username); + + let response: any = {}; + if (user) { + const inputPassword = await bcrypt.compare(password, user.password); + if (inputPassword === true) { + response = { + metadata: { + code: 200, + msg: "Login Berhasil!", + }, + response: { + data: user, + }, + } + } else { + response = { + metadata: { + code: 201, + msg: "Login Gagal! Password anda tidak sesuai!", + }, + response: {}, + } + } + } else { + response = { + metadata: { + code: 201, + msg: "Login Gagal! Username anda tidak sesuai!", + }, + response: {}, + } + } + + return response; +}; diff --git a/backend/src/api/master/asuransi/asuransi.controller.ts b/backend/src/api/master/asuransi/asuransi.controller.ts new file mode 100644 index 0000000..5eb5df9 --- /dev/null +++ b/backend/src/api/master/asuransi/asuransi.controller.ts @@ -0,0 +1,249 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { body, check, param, query, validationResult } from "express-validator"; +import { + getAsuransiId, + getAsuransiAll, + createAsuransiData, + updateAsuransiDataAll, + deleteAsuransiData, +} from "./asuransi.service"; + +export const router = Router(); + +router.get( + "/asuransi_id/:asuransi_id", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const getAsuransi: any = await getAsuransiId(asuransi_id); + if (getAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getAsuransi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const getAsuransi: any = await getAsuransiAll(); + if (getAsuransi && getAsuransi.length > 0) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getAsuransi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.post( + "/", + [ + body("namaasuransi").notEmpty(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const createAsuransi: any = await createAsuransiData(req.body); + if (createAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createAsuransi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.put( + "/asuransi_id/:asuransi_id", + [ + param("asuransi_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const asuransi_id = await getAsuransiId(value); + + if (!asuransi_id) { + return Promise.reject( + "Asuransi ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("namaasuransi").notEmpty(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const updateAsuransiAll: any = await updateAsuransiDataAll( + req.body, + asuransi_id + ); + if (updateAsuransiAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateAsuransiAll, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.delete( + "/asuransi_id/:asuransi_id", + [ + param("asuransi_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const AsuransiId = await getAsuransiId(value); + + if (!AsuransiId) { + return Promise.reject( + "Asuransi ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const asuransi_id = parseInt(req.params.asuransi_id, 10); + const deleteAsuransi: any = await deleteAsuransiData(asuransi_id); + if (deleteAsuransi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteAsuransi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); diff --git a/backend/src/api/master/asuransi/asuransi.repository.ts b/backend/src/api/master/asuransi/asuransi.repository.ts new file mode 100644 index 0000000..2c35cdd --- /dev/null +++ b/backend/src/api/master/asuransi/asuransi.repository.ts @@ -0,0 +1,127 @@ +import { prismaDb1 } from "../../../db"; +import { + generateMaxDb1, + selectFieldDb1, + timeHandler, +} from "../../../db/database.handler"; +import { dateNow } from "../../../middlewares/time"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const createAsuransiRepository = async ( + namaasuransi: string, +) => { + const maxAsuransiId = await generateMaxDb1("ms_asuransi_id_seq", "asuransi_id"); + const createAsuransi = await prismaDb1.msasuransi.create({ + data: { + idasuransi: maxAsuransiId, + created_at: dateNow(), + created_by: 1, + namaasuransi: namaasuransi, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + + return createAsuransi; +}; + +const getDataAsuransiId = async (asuransi_id: number) => { + const Asuransi = await prismaDb1.msasuransi.findFirst({ + where: { + idasuransi: asuransi_id, + deleted_at: null, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + + return Asuransi; +}; + +const getDataAsuransiAll = async () => { + const Asuransi = await prismaDb1.msasuransi.findMany({ + where: { + deleted_by: null, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + + return Asuransi; +} + +const updateAsuransiDataAllRepository = async ( + namaasuransi: string, + asuransi_id: number +) => { + const updateAsuransi = await prismaDb1.msasuransi.update({ + where: { + idasuransi: asuransi_id, + }, + data: { + modified_at: dateNow(), + modified_by: 1, + namaasuransi: namaasuransi, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + + return updateAsuransi; +}; + +const deleteAsuransiRepository = async (asuransi_id: number) => { + const deleteUser = await prismaDb1.msasuransi.update({ + where: { + idasuransi: asuransi_id, + }, + data: { + deleted_at: dateNow(), + deleted_by: 1, + }, + select: { + idasuransi: true, + created_at: true, + created_by: true, + namaasuransi: true, + }, + }); + + return deleteUser; +}; + +const getCountAsuransiRepository = async () => { + const asuransiCount = await prismaDb1.msasuransi.count({ + where: { + deleted_by: null, + }, + }); + + return asuransiCount; +}; + +export { + createAsuransiRepository, + getDataAsuransiId, + getDataAsuransiAll, + updateAsuransiDataAllRepository, + deleteAsuransiRepository, + getCountAsuransiRepository, +}; diff --git a/backend/src/api/master/asuransi/asuransi.service.ts b/backend/src/api/master/asuransi/asuransi.service.ts new file mode 100644 index 0000000..6e1f7aa --- /dev/null +++ b/backend/src/api/master/asuransi/asuransi.service.ts @@ -0,0 +1,49 @@ +import * as dotenv from "dotenv"; +import { dateNow } from "../../../middlewares/time"; +import { + createAsuransiRepository, + getDataAsuransiId, + getDataAsuransiAll, + updateAsuransiDataAllRepository, + deleteAsuransiRepository, +} from "./asuransi.repository"; + +dotenv.config(); + +interface DataAsuransi { + namaasuransi: string; +} +const createAsuransiData = async (dataAsuransi: DataAsuransi) => { + const { namaasuransi } = dataAsuransi; + const createAsuransi = createAsuransiRepository(namaasuransi); + return createAsuransi; +}; + +const getAsuransiId = async (asuransi_id: number) => { + const getAsuransiId = await getDataAsuransiId(asuransi_id); + return getAsuransiId; +}; + +const getAsuransiAll = async () => { + const getAsuransi = await getDataAsuransiAll(); + return getAsuransi; +}; + +const updateAsuransiDataAll = async (dataAsuransi: any, asuransi_id: number) => { + const { namaasuransi } = dataAsuransi; + const updateAsuransi = await updateAsuransiDataAllRepository(namaasuransi, asuransi_id); + return updateAsuransi; +}; + +const deleteAsuransiData = async (asuransi_id: number) => { + const deleteAsuransi = await deleteAsuransiRepository(asuransi_id); + return deleteAsuransi; +}; + +export { + getAsuransiId, + getAsuransiAll, + createAsuransiData, + updateAsuransiDataAll, + deleteAsuransiData, +}; diff --git a/backend/src/api/master/pasien/pasien.controller.ts b/backend/src/api/master/pasien/pasien.controller.ts new file mode 100644 index 0000000..a92f947 --- /dev/null +++ b/backend/src/api/master/pasien/pasien.controller.ts @@ -0,0 +1,216 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { body, check, param, query, validationResult } from "express-validator"; +import { + createPasienData, + getDataPasienId, + getDataPasienMr, + getNamaPasien, + getPasienAll, + updatePasienData, +} from "./pasien.service"; + +export const router = Router(); + +router.post( + "/", + [ + body("namapasien").notEmpty(), + body("tanggallahir").notEmpty().isISO8601(), + body("jeniskelamin").notEmpty().isIn(["P", "L"]), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const createPasien: any = await createPasienData(req.body); + if (createPasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createPasien, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/pasien_id/:pasien_id", + async (req: Request, res: Response, next: NextFunction) => { + try { + const pasien_id = parseInt(req.params.pasien_id, 10); + const getPasien: any = await getDataPasienId(pasien_id); + if (getPasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPasien, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/nomrpasien/:nomrpasien", + async (req: Request, res: Response, next: NextFunction) => { + try { + const getPasien: any = await getDataPasienMr(req.params.nomrpasien); + if (getPasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPasien, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/namapasien/:namapasien", + async (req: Request, res: Response, next: NextFunction) => { + try { + const getPasien: any = await getNamaPasien(req.params.namapasien); + if (getPasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPasien, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get("/", async (req: Request, res: Response, next: NextFunction) => { + try { + const getPasien: any = await getPasienAll(); + if (getPasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPasien, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } +}); + +router.put( + "/idpasien/:idpasien", + [ + body("namapasien").notEmpty(), + body("tanggallahir").notEmpty().isISO8601(), + body("jeniskelamin").notEmpty().isIn(["P", "L"]), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const idpasien = parseInt(req.params.idpasien, 10); + const updatePasien: any = await updatePasienData( + req.body, + idpasien + ); + if (updatePasien) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updatePasien, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); diff --git a/backend/src/api/master/pasien/pasien.repository.ts b/backend/src/api/master/pasien/pasien.repository.ts new file mode 100644 index 0000000..cf24305 --- /dev/null +++ b/backend/src/api/master/pasien/pasien.repository.ts @@ -0,0 +1,171 @@ +import { prismaDb1 } from "../../../db"; +import { + generateMaxDb1, + selectFieldDb1, + timeHandler, +} from "../../../db/database.handler"; +import { dateNow } from "../../../middlewares/time"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const createPasienRepository = async ( + namapasien: string, + tanggallahir: Date, + jeniskelamin: string +) => { + const maxPasienId = await generateMaxDb1("ms_pasien_id_seq", "pasien_id"); + const nomrpasien = maxPasienId.toString().padStart(8, "0"); + const createPasien = await prismaDb1.mspasien.create({ + data: { + idpasien: maxPasienId, + created_at: dateNow(), + created_by: 1, + mrpasien: nomrpasien, + namapasien: namapasien, + tanggallahir: new Date(tanggallahir), + jeniskelamin: jeniskelamin, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + + return createPasien; +}; + +const getDataPasienRepository = async (nomrpasien: string) => { + const getPasien = await prismaDb1.mspasien.findFirst({ + where: { + mrpasien: nomrpasien, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + + return getPasien; +}; + +const getNamaPasienRepository = async (namapasien: string) => { + const getPasien = await prismaDb1.mspasien.findMany({ + where: { + namapasien: { + contains: namapasien, + mode: "insensitive", + }, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + + return getPasien; +}; + +const getDataPasienIdRepository = async (idpasien: number) => { + const getPasien = await prismaDb1.mspasien.findFirst({ + where: { + idpasien: idpasien, + deleted_by: null, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + + return getPasien; +}; + +const getPasienAllRepository = async () => { + const getPasien = await prismaDb1.mspasien.findMany({ + where: { + deleted_by: null, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + + return getPasien; +}; + +const updatePasienRepository = async ( + namapasien: string, + tanggallahir: Date, + jeniskelamin: string, + idpasien: number +) => { + const updatePasien = await prismaDb1.mspasien.update({ + where: { + idpasien: idpasien, + }, + data: { + namapasien: namapasien, + tanggallahir: new Date(tanggallahir), + jeniskelamin: jeniskelamin, + modified_at: dateNow(), + modified_by: 1, + }, + select: { + idpasien: true, + created_at: true, + created_by: true, + mrpasien: true, + namapasien: true, + tanggallahir: true, + jeniskelamin: true, + }, + }); + + return updatePasien; +}; + +const getCountPasienRepository = async () => { + const pasienCount = await prismaDb1.mspasien.count({ + where: { + deleted_by: null, + }, + }); + + return pasienCount; +}; + +export { + createPasienRepository, + getDataPasienRepository, + getNamaPasienRepository, + getPasienAllRepository, + updatePasienRepository, + getDataPasienIdRepository, + getCountPasienRepository, +}; diff --git a/backend/src/api/master/pasien/pasien.service.ts b/backend/src/api/master/pasien/pasien.service.ts new file mode 100644 index 0000000..8ed8e8e --- /dev/null +++ b/backend/src/api/master/pasien/pasien.service.ts @@ -0,0 +1,80 @@ +import * as dotenv from "dotenv"; +import { dateNow } from "../../../middlewares/time"; +import { + createPasienRepository, + getDataPasienRepository, + getNamaPasienRepository, + getPasienAllRepository, + updatePasienRepository, + getDataPasienIdRepository, +} from "./pasien.repository"; + +dotenv.config(); + +interface DataPasien { + namapasien: string; + tanggallahir: Date; + jeniskelamin: string; +} +const createPasienData = async (dataPasien: DataPasien) => { + const { namapasien, tanggallahir, jeniskelamin } = dataPasien; + let jenKel; + if (jeniskelamin === "L") { + jenKel = "Laki-Laki"; + } else { + jenKel = "Perempuan"; + } + const createPasien = createPasienRepository( + namapasien, + tanggallahir, + jenKel + ); + return createPasien; +}; + +const getDataPasienMr = async (nomrpasien: string) => { + const getPasien = await getDataPasienRepository(nomrpasien); + return getPasien; +}; + +const getDataPasienId = async (idpasien: number) => { + const getPasien = await getDataPasienIdRepository(idpasien); + return getPasien; +}; + +const getNamaPasien = async (namapasien: string) => { + const getPasien = await getNamaPasienRepository(namapasien); + return getPasien; +}; + +const getPasienAll = async () => { + const getPasien = await getPasienAllRepository(); + return getPasien; +}; + +const updatePasienData = async (dataPasien: DataPasien, idpasien: number) => { + const { namapasien, tanggallahir, jeniskelamin } = dataPasien; + let jenKel; + if (jeniskelamin === "L") { + jenKel = "Laki-Laki"; + } else { + jenKel = "Perempuan"; + } + const updatePasien = updatePasienRepository( + namapasien, + tanggallahir, + jenKel, + idpasien + ); + + return updatePasien; +} + +export { + createPasienData, + getDataPasienMr, + getNamaPasien, + getPasienAll, + updatePasienData, + getDataPasienId, +}; diff --git a/backend/src/api/master/pegawai/pegawai.controller.ts b/backend/src/api/master/pegawai/pegawai.controller.ts new file mode 100644 index 0000000..90b9bbb --- /dev/null +++ b/backend/src/api/master/pegawai/pegawai.controller.ts @@ -0,0 +1,250 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { body, check, param, query, validationResult } from "express-validator"; +import { + getPegawaiId, + getPegawaiAll, + createPegawaiData, + updatePegawaiDataAll, + deletePegawaiData, +} from "./pegawai.service"; + +export const router = Router(); + +router.get( + "/pegawai_id/:pegawai_id", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const pegawai_id = parseInt(req.params.pegawai_id, 10); + + const getPegawai: any = await getPegawaiId(pegawai_id); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const getPegawai: any = await getPegawaiAll(); + if (getPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getPegawai, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.post( + "/", + [ + body("namapegawai").notEmpty(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const createPegawai: any = await createPegawaiData(req.body); + if (createPegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createPegawai, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.put( + "/pegawai_id/:pegawai_id", + [ + param("pegawai_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const pegawai_id = await getPegawaiId(value); + + if (!pegawai_id) { + return Promise.reject( + "Pegawai ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("namapegawai").notEmpty(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const updateUserAll: any = await updatePegawaiDataAll( + req.body, + pegawai_id + ); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.delete( + "/pegawai_id/:pegawai_id", + [ + param("pegawai_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const pegawaiId = await getPegawaiId(value); + + if (!pegawaiId) { + return Promise.reject( + "User ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const pegawai_id = parseInt(req.params.pegawai_id, 10); + const deletePegawai: any = await deletePegawaiData(pegawai_id); + if (deletePegawai) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deletePegawai, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); diff --git a/backend/src/api/master/pegawai/pegawai.repository.ts b/backend/src/api/master/pegawai/pegawai.repository.ts new file mode 100644 index 0000000..44831dc --- /dev/null +++ b/backend/src/api/master/pegawai/pegawai.repository.ts @@ -0,0 +1,127 @@ +import { prismaDb1 } from "../../../db"; +import { + generateMaxDb1, + selectFieldDb1, + timeHandler, +} from "../../../db/database.handler"; +import { dateNow } from "../../../middlewares/time"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const createPegawaiRepository = async ( + namapegawai: string, +) => { + const maxPegawaiId = await generateMaxDb1("ms_pegawai_id_seq", "pegawai_id"); + const createPegawai = await prismaDb1.mspegawai.create({ + data: { + idpegawai: maxPegawaiId, + created_at: dateNow(), + created_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + + return createPegawai; +}; + +const getDataPegawaiId = async (pegawai_id: number) => { + const pegawai = await prismaDb1.mspegawai.findFirst({ + where: { + idpegawai: pegawai_id, + deleted_at: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + + return pegawai; +}; + +const getDataPegawaiAll = async () => { + const pegawai = await prismaDb1.mspegawai.findMany({ + where: { + deleted_by: null, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + + return pegawai; +} + +const updatePegawaiDataAllRepository = async ( + namapegawai: string, + pegawai_id: number +) => { + const updatePegawai = await prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + modified_at: dateNow(), + modified_by: 1, + namapegawai: namapegawai, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + + return updatePegawai; +}; + +const deletePegawaiRepository = async (pegawai_id: number) => { + const deleteUser = await prismaDb1.mspegawai.update({ + where: { + idpegawai: pegawai_id, + }, + data: { + deleted_at: dateNow(), + deleted_by: 1, + }, + select: { + idpegawai: true, + created_at: true, + created_by: true, + namapegawai: true, + }, + }); + + return deleteUser; +}; + +const getCountPegawaiRepository = async () => { + const pegawaiCount = await prismaDb1.mspegawai.count({ + where: { + deleted_by: null, + }, + }); + + return pegawaiCount; +}; + +export { + createPegawaiRepository, + getDataPegawaiId, + getDataPegawaiAll, + updatePegawaiDataAllRepository, + deletePegawaiRepository, + getCountPegawaiRepository, +}; diff --git a/backend/src/api/master/pegawai/pegawai.service.ts b/backend/src/api/master/pegawai/pegawai.service.ts new file mode 100644 index 0000000..297e71b --- /dev/null +++ b/backend/src/api/master/pegawai/pegawai.service.ts @@ -0,0 +1,49 @@ +import * as dotenv from "dotenv"; +import { dateNow } from "../../../middlewares/time"; +import { + createPegawaiRepository, + getDataPegawaiId, + getDataPegawaiAll, + updatePegawaiDataAllRepository, + deletePegawaiRepository, +} from "./pegawai.repository"; + +dotenv.config(); + +interface DataPegawai { + namapegawai: string; +} +const createPegawaiData = async (dataPegawai: DataPegawai) => { + const { namapegawai } = dataPegawai; + const createUser = createPegawaiRepository(namapegawai); + return createUser; +}; + +const getPegawaiId = async (pegawai_id: number) => { + const getPegawaiId = await getDataPegawaiId(pegawai_id); + return getPegawaiId; +}; + +const getPegawaiAll = async () => { + const getPegawai = await getDataPegawaiAll(); + return getPegawai; +}; + +const updatePegawaiDataAll = async (dataPegawai: any, pegawai_id: number) => { + const { namapegawai } = dataPegawai; + const updatePegawai = await updatePegawaiDataAllRepository(namapegawai, pegawai_id); + return updatePegawai; +}; + +const deletePegawaiData = async (pegawai_id: number) => { + const deletePegawai = await deletePegawaiRepository(pegawai_id); + return deletePegawai; +}; + +export { + getPegawaiId, + getPegawaiAll, + createPegawaiData, + updatePegawaiDataAll, + deletePegawaiData, +}; diff --git a/backend/src/api/master/ruang_pelayanan/ruangpelayanan.controller.ts b/backend/src/api/master/ruang_pelayanan/ruangpelayanan.controller.ts new file mode 100644 index 0000000..8df43f2 --- /dev/null +++ b/backend/src/api/master/ruang_pelayanan/ruangpelayanan.controller.ts @@ -0,0 +1,250 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { body, check, param, query, validationResult } from "express-validator"; +import { + getRuangpelayananId, + getRuangpelayananAll, + createRuangpelayananData, + updateRuangpelayananDataAll, + deleteRuangpelayananData, +} from "./ruangpelayanan.service"; + +export const router = Router(); + +router.get( + "/ruangpelayanan_id/:ruangpelayanan_id", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const ruangpelayanan_id = parseInt(req.params.ruangpelayanan_id, 10); + + const getRuangpelayanan: any = await getRuangpelayananId(ruangpelayanan_id); + if (getRuangpelayanan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getRuangpelayanan, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const getRuangpelayanan: any = await getRuangpelayananAll(); + if (getRuangpelayanan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getRuangpelayanan, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.post( + "/", + [ + body("namaruangpelayanan").notEmpty(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const createRuangpelayanan: any = await createRuangpelayananData(req.body); + if (createRuangpelayanan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createRuangpelayanan, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.put( + "/ruangpelayanan_id/:ruangpelayanan_id", + [ + param("ruangpelayanan_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const ruangpelayanan_id = await getRuangpelayananId(value); + + if (!ruangpelayanan_id) { + return Promise.reject( + "Ruang Pelayanan tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("namaruangpelayanan").notEmpty(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const ruangpelayanan_id = parseInt(req.params.ruangpelayanan_id, 10); + const updateRuangpelayananAll: any = await updateRuangpelayananDataAll( + req.body, + ruangpelayanan_id + ); + if (updateRuangpelayananAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateRuangpelayananAll, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.delete( + "/ruangpelayanan_id/:ruangpelayanan_id", + [ + param("ruangpelayanan_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const RuangpelayananId = await getRuangpelayananId(value); + + if (!RuangpelayananId) { + return Promise.reject( + "Ruang Pelayanan tidak ditemukan, silahkan coba lagi" + ); + } + }), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const ruangpelayanan_id = parseInt(req.params.ruangpelayanan_id, 10); + const deleteRuangpelayanan: any = await deleteRuangpelayananData(ruangpelayanan_id); + if (deleteRuangpelayanan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteRuangpelayanan, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); diff --git a/backend/src/api/master/ruang_pelayanan/ruangpelayanan.repository.ts b/backend/src/api/master/ruang_pelayanan/ruangpelayanan.repository.ts new file mode 100644 index 0000000..7819be9 --- /dev/null +++ b/backend/src/api/master/ruang_pelayanan/ruangpelayanan.repository.ts @@ -0,0 +1,127 @@ +import { prismaDb1 } from "../../../db"; +import { + generateMaxDb1, + selectFieldDb1, + timeHandler, +} from "../../../db/database.handler"; +import { dateNow } from "../../../middlewares/time"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const createRuangpelayananRepository = async ( + namaruangpelayanan: string, +) => { + const maxRuangpelayananId = await generateMaxDb1("ms_ruang_pelayanan_id_seq", "ruangpelayanan_id"); + const createRuangpelayanan = await prismaDb1.msruangpelayanan.create({ + data: { + idruangpelayanan: maxRuangpelayananId, + created_at: dateNow(), + created_by: 1, + namaruangpelayanan: namaruangpelayanan, + }, + select: { + idruangpelayanan: true, + created_at: true, + created_by: true, + namaruangpelayanan: true, + }, + }); + + return createRuangpelayanan; +}; + +const getDataRuangpelayananId = async (Ruangpelayanan_id: number) => { + const Ruangpelayanan = await prismaDb1.msruangpelayanan.findFirst({ + where: { + idruangpelayanan: Ruangpelayanan_id, + deleted_at: null, + }, + select: { + idruangpelayanan: true, + created_at: true, + created_by: true, + namaruangpelayanan: true, + }, + }); + + return Ruangpelayanan; +}; + +const getDataRuangpelayananAll = async () => { + const Ruangpelayanan = await prismaDb1.msruangpelayanan.findMany({ + where: { + deleted_by: null, + }, + select: { + idruangpelayanan: true, + created_at: true, + created_by: true, + namaruangpelayanan: true, + }, + }); + + return Ruangpelayanan; +} + +const updateRuangpelayananDataAllRepository = async ( + namaruangpelayanan: string, + Ruangpelayanan_id: number +) => { + const updateRuangpelayanan = await prismaDb1.msruangpelayanan.update({ + where: { + idruangpelayanan: Ruangpelayanan_id, + }, + data: { + modified_at: dateNow(), + modified_by: 1, + namaruangpelayanan: namaruangpelayanan, + }, + select: { + idruangpelayanan: true, + created_at: true, + created_by: true, + namaruangpelayanan: true, + }, + }); + + return updateRuangpelayanan; +}; + +const deleteRuangpelayananRepository = async (Ruangpelayanan_id: number) => { + const deleteUser = await prismaDb1.msruangpelayanan.update({ + where: { + idruangpelayanan: Ruangpelayanan_id, + }, + data: { + deleted_at: dateNow(), + deleted_by: 1, + }, + select: { + idruangpelayanan: true, + created_at: true, + created_by: true, + namaruangpelayanan: true, + }, + }); + + return deleteUser; +}; + +const getCountRuangpelayananRepository = async () => { + const ruangpelayananCount = await prismaDb1.msruangpelayanan.count({ + where: { + deleted_by: null, + }, + }); + + return ruangpelayananCount; +}; + +export { + createRuangpelayananRepository, + getDataRuangpelayananId, + getDataRuangpelayananAll, + updateRuangpelayananDataAllRepository, + deleteRuangpelayananRepository, + getCountRuangpelayananRepository, +}; diff --git a/backend/src/api/master/ruang_pelayanan/ruangpelayanan.service.ts b/backend/src/api/master/ruang_pelayanan/ruangpelayanan.service.ts new file mode 100644 index 0000000..5a2dabf --- /dev/null +++ b/backend/src/api/master/ruang_pelayanan/ruangpelayanan.service.ts @@ -0,0 +1,49 @@ +import * as dotenv from "dotenv"; +import { dateNow } from "../../../middlewares/time"; +import { + createRuangpelayananRepository, + getDataRuangpelayananId, + getDataRuangpelayananAll, + updateRuangpelayananDataAllRepository, + deleteRuangpelayananRepository, +} from "./ruangpelayanan.repository"; + +dotenv.config(); + +interface DataRuangpelayanan { + namaruangpelayanan: string; +} +const createRuangpelayananData = async (dataRuangpelayanan: DataRuangpelayanan) => { + const { namaruangpelayanan } = dataRuangpelayanan; + const createRuangpelayanan = createRuangpelayananRepository(namaruangpelayanan); + return createRuangpelayanan; +}; + +const getRuangpelayananId = async (ruangpelayanan_id: number) => { + const getRuangpelayananId = await getDataRuangpelayananId(ruangpelayanan_id); + return getRuangpelayananId; +}; + +const getRuangpelayananAll = async () => { + const getRuangpelayanan = await getDataRuangpelayananAll(); + return getRuangpelayanan; +}; + +const updateRuangpelayananDataAll = async (dataRuangpelayanan: any, ruangpelayanan_id: number) => { + const { namaruangpelayanan } = dataRuangpelayanan; + const updateRuangpelayanan = await updateRuangpelayananDataAllRepository(namaruangpelayanan, ruangpelayanan_id); + return updateRuangpelayanan; +}; + +const deleteRuangpelayananData = async (ruangpelayanan_id: number) => { + const deleteRuangpelayanan = await deleteRuangpelayananRepository(ruangpelayanan_id); + return deleteRuangpelayanan; +}; + +export { + getRuangpelayananId, + getRuangpelayananAll, + createRuangpelayananData, + updateRuangpelayananDataAll, + deleteRuangpelayananData, +}; diff --git a/backend/src/api/master/tindakan/tindakan.controller.ts b/backend/src/api/master/tindakan/tindakan.controller.ts new file mode 100644 index 0000000..9aeddac --- /dev/null +++ b/backend/src/api/master/tindakan/tindakan.controller.ts @@ -0,0 +1,251 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { body, check, param, query, validationResult } from "express-validator"; +import { + getTindakanId, + getTindakanAll, + createTindakanData, + updateTindakanDataAll, + deleteTindakanData, +} from "./tindakan.service"; + +export const router = Router(); + +router.get( + "/tindakan_id/:tindakan_id", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const tindakan_id = parseInt(req.params.tindakan_id, 10); + const getTindakan: any = await getTindakanId(tindakan_id); + if (getTindakan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTindakan, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const getTindakan: any = await getTindakanAll(); + if (getTindakan && getTindakan.length > 0) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTindakan, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.post( + "/", + [ + body("namatindakan").notEmpty(), + body("tariftindakan").notEmpty().isNumeric(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const createTindakan: any = await createTindakanData(req.body); + if (createTindakan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createTindakan, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.put( + "/tindakan_id/:tindakan_id", + [ + param("tindakan_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const tindakan_id = await getTindakanId(value); + + if (!tindakan_id) { + return Promise.reject( + "Tindakan tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("namatindakan").notEmpty(), + body("tariftindakan").notEmpty().isNumeric(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const tindakan_id = parseInt(req.params.tindakan_id, 10); + const updateTindakanAll: any = await updateTindakanDataAll( + req.body, + tindakan_id + ); + if (updateTindakanAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateTindakanAll, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.delete( + "/tindakan_id/:tindakan_id", + [ + param("tindakan_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const TindakanId = await getTindakanId(value); + + if (!TindakanId) { + return Promise.reject( + "Tindakan ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const tindakan_id = parseInt(req.params.tindakan_id, 10); + const deleteTindakan: any = await deleteTindakanData(tindakan_id); + if (deleteTindakan) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteTindakan, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); diff --git a/backend/src/api/master/tindakan/tindakan.repository.ts b/backend/src/api/master/tindakan/tindakan.repository.ts new file mode 100644 index 0000000..6f31dc8 --- /dev/null +++ b/backend/src/api/master/tindakan/tindakan.repository.ts @@ -0,0 +1,136 @@ +import { prismaDb1 } from "../../../db"; +import { + generateMaxDb1, + selectFieldDb1, + timeHandler, +} from "../../../db/database.handler"; +import { dateNow } from "../../../middlewares/time"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const createTindakanRepository = async ( + namatindakan: string, + tariftindakan: number +) => { + const maxTindakanId = await generateMaxDb1("ms_tindakan_id_seq", "tindakan_id"); + const createTindakan = await prismaDb1.mstindakan.create({ + data: { + idtindakan: maxTindakanId, + created_at: dateNow(), + created_by: 1, + namatindakan: namatindakan, + tariftindakan: tariftindakan + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + + return createTindakan; +}; + +const getDataTindakanId = async (tindakan_id: number) => { + const tindakan = await prismaDb1.mstindakan.findFirst({ + where: { + idtindakan: tindakan_id, + deleted_at: null, + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + + return tindakan; +}; + +const getDataTindakanAll = async () => { + const tindakan = await prismaDb1.mstindakan.findMany({ + where: { + deleted_by: null, + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + + return tindakan; +} + +const updateTindakanDataAllRepository = async ( + namatindakan: string, + tariftindakan: number, + tindakan_id: number +) => { + const updateTindakan = await prismaDb1.mstindakan.update({ + where: { + idtindakan: tindakan_id, + }, + data: { + modified_at: dateNow(), + modified_by: 1, + namatindakan: namatindakan, + tariftindakan: tariftindakan + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + + return updateTindakan; +}; + +const deleteTindakanRepository = async (tindakan_id: number) => { + const deleteUser = await prismaDb1.mstindakan.update({ + where: { + idtindakan: tindakan_id, + }, + data: { + deleted_at: dateNow(), + deleted_by: 1, + }, + select: { + idtindakan: true, + created_at: true, + created_by: true, + namatindakan: true, + tariftindakan: true + }, + }); + + return deleteUser; +}; + +const getCountTindakanRepository = async () => { + const tindakanCount = await prismaDb1.mstindakan.count({ + where: { + deleted_by: null, + }, + }); + + return tindakanCount; +}; + +export { + createTindakanRepository, + getDataTindakanId, + getDataTindakanAll, + updateTindakanDataAllRepository, + deleteTindakanRepository, + getCountTindakanRepository, +}; diff --git a/backend/src/api/master/tindakan/tindakan.service.ts b/backend/src/api/master/tindakan/tindakan.service.ts new file mode 100644 index 0000000..2913ee7 --- /dev/null +++ b/backend/src/api/master/tindakan/tindakan.service.ts @@ -0,0 +1,60 @@ +import * as dotenv from "dotenv"; +import { dateNow } from "../../../middlewares/time"; +import { + createTindakanRepository, + getDataTindakanId, + getDataTindakanAll, + updateTindakanDataAllRepository, + deleteTindakanRepository, +} from "./tindakan.repository"; + +dotenv.config(); + +interface DataTindakan { + namatindakan: string; + tariftindakan: number; +} +const createTindakanData = async (dataTindakan: DataTindakan) => { + const { namatindakan, tariftindakan } = dataTindakan; + const createTindakan = createTindakanRepository( + namatindakan, + tariftindakan + ); + return createTindakan; +}; + +const getTindakanId = async (tindakan_id: number) => { + const getTindakanId = await getDataTindakanId(tindakan_id); + return getTindakanId; +}; + +const getTindakanAll = async () => { + const getTindakan = await getDataTindakanAll(); + return getTindakan; +}; + +const updateTindakanDataAll = async ( + dataTindakan: DataTindakan, + tindakan_id: number, +) => { + const { namatindakan, tariftindakan } = dataTindakan; + const updateTindakan = await updateTindakanDataAllRepository( + namatindakan, + tariftindakan, + tindakan_id + ); + return updateTindakan; +}; + +const deleteTindakanData = async (tindakan_id: number) => { + const deleteTindakan = await deleteTindakanRepository(tindakan_id); + return deleteTindakan; +}; + +export { + getTindakanId, + getTindakanAll, + createTindakanData, + updateTindakanDataAll, + deleteTindakanData, +}; diff --git a/backend/src/api/master/users/users.controller.ts b/backend/src/api/master/users/users.controller.ts new file mode 100644 index 0000000..6fa44b0 --- /dev/null +++ b/backend/src/api/master/users/users.controller.ts @@ -0,0 +1,356 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { body, check, param, query, validationResult } from "express-validator"; +import { + createUserData, + checkUsername, + updateUserDataAll, + updateUserDataPart, + getUserId, + getUserAll, + deleteUserData, +} from "./users.service"; + +export const router = Router(); + +router.get( + "/user_id/:user_id", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const user_id = parseInt(req.params.user_id, 10); + + const getUser: any = await getUserId(user_id); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const getUser: any = await getUserAll(); + if (getUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getUser, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.post( + "/", + [ + body("username") + .notEmpty() + .custom(async (value, { req }) => { + if (value) { + value = value.toString(); + const username = await checkUsername(value); + + if (username) { + return Promise.reject( + "Username sudah terdaftar, silahkan gunakan username lain" + ); + } + } + }), + body("password").notEmpty(), + body("fullname").notEmpty(), + body("email").notEmpty().isEmail(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const createUser: any = await createUserData(req.body); + if (createUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createUser, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.put( + "/user_id/:user_id", + [ + param("user_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const userId = await getUserId(value); + + if (!userId) { + return Promise.reject( + "User ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("username") + .notEmpty() + .custom(async (value, { req }) => { + value = value.toString(); + const username = await checkUsername(value, req.params?.user_id); + + if (username) { + return Promise.reject( + "Username sudah terdaftar, silahkan gunakan username lain" + ); + } + }), + body("password").notEmpty(), + body("fullname").notEmpty(), + body("email").notEmpty().isEmail(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const user_id = parseInt(req.params.user_id, 10); + + const updateUserAll: any = await updateUserDataAll( + req.body, + user_id + ); + if (updateUserAll) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserAll, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.patch( + "/user_id/:user_id", + [ + param("user_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const userId = await getUserId(value); + + if (!userId) { + return Promise.reject( + "User ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("username") + .optional() + .custom(async (value, { req }) => { + value = value.toString(); + const username = await checkUsername(value); + + if (username) { + return Promise.reject( + "Username sudah terdaftar, silahkan gunakan username lain" + ); + } + }), + body("email").optional().isEmail(), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const user_id = parseInt(req.params.user_id, 10); + + const updateUserPart: any = await updateUserDataPart( + req.body, + user_id + ); + if (updateUserPart) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateUserPart, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.delete( + "/user_id/:user_id", + [ + param("user_id") + .notEmpty() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const userId = await getUserId(value); + + if (!userId) { + return Promise.reject( + "User ID tidak ditemukan, silahkan coba lagi" + ); + } + }), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const user_id = parseInt(req.params.user_id, 10); + const created_by = parseInt(req.body.created_by, 10); + const deleteUser: any = await deleteUserData(user_id, created_by); + if (deleteUser) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: deleteUser, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); diff --git a/backend/src/api/master/users/users.repository.ts b/backend/src/api/master/users/users.repository.ts new file mode 100644 index 0000000..cd8bfcb --- /dev/null +++ b/backend/src/api/master/users/users.repository.ts @@ -0,0 +1,195 @@ +import { prismaDb1 } from "../../../db"; +import { + generateMaxDb1, + selectFieldDb1, + timeHandler, +} from "../../../db/database.handler"; +import { dateNow } from "../../../middlewares/time"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const createUserRepository = async ( + username: string, + password: string, + fullname: string, + email: string, + created_by: number +) => { + const maxUserId = await generateMaxDb1("ms_users_id_seq", "user_id"); + const createUser = await prismaDb1.msusers.create({ + data: { + user_id: maxUserId, + created_at: dateNow(), + created_by: created_by, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return createUser; +}; + +const getDataUserId = async (user_id: number) => { + const user = await prismaDb1.msusers.findFirst({ + where: { + user_id: user_id, + is_active: true, + deleted_at: null, + }, + select: { + user_id: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return user; +}; + +const getDataUserAll = async () => { + const user = await prismaDb1.msusers.findMany({ + where: { + deleted_by: null, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return user; +} + +const checkDataUsername = async (username: string, user_id?: number) => { + const user = await prismaDb1.msusers.findFirst({ + where: { + username: username, + user_id: user_id ? { not: user_id } : undefined, + }, + select: { + user_id: true, + }, + }); + + return user; +}; + +const updateUserDataAllRepository = async ( + username: string, + password: string, + fullname: string, + email: string, + created_by: number, + user_id: number +) => { + const updateUser = await prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + modified_at: dateNow(), + modified_by: created_by, + username: username, + password: password, + full_name: fullname, + email: email, + is_active: true, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return updateUser; +}; + +const updateUserDataPartRepository = async ( + updateField: { + [key: string]: any; + modified_at: Date; + modified_by: number; + }, + user_id: number, + created_by: number +) => { + const updateUser = await prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + ...updateField, + modified_at: dateNow(), + modified_by: created_by, + }, + select: { + user_id: true, + created_at: true, + created_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return updateUser; +}; + +const deleteUserRepository = async (user_id: number, created_by: number) => { + const deleteUser = await prismaDb1.msusers.update({ + where: { + user_id: user_id, + }, + data: { + deleted_at: dateNow(), + deleted_by: created_by, + is_active: false, + }, + select: { + user_id: true, + deleted_at: true, + deleted_by: true, + username: true, + full_name: true, + email: true, + is_active: true, + }, + }); + + return deleteUser; +}; + +export { + checkDataUsername, + createUserRepository, + updateUserDataAllRepository, + updateUserDataPartRepository, + getDataUserId, + getDataUserAll, + deleteUserRepository, +}; diff --git a/backend/src/api/master/users/users.service.ts b/backend/src/api/master/users/users.service.ts new file mode 100644 index 0000000..76f317b --- /dev/null +++ b/backend/src/api/master/users/users.service.ts @@ -0,0 +1,95 @@ +import * as dotenv from "dotenv"; +import { dateNow } from "../../../middlewares/time"; +import { + createUserRepository, + checkDataUsername, + updateUserDataAllRepository, + getDataUserId, + getDataUserAll, + updateUserDataPartRepository, + deleteUserRepository, +} from "./users.repository"; +import bcrypt from "bcrypt"; + +dotenv.config(); + +interface DataUser { + username: string; + password: string; + fullname: string; + email: string; + created_by: number; +} +const createUserData = async (dataUser: DataUser) => { + const { username, password, fullname, email, created_by } = dataUser; + const saltRounds = 10; + const passwordHash = await bcrypt.hash(password, saltRounds); + const createUser = createUserRepository( + username, + passwordHash, + fullname, + email, + created_by + ); + return createUser; +}; + +const getUserId = async (user_id: number) => { + const getUserId = await getDataUserId(user_id); + return getUserId; +}; + +const getUserAll = async () => { + const getUser = await getDataUserAll(); + return getUser; +}; + +const checkUsername = async (username: string, user_id?: number) => { + if (user_id) { + user_id = parseInt(user_id.toString(), 10); + } + const checkUser = checkDataUsername(username, user_id); + return checkUser; +}; + +const updateUserDataAll = async (dataUser: any, user_id: number) => { + const { username, password, fullname, email, created_by } = dataUser; + const saltRounds = 10; + const passwordHash = await bcrypt.hash(password, saltRounds); + const updateUser = await updateUserDataAllRepository( + username, + passwordHash, + fullname, + email, + created_by, + user_id + ); + return updateUser; +}; + +const updateUserDataPart = async (dataUser: any, user_id: number) => { + if (dataUser.password) { + const saltRounds = 10; + const passwordHash = await bcrypt.hash(dataUser.password, saltRounds); + dataUser.password = passwordHash; + } + + const createdBy = dataUser.created_by; + const updateUser = await updateUserDataPartRepository(dataUser, user_id, createdBy); + return updateUser; +}; + +const deleteUserData = async (user_id: number, created_by: number) => { + const deleteUser = await deleteUserRepository(user_id, created_by); + return deleteUser; +}; + +export { + createUserData, + checkUsername, + updateUserDataAll, + updateUserDataPart, + getUserId, + deleteUserData, + getUserAll, +}; diff --git a/backend/src/api/transaction/registrasi/registrasi.controller.ts b/backend/src/api/transaction/registrasi/registrasi.controller.ts new file mode 100644 index 0000000..0ecb01c --- /dev/null +++ b/backend/src/api/transaction/registrasi/registrasi.controller.ts @@ -0,0 +1,280 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { body, check, param, query, validationResult } from "express-validator"; +import { + createRegistrasiData, + getRegistrasiId, + getRegistrasiData, + updateRegistrasiData, +} from "./registrasi.service"; +import { getDataPasienId } from "../../master/pasien/pasien.service"; +import { getAsuransiId } from "../../master/asuransi/asuransi.service"; +import { getPegawaiId } from "../../master/pegawai/pegawai.service"; +import { getRuangpelayananId } from "../../master/ruang_pelayanan/ruangpelayanan.service"; + +export const router = Router(); + +router.post( + "/", + [ + body("tanggalregistrasi").notEmpty().isISO8601(), + body("idpasien") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getPasienId = await getDataPasienId(value); + if (!getPasienId) { + return Promise.reject( + "Pasien tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("nomorkartuasuransi").notEmpty(), + body("idasuransi") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getAsuransi = await getAsuransiId(value); + if (!getAsuransi) { + return Promise.reject( + "Asuransi tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("idpegawai") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getPegawai = await getPegawaiId(value); + if (!getPegawai) { + return Promise.reject( + "Pegawai tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("idruangpelayanan") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getRuangpelayanan = await getRuangpelayananId(value); + if (!getRuangpelayanan) { + return Promise.reject( + "Ruangpelayanan tidak ditemukan, silahkan coba lagi" + ); + } + }), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const createRegistrasi: any = await createRegistrasiData(req.body); + if (createRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createRegistrasi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.put( + "/registrasi_id/:registrasi_id", + [ + body("tanggalregistrasi").notEmpty().isISO8601(), + body("idpasien") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getPasienId = await getDataPasienId(value); + if (!getPasienId) { + return Promise.reject( + "Pasien tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("nomorkartuasuransi").notEmpty(), + body("idasuransi") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getAsuransi = await getAsuransiId(value); + if (!getAsuransi) { + return Promise.reject( + "Asuransi tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("idpegawai") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getPegawai = await getPegawaiId(value); + if (!getPegawai) { + return Promise.reject( + "Pegawai tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("idruangpelayanan") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getRuangpelayanan = await getRuangpelayananId(value); + if (!getRuangpelayanan) { + return Promise.reject( + "Ruangpelayanan tidak ditemukan, silahkan coba lagi" + ); + } + }), + param("registrasi_id") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getRegistrasi = await getRegistrasiId(value); + if (!getRegistrasi) { + return Promise.reject( + "Registrasi tidak ditemukan, silahkan coba lagi" + ); + } + }), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const registrasi_id = parseInt(req.params.registrasi_id, 10); + const updateRegistrasi: any = await updateRegistrasiData( + req.body, + registrasi_id + ); + if (updateRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateRegistrasi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/registrasi_id/:registrasi_id", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const registrasi_id = parseInt(req.params.registrasi_id, 10); + const getRegistrasi: any = await getRegistrasiId(registrasi_id); + if (getRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getRegistrasi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get("/", async (req: Request, res: Response, next: NextFunction) => { + try { + const getRegistrasi: any = await getRegistrasiData(); + if (getRegistrasi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getRegistrasi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } +}); diff --git a/backend/src/api/transaction/registrasi/registrasi.repository.ts b/backend/src/api/transaction/registrasi/registrasi.repository.ts new file mode 100644 index 0000000..41f8749 --- /dev/null +++ b/backend/src/api/transaction/registrasi/registrasi.repository.ts @@ -0,0 +1,221 @@ +import { prismaDb1 } from "../../../db"; +import { + generateMaxDb1, + selectFieldDb1, + timeHandler, +} from "../../../db/database.handler"; +import { dateNow } from "../../../middlewares/time"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const createRegistrasiRepository = async ( + tanggalregistrasi: Date, + idpasien: number, + nomorkartuasuransi: string, + idasuransi: number, + idpegawai: number, + idruangpelayanan: number +) => { + const maxRegistrasiId = await generateMaxDb1( + "tr_registrasi_id_seq", + "registrasi_id" + ); + const createRegistrasi = await prismaDb1.trregistrasi.create({ + data: { + idregistrasi: maxRegistrasiId, + created_at: dateNow(), + created_by: 1, + tanggalregistrasi: new Date(tanggalregistrasi), + idpasien: idpasien, + nomorkartuasuransi: nomorkartuasuransi, + idasuransi: idasuransi, + idpegawai: idpegawai, + idruangpelayanan: idruangpelayanan, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + idasuransi: true, + idpasien: true, + idpegawai: true, + idruangpelayanan: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + jeniskelamin: true, + }, + }, + }, + }); + + return createRegistrasi; +}; + +const updateRegistrasiDataRepository = async ( + tanggalregistrasi: Date, + idpasien: number, + nomorkartuasuransi: string, + idasuransi: number, + idpegawai: number, + idruangpelayanan: number, + idregistrasi: number +) => { + const createRegistrasi = await prismaDb1.trregistrasi.update({ + where: { + idregistrasi: idregistrasi, + }, + data: { + modified_at: dateNow(), + modified_by: 1, + tanggalregistrasi: new Date(tanggalregistrasi), + idpasien: idpasien, + nomorkartuasuransi: nomorkartuasuransi, + idasuransi: idasuransi, + idpegawai: idpegawai, + idruangpelayanan: idruangpelayanan, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + idasuransi: true, + idpasien: true, + idpegawai: true, + idruangpelayanan: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + jeniskelamin: true, + }, + }, + }, + }); + + return createRegistrasi; +}; + +const getDataRegistrasiRepository = async (idregistrasi: number) => { + const getDataRegistrasi = await prismaDb1.trregistrasi.findUnique({ + where: { + idregistrasi: idregistrasi, + deleted_at: null, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + idasuransi: true, + idpasien: true, + idpegawai: true, + idruangpelayanan: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + jeniskelamin: true, + }, + }, + }, + }); + + return getDataRegistrasi; +}; + +const getDataRegistrasiRepositoryAll = async () => { + const getDataRegistrasi = await prismaDb1.trregistrasi.findMany({ + where: { + deleted_at: null, + }, + select: { + idregistrasi: true, + created_at: true, + created_by: true, + tanggalregistrasi: true, + nomorkartuasuransi: true, + idasuransi: true, + idpasien: true, + idpegawai: true, + idruangpelayanan: true, + msasuransi: { + select: { + namaasuransi: true, + }, + }, + mspegawai: { + select: { namapegawai: true }, + }, + msruangpelayanan: { + select: { namaruangpelayanan: true }, + }, + mspasien: { + select: { + namapasien: true, + mrpasien: true, + jeniskelamin: true, + }, + }, + }, + }); + + return getDataRegistrasi; +}; + +const getCountRegistrasiRepository = async () => { + const registrasiCount = await prismaDb1.trregistrasi.count({ + where: { + deleted_by: null, + }, + }); + + return registrasiCount; +}; + +export { + createRegistrasiRepository, + getDataRegistrasiRepository, + getDataRegistrasiRepositoryAll, + updateRegistrasiDataRepository, + getCountRegistrasiRepository, +}; diff --git a/backend/src/api/transaction/registrasi/registrasi.service.ts b/backend/src/api/transaction/registrasi/registrasi.service.ts new file mode 100644 index 0000000..448321c --- /dev/null +++ b/backend/src/api/transaction/registrasi/registrasi.service.ts @@ -0,0 +1,80 @@ +import * as dotenv from "dotenv"; +import { dateNow } from "../../../middlewares/time"; +import { + createRegistrasiRepository, + getDataRegistrasiRepository, + getDataRegistrasiRepositoryAll, + updateRegistrasiDataRepository, +} from "./registrasi.repository"; + +dotenv.config(); + +interface DataRegistrasi { + tanggalregistrasi: Date; + idpasien: number; + nomorkartuasuransi: string; + idasuransi: number; + idpegawai: number; + idruangpelayanan: number; +} +const createRegistrasiData = async (dataRegistrasi: DataRegistrasi) => { + const { + tanggalregistrasi, + idpasien, + nomorkartuasuransi, + idasuransi, + idpegawai, + idruangpelayanan, + } = dataRegistrasi; + + const createRegistrasi = createRegistrasiRepository( + tanggalregistrasi, + idpasien, + nomorkartuasuransi, + idasuransi, + idpegawai, + idruangpelayanan + ); + return createRegistrasi; +}; + +const getRegistrasiId = async (idregistrasi: number) => { + const getRegistrasi = await getDataRegistrasiRepository(idregistrasi); + return getRegistrasi; +}; + +const getRegistrasiData = async () => { + const getRegistrasi = await getDataRegistrasiRepositoryAll(); + return getRegistrasi; +}; + +const updateRegistrasiData = async ( + dataRegistrasi: DataRegistrasi, + idregistrasi: number +) => { + const { + tanggalregistrasi, + idpasien, + nomorkartuasuransi, + idasuransi, + idpegawai, + idruangpelayanan, + } = dataRegistrasi; + const updateRegistrasi = await updateRegistrasiDataRepository( + tanggalregistrasi, + idpasien, + nomorkartuasuransi, + idasuransi, + idpegawai, + idruangpelayanan, + idregistrasi + ); + return updateRegistrasi; +}; + +export { + createRegistrasiData, + getRegistrasiId, + getRegistrasiData, + updateRegistrasiData, +}; diff --git a/backend/src/api/transaction/transaksi/transaksi.controller.ts b/backend/src/api/transaction/transaksi/transaksi.controller.ts new file mode 100644 index 0000000..69ec537 --- /dev/null +++ b/backend/src/api/transaction/transaksi/transaksi.controller.ts @@ -0,0 +1,295 @@ +import { Router, Request, Response, NextFunction } from "express"; +import { body, check, param, query, validationResult } from "express-validator"; +import { + createTransaksiData, + getTransaksiId, + getTransaksiData, + updateTransaksiData, + getTransaksiRegistrasiId, +} from "./transaksi.service"; +import { getRegistrasiId } from "../../transaction/registrasi/registrasi.service"; +import { getTindakanId } from "../../master/tindakan/tindakan.service"; +import { getPegawaiId } from "../../master/pegawai/pegawai.service"; + +export const router = Router(); + +router.post( + "/", + [ + body("idregistrasi") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getPasienId = await getRegistrasiId(value); + if (!getPasienId) { + return Promise.reject( + "Registrasi tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("idtindakan") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getPasienId = await getTindakanId(value); + if (!getPasienId) { + return Promise.reject( + "Tindakan tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("jmltindakan").notEmpty().isNumeric(), + body("idpegawai") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getPegawai = await getPegawaiId(value); + if (!getPegawai) { + return Promise.reject( + "Pegawai tidak ditemukan, silahkan coba lagi" + ); + } + }), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const createTransaksi: any = await createTransaksiData(req.body); + if (createTransaksi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: createTransaksi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.put( + "/transaksi_id/:transaksi_id", + [ + body("idregistrasi") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getPasienId = await getRegistrasiId(value); + if (!getPasienId) { + return Promise.reject( + "Registrasi tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("idtindakan") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getPasienId = await getTindakanId(value); + if (!getPasienId) { + return Promise.reject( + "Tindakan tidak ditemukan, silahkan coba lagi" + ); + } + }), + body("jmltindakan").notEmpty().isNumeric(), + body("idpegawai") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getPegawai = await getPegawaiId(value); + if (!getPegawai) { + return Promise.reject( + "Pegawai tidak ditemukan, silahkan coba lagi" + ); + } + }), + param("transaksi_id") + .notEmpty() + .isNumeric() + .custom(async (value, { req }) => { + value = parseInt(value, 10); + const getTransaksi = await getTransaksiId(value); + if (!getTransaksi) { + return Promise.reject( + "Transaksi tidak ditemukan, silahkan coba lagi" + ); + } + }), + ], + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const transaksi_id = parseInt(req.params.transaksi_id, 10); + const updateTransaksi: any = await updateTransaksiData( + req.body, + transaksi_id + ); + if (updateTransaksi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: updateTransaksi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/transaksi_id/:transaksi_id", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const transaksi_id = parseInt(req.params.transaksi_id, 10); + const getTransaksi: any = await getTransaksiId(transaksi_id); + if (getTransaksi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTransaksi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get( + "/registrasi_id/:registrasi_id", + async (req: Request, res: Response, next: NextFunction) => { + try { + const errors = validationResult(req); + if (!errors.isEmpty()) { + res.status(200).send({ + response: errors.array(), + metadata: { + code: 400, + message: "Validation error", + }, + }); + return; + } + + const registrasi_id = parseInt(req.params.registrasi_id, 10); + const getTransaksi: any = await getTransaksiRegistrasiId(registrasi_id); + if (getTransaksi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTransaksi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } + } +); + +router.get("/", async (req: Request, res: Response, next: NextFunction) => { + try { + const getTransaksi: any = await getTransaksiData(); + if (getTransaksi) { + res.status(200).send({ + metadata: { + code: 200, + message: "Success", + }, + response: getTransaksi, + }); + } else { + res.status(200).send({ + metadata: { + code: 201, + message: "Failed", + }, + response: [], + }); + } + } catch (error: any) { + next(error.message.replace(/\n/g, " ")); + } +}); diff --git a/backend/src/api/transaction/transaksi/transaksi.repository.ts b/backend/src/api/transaction/transaksi/transaksi.repository.ts new file mode 100644 index 0000000..20fe650 --- /dev/null +++ b/backend/src/api/transaction/transaksi/transaksi.repository.ts @@ -0,0 +1,174 @@ +import { prismaDb1 } from "../../../db"; +import { + generateMaxDb1, + selectFieldDb1, + timeHandler, +} from "../../../db/database.handler"; +import { dateNow } from "../../../middlewares/time"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const createTransaksiRepository = async ( + idregistrasi: number, + idtindakan: number, + jmltindakan: number, + idpegawai: number +) => { + const maxTransaksiId = await generateMaxDb1( + "tr_transaksi_id_seq", + "transaksi_id" + ); + const createTransaksi = await prismaDb1.trtransaksi.create({ + data: { + idtransaksi: maxTransaksiId, + created_at: dateNow(), + created_by: 1, + idregistrasi: idregistrasi, + idtindakan: idtindakan, + jmltindakan: jmltindakan, + idpegawai: idpegawai, + }, + select: { + idtransaksi: true, + created_at: true, + created_by: true, + idregistrasi: true, + jmltindakan: true, + mspegawai: { + select: { namapegawai: true }, + }, + mstindakan: { + select: { namatindakan: true, tariftindakan: true }, + }, + }, + }); + + return createTransaksi; +}; + +const updateTransaksiDataRepository = async ( + idregistrasi: number, + idtindakan: number, + jmltindakan: number, + idpegawai: number, + idtransaksi: number +) => { + const createTransaksi = await prismaDb1.trtransaksi.update({ + where: { + idtransaksi: idtransaksi, + }, + data: { + modified_at: dateNow(), + modified_by: 1, + idregistrasi: idregistrasi, + idtindakan: idtindakan, + jmltindakan: jmltindakan, + idpegawai: idpegawai, + }, + select: { + idtransaksi: true, + created_at: true, + created_by: true, + idregistrasi: true, + jmltindakan: true, + mspegawai: { + select: { namapegawai: true }, + }, + mstindakan: { + select: { namatindakan: true, tariftindakan: true }, + }, + }, + }); + + return createTransaksi; +}; + +const getDataTransaksiRepository = async (idtransaksi: number) => { + const getDataTransaksi = await prismaDb1.trtransaksi.findUnique({ + where: { + idtransaksi: idtransaksi, + deleted_at: null, + }, + select: { + idtransaksi: true, + created_at: true, + created_by: true, + idregistrasi: true, + jmltindakan: true, + mspegawai: { + select: { namapegawai: true }, + }, + mstindakan: { + select: { namatindakan: true, tariftindakan: true }, + }, + }, + }); + + return getDataTransaksi; +}; + +const getDataTransaksiRepositoryAll = async () => { + const getDataTransaksi = await prismaDb1.trtransaksi.findMany({ + where: { + deleted_at: null, + }, + select: { + idtransaksi: true, + created_at: true, + created_by: true, + idregistrasi: true, + jmltindakan: true, + mspegawai: { + select: { namapegawai: true }, + }, + mstindakan: { + select: { namatindakan: true, tariftindakan: true }, + }, + }, + }); + + return getDataTransaksi; +}; + +const getCountTransaksiRepository = async () => { + const transaksiCount = await prismaDb1.trtransaksi.count({ + where: { + deleted_by: null, + }, + }); + + return transaksiCount; +}; + +const getDataTransaksiRegistrasiRepository = async (idregistrasi: number) => { + const getDataTransaksi = await prismaDb1.trtransaksi.findMany({ + where: { + idregistrasi: idregistrasi, + deleted_at: null, + }, + select: { + idtransaksi: true, + created_at: true, + created_by: true, + idregistrasi: true, + jmltindakan: true, + mspegawai: { + select: { namapegawai: true }, + }, + mstindakan: { + select: { namatindakan: true, tariftindakan: true }, + }, + }, + }); + + return getDataTransaksi; +}; + +export { + createTransaksiRepository, + getDataTransaksiRepository, + getDataTransaksiRepositoryAll, + updateTransaksiDataRepository, + getCountTransaksiRepository, + getDataTransaksiRegistrasiRepository, +}; diff --git a/backend/src/api/transaction/transaksi/transaksi.service.ts b/backend/src/api/transaction/transaksi/transaksi.service.ts new file mode 100644 index 0000000..4e0c494 --- /dev/null +++ b/backend/src/api/transaction/transaksi/transaksi.service.ts @@ -0,0 +1,77 @@ +import * as dotenv from "dotenv"; +import { dateNow } from "../../../middlewares/time"; +import { + createTransaksiRepository, + getDataTransaksiRepository, + getDataTransaksiRepositoryAll, + updateTransaksiDataRepository, + getDataTransaksiRegistrasiRepository, +} from "./transaksi.repository"; + +dotenv.config(); + +interface DataTransaksi { + idregistrasi: number; + idtindakan: number; + jmltindakan: number; + idpegawai: number; +} +const createTransaksiData = async (dataTransaksi: DataTransaksi) => { + const { + idregistrasi, + idtindakan, + jmltindakan, + idpegawai + } = dataTransaksi; + + const createTransaksi = createTransaksiRepository( + idregistrasi, + idtindakan, + jmltindakan, + idpegawai + ); + return createTransaksi; +}; + +const getTransaksiId = async (idtransaksi: number) => { + const getTransaksi = await getDataTransaksiRepository(idtransaksi); + return getTransaksi; +}; + +const getTransaksiData = async () => { + const getTransaksi = await getDataTransaksiRepositoryAll(); + return getTransaksi; +}; + +const updateTransaksiData = async ( + dataTransaksi: DataTransaksi, + idtransaksi: number +) => { + const { + idregistrasi, + idtindakan, + jmltindakan, + idpegawai + } = dataTransaksi; + const updateTransaksi = await updateTransaksiDataRepository( + idregistrasi, + idtindakan, + jmltindakan, + idpegawai, + idtransaksi + ); + return updateTransaksi; +}; + +const getTransaksiRegistrasiId = async (idregistrasi: number) => { + const getTransaksi = await getDataTransaksiRegistrasiRepository(idregistrasi); + return getTransaksi; +} + +export { + createTransaksiData, + getTransaksiId, + getTransaksiData, + updateTransaksiData, + getTransaksiRegistrasiId, +}; diff --git a/backend/src/app.ts b/backend/src/app.ts new file mode 100644 index 0000000..4712435 --- /dev/null +++ b/backend/src/app.ts @@ -0,0 +1,39 @@ +import express, { Request, Response, NextFunction} from "express"; +import dotenv from "dotenv"; +import cors from "cors"; + +import { router as welcomeRouter } from "./welcome"; +import { router as notFoundRouter } from "./404"; +import { router as apiRouter } from "./api/index"; +import { logger, credentials, errLogger } from "./middlewares"; +import { corsOptions } from "./config/corsOption"; +import cookieParser from "cookie-parser"; + +dotenv.config(); +const app = express(); +const PORT = process.env.PORT; + +app.use(credentials); +app.use(cors(corsOptions)); + +app.use((req, res, next) => { + res.header("Access-Control-Allow-Origin", "*"); + res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); + res.header("Access-Control-Allow-Headers", "Content-Type, Authorization"); + next(); +}); +app.use(express.json()); +app.use(cookieParser()); + +app.use(express.static("public")); +app.use(logger); + +app.use("/", welcomeRouter); +app.use("/api", apiRouter); + +app.use(notFoundRouter); +app.use(errLogger); + +app.listen(PORT, () => { + console.log(`Server running on PORT ${PORT} at ${new Date()}`); +}); diff --git a/backend/src/config/allowedOrigins.ts b/backend/src/config/allowedOrigins.ts new file mode 100644 index 0000000..f24035f --- /dev/null +++ b/backend/src/config/allowedOrigins.ts @@ -0,0 +1,9 @@ +export const allowedOrigins = [ + "https://www.yoursite.com", + "http://127.0.0.1:5500", + "http://localhost:4400", + "http://10.38.27.200", + "http://localhost:8080", + "http://localhost:8000", + "http://127.0.0.1" +]; diff --git a/backend/src/config/corsOption.ts b/backend/src/config/corsOption.ts new file mode 100644 index 0000000..423daf5 --- /dev/null +++ b/backend/src/config/corsOption.ts @@ -0,0 +1,15 @@ +import { allowedOrigins } from "./allowedOrigins"; + +const corsOptions = { + origin: (origin: any, callback: any) => { + if (!origin || allowedOrigins.indexOf(origin) !== -1) { + callback(null, true); + } else { + callback(new Error("Not allowed by CORS")); + } + }, + // optionsSuccessStatus: 200, + preflightContinue: false, +}; + +export { corsOptions }; diff --git a/backend/src/db/database.handler.ts b/backend/src/db/database.handler.ts new file mode 100644 index 0000000..49ecd89 --- /dev/null +++ b/backend/src/db/database.handler.ts @@ -0,0 +1,70 @@ +import { prismaDb1, } from "./index"; + +const generateMaxDb1 = async ( + sequenceName: string, + field?: string | any, + conditions?: string | any +) => { + const queryCheckSequence = ` + select + sequence_name + from + information_schema.sequences + where + sequence_name = '${sequenceName}';`; + const sequenceCheck: any = await prismaDb1.$queryRawUnsafe( + queryCheckSequence + ); + + let generateMax; + if (sequenceCheck.length === 0) { + const rawQuery = ` + SELECT + COALESCE(MAX(${field})+1, 1) as maxid + FROM + ${sequenceName} + ${conditions};`; + const sequenceCheck: any = await prismaDb1.$queryRawUnsafe(rawQuery); + + generateMax = parseInt(sequenceCheck[0].maxid.toString()); + } else { + const rawQuery: any = await prismaDb1.$queryRaw`SELECT + nextval(${sequenceName}) as nextval`; + + generateMax = parseInt(rawQuery[0].nextval.toString()); + } + + return generateMax; +}; + +const selectFieldDb1 = async ( + tableName: string, + field: string | any, + conditions: string | any +) => { + const rawQuery = `SELECT + ${field} + FROM + ${tableName} + ${conditions} + Limit 1`; + const selectDataField: any = await prismaDb1.$queryRawUnsafe(rawQuery); + + return selectDataField[0][field]; +}; + +const timeHandler = async (timex: any) => { + const time = new Date(timex); + const hours = time.getUTCHours().toString().padStart(2, "0"); + const minutes = time.getUTCMinutes().toString().padStart(2, "0"); + const seconds = time.getUTCSeconds().toString().padStart(2, "0"); + const formattedTime = `${hours}:${minutes}:${seconds}`; + + return formattedTime; +}; + +export { + generateMaxDb1, + selectFieldDb1, + timeHandler, +}; diff --git a/backend/src/db/index.ts b/backend/src/db/index.ts new file mode 100644 index 0000000..c6474c5 --- /dev/null +++ b/backend/src/db/index.ts @@ -0,0 +1,5 @@ +import { PrismaClient as PrismaClientDb1 } from './../../prisma/generated/client-db1'; + +const prismaDb1 = new PrismaClientDb1(); + +export { prismaDb1}; diff --git a/backend/src/middlewares/auth.ts b/backend/src/middlewares/auth.ts new file mode 100644 index 0000000..7b799a6 --- /dev/null +++ b/backend/src/middlewares/auth.ts @@ -0,0 +1,71 @@ +import * as dotenv from "dotenv"; +dotenv.config(); +const secretKey: string = process.env.secretKey!; +const secretKeyLogin: string = process.env.secretKeyLogin!; +import { Request, Response, NextFunction } from "express"; +import jwt from "jsonwebtoken"; + +const authenticateToken = (req: Request, res: Response, next: NextFunction) => { + const authHeader: string | undefined = req.headers["authorization"]; + const token: string | undefined = authHeader && authHeader.split(" ")[1]; + + let data: any = {}; + if (token == null) { + data.metadata = { + code: 401, + msg: "Token Tidak Ditemukan", + }; + data.response = []; + return res.status(401).json(data); + } + + jwt.verify(token, secretKey, (err: jwt.VerifyErrors | null, user: any) => { + if (err) { + data.metadata = { + code: 403, + msg: "Token Tidak Sesuai atau token sudah kadarluwarsa", + }; + data.response = []; + return res.status(403).json(data); + } + + const newAccessToken = jwt.sign({ id: user.id }, secretKey, { + expiresIn: "15m", + }); + res.setHeader("x-new-token", newAccessToken); + req.body.created_by = user.id; + next(); + }); +}; + +const loginAuthentication = ( + req: Request, + res: Response, + next: NextFunction +) => { + const authHeader: string | undefined = req.headers["authorization"]; + const token: string | undefined = authHeader && authHeader.split(" ")[1]; + + let data: any = {}; + if (token) { + if (secretKeyLogin === token) { + next(); + } else { + data.metadata = { + code: 401, + msg: "Authentication Tidak Sesuai", + }; + data.response = []; + return res.status(401).json(data); + } + } else { + data.metadata = { + code: 401, + msg: "Authentication Tidak Ditemukan", + }; + data.response = []; + return res.status(401).json(data); + } +}; + +export { authenticateToken, loginAuthentication }; diff --git a/backend/src/middlewares/credential.ts b/backend/src/middlewares/credential.ts new file mode 100644 index 0000000..b7c78c4 --- /dev/null +++ b/backend/src/middlewares/credential.ts @@ -0,0 +1,10 @@ +import { Request, Response, NextFunction } from "express"; +import { allowedOrigins } from "../config/allowedOrigins"; + +export const credentials = (req: Request, res: Response, next: NextFunction): void => { + const origin = req.headers.origin as string; + if (allowedOrigins.includes(origin)) { + res.header("Access-Control-Allow-Credentials", "true"); + } + next(); +}; diff --git a/backend/src/middlewares/error.ts b/backend/src/middlewares/error.ts new file mode 100644 index 0000000..d59975c --- /dev/null +++ b/backend/src/middlewares/error.ts @@ -0,0 +1,54 @@ +import { Request, Response, NextFunction } from "express"; +import fs from "fs"; +import path from "path"; +import { v4 as uuid } from "uuid"; + +export function errLogger( + error: any, + req: Request, + res: Response, + next: NextFunction +) { + const dataLog = `${req.method}\t${uuid()}\t${req.ip}\t${ + req.originalUrl + }\t${Date.now()}\t${new Date()}\t${error}\t${JSON.stringify(req.body)}`; + const pathFolderLog = path.join(__dirname, "../log"); + const filePath = `${pathFolderLog}/error/log_${getCurrentDate()}.txt`; + + if (fs.existsSync(pathFolderLog) === true) { + if (fs.existsSync(`${pathFolderLog}/error`) === true) { + if (fs.existsSync(filePath) === true) { + fs.appendFileSync(filePath, `\n${dataLog}`); + } else { + fs.writeFileSync(filePath, dataLog); + } + } else { + fs.mkdirSync(`${pathFolderLog}/error`, { recursive: true }); + fs.writeFileSync(filePath, dataLog); + } + } else { + fs.mkdirSync(`${pathFolderLog}/error`, { recursive: true }); + fs.writeFileSync(filePath, dataLog); + } + res.status(error.status || 500).json({ + metadata: { + msg: error.msg || "Internal Server Error", + code: error.code || 500, + }, + }); +} + +function getCurrentDate() { + const currentDate: Date = new Date(); + + const year: number = currentDate.getUTCFullYear(); + let month: number | string = currentDate.getUTCMonth() + 1; + month = month < 10 ? "0" + month : month; + + let day: number | string = currentDate.getUTCDate(); + day = day < 10 ? "0" + day : day; + + const formattedDate: string = `${year}-${month}-${day}`; + + return formattedDate; +} diff --git a/backend/src/middlewares/index.ts b/backend/src/middlewares/index.ts new file mode 100644 index 0000000..9626328 --- /dev/null +++ b/backend/src/middlewares/index.ts @@ -0,0 +1,5 @@ +export * from "./log"; +export * from "./credential"; +export * from "./auth"; +export * from "./error"; +export * from "./time"; diff --git a/backend/src/middlewares/log.ts b/backend/src/middlewares/log.ts new file mode 100644 index 0000000..8e1886d --- /dev/null +++ b/backend/src/middlewares/log.ts @@ -0,0 +1,45 @@ +import { Request, Response, NextFunction } from "express"; +import fs from "fs"; +import path from "path"; +import { v4 as uuid } from 'uuid'; + +export function logger(req: Request, res: Response, next: NextFunction) { + const dataLog = `${req.method}\t${uuid()}\t${req.ip}\t${ + req.originalUrl + }\t${Date.now()}\t${new Date()}\t${JSON.stringify(req.body)}`; + + const pathFolderLog = path.join(__dirname, "../log"); + const filePath = `${pathFolderLog}/access/log_${getCurrentDate()}.txt`; + + if (fs.existsSync(pathFolderLog) === true) { + if (fs.existsSync(`${pathFolderLog}/access`) === true) { + if (fs.existsSync(filePath) === true) { + fs.appendFileSync(filePath, `\n${dataLog}`); + } else { + fs.writeFileSync(filePath, dataLog); + } + } else { + fs.mkdirSync(`${pathFolderLog}/access`, { recursive: true }); + fs.writeFileSync(filePath, dataLog); + } + } else { + fs.mkdirSync(`${pathFolderLog}/access`, { recursive: true }); + fs.writeFileSync(filePath, dataLog); + } + next(); +} + +function getCurrentDate() { + const currentDate: Date = new Date(); + + const year: number = currentDate.getUTCFullYear(); + let month: number | string = currentDate.getUTCMonth() + 1; + month = month < 10 ? "0" + month : month; + + let day: number | string = currentDate.getUTCDate(); + day = day < 10 ? "0" + day : day; + + const formattedDate: string = `${year}-${month}-${day}`; + + return formattedDate; +} diff --git a/backend/src/middlewares/time.ts b/backend/src/middlewares/time.ts new file mode 100644 index 0000000..4ca2423 --- /dev/null +++ b/backend/src/middlewares/time.ts @@ -0,0 +1,45 @@ +import moment from "moment-timezone"; + +const dateNow = (date?: any) => { + let now; + if (date) { + now = moment + .tz(date, "Asia/Jakarta") + .format("YYYY-MM-DDTHH:mm:ss.SSS[Z]"); + } else { + now = moment.tz("Asia/Jakarta").format("YYYY-MM-DDTHH:mm:ss.SSS[Z]"); + } + + return now; +}; + +const formatTanggalLokal = (dateStr: any) => { + const options: Intl.DateTimeFormatOptions = { + weekday: "long", + year: "numeric", + month: "long", + day: "numeric", + }; + const locale = "id-ID"; + + const date = new Date(dateStr); + let formattedDate = date.toLocaleDateString(locale, options); + + const daysMap: { [key: string]: string } = { + Senin: "Senin", + Selasa: "Selasa", + Rabu: "Rabu", + Kamis: "Kamis", + Jumat: "Jum'at", + Sabtu: "Sabtu", + Minggu: "Minggu", + }; + + Object.keys(daysMap).forEach((day) => { + formattedDate = formattedDate.replace(day, daysMap[day]); + }); + + return formattedDate; +}; + +export { dateNow, formatTanggalLokal }; diff --git a/backend/src/utils/axiosClient.ts b/backend/src/utils/axiosClient.ts new file mode 100644 index 0000000..b0a0455 --- /dev/null +++ b/backend/src/utils/axiosClient.ts @@ -0,0 +1,40 @@ +import axios from "axios"; + +const requestAxios = async ( + headersData: any, + url: string, + method: string, + xmldata: any +) => { + try { + let reqOptions = {}; + + if (method === "POST") { + let bodyContent; + if (headersData["Content-Type"] === "application/json") { + bodyContent = JSON.stringify(xmldata); + } else { + bodyContent = xmldata; + } + reqOptions = { + url: url, + method: method, + headers: headersData, + data: bodyContent, + }; + } else { + reqOptions = { + url: url, + method: method, + headers: headersData, + }; + } + let response = await axios.request(reqOptions); + + return response; + } catch (error: any) { + return error.response; + } +}; + +export { requestAxios }; diff --git a/backend/src/utils/config.ts b/backend/src/utils/config.ts new file mode 100644 index 0000000..2122dd4 --- /dev/null +++ b/backend/src/utils/config.ts @@ -0,0 +1,17 @@ +import dotenv from "dotenv"; + +dotenv.config(); + +export const environment = { + nodeEnv: process.env.NODE_ENV || "dev", + port: parseInt(process.env.PORT || "3000", 10), + apiBaseUrl: process.env.API_BASE_URL || "http://localhost:3000", + timezone: process.env.TZ || "Asia/Jakarta", + satusehat: { + url_auth: (process.env.NODE_ENV === "dev") ? process.env.urlAuthSatuSehatDev : process.env.urlAuthSatuSehat, + url_base: (process.env.NODE_ENV === "dev") ? process.env.urlBaseSatuSehatDev : process.env.urlBaseSatuSehat, + client_id: (process.env.NODE_ENV === "dev") ? process.env.clientIdSatuSehatDev : process.env.clientIdSatuSehat, + client_secret: (process.env.NODE_ENV === "dev") ? process.env.clientSecretSatuSehatDev : process.env.clientSecretSatuSehat, + org_id: (process.env.NODE_ENV === "dev") ? process.env.OrganizationIDDev : process.env.OrganizationID, + }, +}; diff --git a/backend/src/welcome.ts b/backend/src/welcome.ts new file mode 100644 index 0000000..7d8aa4a --- /dev/null +++ b/backend/src/welcome.ts @@ -0,0 +1,33 @@ +import { Router, Request, Response } from "express"; +import path from "path"; +import fs from "fs"; + +export const router = Router(); + +const htmlIndex = ` + + + + + + Welcome to Bridging BPJS + + +
+

Welcome to Backend Phis2nd

+

Discover something amazing

+
+ + +`; + +router.get("/", (req: Request, res: Response) => { + if (fs.existsSync(path.join(__dirname, "./views")) === true) { + fs.writeFileSync(path.join(__dirname, "./views/index.html"), htmlIndex); + res.sendFile(path.join(__dirname, "./views", "index.html")); + } else { + fs.mkdirSync(path.join(__dirname, "./views")); + fs.writeFileSync(path.join(__dirname, "./views/index.html"), htmlIndex); + res.sendFile(path.join(__dirname, "./views", "index.html")); + } +}); diff --git a/backend/tsconfig.json b/backend/tsconfig.json new file mode 100644 index 0000000..6bc9e20 --- /dev/null +++ b/backend/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..d19e82e --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,120 @@ + + + + + + Login + + + + +
+
+

Login

+ +
+
+ + +
+ +
+ + +
+ +
+ +
+
+ + +
+
+ + + + diff --git a/frontend/pages/asuransi.html b/frontend/pages/asuransi.html new file mode 100644 index 0000000..e69de29 diff --git a/frontend/pages/dashboard.html b/frontend/pages/dashboard.html new file mode 100644 index 0000000..0e24702 --- /dev/null +++ b/frontend/pages/dashboard.html @@ -0,0 +1,291 @@ + + + + + RSAB Sys + + + + + +
+ + + +
+
+
Dashboard
+ +
+ +
+

Welcome to the Dashboard!

+
+
+
+
+
+ 0 +
+

Total Pegawai

+
+
+
+
+
+
+
+ 0 +
+

Total Pasien

+
+
+
+
+
+
+
+ 0 +
+

+ Total Ruang Pelayanan +

+
+
+
+
+
+
+
+ 0 +
+

Total Tindakan

+
+
+
+
+
+
+
+ 0 +
+

Total Asuransi

+
+
+
+
+
+
+
+ 0 +
+

Total Registrasi

+
+
+
+
+
+
+
+ + + + + + + diff --git a/frontend/pages/laporan_jumlah_pasien.html b/frontend/pages/laporan_jumlah_pasien.html new file mode 100644 index 0000000..efdb9d2 --- /dev/null +++ b/frontend/pages/laporan_jumlah_pasien.html @@ -0,0 +1,243 @@ + + + + + RSAB Sys - Pegawai + + + + + + + + +
+ + + +
+
+
Data Pegawai
+ +
+ +
+
+

Data Pegawai

+ +
+ + + + + + + + + +
NoNama PegawaiAksi
+
+
+
+ + + + + + + + + diff --git a/frontend/pages/pasien.html b/frontend/pages/pasien.html new file mode 100644 index 0000000..0fff58e --- /dev/null +++ b/frontend/pages/pasien.html @@ -0,0 +1,476 @@ + + + + + RSAB Sys - Pasien + + + + + + + + + +
+ + + +
+
+
Data Pasien
+ +
+ +
+
+

Data Pasien

+ +
+ + + + + + + + + + + + +
NoNo.MR PasienNama PasienTanggal LahirJenis KelaminAksi
+
+
+
+ + + + + + + + + diff --git a/frontend/pages/pegawai.html b/frontend/pages/pegawai.html new file mode 100644 index 0000000..4549517 --- /dev/null +++ b/frontend/pages/pegawai.html @@ -0,0 +1,462 @@ + + + + + RSAB Sys - Pegawai + + + + + + + + +
+ + + +
+
+
Data Pegawai
+ +
+ +
+
+

Data Pegawai

+ +
+ + + + + + + + + +
NoNama PegawaiAksi
+
+
+
+ + + + + + + + + diff --git a/frontend/pages/registrasi.html b/frontend/pages/registrasi.html new file mode 100644 index 0000000..efad2ac --- /dev/null +++ b/frontend/pages/registrasi.html @@ -0,0 +1,1140 @@ + + + + + RSAB Sys - Registrasi + + + + + + + + + + + + +
+ + + +
+
+
Data Registrasi
+ +
+ +
+
+

Data Registrasi

+ +
+ + + + + + + + + + + + + + + + +
NoNo.MR PasienNama PasienTanggal LahirJenis KelaminTanggal BerobatDokterNama Asuransi (No. Asuransi)Ruang PelayananAksi
+
+
+
+ + + + + + + + + diff --git a/frontend/pages/ruangpelayanan.html b/frontend/pages/ruangpelayanan.html new file mode 100644 index 0000000..5867c2c --- /dev/null +++ b/frontend/pages/ruangpelayanan.html @@ -0,0 +1,462 @@ + + + + + RSAB Sys - Ruang Pelayanan + + + + + + + + +
+ + + +
+
+
Data Pegawai
+ +
+ +
+
+

Data Ruang Pelayanan

+ +
+ + + + + + + + + +
NoNama Ruang PelayananAksi
+
+
+
+ + + + + + + + + diff --git a/frontend/pages/tindakan.html b/frontend/pages/tindakan.html new file mode 100644 index 0000000..e8c4cfb --- /dev/null +++ b/frontend/pages/tindakan.html @@ -0,0 +1,477 @@ + + + + + RSAB Sys - Tindakan + + + + + + + + +
+ + + +
+
+
Data Tindakan
+ +
+ +
+
+

Data Tindakan

+ +
+ + + + + + + + + + +
NoNama TindakanTarif TindakanAksi
+
+
+
+ + + + + + + + + diff --git a/frontend/pages/users.html b/frontend/pages/users.html new file mode 100644 index 0000000..2fc7a6a --- /dev/null +++ b/frontend/pages/users.html @@ -0,0 +1,536 @@ + + + + + RSAB Sys - Users + + + + + + + + +
+ + + +
+
+
Data Users
+ +
+ +
+
+

Data Users

+ +
+ + + + + + + + + + + + +
NoNamaUsernameEmailStatusAksi
+
+
+
+ + + + + + + + +