import 'database_helper.dart'; class EditLogRepository { final DatabaseHelper _dbHelper = DatabaseHelper(); Future _ensureTable() async { final db = await _dbHelper.database; await db.execute(''' CREATE TABLE IF NOT EXISTS edit_logs ( id INTEGER PRIMARY KEY AUTOINCREMENT, invoice_id TEXT, message TEXT, created_at INTEGER ) '''); } Future addLog(String invoiceId, String message) async { await _ensureTable(); final db = await _dbHelper.database; final now = DateTime.now().millisecondsSinceEpoch; // cleanup older than 30 days final cutoff = DateTime.now().subtract(const Duration(days: 30)).millisecondsSinceEpoch; await db.delete('edit_logs', where: 'created_at < ?', whereArgs: [cutoff]); await db.insert('edit_logs', { 'invoice_id': invoiceId, 'message': message, 'created_at': now, }); } Future> getLogs(String invoiceId) async { await _ensureTable(); final db = await _dbHelper.database; final cutoff = DateTime.now().subtract(const Duration(days: 14)).millisecondsSinceEpoch; final res = await db.query( 'edit_logs', where: 'invoice_id = ? AND created_at >= ?', whereArgs: [invoiceId, cutoff], orderBy: 'created_at DESC', ); return res .map((e) => EditLogEntry( id: e['id'] as int, invoiceId: e['invoice_id'] as String, message: e['message'] as String, createdAt: DateTime.fromMillisecondsSinceEpoch(e['created_at'] as int), )) .toList(); } } class EditLogEntry { final int id; final String invoiceId; final String message; final DateTime createdAt; EditLogEntry({required this.id, required this.invoiceId, required this.message, required this.createdAt}); }