commit
32a36cceff
444 files changed
+67186
No files matched your search
@@ -0,0 +1,70 @@
|
||||
const { query } = require('../database/db');
|
||||
|
||||
class ManualFeedSack {
|
||||
/**
|
||||
* Get all manual entries for a date range
|
||||
* @param {string} startDate - Start date (YYYY-MM-DD)
|
||||
* @param {string} endDate - End date (YYYY-MM-DD)
|
||||
* @returns {Promise<Array>} Array of manual feed sack entries
|
||||
*/
|
||||
static async getByDateRange(startDate, endDate) {
|
||||
const result = await query(
|
||||
'SELECT * FROM manual_feed_sack_entries WHERE date >= $1 AND date <= $2 ORDER BY date ASC',
|
||||
[startDate, endDate]
|
||||
);
|
||||
return result.rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get manual entry for specific date and camera
|
||||
* @param {string} date - Date (YYYY-MM-DD)
|
||||
* @param {string} cameraName - Camera name
|
||||
* @returns {Promise<Object|null>} Manual entry or null if not found
|
||||
*/
|
||||
static async getByDateAndCamera(date, cameraName) {
|
||||
const result = await query(
|
||||
'SELECT * FROM manual_feed_sack_entries WHERE date = $1 AND camera_name = $2',
|
||||
[date, cameraName]
|
||||
);
|
||||
return result.rows[0] || null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert or update manual entry (upsert)
|
||||
* @param {string} date - Date (YYYY-MM-DD)
|
||||
* @param {string} cameraName - Camera name
|
||||
* @param {number} count - Sack count
|
||||
* @param {string} createdBy - Username of creator
|
||||
* @param {string} keterangan - Optional notes/remarks (max 200 chars)
|
||||
* @returns {Promise<Object>} Created/updated entry
|
||||
*/
|
||||
static async upsert(date, cameraName, count, createdBy, keterangan = null) {
|
||||
const result = await query(
|
||||
`INSERT INTO manual_feed_sack_entries (date, camera_name, count, created_by, keterangan)
|
||||
VALUES ($1, $2, $3, $4, $5)
|
||||
ON CONFLICT (date, camera_name)
|
||||
DO UPDATE SET
|
||||
count = $3,
|
||||
keterangan = $5,
|
||||
updated_at = CURRENT_TIMESTAMP
|
||||
RETURNING *`,
|
||||
[date, cameraName, count, createdBy, keterangan]
|
||||
);
|
||||
return result.rows[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete manual entry
|
||||
* @param {string} date - Date (YYYY-MM-DD)
|
||||
* @param {string} cameraName - Camera name
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
static async delete(date, cameraName) {
|
||||
await query(
|
||||
'DELETE FROM manual_feed_sack_entries WHERE date = $1 AND camera_name = $2',
|
||||
[date, cameraName]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ManualFeedSack;
|
||||
Reference in new issue
Block a user