coalescing_panda 3.1.5 → 3.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/coalescing_panda/assignment.rb +3 -0
  3. data/app/models/coalescing_panda/course.rb +3 -0
  4. data/app/models/coalescing_panda/enrollment.rb +4 -0
  5. data/app/models/coalescing_panda/lti_account.rb +2 -0
  6. data/app/models/coalescing_panda/section.rb +3 -0
  7. data/app/models/coalescing_panda/submission.rb +4 -0
  8. data/app/models/coalescing_panda/term.rb +2 -0
  9. data/app/models/coalescing_panda/user.rb +3 -0
  10. data/app/models/coalescing_panda/workers/course_miner.rb +1 -0
  11. data/db/migrate/20131118211442_create_coalescing_panda_lti_accounts.rb +2 -0
  12. data/db/migrate/20141119225319_create_coalescing_panda_terms.rb +3 -3
  13. data/db/migrate/20141119225721_create_coalescing_panda_courses.rb +4 -5
  14. data/db/migrate/20141120151432_create_coalescing_panda_sections.rb +3 -4
  15. data/db/migrate/20141120151940_create_coalescing_panda_assignments.rb +3 -6
  16. data/db/migrate/20141120152458_create_coalescing_panda_users.rb +3 -4
  17. data/db/migrate/20141120152546_create_coalescing_panda_submissions.rb +4 -4
  18. data/db/migrate/20141120153135_create_coalescing_panda_enrollments.rb +5 -5
  19. data/lib/coalescing_panda/version.rb +1 -1
  20. data/spec/dummy/app/models/account.rb +7 -0
  21. data/spec/dummy/db/development.sqlite3 +0 -0
  22. data/spec/dummy/db/schema.rb +28 -35
  23. data/spec/dummy/db/test.sqlite3 +0 -0
  24. data/spec/dummy/log/development.log +513 -92
  25. data/spec/dummy/log/test.log +62415 -0
  26. data/spec/factories/accounts.rb +5 -0
  27. data/spec/factories/courses.rb +5 -1
  28. data/spec/factories/enrollments.rb +5 -2
  29. data/spec/factories/sections.rb +4 -1
  30. data/spec/factories/submissions.rb +3 -2
  31. data/spec/factories/terms.rb +9 -0
  32. data/spec/factories/users.rb +1 -0
  33. data/spec/helpers/coalescing_panda/canvas_batches_helper_spec.rb +17 -0
  34. data/spec/models/coalescing_panda/assignment_spec.rb +20 -0
  35. data/spec/models/coalescing_panda/course_spec.rb +26 -0
  36. data/spec/models/coalescing_panda/enrollment_spec.rb +32 -0
  37. data/spec/models/coalescing_panda/lti_account_spec.rb +6 -0
  38. data/spec/models/coalescing_panda/section_spec.rb +20 -0
  39. data/spec/models/coalescing_panda/submission_spec.rb +31 -0
  40. data/spec/models/coalescing_panda/term_spec.rb +12 -0
  41. data/spec/models/coalescing_panda/user_spec.rb +20 -0
  42. data/spec/models/coalescing_panda/workers/course_miner_spec.rb +7 -2
  43. metadata +11 -5
  44. data/db/migrate/20140722210735_add_settings_to_coalescing_panda_lti_account.rb +0 -5
  45. data/db/migrate/20141120205729_add_canvas_account_id_to_lti_account.rb +0 -5
  46. data/db/migrate/20141125185516_add_type_to_enrollments.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 99ae7fd46a00f12688336f1d8013bc68d6ed58fd
4
- data.tar.gz: 7cff2c9b34463d0dc575a4703c7fba4e95792415
3
+ metadata.gz: d9c022228a8c58d846f1f26d4dbf45ae01304489
4
+ data.tar.gz: cda8d6e744fbf39460a5a385f2cf8d4c704f2604
5
5
  SHA512:
