Class: OpenehrRails::Rm::GraphPersister
- Inherits:
-
Object
- Object
- OpenehrRails::Rm::GraphPersister
- Defined in:
- lib/openehr_rails/rm/graph_persister.rb
Overview
Entry point for Storable's save/destroy hooks. Delegates the actual graph + version + contribution write to CompositionCommitter (shared with the openEHR REST API's COMPOSITION endpoint); this class's own job is just deriving the commit's inputs from the scaffolded record.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(record) ⇒ GraphPersister
constructor
A new instance of GraphPersister.
- #persist ⇒ Object
- #purge ⇒ Object
Constructor Details
#initialize(record) ⇒ GraphPersister
Returns a new instance of GraphPersister.
18 19 20 |
# File 'lib/openehr_rails/rm/graph_persister.rb', line 18 def initialize(record) @record = record end |
Class Method Details
.persist(record) ⇒ Object
10 11 12 |
# File 'lib/openehr_rails/rm/graph_persister.rb', line 10 def self.persist(record) new(record).persist end |
.purge(record) ⇒ Object
14 15 16 |
# File 'lib/openehr_rails/rm/graph_persister.rb', line 14 def self.purge(record) new(record).purge end |
Instance Method Details
#persist ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'lib/openehr_rails/rm/graph_persister.rb', line 22 def persist CompositionCommitter.commit( canonical_hash, uid: @record.uid, owner: @record, ehr: materialize_ehr, context_start_time: @record.try(:composed_at) ) end |
#purge ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/openehr_rails/rm/graph_persister.rb', line 32 def purge compositions = Composition.where(owner_type: @record.class.name, owner_id: @record.id) composition_ids = compositions.ids versions = Version.where(composition_id: composition_ids) contribution_ids = versions.pluck(:contribution_id).compact DataValue.where(composition_id: composition_ids).delete_all Node.where(composition_id: composition_ids).delete_all versions.delete_all Contribution.where(id: contribution_ids).delete_all compositions.delete_all end |