Class: EventSource::EventRepository

Inherits:
Object
  • Object
show all
Extended by:
MemoizeInstance
Defined in:
lib/event_source/event_repository.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from MemoizeInstance

create, current, default_args

Constructor Details

#initialize(options) ⇒ EventRepository

Returns a new instance of EventRepository.



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/event_source/event_repository.rb', line 9

def initialize(options)
    if options[:in_memory] 
        @db = Sequel.sqlite
        init_in_memory_schema
    end
    
    if options[:connect]
        con = options[:connect][:connection_string]
        @db = Sequel.connect(con)
    end
end

Instance Attribute Details

#dbObject (readonly)

Returns the value of attribute db.



7
8
9
# File 'lib/event_source/event_repository.rb', line 7

def db
  @db
end

Instance Method Details

#get_events(type, uid) ⇒ Object



31
32
33
34
# File 'lib/event_source/event_repository.rb', line 31

def get_events(type, uid)
    data = @db[:events].where(entity_type: type.to_s, entity_id: uid).order(:created_at)
    data.map {|d| create_event(d)}
end

#save(event) ⇒ Object

Raises:



21
22
23
24
25
26
27
28
29
# File 'lib/event_source/event_repository.rb', line 21

def save(event)
    count = @db[:events].exclude_where(entity_type: event.entity_type).
                         where(entity_id: event.entity_id).count

    raise InvalidEntityID if count > 0
    @db[:events].insert(name: event.name, entity_type: event.entity_type,
                        entity_id: event.entity_id, data: event.data,
                        created_at: event.created_at)
end