<< InitialSetup | Index | ConditionIndex >>
#!/usr/bin/env ruby require 'odba' require 'odba/index_definition' class User attr_accessor :first_name, :last_name include ODBA::Persistable def initialize(first_name, last_name) @first_name = first_name @last_name = last_name end def to_s "#@first_name #@last_name" end end index_def = YAML.load <<-EOD --- !ruby/object:ODBA::IndexDefinition index_name: 'users_by_last_name' origin_klass: 'User' target_klass: 'User' resolve_search_term: 'last_name.downcase.split(/\s+/)' resolve_target: '' resolve_origin: '' EOD ODBA.storage.dbi = DBI.connect('DBI:pg:test', 'test', '') ODBA.cache.setup ODBA.cache.drop_index('users_by_last_name') ODBA.cache.create_index(index_def, Object) composer = User.new('Ludwig', 'Van Beethoven') composer.odba_store painter = User.new('Vincent', 'Van Gogh') painter.odba_store scientist = User.new('Albert', 'Einstein') scientist.odba_store puts ODBA.cache.retrieve_from_index('users_by_last_name', 'van') # -> Ludwig Van Beethoven # Vincent Van Gogh puts ODBA.cache.retrieve_from_index('users_by_last_name', 'beethoven') # -> Ludwig Van Beethoven