Interface ExternalDatabaseReleaseAuditService

All Known Implementing Classes:
ExternalDatabaseReleaseAuditServiceImpl

public interface ExternalDatabaseReleaseAuditService
Co-bean carrying the @Audited hook for ReleaseDetailsUpdateEvent writes. Exists so the audit aspect can intercept emission for the two release-update entry points on ExternalDatabaseService -- the previous imperative auditTrailService.addUpdateEvent(ed, ReleaseDetailsUpdateEvent.class, note, detail, lastUpdated) 5-arg form is not expressible through the declarative aspect today (the aspect writes via addUpdateEventWithPayload which sets performedDate=now()).

Phase C bucket 2g (audit-residual inventory #9 + #10): migrates the imperative call to an @Audited-decorated method on this helper bean. The legacy 5-arg form's explicit performedDate=lastUpdated semantics shift to now() for the audit row; the original lastUpdated is preserved verbatim inside the JSON payload (and on the entity itself, via ExternalDatabase.lastUpdated).

  • Method Details

    • recordReleaseDetailsUpdate

      void recordReleaseDetailsUpdate(ExternalDatabase ed, @Nullable String note, ReleaseDetailsUpdatePayload payload)
      Emit a ReleaseDetailsUpdateEvent for the given external database. The aspect picks the ExternalDatabase as the audit target, serialises payload into AUDIT_EVENT.PAYLOAD, and stores note in AUDIT_EVENT.NOTE.
      Parameters:
      ed - the auditable target
      note - short note (may be null -- e.g. background refreshes from GeneMultifunctionalityPopulationServiceImpl supply a descriptive note; manual updates may omit it)
      payload - structured release context; carries releaseVersion, releaseUrl, lastUpdated and the transition detail