first
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/node_modules
|
||||
/certs
|
12
README.md
Normal file
12
README.md
Normal file
@ -0,0 +1,12 @@
|
||||
# Install Certificate
|
||||
|
||||
## Windows
|
||||
|
||||
## MacOS
|
||||
|
||||
```brew install mkcert
|
||||
mkcert -install
|
||||
mkcert localhost
|
||||
mkdir certs
|
||||
mv localhost.pem localhost-key.pem certs/
|
||||
```
|
50
db/audit-log.js
Normal file
50
db/audit-log.js
Normal file
@ -0,0 +1,50 @@
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
const MAX = 10;
|
||||
|
||||
function createAuditLog() {
|
||||
return {
|
||||
guid: faker.string.uuid(),
|
||||
dateOfAction: faker.date.anytime(),
|
||||
actionBy: faker.internet.displayName(),
|
||||
mainModule: faker.helpers.arrayElement([
|
||||
"Customer Accounts",
|
||||
"Reports",
|
||||
"Settings",
|
||||
"Notification Management",
|
||||
"Announcement Management",
|
||||
"Cron Job Management",
|
||||
"Audit Log",
|
||||
]),
|
||||
subModule: faker.helpers.arrayElement(["Role", "Account", "Detail"]),
|
||||
action: faker.helpers.arrayElement([
|
||||
"Edit Role",
|
||||
"edit User",
|
||||
"edit Account",
|
||||
"create Announcement",
|
||||
"Filter Log",
|
||||
]),
|
||||
oldValue: faker.helpers.arrayElement([
|
||||
null,
|
||||
faker.animal.cat(),
|
||||
faker.location.country(),
|
||||
]),
|
||||
newValue: faker.helpers.arrayElement([
|
||||
null,
|
||||
faker.animal.cat(),
|
||||
faker.location.country(),
|
||||
]),
|
||||
};
|
||||
}
|
||||
|
||||
export default () => {
|
||||
const data = {
|
||||
status: 200,
|
||||
data: {
|
||||
totalRecords: MAX,
|
||||
auditLogList: faker.helpers.multiple(createAuditLog, { count: MAX }),
|
||||
},
|
||||
};
|
||||
|
||||
return data;
|
||||
};
|
65
db/cron-job.js
Normal file
65
db/cron-job.js
Normal file
@ -0,0 +1,65 @@
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
const MAX = 10;
|
||||
|
||||
function createCronJob() {
|
||||
return {
|
||||
guid: faker.string.uuid(),
|
||||
cronjobName: faker.helpers.arrayElement([
|
||||
"cronjob-mdms-pull-meter-alert",
|
||||
"DAP PERCENTILE DATA",
|
||||
"DAP WEIS DATA",
|
||||
]),
|
||||
fileName: `DAP_WEIS_${faker.date.anytime().toTimeString()}.txt`,
|
||||
scheduleDateTime: faker.date.anytime(),
|
||||
fileReceivedTime: faker.date.anytime(),
|
||||
fileIngestionTime: faker.date.anytime(),
|
||||
totalRecords: faker.number.int({ min: 0, max: 40 }),
|
||||
totalFailedRecords: faker.number.int({ min: 0, max: 40 }),
|
||||
errorDetail: faker.helpers.arrayElement([
|
||||
null,
|
||||
"Header invalid",
|
||||
"Connect sftp failed…",
|
||||
"File incomplete ingestion",
|
||||
]),
|
||||
jobFiles: faker.helpers.multiple(
|
||||
() => ({
|
||||
guid: faker.string.uuid(),
|
||||
fileName: `FILE NAME ${faker.number.int()}.txt`,
|
||||
processTime: Math.floor(faker.date.anytime().getTime() / 1000),
|
||||
noOfRecordsSuccess: faker.number.int({ min: 2, max: 500 }),
|
||||
noOfRecordsInvalid: faker.number.int({ min: 1, max: 50 }),
|
||||
fileStatus: faker.helpers.arrayElement([
|
||||
"SUCCESS",
|
||||
"FAILED (STAGING)",
|
||||
"CANCEL",
|
||||
]),
|
||||
errorDetail: {
|
||||
message: faker.helpers.arrayElement([
|
||||
"Header invalid",
|
||||
null,
|
||||
"File incomplete ingestion",
|
||||
]),
|
||||
rejectedRecordsFile: `DAP_WEIS_${faker.date
|
||||
.anytime()
|
||||
.toTimeString()}_${faker.string.uuid()}.txt`,
|
||||
},
|
||||
}),
|
||||
{
|
||||
count: faker.number.int({ min: 1, max: 5 }),
|
||||
}
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
export default () => {
|
||||
const data = {
|
||||
status: 200,
|
||||
data: {
|
||||
totalCronjobRecords: MAX,
|
||||
cronjobLogList: faker.helpers.multiple(createCronJob, { count: MAX }),
|
||||
},
|
||||
};
|
||||
|
||||
return data;
|
||||
};
|
59
db/get-cron-job-list.js
Normal file
59
db/get-cron-job-list.js
Normal file
@ -0,0 +1,59 @@
|
||||
export default {
|
||||
status: 200,
|
||||
data: [
|
||||
{
|
||||
cronjobName: "cronjob-ebs-import-water-account",
|
||||
noOfFailedRecordsThreshold: 10,
|
||||
fileIngestionTimeThreshold: 60,
|
||||
dateOfLastUpdated: "2023-08-16T09:35:44.4775944+00:00",
|
||||
},
|
||||
{
|
||||
cronjobName: "cronjob-dap-import-dap-data",
|
||||
noOfFailedRecordsThreshold: 10,
|
||||
fileIngestionTimeThreshold: 60,
|
||||
dateOfLastUpdated: "2023-08-16T09:35:44.4776397+00:00",
|
||||
},
|
||||
{
|
||||
cronjobName: "cronjob-mdms-import-meter-alert",
|
||||
noOfFailedRecordsThreshold: 10,
|
||||
fileIngestionTimeThreshold: 60,
|
||||
dateOfLastUpdated: "2023-08-16T09:35:44.47764+00:00",
|
||||
},
|
||||
{
|
||||
cronjobName: "cronjob-mdms-pull-meter-alert",
|
||||
noOfFailedRecordsThreshold: 10,
|
||||
fileIngestionTimeThreshold: 60,
|
||||
dateOfLastUpdated: "2023-08-16T09:35:44.4776402+00:00",
|
||||
},
|
||||
{
|
||||
cronjobName: "cronjob-mdms-export-enrolment-status",
|
||||
noOfFailedRecordsThreshold: 10,
|
||||
fileIngestionTimeThreshold: 60,
|
||||
dateOfLastUpdated: "2023-08-16T09:35:44.4776403+00:00",
|
||||
},
|
||||
{
|
||||
cronjobName: "cronjob-ebs-import-avg",
|
||||
noOfFailedRecordsThreshold: 10,
|
||||
fileIngestionTimeThreshold: 60,
|
||||
dateOfLastUpdated: "2023-08-16T09:35:44.4776415+00:00",
|
||||
},
|
||||
{
|
||||
cronjobName: "cronjob-water-account-user-goal-notification",
|
||||
noOfFailedRecordsThreshold: 10,
|
||||
fileIngestionTimeThreshold: 60,
|
||||
dateOfLastUpdated: "2023-08-16T09:35:44.4776416+00:00",
|
||||
},
|
||||
{
|
||||
cronjobName: "cronjob-water-account-whitelist-sp-accounts",
|
||||
noOfFailedRecordsThreshold: 44,
|
||||
fileIngestionTimeThreshold: 44,
|
||||
dateOfLastUpdated: "2023-08-28T15:20:56.4036081Z",
|
||||
},
|
||||
{
|
||||
cronjobName: "cronjob-mdms-import-meter-data",
|
||||
noOfFailedRecordsThreshold: 4,
|
||||
fileIngestionTimeThreshold: 4,
|
||||
dateOfLastUpdated: "2023-08-28T15:19:44.4816081Z",
|
||||
},
|
||||
],
|
||||
};
|
6
db/image.js
Normal file
6
db/image.js
Normal file
@ -0,0 +1,6 @@
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
export default {
|
||||
status: 200,
|
||||
data: faker.image.urlPicsumPhotos(),
|
||||
};
|
16
db/index.js
Normal file
16
db/index.js
Normal file
@ -0,0 +1,16 @@
|
||||
import cronJob from "./cron-job.js";
|
||||
import nameCronjobs from "./name-cronjobs.js";
|
||||
import messageTemplate from "./message-template.js";
|
||||
import auditLog from "./audit-log.js";
|
||||
import imageURL from "./image.js";
|
||||
import cronJobList from "./get-cron-job-list.js";
|
||||
|
||||
export default {
|
||||
cronjob: { ...cronJob() },
|
||||
"audit-log": { ...auditLog() },
|
||||
"name-cronjobs": nameCronjobs,
|
||||
"message-template": messageTemplate,
|
||||
"get-image": imageURL,
|
||||
"get-cronjob-list": cronJobList,
|
||||
"update-cronjob": {},
|
||||
};
|
26
db/message-template.js
Normal file
26
db/message-template.js
Normal file
@ -0,0 +1,26 @@
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
const MAX = 10;
|
||||
|
||||
function createMessageTemplate() {
|
||||
return {
|
||||
id: faker.string.uuid(),
|
||||
createBy: "DEV",
|
||||
templateFormat: faker.helpers.arrayElement([1, 2]),
|
||||
templateName: faker.lorem.words({ min: 2, max: 4 }),
|
||||
templateDesc: faker.lorem.words({ min: 2, max: 5 }),
|
||||
templateContent: faker.lorem.paragraphs({ min: 1, max: 10 }),
|
||||
createDate: Math.floor(faker.date.anytime().getTime() / 1000),
|
||||
lastModifyDate: Math.floor(faker.date.anytime().getTime() / 1000),
|
||||
};
|
||||
}
|
||||
|
||||
export default {
|
||||
status: 200,
|
||||
data: {
|
||||
totalMessageTemplateRecord: MAX,
|
||||
cronjobLogList: faker.helpers.multiple(createMessageTemplate, {
|
||||
count: MAX,
|
||||
}),
|
||||
},
|
||||
};
|
8
db/name-cronjobs.js
Normal file
8
db/name-cronjobs.js
Normal file
@ -0,0 +1,8 @@
|
||||
export default {
|
||||
status: 200,
|
||||
data: [
|
||||
"cronjob-mdms-pull-meter-alert",
|
||||
"DAP PERCENTILE DATA",
|
||||
"DAP WEIS DATA",
|
||||
],
|
||||
};
|
12
package.json
Normal file
12
package.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"start": "node server.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"json-server": "^0.17.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@faker-js/faker": "^8.0.2"
|
||||
}
|
||||
}
|
2377
pnpm-lock.yaml
generated
Normal file
2377
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
3
routes.json
Normal file
3
routes.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"/api/*": "/$1"
|
||||
}
|
33
server.js
Normal file
33
server.js
Normal file
@ -0,0 +1,33 @@
|
||||
import jsonServer from "json-server";
|
||||
import db from "./db/index.js";
|
||||
import https from "https";
|
||||
import path from "path";
|
||||
import fs from "fs";
|
||||
import { fileURLToPath } from "url";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const server = jsonServer.create();
|
||||
const PORT = 4000;
|
||||
|
||||
const keyFile = path.join(__dirname, "/certs/localhost-key.pem");
|
||||
const certFile = path.join(__dirname, "/certs/localhost.pem");
|
||||
|
||||
const router = jsonServer.router(db);
|
||||
const middleware = jsonServer.defaults();
|
||||
|
||||
server.use(middleware);
|
||||
server.use("/api", router);
|
||||
|
||||
https
|
||||
.createServer(
|
||||
{
|
||||
key: fs.readFileSync(keyFile),
|
||||
cert: fs.readFileSync(certFile),
|
||||
},
|
||||
server
|
||||
)
|
||||
.listen(PORT, () => {
|
||||
console.log(`Go to https://localhost:${PORT}/`);
|
||||
});
|
Reference in New Issue
Block a user