import java.util.List;
import java.util.Optional;

/**
 * Kontrak lapisan penyimpanan untuk resource tugas.
 * Handler hanya mengenal interface ini, sehingga implementasi bebas ditukar:
 * memori untuk pengujian, berkas untuk persistensi, atau JDBC untuk database.
 */
public interface TugasRepository {

    /** Menyimpan tugas baru; id ditetapkan otomatis oleh penyimpanan. */
    Tugas tambah(Tugas tugas);

    /** Mencari satu tugas berdasarkan id. */
    Optional<Tugas> cari(int id);

    /** Seluruh tugas terurut menaik berdasarkan id. */
    List<Tugas> semua();

    /** Menyimpan perubahan tugas yang sudah ada; kosong bila id tidak ditemukan. */
    Optional<Tugas> simpan(Tugas tugas);

    /** Menghapus tugas; false bila id tidak ditemukan. */
    boolean hapus(int id);
}
