introspective_admin 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +75 -0
  5. data/.ruby-version +1 -1
  6. data/.travis.yml +5 -14
  7. data/CHANGELOG.md +37 -28
  8. data/Gemfile +24 -6
  9. data/Gemfile.lock +402 -264
  10. data/README.md +34 -8
  11. data/Rakefile +3 -5
  12. data/introspective_admin.gemspec +29 -44
  13. data/lib/introspective_admin/base.rb +217 -200
  14. data/lib/introspective_admin/version.rb +5 -3
  15. data/lib/introspective_admin.rb +2 -0
  16. data/lib/tasks/introspective_admin_tasks.rake +2 -0
  17. data/spec/admin/company_admin_spec.rb +73 -72
  18. data/spec/admin/job_admin_spec.rb +63 -61
  19. data/spec/admin/location_admin_spec.rb +70 -66
  20. data/spec/admin/location_beacon_admin_spec.rb +75 -73
  21. data/spec/admin/project__admin_spec.rb +73 -71
  22. data/spec/admin/user_admin_spec.rb +65 -64
  23. data/spec/dummy/Gemfile +17 -0
  24. data/spec/dummy/README.rdoc +28 -28
  25. data/spec/dummy/Rakefile +8 -6
  26. data/spec/dummy/app/admin/admin_users.rb +29 -0
  27. data/spec/dummy/app/admin/company_admin.rb +5 -4
  28. data/spec/dummy/app/admin/dashboard.rb +34 -0
  29. data/spec/dummy/app/admin/job_admin.rb +5 -4
  30. data/spec/dummy/app/admin/location_admin.rb +5 -4
  31. data/spec/dummy/app/admin/location_beacon_admin.rb +8 -6
  32. data/spec/dummy/app/admin/project_admin.rb +5 -6
  33. data/spec/dummy/app/admin/role_admin.rb +5 -5
  34. data/spec/dummy/app/admin/user_admin.rb +13 -13
  35. data/spec/dummy/app/assets/config/manifest.js +3 -0
  36. data/spec/dummy/app/assets/javascripts/active_admin.js +1 -0
  37. data/spec/dummy/app/assets/javascripts/application.js +13 -13
  38. data/spec/dummy/app/assets/stylesheets/active_admin.scss +17 -0
  39. data/spec/dummy/app/assets/stylesheets/application.css +15 -15
  40. data/spec/dummy/app/controllers/application_controller.rb +10 -8
  41. data/spec/dummy/app/helpers/application_helper.rb +4 -3
  42. data/spec/dummy/app/models/abstract_adapter.rb +20 -12
  43. data/spec/dummy/app/models/admin_user.rb +12 -6
  44. data/spec/dummy/app/models/company.rb +13 -12
  45. data/spec/dummy/app/models/job.rb +10 -10
  46. data/spec/dummy/app/models/locatable.rb +8 -6
  47. data/spec/dummy/app/models/location.rb +27 -26
  48. data/spec/dummy/app/models/location_beacon.rb +19 -19
  49. data/spec/dummy/app/models/location_gps.rb +11 -11
  50. data/spec/dummy/app/models/project.rb +20 -20
  51. data/spec/dummy/app/models/project_job.rb +8 -7
  52. data/spec/dummy/app/models/role.rb +26 -25
  53. data/spec/dummy/app/models/team.rb +10 -9
  54. data/spec/dummy/app/models/team_user.rb +14 -13
  55. data/spec/dummy/app/models/user.rb +72 -68
  56. data/spec/dummy/app/models/user_location.rb +28 -28
  57. data/spec/dummy/app/models/user_project_job.rb +17 -16
  58. data/spec/dummy/app/views/layouts/application.html.erb +13 -13
  59. data/spec/dummy/bin/bundle +5 -3
  60. data/spec/dummy/bin/rails +6 -4
  61. data/spec/dummy/bin/rake +6 -4
  62. data/spec/dummy/bin/setup +31 -29
  63. data/spec/dummy/config/application.rb +35 -34
  64. data/spec/dummy/config/boot.rb +7 -5
  65. data/spec/dummy/config/database.yml +22 -22
  66. data/spec/dummy/config/environment.rb +12 -11
  67. data/spec/dummy/config/environments/development.rb +47 -45
  68. data/spec/dummy/config/environments/production.rb +83 -82
  69. data/spec/dummy/config/environments/test.rb +50 -50
  70. data/spec/dummy/config/initializers/active_admin.rb +8 -7
  71. data/spec/dummy/config/initializers/assets.rb +15 -13
  72. data/spec/dummy/config/initializers/backtrace_silencers.rb +9 -7
  73. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -3
  74. data/spec/dummy/config/initializers/devise.rb +265 -263
  75. data/spec/dummy/config/initializers/filter_parameter_logging.rb +6 -4
  76. data/spec/dummy/config/initializers/inflections.rb +18 -16
  77. data/spec/dummy/config/initializers/mime_types.rb +6 -4
  78. data/spec/dummy/config/initializers/session_store.rb +5 -3
  79. data/spec/dummy/config/initializers/wrap_parameters.rb +16 -14
  80. data/spec/dummy/config/initializers/zeitwerk.rb +10 -0
  81. data/spec/dummy/config/locales/devise.en.yml +60 -60
  82. data/spec/dummy/config/locales/en.yml +23 -23
  83. data/spec/dummy/config/routes.rb +12 -9
  84. data/spec/dummy/config/secrets.yml +20 -20
  85. data/spec/dummy/config.ru +6 -4
  86. data/spec/dummy/db/development.sqlite3 +0 -0
  87. data/spec/dummy/db/migrate/20141002205024_devise_create_users.rb +43 -42
  88. data/spec/dummy/db/migrate/20141002211055_devise_create_admin_users.rb +49 -48
  89. data/spec/dummy/db/migrate/20141002211057_create_active_admin_comments.rb +21 -19
  90. data/spec/dummy/db/migrate/20141002220722_add_lockable_to_users.rb +10 -8
  91. data/spec/dummy/db/migrate/20150406213646_create_companies.rb +13 -11
  92. data/spec/dummy/db/migrate/20150414213154_add_user_authentication_token.rb +13 -11
  93. data/spec/dummy/db/migrate/20150415222005_create_roles.rb +13 -12
  94. data/spec/dummy/db/migrate/20150505181635_create_chats.rb +11 -9
  95. data/spec/dummy/db/migrate/20150505181636_create_chat_users.rb +13 -11
  96. data/spec/dummy/db/migrate/20150505181640_create_chat_messages.rb +13 -11
  97. data/spec/dummy/db/migrate/20150507191529_create_chat_message_users.rb +13 -11
  98. data/spec/dummy/db/migrate/20150601200526_create_locations.rb +15 -13
  99. data/spec/dummy/db/migrate/20150601200533_create_locatables.rb +12 -10
  100. data/spec/dummy/db/migrate/20150601212924_create_location_beacons.rb +18 -16
  101. data/spec/dummy/db/migrate/20150601213542_create_location_gps.rb +14 -12
  102. data/spec/dummy/db/migrate/20150609201823_create_user_locations.rb +16 -14
  103. data/spec/dummy/db/migrate/20150617232519_create_projects.rb +12 -10
  104. data/spec/dummy/db/migrate/20150617232521_create_jobs.rb +11 -9
  105. data/spec/dummy/db/migrate/20150617232522_create_project_jobs.rb +13 -11
  106. data/spec/dummy/db/migrate/20150623170133_create_user_project_jobs.rb +14 -12
  107. data/spec/dummy/db/migrate/20150701234929_create_teams.rb +13 -11
  108. data/spec/dummy/db/migrate/20150701234930_create_team_users.rb +13 -11
  109. data/spec/dummy/db/migrate/20150727214950_add_confirmable_to_devise.rb +13 -11
  110. data/spec/dummy/db/migrate/20150820190524_add_user_names.rb +8 -6
  111. data/spec/dummy/db/migrate/20150909225019_add_password_to_project.rb +7 -5
  112. data/spec/dummy/db/migrate/20220806003731_add_devise_to_admin_users.rb +50 -0
  113. data/spec/dummy/db/schema.rb +263 -264
  114. data/spec/dummy/public/404.html +67 -67
  115. data/spec/dummy/public/422.html +67 -67
  116. data/spec/dummy/public/500.html +66 -66
  117. data/spec/rails_helper.rb +33 -27
  118. data/spec/support/blueprints.rb +50 -49
  119. data/spec/support/location_helper.rb +28 -29
  120. metadata +21 -252
  121. data/Gemfile.lock.rails4 +0 -256
