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