6
- metadata.gz: 67ce91be318eb336ec0a1da1402e0f27c064ff221f5b2a6d45d4b8ec2aa8cb2afc8516c3207088813e634f0378adfd93dba2dbd672b1be577b471359c8816fbf
7
- data.tar.gz: 3534590ee35db4ee8deed87d9ac95a06b36d9cb3148eec8ea0d9584397ae09d50835c5cb86422260e4b652790f465b9bccced8bf65f5825eb0b180ffe9301019
6
+ metadata.gz: 45729e76b2685b919295954f10a0d0963ed85ae3d694df9e7e0e254ed6616919012c4e3595c2485545292f594bc09bd699608dfa3ab8acfbc2b9a252084adf4d
7
+ data.tar.gz: 6c2756e80ab8232506cc9dfb4268674d81acb9e4bba6c1f4d8e406088a40ac15742f4445ec020fe94836f399b1555d33cef10358e764825f011d0a01480290c2
@@ -4,5 +4,8 @@ module CoalescingPanda
4
4
  has_many :submissions, foreign_key: :coalescing_panda_assignment_id, class_name: 'CoalescingPanda::Submission'
5
5
 
6
6
  delegate :account, to: :course
7
+
8
+ validates :coalescing_panda_course_id, presence: true
9
+ validates :canvas_assignment_id, presence: true
7
10
  end
8
11
  end
@@ -7,5 +7,8 @@ module CoalescingPanda
7
7
  has_many :assignments, foreign_key: :coalescing_panda_course_id, class_name: 'CoalescingPanda::Assignment'
8
8
  has_many :submissions, through: :assignments
9
9
  has_many :users, through: :sections, source: :users, class_name: 'CoalescingPanda::User'
10
+
11
+ validates :coalescing_panda_lti_account_id, presence: true
12
+ validates :canvas_course_id, presence: true
10
13
  end
11
14
  end
@@ -4,5 +4,9 @@ module CoalescingPanda
4
4
  belongs_to :section, foreign_key: :coalescing_panda_section_id, class_name: 'CoalescingPanda::Section'
5
5
 
6
6
  delegate :account, to: :section
7
+
8
+ validates :coalescing_panda_user_id, presence: true
9
+ validates :coalescing_panda_section_id, presence: true
10
+ validates :canvas_enrollment_id, presence: true
7
11
  end
8
12
  end
@@ -13,6 +13,8 @@ module CoalescingPanda
13
13
 
14
14
  serialize :settings
15
15
 
16
+ validates :canvas_account_id, presence: true
17
+
16
18
  def validate_nonce(nonce, timestamp)
17
19
  cleanup_nonce
18
20
  if timestamp > 15.minutes.ago
@@ -5,5 +5,8 @@ module CoalescingPanda
5
5
  has_many :users, through: :enrollments, class_name: 'CoalescingPanda::User'
6
6
 
7
7
  delegate :account, to: :course
8
+
9
+ validates :coalescing_panda_course_id, presence: true
10
+ validates :canvas_section_id, presence: true
8
11
  end
9
12
  end
@@ -4,5 +4,9 @@ module CoalescingPanda
4
4
  belongs_to :assignment, foreign_key: :coalescing_panda_assignment_id, class_name: 'CoalescingPanda::Assignment'
5
5
 
6
6
  delegate :account, to: :assignment
7
+
8
+ validates :coalescing_panda_user_id, presence: true
9
+ validates :coalescing_panda_assignment_id, presence: true
10
+ validates :canvas_submission_id, presence: true
7
11
  end
8
12
  end
@@ -2,5 +2,7 @@ module CoalescingPanda
2
2
  class Term < ActiveRecord::Base
3
3
  belongs_to :account, foreign_key: :coalescing_panda_lti_account_id, class_name: 'CoalescingPanda::LtiAccount'
4
4
  has_many :courses, foreign_key: :coalescing_panda_term_id, class_name: 'CoalescingPanda::Course'
5
+
6
+ validates :coalescing_panda_lti_account_id, presence: true
5
7
  end
6
8
  end
@@ -7,5 +7,8 @@ module CoalescingPanda
7
7
  has_many :courses, through: :sections
8
8
 
9
9
  store :roles
