Class: SiteSettings::DbProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/site_settings/db_provider.rb

Instance Method Summary collapse

Constructor Details

#initialize(model) ⇒ DbProvider

Returns a new instance of DbProvider.



7
8
9
10
11
# File 'lib/site_settings/db_provider.rb', line 7

def initialize(model)
  model.after_commit { model.notify_changed! }

  @model = model
end

Instance Method Details

#allObject



13
14
15
16
17
18
# File 'lib/site_settings/db_provider.rb', line 13

def all
  return [] unless table_exists?

  # Not leaking out AR records, cause I want all editing to happen via this API
  DB.query("SELECT name, data_type, value FROM #{@model.table_name}")
end

#current_siteObject



49
50
51
# File 'lib/site_settings/db_provider.rb', line 49

def current_site
  RailsMultisite::ConnectionManagement.current_db
end

#destroy(name) ⇒ Object



43
44
45
46
47
# File 'lib/site_settings/db_provider.rb', line 43

def destroy(name)
  return unless table_exists?

  @model.where(name: name).destroy_all
end

#find(name) ⇒ Object



20
21
22
23
24
25
# File 'lib/site_settings/db_provider.rb', line 20

def find(name)
  return nil unless table_exists?

  # Not leaking out AR records, cause I want all editing to happen via this API
  DB.query("SELECT name, data_type, value FROM #{@model.table_name} WHERE name = ?", name).first
end

#save(name, value, data_type) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/site_settings/db_provider.rb', line 27

def save(name, value, data_type)
  return unless table_exists?

  model = @model.find_by(name: name)
  model ||= @model.new

  model.name = name
  model.value = value
  model.data_type = data_type

  # save! used to ensure after_commit is called
  model.save! if model.changed?

  true
end