const { query } = require('../database/db'); class CycleFeedInitialBalance { /** * Get initial balance for a specific cycle * @param {string} cycleId - Cycle ID * @returns {Promise} Initial balance record or null if not found */ static async getByCycleId(cycleId) { const result = await query( 'SELECT * FROM cycle_feed_initial_balance WHERE cycle_id = $1', [cycleId] ); return result.rows[0] || null; } /** * Insert or update initial balance for a cycle (upsert) * @param {string} cycleId - Cycle ID * @param {number} saldoAwal - Initial balance count (must be non-negative) * @param {string} createdBy - Username of creator * @returns {Promise} Created/updated initial balance record */ static async upsert(cycleId, saldoAwal, createdBy) { const result = await query( `INSERT INTO cycle_feed_initial_balance (cycle_id, saldo_awal, created_by) VALUES ($1, $2, $3) ON CONFLICT (cycle_id) DO UPDATE SET saldo_awal = $2, updated_at = CURRENT_TIMESTAMP RETURNING *`, [cycleId, saldoAwal, createdBy] ); return result.rows[0]; } /** * Delete initial balance for a cycle * @param {string} cycleId - Cycle ID * @returns {Promise} */ static async delete(cycleId) { await query( 'DELETE FROM cycle_feed_initial_balance WHERE cycle_id = $1', [cycleId] ); } } module.exports = CycleFeedInitialBalance;