10
+
11
+ validates :coalescing_panda_lti_account_id, presence: true
12
+ validates :canvas_user_id, presence: true
10
13
  end
11
14
  end
@@ -68,6 +68,7 @@ class CoalescingPanda::Workers::CourseMiner
68
68
  canvas_id_key = "canvas_#{model_key.to_s.singularize}_id"
69
69
  values[canvas_id_key] = values["id"]
70
70
  values['workflow_state'] = values["enrollment_state"] if values.has_key?('enrollment_state')
71
+ values['enrollment_type'] = values['type'] if model_key == :enrollments
71
72
  if model_key == :users
72
73
  record = account.send(model_key).where("#{canvas_id_key} = ?", values['id'].to_s).first_or_initialize
73
74
  else
@@ -6,6 +6,8 @@ class CreateCoalescingPandaLtiAccounts < ActiveRecord::Migration
6
6
  t.string :secret
7
7
  t.string :oauth2_client_id
8
8
  t.string :oauth2_client_key
9
+ t.string :canvas_account_id
10
+ t.text :settings
9
11
 
10
12
  t.timestamps
11
13
  end
@@ -1,11 +1,11 @@
1
1
  class CreateCoalescingPandaTerms < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :coalescing_panda_terms do |t|
4
- t.belongs_to :coalescing_panda_lti_account
4
+ t.belongs_to :coalescing_panda_lti_account, null: false
5
5
  t.string :name
6
6
  t.string :code
7
7
  t.string :sis_id
8
- t.string :canvas_term_id
8
+ t.string :canvas_term_id, null: false
9
9
  t.datetime :start_at
10
10
  t.datetime :end_at
11
11
  t.string :workflow_state
@@ -13,7 +13,7 @@ class CreateCoalescingPandaTerms < ActiveRecord::Migration
13
13
  t.timestamps
14
14
  end
15
15
 
16
- add_index :coalescing_panda_terms, :canvas_term_id
16
+ add_index :coalescing_panda_terms, [:canvas_term_id, :coalescing_panda_lti_account_id], name: :index_terms_account, unique: true
17
17
  add_index :coalescing_panda_terms, :sis_id
18
18
  end
19
19
  end
@@ -1,10 +1,10 @@
1
1
  class CreateCoalescingPandaCourses < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :coalescing_panda_courses do |t|
4
- t.belongs_to :coalescing_panda_lti_account
4
+ t.belongs_to :coalescing_panda_lti_account, null: false
5
5
  t.belongs_to :coalescing_panda_term
6
6
  t.string :name
7
- t.string :canvas_course_id
7
+ t.string :canvas_course_id, null: false
8
8
  t.string :sis_id
9
9
  t.datetime :start_at
10
10
  t.datetime :conclude_at
@@ -14,9 +14,8 @@ class CreateCoalescingPandaCourses < ActiveRecord::Migration
14
14
  t.timestamps
15
15
  end
16
16
 
17
- add_index :coalescing_panda_courses, :coalescing_panda_lti_account_id, name: :index_courses_account
18
- add_index :coalescing_panda_courses, :coalescing_panda_term_id, name: :index_courses_term
19
- add_index :coalescing_panda_courses, :canvas_course_id
17
+ add_index :coalescing_panda_courses, [:coalescing_panda_lti_account_id, :canvas_course_id], name: :index_courses_account, unique: true
18
+ add_index :coalescing_panda_courses, [:coalescing_panda_term_id, :canvas_course_id], name: :index_courses_term, unique: true
20
19
  add_index :coalescing_panda_courses, :sis_id
21
20
  end
22
21
  end
@@ -1,9 +1,9 @@
1
1
  class CreateCoalescingPandaSections < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :coalescing_panda_sections do |t|
4
- t.belongs_to :coalescing_panda_course
4
+ t.belongs_to :coalescing_panda_course, null: false
5
5
  t.string :name
6
- t.string :canvas_section_id
6
+ t.string :canvas_section_id, null: false
7
7
  t.string :sis_id
8
8
  t.string :workflow_state
9
9
  t.datetime :start_at
