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);