Class: Gloo::Objs::Mysql

Inherits:
Core::Obj show all
Defined in:
lib/gloo/objs/data/mysql.rb

Constant Summary collapse

KEYWORD =
'mysql'.freeze
KEYWORD_SHORT =
'mysql'.freeze
HOST =
'host'.freeze
DB =
'database'.freeze
USER =
'username'.freeze
PASSWD =
'password'.freeze

Constants inherited from Core::Baseo

Core::Baseo::NOT_IMPLEMENTED_ERR

Instance Attribute Summary

Attributes inherited from Core::Obj

#children, #parent, #value

Attributes inherited from Core::Baseo

#name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Core::Obj

#add_child, can_create?, #can_receive_message?, #child_count, #child_index, #contains_child?, #delete_children, #dispatch, #display_value, #find_add_child, #find_child, help, inherited, #initialize, #is_alias?, #msg_reload, #msg_unload, #multiline_value?, #pn, #remove_child, #render, #root?, #send_message, #set_parent, #set_value, #type_display, #value_display, #value_is_array?, #value_is_blank?, #value_string?

Methods inherited from Core::Baseo

#initialize, #type_display

Constructor Details

This class inherits a constructor from Gloo::Core::Obj

Class Method Details

.messagesObject

Get a list of message names that this object receives.



80
81
82
# File 'lib/gloo/objs/data/mysql.rb', line 80

def self.messages
  return super + [ 'verify' ]
end

.short_typenameObject

The short name of the object type.



43
44
45
# File 'lib/gloo/objs/data/mysql.rb', line 43

def self.short_typename
  return KEYWORD_SHORT
end

.typenameObject

The name of the object type.



36
37
38
# File 'lib/gloo/objs/data/mysql.rb', line 36

def self.typename
  return KEYWORD
end

Instance Method Details

#add_children_on_create?Boolean

Does this object have children to add when an object is created in interactive mode? This does not apply during obj load, etc.

Returns:



56
57
58
# File 'lib/gloo/objs/data/mysql.rb', line 56

def add_children_on_create?
  return true
end

#add_default_childrenObject

Add children to this object. This is used by containers to add children needed for default configurations.



65
66
67
68
69
70
71
# File 'lib/gloo/objs/data/mysql.rb', line 65

def add_default_children
  fac = @engine.factory
  fac.create_string HOST, nil, self
  fac.create_string DB, nil, self
  fac.create_string USER, nil, self
  fac.create_string PASSWD, nil, self
end

#get_clientObject

Get the client object. It might be cached, so check first. If it is not cached, create a new one.



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/gloo/objs/data/mysql.rb', line 103

def get_client
  app = @engine.running_app

  client = app.db_client_for_obj( self ) if app 

  unless client
    h = {
      host: host_value,
      database: db_value,
      username: user_value,
      password: passwd_value
    }
    client = Mysql2::Client.new( h )

    app.cache_db_client( self, client ) if app
  end
  
  return client
end

#get_query_result(result) ⇒ Object

Based on the result set, build a QueryResult object.



160
161
162
# File 'lib/gloo/objs/data/mysql.rb', line 160

def get_query_result( result )
  return QueryResult.new result[0], result[1]
end

#msg_verifyObject

SSH to the host and execute the command, then update result.



87
88
89
90
91
# File 'lib/gloo/objs/data/mysql.rb', line 87

def msg_verify
  return unless connects?

  @engine.heap.it.set_to true
end

#query(sql, params = nil) ⇒ Object

Open a connection and execute the SQL statement. Return the resulting data.



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/gloo/objs/data/mysql.rb', line 127

def query( sql, params = nil )
  client = get_client

  heads = []
  data = []
  if params
    pst = client.prepare( sql )
    rs = pst.execute( *params, :as => :array )
    if rs
      rs.each do |row|
        arr = []
        row.each do |o| 
          arr << o
        end
        data << arr
      end
    end
  else
    rs = client.query( sql, :as => :array ) 
    if rs
      rs.each do |row|
        data << row
      end
    end
  end

  heads = rs.fields if rs
  return [ heads, data ]
end