@@ -12,8 +12,7 @@ class CreateCoalescingPandaSections < ActiveRecord::Migration
12
12
  t.timestamps
13
13
  end
14
14
 
15
- add_index :coalescing_panda_sections, :coalescing_panda_course_id
16
- add_index :coalescing_panda_sections, :canvas_section_id
15
+ add_index :coalescing_panda_sections, [:coalescing_panda_course_id, :canvas_section_id], name: :index_sections_course, unique: true
17
16
  add_index :coalescing_panda_sections, :sis_id
18
17
  end
19
18
  end
@@ -1,11 +1,10 @@
1
1
  class CreateCoalescingPandaAssignments < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :coalescing_panda_assignments do |t|
4
- t.belongs_to :coalescing_panda_course
4
+ t.belongs_to :coalescing_panda_course, null: false
5
5
  t.string :name
6
6
  t.string :description
7
- t.string :canvas_assignment_id
8
- t.string :sis_id
7
+ t.string :canvas_assignment_id, null: false
9
8
  t.string :workflow_state
10
9
  t.float :points_possible
11
10
  t.datetime :due_at
@@ -15,8 +14,6 @@ class CreateCoalescingPandaAssignments < ActiveRecord::Migration
15
14
  t.timestamps
16
15
  end
17
16
 
18
- add_index :coalescing_panda_assignments, :coalescing_panda_course_id, name: :index_assignments_course
19
- add_index :coalescing_panda_assignments, :canvas_assignment_id
20
- add_index :coalescing_panda_assignments, :sis_id
17
+ add_index :coalescing_panda_assignments, [:coalescing_panda_course_id, :canvas_assignment_id], name: :index_assignments_course, unique: true
21
18
  end
22
19
  end
@@ -1,19 +1,18 @@
1
1
  class CreateCoalescingPandaUsers < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :coalescing_panda_users do |t|
4
- t.belongs_to :coalescing_panda_lti_account
4
+ t.belongs_to :coalescing_panda_lti_account, null: false
5
5
  t.string :name
6
6
  t.string :email
7
7
  t.string :roles
8
8
  t.string :workflow_state
9
9
  t.string :sis_id
10
- t.string :canvas_user_id
10
+ t.string :canvas_user_id, null: false
11
11
 
12
12
  t.timestamps
13
13
  end
14
14
 
15
- add_index :coalescing_panda_users, :coalescing_panda_lti_account_id, name: :index_users_account
16
- add_index :coalescing_panda_users, :canvas_user_id
15
+ add_index :coalescing_panda_users, [:coalescing_panda_lti_account_id, :canvas_user_id], name: :index_users_account, unique: true
17
16
  add_index :coalescing_panda_users, :sis_id
18
17
  end
19
18
  end
@@ -1,19 +1,19 @@
1
1
  class CreateCoalescingPandaSubmissions < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :coalescing_panda_submissions do |t|
4
- t.belongs_to :coalescing_panda_user
5
- t.belongs_to :coalescing_panda_assignment
4
+ t.belongs_to :coalescing_panda_user, null: false
5
+ t.belongs_to :coalescing_panda_assignment, null: false
6
6
  t.string :url
7
7
  t.string :grade
8
8
  t.string :score
9
9
  t.datetime :submitted_at
10
10
  t.string :workflow_state
11
- t.string :canvas_submission_id
11
+ t.string :canvas_submission_id, null: false
12
12
 
13
13
  t.timestamps
14
14
  end
15
15
 
16
- add_index :coalescing_panda_submissions, [:coalescing_panda_user_id, :coalescing_panda_assignment_id], name: :index_submissions_user_and_assignment
16
+ add_index :coalescing_panda_submissions, [:coalescing_panda_user_id, :coalescing_panda_assignment_id, :canvas_submission_id], name: :index_submissions_user_and_assignment, unique: true
17
17
  add_index :coalescing_panda_submissions, :canvas_submission_id
18
18
  end
19
19
  end
@@ -1,19 +1,19 @@
1
1
  class CreateCoalescingPandaEnrollments < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :coalescing_panda_enrollments do |t|
