1010module audit_trail ::main ;
1111
1212use audit_trail::capability::{Self , Capability };
13- use audit_trail::locking::{Self , LockingConfig };
13+ use audit_trail::locking::{Self , LockingConfig , LockingWindow , set_delete_record_lock };
1414use audit_trail::permission::{Self , Permission };
1515use audit_trail::record::{Self , Record };
1616use iota::clock::{Self , Clock };
@@ -217,8 +217,6 @@ public fun initial_admin_role_name(): String {
217217/// Add a record to the trail
218218///
219219/// Records are added sequentially with auto-assigned sequence numbers.
220- ///
221- /// TODO: Add capability parameter and permission check once implemented
222220public fun trail_add_record <D : store + copy >(
223221 trail: &mut AuditTrail <D >,
224222 cap: &Capability ,
@@ -256,7 +254,7 @@ public fun trail_add_record<D: store + copy>(
256254// ===== Locking =====
257255
258256/// Check if a record is locked (cannot be deleted)
259- public fun is_record_locked <D : store + copy >(
257+ public fun trail_is_record_locked <D : store + copy >(
260258 trail: &AuditTrail <D >,
261259 sequence_number: u64 ,
262260 clock: &Clock ,
@@ -276,22 +274,29 @@ public fun is_record_locked<D: store + copy>(
276274}
277275
278276/// Update the locking configuration
279- ///
280- /// TODO: Add capability parameter and permission check once implemented
281- public fun update_locking_config <D : store + copy >(
277+ public fun trail_update_locking_config <D : store + copy >(
282278 trail: &mut AuditTrail <D >,
283279 cap: &Capability ,
284280 new_config: LockingConfig ,
285281 _ctx: &mut TxContext ,
286282) {
287- // TODO: check_permission (trail, cap, &permissions::locking_update(), ctx );
283+ assert ! (trail. has_capability_permission ( cap, &permission:: update_locking_config ()), EPermissionDenied );
288284 trail.locking_config = new_config;
289285}
290286
291- // ===== Metadata =====
287+ /// Update the `delete_record_lock` locking configuration
288+ public fun trail_update_locking_config_for_delete_record <D : store + copy >(
289+ trail: &mut AuditTrail <D >,
290+ cap: &Capability ,
291+ new_delete_record_lock: LockingWindow ,
292+ _ctx: &mut TxContext ,
293+ ) {
294+ assert ! (trail.has_capability_permission (cap, &permission::update_locking_config_for_delete_record ()), EPermissionDenied );
295+ set_delete_record_lock (&mut trail.locking_config, new_delete_record_lock);
296+ }
292297
293298/// Update the trail's mutable metadata
294- public fun update_metadata <D : store + copy >(
299+ public fun trail_update_metadata <D : store + copy >(
295300 trail: &mut AuditTrail <D >,
296301 cap: &Capability ,
297302 new_metadata: Option <String >,
@@ -511,6 +516,10 @@ public use fun trail_name as AuditTrail.name;
511516public use fun trail_description as AuditTrail .description;
512517public use fun trail_metadata as AuditTrail .metadata;
513518public use fun trail_locking_config as AuditTrail .locking_config;
519+ public use fun trail_update_locking_config as AuditTrail .update_locking_config;
520+ public use fun trail_is_record_locked as AuditTrail .is_record_locked;
521+ public use fun trail_update_locking_config_for_delete_record as AuditTrail .update_locking_config_for_delete_record;
522+ public use fun trail_update_metadata as AuditTrail .update_metadata;
514523public use fun trail_is_empty as AuditTrail .is_empty;
515524public use fun trail_first_sequence as AuditTrail .first_sequence;
516525public use fun trail_last_sequence as AuditTrail .last_sequence;
0 commit comments