dyndnsd/lib/dyndnsd/database.rb

39 lines
692 B
Ruby
Raw Normal View History

2013-04-27 14:07:14 +02:00
require 'forwardable'
module Dyndnsd
class Database
extend Forwardable
2018-02-23 12:54:43 +01:00
2013-04-27 14:07:14 +02:00
def_delegators :@db, :[], :[]=, :each, :has_key?
2018-02-23 12:54:43 +01:00
2020-02-28 15:13:28 +01:00
# @param db_file [String]
2013-04-27 14:07:14 +02:00
def initialize(db_file)
@db_file = db_file
end
2018-02-23 12:54:43 +01:00
2020-02-28 15:13:28 +01:00
# @return [void]
2013-04-27 14:07:14 +02:00
def load
if File.file?(@db_file)
@db = JSON.parse(File.read(@db_file, mode: 'r'))
2013-04-27 14:07:14 +02:00
else
@db = {}
end
@db_hash = @db.hash
end
2018-02-23 12:54:43 +01:00
2020-02-28 15:13:28 +01:00
# @return [void]
2013-04-27 14:07:14 +02:00
def save
Helper.span('database_save') do |_span|
File.open(@db_file, 'w') { |f| JSON.dump(@db, f) }
@db_hash = @db.hash
end
2013-04-27 14:07:14 +02:00
end
2018-02-23 12:54:43 +01:00
2020-02-28 15:13:28 +01:00
# @return [Boolean]
2013-04-27 14:07:14 +02:00
def changed?
@db_hash != @db.hash
end
end
end