Class: ChefFixie::Sql::SqlObject
- Inherits:
-
Object
- Object
- ChefFixie::Sql::SqlObject
- Defined in:
- lib/chef_fixie_shahid/sql_objects.rb
Overview
we declare these first so that the ‘element’ metaprogramming in SqlTable works
Direct Known Subclasses
Client, Container, Cookbook, CookbookArtifact, DataBag, Environment, Group, Node, Org, Policy, PolicyGroup, Role, User
Class Method Summary collapse
-
.name_field(field) ⇒ Object
TODO figure out model for write access.
-
.ro_access(*args) ⇒ Object
TODO rework this to use better style.
-
.std_authz ⇒ Object
Pretty much any object with an authz id has these fields.
- .std_timestamp ⇒ Object
Instance Method Summary collapse
- #data ⇒ Object
- #delete ⇒ Object
-
#initialize(data) ⇒ SqlObject
constructor
A new instance of SqlObject.
- #table ⇒ Object
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_authz ⇒ Object
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 [:authz_id, :last_updated_by].each do |i| ro_access(i) end end |
.std_timestamp ⇒ Object
108 109 110 111 112 |
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 108 def self. [:created_at, :updated_at].each do |i| ro_access(i) end end |
Instance Method Details
#data ⇒ Object
86 87 88 |
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 86 def data @data end |
#delete ⇒ Object
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 |
#table ⇒ Object
90 91 92 |
# File 'lib/chef_fixie_shahid/sql_objects.rb', line 90 def table Relationships.table_class(self).new end |