Latihan 1 dari materi Audit Trail & Event Sourcing di Database — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi function buatAuditLog(action, tableName, recordId, oldVal, newVal) yang mengembalikan satu baris audit sebagai object, dengan lima key ini, persis namanya dan urutannya:
{
action: action,
table_name: tableName,
record_id: recordId,
old_values: ...,
new_values: ...
}
Aturan isi old_values dan new_values:
action sama dengan "INSERT": old_values diisi null (abaikan oldVal), new_values diisi newVal.
action sama dengan "DELETE": old_values diisi oldVal, new_values diisi null (abaikan newVal).
action sama dengan "UPDATE": old_values diisi oldVal, new_values diisi newVal.
Tiga baris console.log di kode awal sudah ada, biarkan. Yang dicek adalah object yang dikembalikan function-nya:
buatAuditLog("INSERT", "users", 1, null, {name: "Budi"}) menghasilkan {action: "INSERT", table_name: "users", record_id: 1, old_values: null, new_values: {name: "Budi"}}
buatAuditLog("DELETE", "posts", 5, {title: "Draft"}, null) menghasilkan {action: "DELETE", table_name: "posts", record_id: 5, old_values: {title: "Draft"}, new_values: null}
Ada satu tes tersembunyi untuk "UPDATE", yang memakai kedua nilainya apa adanya.