Class: Audrey::Node

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/audrey.rb

Overview

Audrey::Node This class defines an object that connects to the database for a single object record.

Direct Known Subclasses

Collection

Defined Under Namespace

Classes: Array, Collection, Hash

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(p_db, opts = {}) ⇒ Node


initialize



689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
# File 'lib/audrey.rb', line 689

def initialize(p_db, opts={})
	# param check
	if not p_db.is_a?(Audrey)
		raise 'db-param-not-audrey: ' + p_db.class.to_s
	end
	
	# db and engine
	@db = p_db
	@engine = @db.engine
	
	# hold on to flcass if one was sent
	@fclass = opts['fclass']
	
	# if a row was sent, cache it and set pk
	if opts['row']
		@row_cache = opts['row']
		@pk = @row_cache['pk']
	else
		@pk = opts['pk'] || Audrey::Util.uuid
		@row_cache = nil
	end
end

Instance Attribute Details

#dbObject (readonly)

Returns the value of attribute db.



679
680
681
# File 'lib/audrey.rb', line 679

def db
  @db
end

#pkObject (readonly)

Returns the value of attribute pk.



678
679
680
# File 'lib/audrey.rb', line 678

def pk
  @pk
end

Instance Method Details

#alive?Boolean


alive?

Returns:

  • (Boolean)


769
770
771
772
# File 'lib/audrey.rb', line 769

def alive?
	# $tm.hrm
	return @engine.object_exists?(@pk)
end

#ancestorsObject


ancestors



754
755
756
757
758
759
760
# File 'lib/audrey.rb', line 754

def ancestors
	read_check()
	
	@engine.ancestors(@pk) do |row|
		yield @db.object_from_row(row)
	end
end

#delete_objectObject


delete_object



781
782
783
784
# File 'lib/audrey.rb', line 781

def delete_object
	write_check()
	return @engine.delete_object(@pk)
end

#fcoObject


fco, isolate



737
738
739
740
# File 'lib/audrey.rb', line 737

def fco
	# $tm.hrm
	return Audrey::Util.fclass_fco(row['fclass'])
end

#isolateObject



742
743
744
745
# File 'lib/audrey.rb', line 742

def isolate
	# $tm.hrm
	return Audrey::Util.fclass_isolate(row['fclass'])
end

#rowObject


row



719
720
721
722
723
724
725
726
727
728
# File 'lib/audrey.rb', line 719

def row()
	# $tm.hrm
	read_check()
	
	if not @row_cache
		@row_cache = @engine.row_by_pk(@pk)
	end
	
	return @row_cache
end