4
- t.belongs_to :coalescing_panda_user
5
- t.belongs_to :coalescing_panda_section
4
+ t.belongs_to :coalescing_panda_user, null: false
5
+ t.belongs_to :coalescing_panda_section, null: false
6
6
  t.string :workflow_state
7
7
  t.string :sis_id
8
- t.string :canvas_enrollment_id
8
+ t.string :canvas_enrollment_id, null: false
9
+ t.string :enrollment_type
9
10
  t.datetime :start_at
10
11
  t.datetime :end_at
11
12
 
12
13
  t.timestamps
13
14
  end
14
15
 
15
- add_index :coalescing_panda_enrollments, [:coalescing_panda_user_id, :coalescing_panda_section_id], name: :index_enrollments_user_and_assignment
16
- add_index :coalescing_panda_enrollments, :canvas_enrollment_id
16
+ add_index :coalescing_panda_enrollments, [:coalescing_panda_user_id, :coalescing_panda_section_id, :enrollment_type], name: :index_enrollments_user_and_assignment, unique: true
17
17
  add_index :coalescing_panda_enrollments, :sis_id
18
18
  end
19
19
  end
@@ -1,3 +1,3 @@
1
1
  module CoalescingPanda
2
- VERSION = '3.1.5'
2
+ VERSION = '3.1.6'
3
3
  end
@@ -0,0 +1,7 @@
1
+
2
+ class Account < CoalescingPanda::LtiAccount
3
+ has_many :terms, foreign_key: :coalescing_panda_lti_account_id, class_name: 'Term'
4
+ has_many :courses, foreign_key: :coalescing_panda_lti_account_id, class_name: 'Course'
5
+ has_many :users, foreign_key: :coalescing_panda_lti_account_id, class_name: 'User'
6
+ end
7
+
Binary file
@@ -11,14 +11,13 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20141125185516) do
14
+ ActiveRecord::Schema.define(version: 20141124160857) do
15
15
 
16
16
  create_table "coalescing_panda_assignments", force: true do |t|
17
- t.integer "coalescing_panda_course_id"
17
+ t.integer "coalescing_panda_course_id", null: false
18
18
  t.string "name"
19
19
  t.string "description"
20
- t.string "canvas_assignment_id"
21
- t.string "sis_id"
20
+ t.string "canvas_assignment_id", null: false
22
21
  t.string "workflow_state"
23
22
  t.float "points_possible"
24
23
  t.datetime "due_at"
@@ -28,9 +27,7 @@ ActiveRecord::Schema.define(version: 20141125185516) do
28
27
  t.datetime "updated_at"
29
28
  end
30
29
 
31
- add_index "coalescing_panda_assignments", ["canvas_assignment_id"], name: "index_coalescing_panda_assignments_on_canvas_assignment_id"
32
- add_index "coalescing_panda_assignments", ["coalescing_panda_course_id"], name: "index_assignments_course"
33
- add_index "coalescing_panda_assignments", ["sis_id"], name: "index_coalescing_panda_assignments_on_sis_id"
30
+ add_index "coalescing_panda_assignments", ["coalescing_panda_course_id", "canvas_assignment_id"], name: "index_assignments_course", unique: true
34
31
 
35
32
  create_table "coalescing_panda_canvas_api_auths", force: true do |t|
36
33
  t.string "user_id"
@@ -49,10 +46,10 @@ ActiveRecord::Schema.define(version: 20141125185516) do
49
46
  end
50
47
 
51
48
  create_table "coalescing_panda_courses", force: true do |t|
52
- t.integer "coalescing_panda_lti_account_id"
49
+ t.integer "coalescing_panda_lti_account_id", null: false
53
50
  t.integer "coalescing_panda_term_id"
54
51
  t.string "name"
55
- t.string "canvas_course_id"
52
+ t.string "canvas_course_id", null: false
56
53
  t.string "sis_id"
57
54
  t.datetime "start_at"
58
55
  t.datetime "conclude_at"
@@ -62,26 +59,24 @@ ActiveRecord::Schema.define(version: 20141125185516) do
62
59
  t.datetime "updated_at"
