// app/api/route.js import { NextResponse, NextRequest } from "next/server"; import mysql from 'mysql2/promise'; import { func } from "prop-types"; import fs from 'fs'; import path from 'path'; import { DB_CONF } from "@/app/library/configDatabase"; function paramsToObject(req) { let reqq = req.nextUrl.searchParams.entries() let entries = reqq; const result = {} for (const [key, value] of entries) { // each 'entry' is a [key, value] tupple result[key] = value; } let limitation = {} let condition = {} let having = {} Object.keys(result).forEach((s,i)=>{ if(s == 'limit' || s == 'start'){ limitation[s] = result[s]; }else if(s == 'd' ){ having['judul'] = result[s]; having['deskrisi'] = result[s]; } else { condition[s] = result[s]; } }) return { limitation: limitation, condition: condition, having: having }; } function ubahFormatTanggal(tanggal) { // Buat objek Date dari string tanggal input var tanggalObjek = new Date(tanggal); // Ambil elemen tanggal, bulan, tahun, jam, menit, dan detik var tahun = tanggalObjek.getUTCFullYear(); var bulan = ('0' + (tanggalObjek.getUTCMonth() + 1)).slice(-2); var tanggal = ('0' + tanggalObjek.getUTCDate()).slice(-2); var jam = ('0' + tanggalObjek.getUTCHours()).slice(-2); var menit = ('0' + tanggalObjek.getUTCMinutes()).slice(-2); var detik = ('0' + tanggalObjek.getUTCSeconds()).slice(-2); // Format ulang tanggal var tanggalFormatBaru = tahun + '-' + bulan + '-' + tanggal + 'T' + jam + ':' + menit + ':' + detik + '+00:00'; return tanggalFormatBaru; } Array.prototype.cond = function (search = '', name = '') { if (search != '') { if (typeof search == 'number') { search = search.toString().toLowerCase(); } else { search = search.toLowerCase(); } var data = this; return data.filter(function (dat) { if (typeof dat == 'object') { var g = dat[name]; var numcek = 0; if (g != null) { if (typeof g == 'number') { g = g.toString().toLowerCase(); } else { g = g.toLowerCase(); } if (numcek == 0) { if (g == search) { numcek = 1; } } } if (numcek == 1) { return dat; } } else { if (dat != null) { if (typeof dat == 'number') { var dats = dat.toString().toLowerCase(); if (dats == search) { return dat } } else { if (dat.toLowerCase() == search) { return dat } } } } }) } else { return []; } } // Handles GET requests to /api export async function GET(req, Response) { // create the connection to database const connection = await mysql.createConnection(DB_CONF); try{ const query = ` SELECT uid_user, concat('map-',uid_user,'.xml') url, min(userlog) log FROM listing GROUP BY uid_user; SELECT uid_user, concat('produk/', slug) url, userlog log FROM listing WHERE email <> 'rumahjo123@gmail.com AND approval=1' ` const [parentData] = await connection.query(query); const [parent, xmldata] = parentData; const pathLoc = path.join('public','sitemap.xml'); let parentXml = ` https://rumahjo.com/main.xml ${parent.map(function (m) { return ` https://rumahjo.com/${m.url} ` }).join('')} `; fs.writeFileSync(pathLoc, parentXml,'utf8'); for (let dataPar of parent){ let getData = xmldata.cond(dataPar.uid_user, 'uid_user'); let fileNama = path.join('public', 'map-' + dataPar.uid_user + '.xml' ); let fileData = ` ${getData.map(function (m) { return ` https://rumahjo.com/${m.url} ${ubahFormatTanggal(new Date())} daily 0.8 ` }).join('')} `; fs.writeFileSync(fileNama, fileData); } const value = []; return NextResponse.json({ message: "created" }); }catch(error){ return NextResponse.json({ status:500,message: error.message }); } } // Handles POST requests to /api export async function POST(req) { return NextResponse.json({ message: "Hello World" }); }