module Perimeter::Repository::Adapters::ActiveRecord::ClassMethods
Public Instance Methods
create(attributes)
click to toggle source
# File lib/perimeter/repository/adapters/active_record.rb, line 30 def create(attributes) record = attributes_to_record attributes if record.invalid? return Operations.failure(:validation_failed, object: record_to_entity(record)) end id = record.id.presence || attributes[:id].presence || attributes['id'].presence if id && backend.find_by_id(id) return Operations.failure :record_already_exists end if record.save Operations.success :record_created, object: record_to_entity(record) else Operations.failure :creation_failed, object: record_to_entity(record) end rescue => exception ::Trouble.notify exception Operations.failure :backend_error, object: exception end
destroy(id)
click to toggle source
# File lib/perimeter/repository/adapters/active_record.rb, line 80 def destroy(id) unless record = backend.find_by_id(id) return Operations.success(:nothing_to_destroy) end if record.destroy Operations.success :record_destroyed, object: record_to_entity(record) else Operations.failure :destruction_failed end rescue => exception ::Trouble.notify exception Operations.failure :backend_error, object: exception end
find(id)
click to toggle source
# File lib/perimeter/repository/adapters/active_record.rb, line 17 def find(id) record = backend.find id entity = record_to_entity record Operations.success :record_found, object: entity rescue ::ActiveRecord::RecordNotFound => exception Operations.failure :record_not_found, object: exception rescue => exception ::Trouble.notify exception Operations.failure :backend_error, object: exception end
update(id, attributes)
click to toggle source
–––––––– Updating ––––––––
# File lib/perimeter/repository/adapters/active_record.rb, line 57 def update(id, attributes) unless record = backend.find_by_id(id) return Operations.failure :record_not_found end record.send :assign_attributes, attributes if record.invalid? entity = record_to_entity record return Operations.failure(:validation_failed, object: entity) end if record.save Operations.success :record_updated, object: record_to_entity(record) else Operations.failure :update_failed end rescue => exception ::Trouble.notify exception Operations.failure :backend_error, object: exception end