generate_insert_sql_usage.js
4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
const { v4: uuidv4 } = require('uuid');
const crypto = require('crypto');
const dayjs = require('dayjs');
function generateNumberUUID() {
let numberUUID = '';
while (numberUUID.length < 19) {
const uuid = uuidv4();
const hash = crypto.createHash('sha1').update(uuid).digest('hex');
numberUUID += BigInt(`0x${hash}`).toString().padStart(19, '0');
}
return numberUUID.slice(0, 19);
}
function getRandomInteger(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function getRandomDate() {
const now = dayjs(); // Get current date and time
const randomYear = now.year();
const randomMonth = now.month();
const randomDay = now.date();
const randomHour = Math.floor(Math.random() * 24); // Generate random hour (0-23)
const randomDate = dayjs().year(randomYear).month(randomMonth).date(28).hour(randomHour).minute(0).second(0);
return randomDate;
}
function getTimeFromDate(date) {
const time = date.format('HH:mm');
return time;
}
class SummaryDailyUsage {
constructor(ID, LogDate, LogTime, GroupName, Amount, CreatedAt) {
this.ID = ID;
this.log_date = LogDate;
this.log_time = LogTime;
this.group_name = GroupName;
this.amount = Amount;
this.created_at = CreatedAt;
}
}
function generateInsertSQL(tableName, data) {
let insertSQL = '';
for (let i = 0; i < data.length; i++) {
const record = data[i];
const columns = Object.keys(record);
const values = Object.values(record).map(formatValue);
const columnsStr = columns.join(', ');
const valuesStr = values.join(', ');
const sql = `INSERT INTO ${tableName} (${columnsStr}) VALUES (${valuesStr});\n`;
insertSQL += sql;
}
return insertSQL;
}
function formatValue(value) {
if (typeof value === 'string') {
if (value.startsWith('TO_TIMESTAMP')) {
return value
}
return `'${value}'`;
} else if (value instanceof Date) {
const formattedDate = value.toISOString().slice(0, 19).replace('T', ' ');
return `TO_TIMESTAMP('${formattedDate}', 'YYYY-MM-DD HH24:MI:SS')`;
} else {
return value;
}
}
function generateTimeLocationData() {
const timeLocationData = {};
const listGroup = ['ส่วนกลาง','คลินิกราชการ','สำนักงานสาธารณสุขจังหวัด','สำนักงานสาธารณสุขอำเภอ','สำนักงานป้องกันควบคุมโรค','ศูนย์บริการสาธารณสุข','โรงพยาบาล','คลินิกเอกชน','โรงพยาบาลส่งเสริมสุขภาพตำบล']
for (let hour = 0; hour < 24; hour++) {
const time = dayjs().hour(hour).minute(0).format('HH:mm');
const locations = listGroup;
timeLocationData[time] = locations;
}
return timeLocationData;
}
function getRandomValueFromArray(array) {
const randomIndex = Math.floor(Math.random() * array.length);
const randomValue = array[randomIndex];
return randomValue;
}
// Example usage:
const timeLocationData = generateTimeLocationData();
let sdu = []
for (let i = 0; i <= 10; i++) {
let checkUnique = {}
let r = getRandomDate()
let t = getTimeFromDate(r)
let value = getRandomValueFromArray(timeLocationData[t])
if(!checkUnique[t+'_'+value]) {
sdu.push(new SummaryDailyUsage(
generateNumberUUID(),
`TO_TIMESTAMP('${r.format('YYYY-MM-DD HH:mm:ss')}', 'YYYY-MM-DD HH24:MI:SS')`, // Replace with your LogDate value
t,
value,
getRandomInteger(1, 100),
new Date() // Replace with your CreatedAt value
))
} else {
console.log('is unique')
}
checkUnique[t+'_'+value] = true
}
const insertSQL = generateInsertSQL('ddc.SUM_DAILY_USAGE_BY_GROUP', sdu);
console.log(insertSQL);