Class: Evesync::Database
- Inherits:
-
Object
- Object
- Evesync::Database
- Defined in:
- lib/evesync/database.rb
Overview
Database class is a proxy for evedatad daemon implements at least one method: save
. Allows Local evemond
save messages about changes
Messages should be serializable (JSON)
TODO:
* Think about how it can be widened
Instance Method Summary collapse
-
#events ⇒ Object
Events simplified: object => [timestamp…].
-
#initialize(db_path = nil, db_files_path = nil) ⇒ Database
constructor
A new instance of Database.
-
#messages(events) ⇒ Object
Messages for events: object => => message.
-
#save(message) ⇒ Object
Save message to database, key is timestamp+object.
Constructor Details
#initialize(db_path = nil, db_files_path = nil) ⇒ Database
Returns a new instance of Database.
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/evesync/database.rb', line 23 def initialize(db_path=nil, db_files_path=nil) path = db_path || Config[:evedatad]['db_path'] unless ::File.exist? path # FIXME: only root. handle exception FileUtils.mkdir_p(path) end @env = LMDB.new(path) @db = @env.database @files_path = db_files_path || Config[:evedatad]['db_files_path'] end |
Instance Method Details
#events ⇒ Object
Events simplified: object => [timestamp…]
51 52 53 54 55 56 57 58 59 |
# File 'lib/evesync/database.rb', line 51 def events events = {} @db.each do |key, _| , object = parse_event(key) events[object] ||= [] events[object].push() end events end |
#messages(events) ⇒ Object
Messages for events: object => => message
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/evesync/database.rb', line 62 def (events) ev_msgs = {} @db.each do |key, | , object = parse_event(key) next unless events.include?(object) ev_msgs[object] ||= {} if events[object].include?() ev_msgs[object][] = end end ev_msgs end |
#save(message) ⇒ Object
Save message to database, key is timestamp+object
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/evesync/database.rb', line 36 def save() Log.debug("Database save: #{}") db_add_entry() if .is_a? Evesync::IPC::Data::File Log.debug("Database save file action: #{.action}") unless .action == IPC::Data::File::Action::DELETE save_file() end end true end |