63
60
  end
64
61
 
65
- add_index "coalescing_panda_courses", ["canvas_course_id"], name: "index_coalescing_panda_courses_on_canvas_course_id"
66
- add_index "coalescing_panda_courses", ["coalescing_panda_lti_account_id"], name: "index_courses_account"
67
- add_index "coalescing_panda_courses", ["coalescing_panda_term_id"], name: "index_courses_term"
62
+ add_index "coalescing_panda_courses", ["coalescing_panda_lti_account_id", "canvas_course_id"], name: "index_courses_account", unique: true
63
+ add_index "coalescing_panda_courses", ["coalescing_panda_term_id", "canvas_course_id"], name: "index_courses_term", unique: true
68
64
  add_index "coalescing_panda_courses", ["sis_id"], name: "index_coalescing_panda_courses_on_sis_id"
69
65
 
70
66
  create_table "coalescing_panda_enrollments", force: true do |t|
71
- t.integer "coalescing_panda_user_id"
72
- t.integer "coalescing_panda_section_id"
67
+ t.integer "coalescing_panda_user_id", null: false
68
+ t.integer "coalescing_panda_section_id", null: false
73
69
  t.string "workflow_state"
74
70
  t.string "sis_id"
75
- t.string "canvas_enrollment_id"
71
+ t.string "canvas_enrollment_id", null: false
72
+ t.string "enrollment_type"
76
73
  t.datetime "start_at"
77
74
  t.datetime "end_at"
78
75
  t.datetime "created_at"
79
76
  t.datetime "updated_at"
80
- t.string "type"
81
77
  end
82
78
 
83
- add_index "coalescing_panda_enrollments", ["canvas_enrollment_id"], name: "index_coalescing_panda_enrollments_on_canvas_enrollment_id"
84
- add_index "coalescing_panda_enrollments", ["coalescing_panda_user_id", "coalescing_panda_section_id"], name: "index_enrollments_user_and_assignment"
79
+ add_index "coalescing_panda_enrollments", ["coalescing_panda_user_id", "coalescing_panda_section_id", "enrollment_type"], name: "index_enrollments_user_and_assignment", unique: true
85
80
  add_index "coalescing_panda_enrollments", ["sis_id"], name: "index_coalescing_panda_enrollments_on_sis_id"
86
81
 
87
82
  create_table "coalescing_panda_lti_accounts", force: true do |t|
@@ -90,10 +85,10 @@ ActiveRecord::Schema.define(version: 20141125185516) do
90
85
  t.string "secret"
91
86
  t.string "oauth2_client_id"
92
87
  t.string "oauth2_client_key"
88
+ t.string "canvas_account_id"
89
+ t.text "settings"
93
90
  t.datetime "created_at"
94
91
  t.datetime "updated_at"
95
- t.text "settings"
96
- t.string "canvas_account_id"
97
92
  end
98
93
 
99
94
  create_table "coalescing_panda_lti_nonces", force: true do |t|
@@ -103,9 +98,9 @@ ActiveRecord::Schema.define(version: 20141125185516) do
103
98
  end
104
99
 
105
100
  create_table "coalescing_panda_sections", force: true do |t|
106
- t.integer "coalescing_panda_course_id"
101
+ t.integer "coalescing_panda_course_id", null: false
107
102
  t.string "name"
108
- t.string "canvas_section_id"
103
+ t.string "canvas_section_id", null: false
109
104
  t.string "sis_id"
110
105
  t.string "workflow_state"
111
106
  t.datetime "start_at"
@@ -114,8 +109,7 @@ ActiveRecord::Schema.define(version: 20141125185516) do
114
109
  t.datetime "updated_at"
115
110
  end
116
111
 
117
- add_index "coalescing_panda_sections", ["canvas_section_id"], name: "index_coalescing_panda_sections_on_canvas_section_id"
118
- add_index "coalescing_panda_sections", ["coalescing_panda_course_id"], name: "index_coalescing_panda_sections_on_coalescing_panda_course_id"
112
+ add_index "coalescing_panda_sections", ["coalescing_panda_course_id", "canvas_section_id"], name: "index_sections_course", unique: true
119
113
  add_index "coalescing_panda_sections", ["sis_id"], name: "index_coalescing_panda_sections_on_sis_id"
