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