generate_insert_sql_usage_menu.js
5.64 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
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(0).minute(0).second(0);
return randomDate;
}
function getTimeFromDate(date) {
const time = date.format('HH:mm');
return time;
}
class SummaryDailyUsageMenu {
constructor(ID, LogDate, Menu, SubMenu, GroupName, Amount, CreatedAt) {
this.ID = ID;
this.log_date = LogDate;
this.menu = Menu;
this.sub_menu = SubMenu;
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 getRandomValueFromArray(array) {
const randomIndex = Math.floor(Math.random() * array.length);
const randomValue = array[randomIndex];
return randomValue;
}
// Example usage:
const listGroup = ['ส่วนกลาง','คลินิกราชการ','สำนักงานสาธารณสุขจังหวัด','สำนักงานสาธารณสุขอำเภอ','สำนักงานป้องกันควบคุมโรค','ศูนย์บริการสาธารณสุข','โรงพยาบาล','คลินิกเอกชน','โรงพยาบาลส่งเสริมสุขภาพตำบล']
const menuList = ['แดชบอร์ด', 'การร้องขอข้อมูล', 'ประกาศและการแจ้งเตือน', 'การจัดการบทความ', 'จัดการแชทบอท', 'รายงานการใช้งานระบบ', 'เครื่องมือการจัดการ']
const menus = {
'แดชบอร์ด': ['กลุ่มโรคติดต่อ'],
'การร้องขอข้อมูล': ['รายงาน D506'],
'ประกาศและการแจ้งเตือน': ['ประเภทประกาศ', 'จัดการประกาศ', 'จัดการการแจ้งเตือน'],
'การจัดการบทความ': ['ประเภทบทความ', 'จัดการบทความสุขภาพ', 'ข้อมูลโรงพยาบาล', 'ข้อมูลผู้ใช้ (User profile)'],
'จัดการแชทบอท': ['ประวัติสนทนา', 'หัวข้อการตอบกลับ', 'จัดการข้อความแชทบอท', 'แดชบอร์ดสถิติคำถาม', 'บันทึกการสนทนา (Chat logs)'],
'รายงานการใช้งานระบบ': ['รายงานการใช้งานระบบ'],
'เครื่องมือการจัดการ': ['จัดการองค์กร', 'จัดการสิทธิ์ผู้ใช้งาน', 'จัดการกลุ่มผู้ใช้งาน', 'จัดการกลุ่มผู้ใช้งาน', 'จัดการผู้ใช้งาน', 'บันทึกการใช้งาน (Logs)']
}
let sdu = []
for (let i = 0; i <= 10; i++) {
let checkUnique = {}
let r = getRandomDate()
let menu = getRandomValueFromArray(menuList)
let sub_menu = getRandomValueFromArray(menus[menu])
let group = getRandomValueFromArray(listGroup)
if(!checkUnique[menu+'_'+sub_menu+'_'+group]) {
sdu.push(new SummaryDailyUsageMenu(
generateNumberUUID(),
`TO_TIMESTAMP('${r.format('YYYY-MM-DD HH:mm:ss')}', 'YYYY-MM-DD HH24:MI:SS')`, // Replace with your LogDate value
menu,
sub_menu,
group,
getRandomInteger(1, 100),
new Date() // Replace with your CreatedAt value
))
} else {
console.log('is unique')
}
checkUnique[menu+'_'+sub_menu+'_'+group] = true
}
const insertSQL = generateInsertSQL('ddc.SUM_DAILY_USAGE_BY_GROUP', sdu);
console.log(insertSQL);