Sha256: 5ddfa50114262ae83cd2b5ea4aa583676aff1b61a2d05f44d25e14f6238adf48
Contents?: true
Size: 1.91 KB
Versions: 6
Compression:
Stored size: 1.91 KB
Contents
require 'orm_adapter' module Neo4j module ActiveNode module ClassMethods include OrmAdapter::ToAdapter end class OrmAdapter < ::OrmAdapter::Base module ClassMethods include ActiveModel::Callbacks end def column_names klass._decl_props.keys end def i18n_scope :neo4j end # Get an instance by id of the model def get!(id) klass.find(wrap_key(id)).tap do |node| fail 'No record found' if node.nil? end end # Get an instance by id of the model def get(id) klass.find(wrap_key(id)) end # Find the first instance matching conditions def find_first(options = {}) conditions, order = extract_conditions!(options) extract_id!(conditions) order = hasherize_order(order) result = klass.where(conditions) result = result.order(order) unless order.empty? result.first end # Find all models matching conditions def find_all(options = {}) conditions, order, limit, offset = extract_conditions!(options) extract_id!(conditions) order = hasherize_order(order) result = klass.where(conditions) result = result.order(order) unless order.empty? result = result.skip(offset) if offset result = result.limit(limit) if limit result.to_a end # Create a model using attributes def create!(attributes = {}) klass.create!(attributes) end # @see OrmAdapter::Base#destroy def destroy(object) object.destroy && true if valid_object?(object) end private def hasherize_order(order) (order || []).map { |clause| Hash[*clause] } end def extract_id!(conditions) if id = conditions.delete(:id) conditions[klass.id_property_name.to_sym] = id end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems