Sha256: f04821a36b6c5127b6d5bbeaf07783ac8ca9827a21660e3e6d2b842794224ec7

Contents?: true

Size: 1.68 KB

Versions: 1

Compression:

Stored size: 1.68 KB

Contents

require 'mysql2'
require_relative '../data_sources/db_client'
require_relative '../models/ls/car'

class CarDbDataSource
  def initialize
    @client = DBClient.instance
  end

  def add(car)
    query = "INSERT INTO car (Model, OwnerID, TenantID) VALUES ('#{car.model}', #{car.owner_id}', '#{car.tenant_id}')"
    @client.query(query)
    car_id = @client.last_id
    get(car_id)
  end

  def change(tenant)
    query = "UPDATE car SET Model='#{tenant.name}', Email=#{tenant.email.nil? ? 'NULL' : "'#{tenant.email}'"} WHERE PublisherID=#{tenant.tenant_id}"
    @client.query(query)
    get(tenant.tenant_id)
  end

  def delete(id)
    query = "DELETE FROM Tenant WHERE TenantID=#{id}"
    @client.query(query)
  end

  def get(id)
    query = "SELECT * FROM Tenant WHERE TenantID=#{id}"
    result = @client.query(query).first
    if result
      Tenant.new(result[:'TenantID'], result[:'Name'], result[:'Email'])
    else
      nil
    end
  end

  def get_list(page_size, page_num, sort_field, sort_direction, has_email = nil)
    offset = (page_num - 1) * page_size
    query = "SELECT * FROM Tenant"

    if has_email == true
      query += " WHERE Email IS NOT NULL"
    elsif has_email == false
      query += " WHERE Email IS NULL"
    end

    query += " ORDER BY #{sort_field} #{sort_direction} LIMIT #{page_size} OFFSET #{offset}"

    results = @client.query(query)
    tenants = []
    results.each do |result|
      tenants << Tenant.new(result[:'TenantID'], result[:'Name'], result[:'Email'])
    end
    tenants
  end

  def count
    query = "SELECT COUNT(*) FROM Tenant"
    result = @client.query(query).first
    result[:'COUNT(*)']
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shnaider_carproj-0.1.0 lib/car/tenant_db_data_source.rb