120
114
 
121
115
  create_table "coalescing_panda_sessions", force: true do |t|
@@ -126,27 +120,27 @@ ActiveRecord::Schema.define(version: 20141125185516) do
126
120
  end
127
121
 
128
122
  create_table "coalescing_panda_submissions", force: true do |t|
129
- t.integer "coalescing_panda_user_id"
130
- t.integer "coalescing_panda_assignment_id"
123
+ t.integer "coalescing_panda_user_id", null: false
124
+ t.integer "coalescing_panda_assignment_id", null: false
131
125
  t.string "url"
132
126
  t.string "grade"
133
127
  t.string "score"
134
128
  t.datetime "submitted_at"
135
129
  t.string "workflow_state"
136
- t.string "canvas_submission_id"
130
+ t.string "canvas_submission_id", null: false
137
131
  t.datetime "created_at"
138
132
  t.datetime "updated_at"
139
133
  end
140
134
 
141
135
  add_index "coalescing_panda_submissions", ["canvas_submission_id"], name: "index_coalescing_panda_submissions_on_canvas_submission_id"
142
- add_index "coalescing_panda_submissions", ["coalescing_panda_user_id", "coalescing_panda_assignment_id"], name: "index_submissions_user_and_assignment"
136
+ add_index "coalescing_panda_submissions", ["coalescing_panda_user_id", "coalescing_panda_assignment_id", "canvas_submission_id"], name: "index_submissions_user_and_assignment", unique: true
143
137
 
144
138
  create_table "coalescing_panda_terms", force: true do |t|
145
- t.integer "coalescing_panda_lti_account_id"
139
+ t.integer "coalescing_panda_lti_account_id", null: false
146
140
  t.string "name"
147
141
  t.string "code"
148
142
  t.string "sis_id"
149
- t.string "canvas_term_id"
143
+ t.string "canvas_term_id", null: false
150
144
  t.datetime "start_at"
151
145
  t.datetime "end_at"
152
146
  t.string "workflow_state"
@@ -154,23 +148,22 @@ ActiveRecord::Schema.define(version: 20141125185516) do
154
148
  t.datetime "updated_at"
155
149
  end
156
150
 
157
- add_index "coalescing_panda_terms", ["canvas_term_id"], name: "index_coalescing_panda_terms_on_canvas_term_id"
151
+ add_index "coalescing_panda_terms", ["canvas_term_id", "coalescing_panda_lti_account_id"], name: "index_terms_account", unique: true
158
152
  add_index "coalescing_panda_terms", ["sis_id"], name: "index_coalescing_panda_terms_on_sis_id"
159
153
 
160
154
  create_table "coalescing_panda_users", force: true do |t|
161
- t.integer "coalescing_panda_lti_account_id"
155
+ t.integer "coalescing_panda_lti_account_id", null: false
162
156
  t.string "name"
163
157
  t.string "email"
164
158
  t.string "roles"
165
159
  t.string "workflow_state"
166
160
  t.string "sis_id"
167
- t.string "canvas_user_id"
161
+ t.string "canvas_user_id", null: false
168
162
  t.datetime "created_at"
169
163
  t.datetime "updated_at"
170
164
  end
171
165
 
172
- add_index "coalescing_panda_users", ["canvas_user_id"], name: "index_coalescing_panda_users_on_canvas_user_id"
173
- add_index "coalescing_panda_users", ["coalescing_panda_lti_account_id"], name: "index_users_account"
166
+ add_index "coalescing_panda_users", ["coalescing_panda_lti_account_id", "canvas_user_id"], name: "index_users_account", unique: true
174
167
  add_index "coalescing_panda_users", ["sis_id"], name: "index_coalescing_panda_users_on_sis_id"
175
168
 
176
169
  create_table "delayed_jobs", force: true do |t|