@@ -1,264 +1,263 @@
1
- # encoding: UTF-8
2
- # This file is auto-generated from the current state of the database. Instead
3
- # of editing this file, please use the migrations feature of Active Record to
4
- # incrementally modify your database, and then regenerate this schema definition.
5
- #
6
- # Note that this schema.rb definition is the authoritative source for your
7
- # database schema. If you need to create the application database on another
8
- # system, you should be using db:schema:load, not running all the migrations
9
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
- # you'll amass, the slower it'll run and the greater likelihood for issues).
11
- #
12
- # It's strongly recommended that you check this file into your version control system.
13
-
14
- ActiveRecord::Schema.define(version: 20150909225019) do
15
-
16
- create_table "active_admin_comments", force: :cascade do |t|
17
- t.string "namespace"
18
- t.text "body"
19
- t.string "resource_id", null: false
20
- t.string "resource_type", null: false
21
- t.integer "author_id"
22
- t.string "author_type"
23
- t.datetime "created_at", null: false
24
- t.datetime "updated_at", null: false
25
- end
26
-
27
- add_index "active_admin_comments", ["author_type", "author_id"], name: "index_active_admin_comments_on_author_type_and_author_id"
28
- add_index "active_admin_comments", ["namespace"], name: "index_active_admin_comments_on_namespace"
29
- add_index "active_admin_comments", ["resource_type", "resource_id"], name: "index_active_admin_comments_on_resource_type_and_resource_id"
30
-
31
- create_table "admin_users", force: :cascade do |t|
32
- t.string "email", default: "", null: false
33
- t.string "encrypted_password", default: "", null: false
34
- t.string "reset_password_token"
35
- t.datetime "reset_password_sent_at"
36
- t.datetime "remember_created_at"
37
- t.integer "sign_in_count", default: 0, null: false
38
- t.datetime "current_sign_in_at"
39
- t.datetime "last_sign_in_at"
40
- t.string "current_sign_in_ip"
41
- t.string "last_sign_in_ip"
42
- t.datetime "created_at", null: false
43
- t.datetime "updated_at", null: false
44
- end
45
-
46
- add_index "admin_users", ["email"], name: "index_admin_users_on_email", unique: true
47
- add_index "admin_users", ["reset_password_token"], name: "index_admin_users_on_reset_password_token", unique: true
48
-
49
- create_table "chat_message_users", force: :cascade do |t|
50
- t.integer "chat_message_id"
51
- t.integer "user_id"
52
- t.datetime "read_at"
53
- t.datetime "created_at", null: false
54
- t.datetime "updated_at", null: false
55
- end
56
-
57
- add_index "chat_message_users", ["chat_message_id"], name: "index_chat_message_users_on_chat_message_id"
58
- add_index "chat_message_users", ["user_id"], name: "index_chat_message_users_on_user_id"
59
-
60
- create_table "chat_messages", force: :cascade do |t|
61
- t.integer "chat_id"
62
- t.integer "author_id"
63
- t.text "message"
64
- t.datetime "created_at", null: false
65
- t.datetime "updated_at", null: false
66
- end
67
-
68
- add_index "chat_messages", ["author_id"], name: "index_chat_messages_on_author_id"
69
- add_index "chat_messages", ["chat_id"], name: "index_chat_messages_on_chat_id"
70
-
71
- create_table "chat_users", force: :cascade do |t|
72
- t.integer "chat_id"
73
- t.integer "user_id"
74
- t.datetime "departed_at"
75
- t.datetime "created_at", null: false
76
- t.datetime "updated_at", null: false
77
- end
78
-
79
- add_index "chat_users", ["chat_id"], name: "index_chat_users_on_chat_id"
80
- add_index "chat_users", ["user_id"], name: "index_chat_users_on_user_id"
81
-
82
- create_table "chats", force: :cascade do |t|
83
- t.integer "creator_id"
84
- t.datetime "created_at", null: false
85
- t.datetime "updated_at", null: false
86
- end
87
-
88
- create_table "companies", force: :cascade do |t|
89
- t.string "name", limit: 256, null: false
90
- t.string "short_name", limit: 10, null: false
91
- t.datetime "created_at", null: false
92
- t.datetime "updated_at", null: false
93
- end
94
-
95
- add_index "companies", ["name"], name: "index_companies_on_name", unique: true
96
-
97
- create_table "jobs", force: :cascade do |t|
98
- t.string "title", null: false
99
- t.datetime "created_at", null: false
100
- t.datetime "updated_at", null: false
101
- end
102
-
103
- create_table "locatables", force: :cascade do |t|
104
- t.integer "location_id"
105
- t.integer "locatable_id"
106
- t.string "locatable_type"
107
- t.datetime "created_at", null: false
108
- t.datetime "updated_at", null: false
109
- end
110
-
111
- add_index "locatables", ["locatable_type", "locatable_id"], name: "index_locatables_on_locatable_type_and_locatable_id"
112
-
113
- create_table "location_beacons", force: :cascade do |t|
114
- t.integer "location_id"
115
- t.integer "company_id", null: false
116
- t.string "mac_address", limit: 12
117
- t.string "uuid", limit: 32, null: false
118
- t.integer "major", null: false
119
- t.integer "minor", null: false
120
- t.integer "last_known_battery_level"
121
- t.datetime "created_at", null: false
122
- t.datetime "updated_at", null: false
123
- end
124
-
125
- add_index "location_beacons", ["company_id", "uuid", "major", "minor"], name: "index_location_beacons_unique_company_identifier", unique: true
126
-
127
- create_table "location_gps", force: :cascade do |t|
128
- t.integer "location_id"
129
- t.float "lat", null: false
130
- t.float "lng", null: false
131
- t.float "alt", default: 0.0
132
- t.datetime "created_at", null: false
133
- t.datetime "updated_at", null: false
134
- end
135
-
136
- add_index "location_gps", ["location_id"], name: "index_location_gps_on_location_id"
137
-
138
- create_table "locations", force: :cascade do |t|
139
- t.string "name", null: false
140
- t.string "kind"
141
- t.integer "parent_location_id"
142
- t.integer "unreflected_id"
143
- t.datetime "created_at", null: false
144
- t.datetime "updated_at", null: false
145
- end
146
-
147
- add_index "locations", ["parent_location_id", "kind", "name"], name: "index_locations_on_parent_location_id_and_kind_and_name", unique: true
148
- add_index "locations", ["parent_location_id"], name: "index_locations_on_parent_location_id"
149
- add_index "locations", ["unreflected_id"], name: "index_locations_on_unreflected_id"
150
-
151
- create_table "project_jobs", force: :cascade do |t|
152
- t.integer "project_id", null: false
153
- t.integer "job_id", null: false
154
- t.datetime "created_at", null: false
155
- t.datetime "updated_at", null: false
156
- end
157
-
158
- add_index "project_jobs", ["job_id"], name: "index_project_jobs_on_job_id"
159
- add_index "project_jobs", ["project_id", "job_id"], name: "index_project_jobs_on_project_id_and_job_id", unique: true
160
- add_index "project_jobs", ["project_id"], name: "index_project_jobs_on_project_id"
161
-
162
- create_table "projects", force: :cascade do |t|
163
- t.string "name", null: false
164
- t.integer "owner_id"
165
- t.datetime "created_at", null: false
166
- t.datetime "updated_at", null: false
167
- t.string "default_password"
168
- end
169
-
170
- add_index "projects", ["owner_id"], name: "index_projects_on_owner_id"
171
-
172
- create_table "roles", force: :cascade do |t|
173
- t.integer "user_id", null: false
174
- t.integer "ownable_id"
175
- t.string "ownable_type"
176
- t.datetime "created_at", null: false
177
- t.datetime "updated_at", null: false
178
- end
179
-
180
- add_index "roles", ["ownable_type", "ownable_id"], name: "index_roles_on_ownable_type_and_ownable_id"
181
- add_index "roles", ["user_id", "ownable_type", "ownable_id"], name: "index_roles_on_user_id_and_ownable_type_and_ownable_id", unique: true
182
-
183
- create_table "team_users", force: :cascade do |t|
184
- t.integer "user_id"
185
- t.integer "team_id"
186
- t.datetime "created_at", null: false
187
- t.datetime "updated_at", null: false
188
- end
189
-
190
- add_index "team_users", ["team_id"], name: "index_team_users_on_team_id"
191
- add_index "team_users", ["user_id", "team_id"], name: "index_team_users_on_user_id_and_team_id", unique: true
192
- add_index "team_users", ["user_id"], name: "index_team_users_on_user_id"
193
-
194
- create_table "teams", force: :cascade do |t|
195
- t.string "name"
196
- t.integer "project_id"
197
- t.integer "creator_id"
198
- t.datetime "created_at", null: false
199
- t.datetime "updated_at", null: false
200
- end
201
-
202
- add_index "teams", ["creator_id"], name: "index_teams_on_creator_id"
203
- add_index "teams", ["project_id"], name: "index_teams_on_project_id"
204
-
205
- create_table "user_locations", force: :cascade do |t|
206
- t.integer "user_id"
207
- t.integer "location_id"
208
- t.integer "detectable_id"
209
- t.string "detectable_type"
210
- t.float "lat"
211
- t.float "lng"
212
- t.float "alt"
213
- t.datetime "created_at", null: false
214
- t.datetime "updated_at", null: false
215
- end
216
-
217
- add_index "user_locations", ["detectable_type", "detectable_id"], name: "index_user_locations_on_detectable_type_and_detectable_id"
218
- add_index "user_locations", ["location_id"], name: "index_user_locations_on_location_id"
219
- add_index "user_locations", ["user_id"], name: "index_user_locations_on_user_id"
220
-
221
- create_table "user_project_jobs", force: :cascade do |t|
222
- t.integer "user_id", null: false
223
- t.integer "project_id", null: false
224
- t.integer "job_id", null: false
225
- t.datetime "created_at", null: false
226
- t.datetime "updated_at", null: false
227
- end
228
-
229
- add_index "user_project_jobs", ["job_id"], name: "index_user_project_jobs_on_job_id"
230
- add_index "user_project_jobs", ["project_id"], name: "index_user_project_jobs_on_project_id"
231
- add_index "user_project_jobs", ["user_id", "project_id", "job_id"], name: "index_user_project_jobs_on_user_id_and_project_id_and_job_id", unique: true
232
- add_index "user_project_jobs", ["user_id"], name: "index_user_project_jobs_on_user_id"
233
-
234
- create_table "users", force: :cascade do |t|
235
- t.string "email", default: "", null: false
236
- t.string "encrypted_password", default: "", null: false
237
- t.string "reset_password_token"
238
- t.datetime "reset_password_sent_at"
239
- t.datetime "remember_created_at"
240
- t.integer "sign_in_count", default: 0, null: false
241
- t.datetime "current_sign_in_at"
242
- t.datetime "last_sign_in_at"
243
- t.string "current_sign_in_ip"
244
- t.string "last_sign_in_ip"
245
- t.datetime "created_at", null: false
246
- t.datetime "updated_at", null: false
247
- t.integer "failed_attempts", default: 0, null: false
248
- t.string "unlock_token"
249
- t.datetime "locked_at"
250
- t.string "authentication_token"
251
- t.string "confirmation_token"
252
- t.datetime "confirmed_at"
253
- t.datetime "confirmation_sent_at"
254
- t.string "unconfirmed_email"
255
- t.string "first_name"
256
- t.string "last_name"
257
- end
258
-
259
- add_index "users", ["authentication_token"], name: "index_users_on_authentication_token", unique: true
260
- add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
261
- add_index "users", ["email"], name: "index_users_on_email", unique: true
262
- add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
263
-
264
- end
1
+ # frozen_string_literal: true
2
+
3
+ # This file is auto-generated from the current state of the database. Instead
4
+ # of editing this file, please use the migrations feature of Active Record to
5
+ # incrementally modify your database, and then regenerate this schema definition.
6
+ #
7
+ # Note that this schema.rb definition is the authoritative source for your
8
+ # database schema. If you need to create the application database on another
9
+ # system, you should be using db:schema:load, not running all the migrations
10
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
11
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
12
+ #
13
+ # It's strongly recommended that you check this file into your version control system.
14
+
15
+ ActiveRecord::Schema.define(version: 20_150_909_225_019) do
16
+ create_table 'active_admin_comments', force: :cascade do |t|
17
+ t.string 'namespace'
18
+ t.text 'body'
19
+ t.string 'resource_id', null: false
20
+ t.string 'resource_type', null: false
21
+ t.integer 'author_id'
22
+ t.string 'author_type'
23
+ t.datetime 'created_at', null: false
24
+ t.datetime 'updated_at', null: false
25
+ end
26
+
27
+ add_index 'active_admin_comments', %w[author_type author_id], name: 'index_active_admin_comments_on_author_type_and_author_id'
28
+ add_index 'active_admin_comments', ['namespace'], name: 'index_active_admin_comments_on_namespace'
29
+ add_index 'active_admin_comments', %w[resource_type resource_id], name: 'index_active_admin_comments_on_resource_type_and_resource_id'
30
+
31
+ create_table 'admin_users', force: :cascade do |t|
32
+ t.string 'email', default: '', null: false
33
+ t.string 'encrypted_password', default: '', null: false
34
+ t.string 'reset_password_token'
35
+ t.datetime 'reset_password_sent_at'
36
+ t.datetime 'remember_created_at'
37
+ t.integer 'sign_in_count', default: 0, null: false
38
+ t.datetime 'current_sign_in_at'
39
+ t.datetime 'last_sign_in_at'
40
+ t.string 'current_sign_in_ip'
41
+ t.string 'last_sign_in_ip'
42
+ t.datetime 'created_at', null: false
43
+ t.datetime 'updated_at', null: false
44
+ end
45
+
46
+ add_index 'admin_users', ['email'], name: 'index_admin_users_on_email', unique: true
47
+ add_index 'admin_users', ['reset_password_token'], name: 'index_admin_users_on_reset_password_token', unique: true
48
+
49
+ create_table 'chat_message_users', force: :cascade do |t|
50
+ t.integer 'chat_message_id'
51
+ t.integer 'user_id'
52
+ t.datetime 'read_at'
53
+ t.datetime 'created_at', null: false
54
+ t.datetime 'updated_at', null: false
55
+ end
56
+
57
+ add_index 'chat_message_users', ['chat_message_id'], name: 'index_chat_message_users_on_chat_message_id'
58
+ add_index 'chat_message_users', ['user_id'], name: 'index_chat_message_users_on_user_id'
59
+
60
+ create_table 'chat_messages', force: :cascade do |t|
61
+ t.integer 'chat_id'
62
+ t.integer 'author_id'
63
+ t.text 'message'
64
+ t.datetime 'created_at', null: false
65
+ t.datetime 'updated_at', null: false
66
+ end
67
+
68
+ add_index 'chat_messages', ['author_id'], name: 'index_chat_messages_on_author_id'
69
+ add_index 'chat_messages', ['chat_id'], name: 'index_chat_messages_on_chat_id'
70
+
71
+ create_table 'chat_users', force: :cascade do |t|
72
+ t.integer 'chat_id'
73
+ t.integer 'user_id'
74
+ t.datetime 'departed_at'
75
+ t.datetime 'created_at', null: false
76
+ t.datetime 'updated_at', null: false
77
+ end
78
+
79
+ add_index 'chat_users', ['chat_id'], name: 'index_chat_users_on_chat_id'
80
+ add_index 'chat_users', ['user_id'], name: 'index_chat_users_on_user_id'
81
+
82
+ create_table 'chats', force: :cascade do |t|
83
+ t.integer 'creator_id'
84
+ t.datetime 'created_at', null: false
85
+ t.datetime 'updated_at', null: false
86
+ end
87
+
88
+ create_table 'companies', force: :cascade do |t|
89
+ t.string 'name', limit: 256, null: false
90
+ t.string 'short_name', limit: 10, null: false
91
+ t.datetime 'created_at', null: false
92
+ t.datetime 'updated_at', null: false
93
+ end
94
+
95
+ add_index 'companies', ['name'], name: 'index_companies_on_name', unique: true
96
+
97
+ create_table 'jobs', force: :cascade do |t|
98
+ t.string 'title', null: false
99
+ t.datetime 'created_at', null: false
100
+ t.datetime 'updated_at', null: false
101
+ end
102
+
103
+ create_table 'locatables', force: :cascade do |t|
104
+ t.integer 'location_id'
105
+ t.integer 'locatable_id'
106
+ t.string 'locatable_type'
107
+ t.datetime 'created_at', null: false
108
+ t.datetime 'updated_at', null: false
109
+ end
110
+
111
+ add_index 'locatables', %w[locatable_type locatable_id], name: 'index_locatables_on_locatable_type_and_locatable_id'
112
+
113
+ create_table 'location_beacons', force: :cascade do |t|
114
+ t.integer 'location_id'
115
+ t.integer 'company_id', null: false
116
+ t.string 'mac_address', limit: 12
117
+ t.string 'uuid', limit: 32, null: false
118
+ t.integer 'major', null: false
119
+ t.integer 'minor', null: false
120
+ t.integer 'last_known_battery_level'
121
+ t.datetime 'created_at', null: false
122
+ t.datetime 'updated_at', null: false
123
+ end
124
+
125
+ add_index 'location_beacons', %w[company_id uuid major minor], name: 'index_location_beacons_unique_company_identifier', unique: true
126
+
127
+ create_table 'location_gps', force: :cascade do |t|
128
+ t.integer 'location_id'
129
+ t.float 'lat', null: false
130
+ t.float 'lng', null: false
131
+ t.float 'alt', default: 0.0
132
+ t.datetime 'created_at', null: false
133
+ t.datetime 'updated_at', null: false
134
+ end
135
+
136
+ add_index 'location_gps', ['location_id'], name: 'index_location_gps_on_location_id'
137
+
138
+ create_table 'locations', force: :cascade do |t|
139
+ t.string 'name', null: false
140
+ t.string 'kind'
141
+ t.integer 'parent_location_id'
142
+ t.integer 'unreflected_id'
143
+ t.datetime 'created_at', null: false
144
+ t.datetime 'updated_at', null: false
145
+ end
146
+
147
+ add_index 'locations', %w[parent_location_id kind name], name: 'index_locations_on_parent_location_id_and_kind_and_name', unique: true
148
+ add_index 'locations', ['parent_location_id'], name: 'index_locations_on_parent_location_id'
149
+ add_index 'locations', ['unreflected_id'], name: 'index_locations_on_unreflected_id'
150
+
151
+ create_table 'project_jobs', force: :cascade do |t|
152
+ t.integer 'project_id', null: false
153
+ t.integer 'job_id', null: false
154
+ t.datetime 'created_at', null: false
155
+ t.datetime 'updated_at', null: false
156
+ end
157
+
158
+ add_index 'project_jobs', ['job_id'], name: 'index_project_jobs_on_job_id'
159
+ add_index 'project_jobs', %w[project_id job_id], name: 'index_project_jobs_on_project_id_and_job_id', unique: true
160
+ add_index 'project_jobs', ['project_id'], name: 'index_project_jobs_on_project_id'
161
+
162
+ create_table 'projects', force: :cascade do |t|
163
+ t.string 'name', null: false
164
+ t.integer 'owner_id'
165
+ t.datetime 'created_at', null: false
166
+ t.datetime 'updated_at', null: false
167
+ t.string 'default_password'
168
+ end
169
+
170
+ add_index 'projects', ['owner_id'], name: 'index_projects_on_owner_id'
171
+
172
+ create_table 'roles', force: :cascade do |t|
173
+ t.integer 'user_id', null: false
174
+ t.integer 'ownable_id'
175
+ t.string 'ownable_type'
176
+ t.datetime 'created_at', null: false
177
+ t.datetime 'updated_at', null: false
178
+ end
179
+
180
+ add_index 'roles', %w[ownable_type ownable_id], name: 'index_roles_on_ownable_type_and_ownable_id'
181
+ add_index 'roles', %w[user_id ownable_type ownable_id], name: 'index_roles_on_user_id_and_ownable_type_and_ownable_id', unique: true
182
+
183
+ create_table 'team_users', force: :cascade do |t|
184
+ t.integer 'user_id'
185
+ t.integer 'team_id'
186
+ t.datetime 'created_at', null: false
187
+ t.datetime 'updated_at', null: false
188
+ end
189
+
190
+ add_index 'team_users', ['team_id'], name: 'index_team_users_on_team_id'
191
+ add_index 'team_users', %w[user_id team_id], name: 'index_team_users_on_user_id_and_team_id', unique: true
192
+ add_index 'team_users', ['user_id'], name: 'index_team_users_on_user_id'
193
+
194
+ create_table 'teams', force: :cascade do |t|
195
+ t.string 'name'
196
+ t.integer 'project_id'
197
+ t.integer 'creator_id'
198
+ t.datetime 'created_at', null: false
199
+ t.datetime 'updated_at', null: false
200
+ end
201
+
202
+ add_index 'teams', ['creator_id'], name: 'index_teams_on_creator_id'
203
+ add_index 'teams', ['project_id'], name: 'index_teams_on_project_id'
204
+
205
+ create_table 'user_locations', force: :cascade do |t|
206
+ t.integer 'user_id'
207
+ t.integer 'location_id'
208
+ t.integer 'detectable_id'
209
+ t.string 'detectable_type'
210
+ t.float 'lat'
211
+ t.float 'lng'
212
+ t.float 'alt'
213
+ t.datetime 'created_at', null: false
214
+ t.datetime 'updated_at', null: false
215
+ end
216
+
217
+ add_index 'user_locations', %w[detectable_type detectable_id], name: 'index_user_locations_on_detectable_type_and_detectable_id'
218
+ add_index 'user_locations', ['location_id'], name: 'index_user_locations_on_location_id'
219
+ add_index 'user_locations', ['user_id'], name: 'index_user_locations_on_user_id'
220
+
221
+ create_table 'user_project_jobs', force: :cascade do |t|
222
+ t.integer 'user_id', null: false
223
+ t.integer 'project_id', null: false
224
+ t.integer 'job_id', null: false
225
+ t.datetime 'created_at', null: false
226
+ t.datetime 'updated_at', null: false
227
+ end
228
+
229
+ add_index 'user_project_jobs', ['job_id'], name: 'index_user_project_jobs_on_job_id'
230
+ add_index 'user_project_jobs', ['project_id'], name: 'index_user_project_jobs_on_project_id'
231
+ add_index 'user_project_jobs', %w[user_id project_id job_id], name: 'index_user_project_jobs_on_user_id_and_project_id_and_job_id', unique: true
232
+ add_index 'user_project_jobs', ['user_id'], name: 'index_user_project_jobs_on_user_id'
233
+
234
+ create_table 'users', force: :cascade do |t|
235
+ t.string 'email', default: '', null: false
236
+ t.string 'encrypted_password', default: '', null: false
237
+ t.string 'reset_password_token'
238
+ t.datetime 'reset_password_sent_at'
239
+ t.datetime 'remember_created_at'
240
+ t.integer 'sign_in_count', default: 0, null: false
241
+ t.datetime 'current_sign_in_at'
242
+ t.datetime 'last_sign_in_at'
243
+ t.string 'current_sign_in_ip'
244
+ t.string 'last_sign_in_ip'
245
+ t.datetime 'created_at', null: false
246
+ t.datetime 'updated_at', null: false
247
+ t.integer 'failed_attempts', default: 0, null: false
248
+ t.string 'unlock_token'
249
+ t.datetime 'locked_at'
250
+ t.string 'authentication_token'
251
+ t.string 'confirmation_token'
252
+ t.datetime 'confirmed_at'
253
+ t.datetime 'confirmation_sent_at'
254
+ t.string 'unconfirmed_email'
255
+ t.string 'first_name'
256
+ t.string 'last_name'
257
+ end
258
+
259
+ add_index 'users', ['authentication_token'], name: 'index_users_on_authentication_token', unique: true
260
+ add_index 'users', ['confirmation_token'], name: 'index_users_on_confirmation_token', unique: true
261
+ add_index 'users', ['email'], name: 'index_users_on_email', unique: true
262
+ add_index 'users', ['reset_password_token'], name: 'index_users_on_reset_password_token', unique: true
263
+ end