Class: PublisherDBDataSource

Inherits:
Object
  • Object
show all
Defined in:
lib/publisher/publisher_db_data_source.rb

Instance Method Summary collapse

Constructor Details

#initializePublisherDBDataSource

Returns a new instance of PublisherDBDataSource.



6
7
8
# File 'lib/publisher/publisher_db_data_source.rb', line 6

def initialize
  @client = DBClient.instance
end

Instance Method Details

#add(publisher) ⇒ Object



10
11
12
13
14
15
# File 'lib/publisher/publisher_db_data_source.rb', line 10

def add(publisher)
  query = "INSERT INTO Publisher (Name, Email) VALUES ('#{publisher.name}', #{publisher.email.nil? ? 'NULL' : "'#{publisher.email}'"})"
  @client.query(query)
  publisher_id = @client.last_id
  get(publisher_id)
end

#change(publisher) ⇒ Object



17
18
19
20
21
# File 'lib/publisher/publisher_db_data_source.rb', line 17

def change(publisher)
  query = "UPDATE Publisher SET Name='#{publisher.name}', Email=#{publisher.email.nil? ? 'NULL' : "'#{publisher.email}'"} WHERE PublisherID=#{publisher.publisher_id}"
  @client.query(query)
  get(publisher.publisher_id)
end

#countObject



58
59
60
61
62
# File 'lib/publisher/publisher_db_data_source.rb', line 58

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

#delete(id) ⇒ Object



23
24
25
26
# File 'lib/publisher/publisher_db_data_source.rb', line 23

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

#get(id) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/publisher/publisher_db_data_source.rb', line 28

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

#get_list(page_size, page_num, sort_field, sort_direction, has_email = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/publisher/publisher_db_data_source.rb', line 38

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

  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)
  publishers = []
  results.each do |result|
    publishers << Publisher.new(result[:'PublisherID'], result[:'Name'], result[:'Email'])
  end
  publishers
end