change to request format on the txt

This commit is contained in:
Edison
2026-03-26 16:52:17 +08:00
parent c98b16dbd7
commit 66d29fa4b6
+24 -31
View File
@@ -72,11 +72,7 @@ export default function () {
} }
// --- bool helper (handles BIT(1) returning Buffer) --- // --- bool helper (handles BIT(1) returning Buffer) ---
const toBool = (v) => const toBool = (v) =>
typeof v === 'number' typeof v === 'number' ? v === 1 : Buffer.isBuffer(v) ? v[0] === 1 : Boolean(v)
? v === 1
: Buffer.isBuffer(v)
? v[0] === 1
: Boolean(v)
// ---- Lunch / totals helpers ---- // ---- Lunch / totals helpers ----
const minutesBetween = (a, b) => Math.max(0, (b - a) / 60000) const minutesBetween = (a, b) => Math.max(0, (b - a) / 60000)
@@ -232,12 +228,10 @@ export default function () {
res.json(rows) res.json(rows)
} catch (error) { } catch (error) {
console.error('Failed records summary error:', error) console.error('Failed records summary error:', error)
res res.status(500).json({
.status(500) message: 'Database error fetching failed records summary.',
.json({ details: error.message,
message: 'Database error fetching failed records summary.', })
details: error.message,
})
} finally { } finally {
db.release() db.release()
} }
@@ -268,12 +262,10 @@ export default function () {
res.json(rows) res.json(rows)
} catch (error) { } catch (error) {
console.error('Failed records details error:', error) console.error('Failed records details error:', error)
res res.status(500).json({
.status(500) message: 'Database error fetching failed records details.',
.json({ details: error.message,
message: 'Database error fetching failed records details.', })
details: error.message,
})
} finally { } finally {
db.release() db.release()
} }
@@ -541,7 +533,7 @@ export default function () {
second: '2-digit', second: '2-digit',
hour12: false, hour12: false,
}).format(e.time) }).format(e.time)
const line = `${w.username},"${code}","${date} ${timeStr}";"${w.full_name}"` const line = `${w.username};${code};${date};${timeStr};${w.full_name}`
if (!seen.has(line)) { if (!seen.has(line)) {
seen.add(line) seen.add(line)
lines.push(line) lines.push(line)
@@ -550,7 +542,8 @@ export default function () {
} }
} }
res.set('X-Export-TZ', TZ) res.set('X-Export-TZ', TZ)
res.header('Content-Type', 'text/plain') res
.header('Content-Type', 'text/plain')
.attachment(`attendance_${startDate}_to_${endDate}.txt`) .attachment(`attendance_${startDate}_to_${endDate}.txt`)
.send(lines.join('\n')) .send(lines.join('\n'))
return return
@@ -1328,12 +1321,10 @@ export default function () {
res.status(200).json({ message: 'Device registration cleared and/or status updated.' }) res.status(200).json({ message: 'Device registration cleared and/or status updated.' })
} catch (error) { } catch (error) {
console.error('Reset device/update status error:', error) console.error('Reset device/update status error:', error)
res res.status(500).json({
.status(500) message: 'Database error resetting device or updating status.',
.json({ details: error.message,
message: 'Database error resetting device or updating status.', })
details: error.message,
})
} finally { } finally {
db.release() db.release()
} }
@@ -1532,11 +1523,11 @@ export default function () {
const db = await getConnection() const db = await getConnection()
try { try {
const [rows] = await db.execute(` const [rows] = await db.execute(`
SELECT DISTINCT department SELECT DISTINCT department
FROM workers FROM workers
WHERE role = 'worker' WHERE role = 'worker'
AND status != 'deleted' AND status != 'deleted'
AND department IS NOT NULL AND department IS NOT NULL
AND department != '' AND department != ''
ORDER BY department ASC ORDER BY department ASC
`) `)
@@ -1544,7 +1535,9 @@ export default function () {
res.json(departments) res.json(departments)
} catch (error) { } catch (error) {
console.error('Get departments error:', error) console.error('Get departments error:', error)
res.status(500).json({ message: 'Database error fetching departments.', details: error.message }) res
.status(500)
.json({ message: 'Database error fetching departments.', details: error.message })
} finally { } finally {
db.release() db.release()
} }