Class: ChefFixie::Sql::SqlObject

Inherits:
Object
  • Object
show all
Defined in:
lib/chef_fixie_shahid/sql_objects.rb

Overview

we declare these first so that the ‘element’ metaprogramming in SqlTable works

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ SqlObject

Returns a new instance of SqlObject.



82
83
84
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 82

def initialize(data)
  @data = data
end

Class Method Details

.name_field(field) ⇒ Object

TODO figure out model for write access



103
104
105
106
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 103

def self.name_field(field)
  fundef = "def name; @data.#{field}; end"
  class_eval(fundef)
end

.ro_access(*args) ⇒ Object

TODO rework this to use better style



95
96
97
98
99
100
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 95

def self.ro_access(*args)
  args.each do |field|
    fundef = "def #{field}; @data.#{field}; end"
    class_eval(fundef)
  end
end

.std_authzObject

Pretty much any object with an authz id has these fields



115
116
117
118
119
120
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 115

def self.std_authz
  std_timestamp
  [:authz_id, :last_updated_by].each do |i|
    ro_access(i)
  end
end

.std_timestampObject



108
109
110
111
112
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 108

def self.std_timestamp
  [:created_at, :updated_at].each do |i|
    ro_access(i)
  end
end

Instance Method Details

#dataObject



86
87
88
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 86

def data
  @data
end

#deleteObject



122
123
124
125
126
127
128
129
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 122

def delete
  rows = table.by_id(id)
  raise "id #{id} matches more than one object" if rows.all.count != 1
  rows.inner.delete
  if respond_to?(:authz_delete)
    authz_delete
  end
end

#tableObject



90
91
92
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 90

def table
  Relationships.table_class(self).new
end