Refactors navigation page generation. Adds navigation by Series.
[quanlib.git] / store.rb
index 946c43c4f9056a53a1e753b2240babeb90c08e81..05f44132d1609af54f4cbb3e47befc69161fbce3 100644 (file)
--- a/store.rb
+++ b/store.rb
@@ -3,6 +3,8 @@ require 'csv'
 require 'fileutils'
 require 'pg'
 
+require 'series'
+
 class Store
   def initialize
     @basepath = '/arc/quanlib' # TODO: FIXME: configure this in a sane way
@@ -244,11 +246,15 @@ EOS
 
     (efspath, efsname) = construct_efs_path(id)
 
-    File.open(@basepath + '/efs/' + efspath + '/' + efsname, 'rb') do |is|
-      return Cover.new(is, efsname, mime_type)
-    end
+    fullpath = @basepath + '/efs/' + efspath + '/' + efsname
 
-    return nil
+    return Cover.new(nil, fullpath, mime_type)
+
+    #File.open(fullpath, 'rb') do |is|
+    #  return Cover.new(is, fullpath, mime_type)
+    #end
+    #
+    #return nil
   end
 
   def store_cover(book)
@@ -314,11 +320,18 @@ EOS
   end
 
   def load_series(id)
-    sql = "SELECT descr FROM Series WHERE id=$1;"
+    sql = "SELECT age,genre,grouping,code,descr FROM Series WHERE id=$1;"
     args = [id]
     @conn.exec_params(sql, args) do |rs|
       if rs.ntuples > 0
-        return rs[0]['descr']
+        row = rs[0]
+        series = Series.new(id)
+        series.age = row['age']
+        series.genre = row['genre']
+        series.grouping = row['grouping']
+        series.code = row['code']
+        series.descr = row['descr']
+        return series
       end
     end
     return nil
@@ -360,5 +373,38 @@ EOS
     end
     return book_ids
   end
+
+  def query_books_by_series_id(id)
+    sql = 
+<<EOS
+      SELECT b.id FROM Books b
+      WHERE b.series = $1
+      ORDER BY b.volume,b.title
+EOS
+    book_ids = []
+    @conn.exec_params(sql, [id]) do |rs|
+      rs.each do |row|
+        book_ids.push(row['id'])
+      end
+    end
+    return book_ids
+  end
+
+  def query_series_by_age(pattern)
+    sql = 
+<<EOS
+      SELECT s.id 
+      FROM Series s
+      WHERE s.age LIKE $1
+      ORDER BY s.grouping,s.descr
+EOS
+    series_ids = []
+    @conn.exec_params(sql, [pattern]) do |rs|
+      rs.each do |row|
+        series_ids.push(row['id'])
+      end
+    end
+    return series_ids
+  end
 end