class CrisalidOdooClient::Query

Public Class Methods

new(client) click to toggle source
# File lib/crisalid_odoo_client/query.rb, line 4
def initialize(client)
  @models = client.models
  @odoo_db = client.odoo_db
  @uid = client.uid
  @odoo_pass = client.odoo_pass
end

Public Instance Methods

create(table, params) click to toggle source
# File lib/crisalid_odoo_client/query.rb, line 39
def create(table, params)
  if params.is_a?(Hash) && params.size > 0
    @models.execute_kw(@odoo_db, @uid, @odoo_pass, table, 'create', [params])
  else
    raise CrisalidOdooClient::Error::OdooResourceManagerError.new('params must be a non empty Hash')
  end
end
create_in_batch(table, headers, params) click to toggle source
# File lib/crisalid_odoo_client/query.rb, line 47
def create_in_batch(table, headers, params)
  if headers.is_a?(Array) && headers.size > 0
    if params.is_a?(Array) && params.size > 0 && params.first.is_a?(Array) && params.first.size == headers.size
      @models.execute_kw(@odoo_db, @uid, @odoo_pass, table, 'load', [headers, params])["ids"]
    else
      raise CrisalidOdooClient::Error::OdooResourceManagerError.new('params must be a non empty Array of Array who has the same size as headers')
    end
  else
    raise CrisalidOdooClient::Error::OdooResourceManagerError.new('headers must be a non empty Array')
  end
end
destroy(table, ids) click to toggle source
# File lib/crisalid_odoo_client/query.rb, line 67
def destroy(table, ids)
  if ids.is_a?(Array) && ids.size > 0
    @models.execute_kw(@odoo_db, @uid, @odoo_pass, table, 'unlink', [ids])
  else
    raise CrisalidOdooClient::Error::OdooResourceManagerError.new('ids must be a non empty Array')
  end
end
find(table, ids = [], params: {}, fields: [], first: false) click to toggle source
# File lib/crisalid_odoo_client/query.rb, line 25
def find(table, ids = [], params: {}, fields: [], first: false)
  params[:limit]  = 1      if first
  params[:fields] = fields if fields.size > 0

  @models.execute_kw(@odoo_db, @uid, @odoo_pass, table, 'read', [ids], params)
end
search_read(table, rules: [[]], params: {}, fields: []) click to toggle source
# File lib/crisalid_odoo_client/query.rb, line 19
def search_read(table, rules: [[]], params: {}, fields: [])
  params[:fields] = fields if fields.size > 0

  @models.execute_kw(@odoo_db, @uid, @odoo_pass, table, 'search_read', rules, params)
end
table_schema(table, attributes: []) click to toggle source
# File lib/crisalid_odoo_client/query.rb, line 11
def table_schema(table, attributes: [])
  @models.execute_kw(@odoo_db, @uid, @odoo_pass, table, 'fields_get', [], {attributes: attributes})
end
update(table, ids, params) click to toggle source
# File lib/crisalid_odoo_client/query.rb, line 59
def update(table, ids, params)
  if params.is_a?(Hash) && params.size > 0 && ids.is_a?(Array) && ids.size > 0
    @models.execute_kw(@odoo_db, @uid, @odoo_pass, table, 'write', [ids, params])
  else
    raise CrisalidOdooClient::Error::OdooResourceManagerError.new('params must be a non empty Hash and ids must be a non empty Array')
  end
end
where(table, rules: [[]], params: {}, fields: [], first: false) click to toggle source
# File lib/crisalid_odoo_client/query.rb, line 32
def where(table, rules: [[]], params: {}, fields: [], first: false)
  params[:limit]  = 1      if first
  params[:fields] = fields if fields.size > 0

  search_read(table, rules: rules, params: params)
end