lib/cellect/server/adapters/postgres.rb in cellect-server-0.0.3 vs lib/cellect/server/adapters/postgres.rb in cellect-server-0.0.4

- old
+ new

@@ -11,11 +11,11 @@ end end def workflow_list with_pg do |pg| - pg.exec('select * from workflows').collect do |row| + pg.exec('SELECT * FROM workflows').collect do |row| { 'id' => row['id'].to_i, 'name' => row['id'], 'prioritized' => row['prioritized'] == 't', 'pairwise' => row['pairwise'] == 't', @@ -25,11 +25,19 @@ end end def load_data_for(workflow_name) with_pg do |pg| - pg.exec("select id, priority, group_id from workflow_#{ workflow_name }_subjects").collect do |row| + statement = <<-SQL + SELECT sms.id as id, sms.priority as priority, sms.subject_set_id as group_id + FROM workflows w + JOIN subject_sets_workflows ssw ON (ssw.workflow_id = w.id) + JOIN subject_sets ss ON (ss.id = ssw.subject_set_id) + JOIN set_member_subjects sms ON (s.id = sms.subject_set_id) + WHERE w.id = #{ workflow_name } + SQL + pg.exec(statement).collect do |row| { 'id' => row['id'].to_i, 'priority' => row['priority'].to_f, 'group_id' => row['group_id'].to_i } @@ -37,11 +45,15 @@ end end def load_user(workflow_name, id) with_pg do |pg| - pg.exec("select subject_id from workflow_#{ workflow_name }_classifications where user_id=#{ id }").collect do |row| - row['subject_id'].to_i + statement = <<-SQL + SELECT subject_ids FROM user_seen_subjects + WHERE user_id = #{ id } AND workflow_id = #{ workflow_name } + SQL + pg.exec(statement).collect do |row| + row['subject_ids'].map(&:to_i) end end end def with_pg