houston-core 0.8.4 → 0.9.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +72 -78
  4. data/app/assets/javascripts/houston/app/models/role.coffee +4 -0
  5. data/app/assets/javascripts/houston/app/views/nested_resources.coffee +44 -0
  6. data/app/assets/javascripts/houston/app/views/team_roles_view.coffee +10 -0
  7. data/app/assets/javascripts/houston/application.js +3 -1
  8. data/app/assets/javascripts/houston/core/ajax_helpers.coffee +26 -0
  9. data/app/assets/javascripts/houston/core/app.coffee +0 -45
  10. data/app/assets/javascripts/houston/core/errors.coffee +1 -12
  11. data/app/assets/javascripts/houston/core/handlebars_helpers.coffee +8 -70
  12. data/app/assets/javascripts/houston/core/jquery_extensions.coffee +0 -138
  13. data/app/assets/javascripts/houston/core/timeline_helpers.coffee +44 -0
  14. data/app/assets/javascripts/houston/core/uploader_helpers.coffee +99 -0
  15. data/app/assets/javascripts/houston/vendor.js +26 -9
  16. data/app/assets/stylesheets/houston/application/actions.scss +22 -0
  17. data/app/assets/stylesheets/houston/application/navigation.scss +2 -2
  18. data/app/assets/stylesheets/houston/application/{freight_train.css.scss → nested_resources.scss} +1 -0
  19. data/app/assets/stylesheets/houston/core/alerts.scss +0 -4
  20. data/app/assets/stylesheets/houston/core/timeline.scss +204 -0
  21. data/app/assets/templates/houston/teams/roles/index.hbs +1 -0
  22. data/app/assets/templates/houston/teams/roles/show.hbs +19 -0
  23. data/app/channels/events_channel.rb +1 -1
  24. data/app/concerns/houston/props.rb +3 -2
  25. data/app/controllers/actions_controller.rb +8 -3
  26. data/app/controllers/application_controller.rb +9 -12
  27. data/app/controllers/authorizations_controller.rb +41 -14
  28. data/app/controllers/errors_controller.rb +3 -3
  29. data/app/controllers/project_follows_controller.rb +23 -0
  30. data/app/controllers/project_options_controller.rb +1 -1
  31. data/app/controllers/user_options_controller.rb +1 -1
  32. data/app/helpers/actions_helper.rb +12 -0
  33. data/app/helpers/application_helper.rb +0 -10
  34. data/app/helpers/layout_helper.rb +20 -0
  35. data/app/helpers/markdown_helper.rb +2 -10
  36. data/app/helpers/navigation_helper.rb +5 -5
  37. data/app/helpers/project_helper.rb +6 -0
  38. data/app/helpers/url_helper.rb +4 -4
  39. data/app/helpers/view_extensions_helper.rb +20 -0
  40. data/app/models/action.rb +61 -44
  41. data/app/models/authorization.rb +55 -10
  42. data/app/models/follow.rb +6 -0
  43. data/app/models/persistent_trigger.rb +11 -1
  44. data/app/models/project.rb +5 -27
  45. data/app/models/user.rb +15 -59
  46. data/app/presenters/project_presenter.rb +2 -2
  47. data/app/views/actions/_actions.html.erb +8 -5
  48. data/app/views/actions/index.html.erb +1 -1
  49. data/app/views/actions/running.html.erb +9 -15
  50. data/app/views/actions/show.html.erb +6 -3
  51. data/app/views/actions/unqueued.html.erb +41 -0
  52. data/app/views/authorizations/_form.html.erb +28 -16
  53. data/app/views/authorizations/index.html.erb +9 -4
  54. data/app/views/{oauth/providers/edit.html.erb → authorizations/oauth2_callback.html.erb} +3 -2
  55. data/app/views/devise/sessions/new.html.erb +0 -8
  56. data/app/views/errors/index.html.erb +9 -5
  57. data/app/views/layouts/_navigation.html.erb +9 -0
  58. data/app/views/layouts/application.html.erb +11 -6
  59. data/app/views/layouts/dashboard.html.erb +9 -0
  60. data/app/views/projects/_form.html.erb +7 -18
  61. data/app/views/projects/_header.html.erb +2 -6
  62. data/app/views/projects/index.html.erb +4 -4
  63. data/app/views/teams/_form.html.erb +7 -17
  64. data/app/views/teams/index.html.erb +1 -1
  65. data/app/views/users/_form.html.erb +1 -38
  66. data/config/application.rb +8 -5
  67. data/config/initializers/devise.rb +0 -14
  68. data/config/initializers/secret_token.rb +8 -13
  69. data/config/routes.rb +12 -28
  70. data/db/migrate/20130706141443_drop_deprecated_project_roles.rb +5 -1
  71. data/db/migrate/20170118005958_remove_antecedents_from_versions_of_tickets.rb +1 -1
  72. data/db/migrate/20170130011016_drop_users_environments_subscribed_to.rb +9 -0
  73. data/db/migrate/20170205004452_drop_settings.rb +12 -0
  74. data/db/migrate/20170206002030_drop_extension_hstore.rb +9 -0
  75. data/db/migrate/20170206002732_drop_legacy_columns_from_users.rb +10 -0
  76. data/db/migrate/20170209022159_rename_projects_color_to_color_name.rb +5 -0
  77. data/db/migrate/20170213001453_change_providers_from_models_to_extensions.rb +27 -0
  78. data/db/migrate/20170215012012_add_props_to_authorizations.rb +5 -0
  79. data/db/migrate/20170216041034_add_user_to_persistent_triggers.rb +5 -0
  80. data/db/migrate/20170226201504_create_follows.rb +20 -0
  81. data/db/migrate/20170301014051_drop_name_from_authorizations.rb +9 -0
  82. data/db/migrate/20170307032041_add_created_at_to_actions.rb +11 -0
  83. data/db/migrate/20170307035755_allow_actions_started_at_to_be_null.rb +5 -0
  84. data/db/migrate/20170310024505_replace_authorizations_provider_name_with_type.rb +12 -0
  85. data/db/migrate/20170329030329_drop_consumer_tokens.rb +9 -0
  86. data/db/structure.sql +187 -212
  87. data/houston-core.gemspec +10 -13
  88. data/lib/houston/boot.rb +1 -4
  89. data/lib/houston/boot/actions.rb +24 -21
  90. data/lib/houston/boot/configuration.rb +46 -113
  91. data/lib/houston/boot/extensions.rb +54 -341
  92. data/lib/houston/boot/extensions/deprecated.rb +194 -0
  93. data/lib/houston/boot/extensions/dsl.rb +99 -0
  94. data/lib/houston/boot/extensions/events.rb +81 -0
  95. data/lib/houston/boot/extensions/features.rb +42 -0
  96. data/lib/houston/boot/extensions/layout.rb +70 -0
  97. data/lib/houston/boot/extensions/navigation.rb +42 -0
  98. data/lib/houston/boot/extensions/oauth.rb +62 -0
  99. data/lib/houston/boot/extensions/serializers.rb +29 -0
  100. data/lib/houston/boot/extensions/view.rb +34 -0
  101. data/lib/houston/boot/observer.rb +10 -5
  102. data/{app/models/oauth → lib/houston/boot}/provider.rb +7 -5
  103. data/lib/houston/boot/running_as.rb +0 -5
  104. data/lib/houston/boot/serializer.rb +12 -6
  105. data/lib/houston/boot/{active_record_serializer.rb → serializers/active_record_serializer.rb} +0 -2
  106. data/lib/houston/boot/{readonly_hash_serializer.rb → serializers/readonly_hash_serializer.rb} +0 -2
  107. data/lib/houston/boot/timer.rb +10 -0
  108. data/lib/houston/boot/triggers.rb +27 -8
  109. data/lib/houston/version.rb +1 -1
  110. data/templates/new-instance/.gitignore +0 -4
  111. data/templates/new-instance/config/main.rb +8 -10
  112. data/templates/new-module/test/dummy/houston.rb +1 -0
  113. data/test/acceptance/layout_test.rb +58 -0
  114. data/test/acceptance/updating_props_test.rb +72 -0
  115. data/test/support/config.rb +1 -0
  116. data/test/unit/extensions/events_extension_test.rb +33 -0
  117. data/test/unit/extensions/layout_extension_test.rb +74 -0
  118. data/test/unit/extensions/navigation_extension_test.rb +62 -0
  119. data/test/unit/extensions/oauth_extension_test.rb +91 -0
  120. data/test/unit/extensions/project_features_extension_test.rb +79 -0
  121. data/test/unit/extensions/serializers_extension_test.rb +47 -0
  122. data/test/unit/extensions/view_extension_test.rb +98 -0
  123. data/test/unit/models/actions_test.rb +11 -5
  124. data/test/unit/models/configuration_test.rb +0 -8
  125. data/test/unit/models/observer_test.rb +16 -0
  126. data/test/unit/models/persistent_trigger_test.rb +29 -2
  127. data/test/unit/models/serializer_test.rb +6 -0
  128. data/test/unit/models/timer_test.rb +88 -0
  129. metadata +87 -168
  130. data/app/assets/font/octicons.eot +0 -0
  131. data/app/assets/font/octicons.svg +0 -198
  132. data/app/assets/font/octicons.ttf +0 -0
  133. data/app/assets/font/octicons.woff +0 -0
  134. data/app/assets/font/roboto-black-webfont.eot +0 -0
  135. data/app/assets/font/roboto-black-webfont.svg +0 -675
  136. data/app/assets/font/roboto-black-webfont.ttf +0 -0
  137. data/app/assets/font/roboto-black-webfont.woff +0 -0
  138. data/app/assets/font/roboto-blackitalic-webfont.eot +0 -0
  139. data/app/assets/font/roboto-blackitalic-webfont.svg +0 -677
  140. data/app/assets/font/roboto-blackitalic-webfont.ttf +0 -0
  141. data/app/assets/font/roboto-blackitalic-webfont.woff +0 -0
  142. data/app/assets/font/roboto-bold-webfont.eot +0 -0
  143. data/app/assets/font/roboto-bold-webfont.svg +0 -675
  144. data/app/assets/font/roboto-bold-webfont.ttf +0 -0
  145. data/app/assets/font/roboto-bold-webfont.woff +0 -0
  146. data/app/assets/font/roboto-bolditalic-webfont.eot +0 -0
  147. data/app/assets/font/roboto-bolditalic-webfont.svg +0 -677
  148. data/app/assets/font/roboto-bolditalic-webfont.ttf +0 -0
  149. data/app/assets/font/roboto-bolditalic-webfont.woff +0 -0
  150. data/app/assets/font/roboto-italic-webfont.eot +0 -0
  151. data/app/assets/font/roboto-italic-webfont.svg +0 -668
  152. data/app/assets/font/roboto-italic-webfont.ttf +0 -0
  153. data/app/assets/font/roboto-italic-webfont.woff +0 -0
  154. data/app/assets/font/roboto-light-webfont.eot +0 -0
  155. data/app/assets/font/roboto-light-webfont.svg +0 -666
  156. data/app/assets/font/roboto-light-webfont.ttf +0 -0
  157. data/app/assets/font/roboto-light-webfont.woff +0 -0
  158. data/app/assets/font/roboto-lightitalic-webfont.eot +0 -0
  159. data/app/assets/font/roboto-lightitalic-webfont.svg +0 -668
  160. data/app/assets/font/roboto-lightitalic-webfont.ttf +0 -0
  161. data/app/assets/font/roboto-lightitalic-webfont.woff +0 -0
  162. data/app/assets/font/roboto-medium-webfont.eot +0 -0
  163. data/app/assets/font/roboto-medium-webfont.svg +0 -675
  164. data/app/assets/font/roboto-medium-webfont.ttf +0 -0
  165. data/app/assets/font/roboto-medium-webfont.woff +0 -0
  166. data/app/assets/font/roboto-mediumitalic-webfont.eot +0 -0
  167. data/app/assets/font/roboto-mediumitalic-webfont.svg +0 -677
  168. data/app/assets/font/roboto-mediumitalic-webfont.ttf +0 -0
  169. data/app/assets/font/roboto-mediumitalic-webfont.woff +0 -0
  170. data/app/assets/font/roboto-regular-webfont.eot +0 -0
  171. data/app/assets/font/roboto-regular-webfont.svg +0 -666
  172. data/app/assets/font/roboto-regular-webfont.ttf +0 -0
  173. data/app/assets/font/roboto-regular-webfont.woff +0 -0
  174. data/app/assets/font/roboto-thin-webfont.eot +0 -0
  175. data/app/assets/font/roboto-thin-webfont.svg +0 -666
  176. data/app/assets/font/roboto-thin-webfont.ttf +0 -0
  177. data/app/assets/font/roboto-thin-webfont.woff +0 -0
  178. data/app/assets/font/roboto-thinitalic-webfont.eot +0 -0
  179. data/app/assets/font/roboto-thinitalic-webfont.svg +0 -668
  180. data/app/assets/font/roboto-thinitalic-webfont.ttf +0 -0
  181. data/app/assets/font/roboto-thinitalic-webfont.woff +0 -0
  182. data/app/assets/images/bug-fixed-128.png +0 -0
  183. data/app/assets/images/bug-fixed-32.png +0 -0
  184. data/app/assets/images/bug-fixed-48.png +0 -0
  185. data/app/assets/images/bug-new-128.png +0 -0
  186. data/app/assets/images/bug-new-32.png +0 -0
  187. data/app/assets/images/bug-new-48.png +0 -0
  188. data/app/assets/images/bug-open-32.png +0 -0
  189. data/app/assets/images/bug-zero-128.png +0 -0
  190. data/app/assets/images/bug-zero-48.png +0 -0
  191. data/app/assets/images/drag-grip.png +0 -0
  192. data/app/assets/javascripts/houston/core/burndown_chart.coffee +0 -111
  193. data/app/assets/javascripts/houston/core/stacked_area_graph.coffee +0 -113
  194. data/app/assets/javascripts/houston/core/stacked_bar_graph.coffee +0 -108
  195. data/app/assets/stylesheets/houston/application/project_tiles.scss +0 -26
  196. data/app/assets/stylesheets/houston/application/tips.scss +0 -5
  197. data/app/assets/stylesheets/houston/core/octicons-icons.scss +0 -221
  198. data/app/assets/stylesheets/houston/core/octicons.scss.erb +0 -9
  199. data/app/assets/stylesheets/houston/core/roboto.scss.erb +0 -131
  200. data/app/concerns/historical_weekly_stats.rb +0 -15
  201. data/app/concerns/nosync.rb +0 -21
  202. data/app/controllers/oauth/providers_controller.rb +0 -45
  203. data/app/controllers/project_roles_controller.rb +0 -22
  204. data/app/controllers/settings_controller.rb +0 -14
  205. data/app/controllers/tester_bar_controller.rb +0 -12
  206. data/app/controllers/user_credentials_controller.rb +0 -24
  207. data/app/models/role.rb +0 -33
  208. data/app/models/setting.rb +0 -10
  209. data/app/models/settings.rb +0 -38
  210. data/app/models/slackdown.rb +0 -23
  211. data/app/models/user_credentials.rb +0 -27
  212. data/app/views/errors/_actions.html.erb +0 -17
  213. data/app/views/layouts/_tester_bar.html.erb +0 -6
  214. data/app/views/layouts/minimal.html.erb +0 -50
  215. data/app/views/layouts/naked.html.erb +0 -47
  216. data/app/views/layouts/naked_dashboard.html.erb +0 -50
  217. data/app/views/oauth/providers/_form.html.erb +0 -54
  218. data/app/views/oauth/providers/index.html.erb +0 -41
  219. data/app/views/oauth/providers/new.html.erb +0 -7
  220. data/config/initializers/add_navigation_renderers.rb +0 -5
  221. data/config/initializers/vestal_versions.rb +0 -9
  222. data/db/migrate/20130519163615_create_user_credentials.rb +0 -18
  223. data/lib/houston/boot/events.rb +0 -10
  224. data/lib/tasks/keypair.rake +0 -17
  225. data/vendor/assets/javascripts/jquery.pjax.js +0 -817
@@ -1,16 +1,11 @@
1
- # Be sure to restart your server when you modify this file.
1
+ # This is set by instances in Houston::Configuration
2
2
 
3
- # Your secret key is used for verifying the integrity of signed cookies.
4
- # If you change this key, all old signed cookies will become invalid!
3
+ if Houston::Application.config.secret_key_base.nil?
4
+ puts "\e[34mDEPRECATION: \e[4mHouston.config.secret_key_base\e[0;34m is not set. Houston is supplying a default value. This fallback functionality will be removed in version 1.0. Set secret_key_base in your `Houston.config` block.\e[0m"
5
5
 
6
- # Make sure the secret is at least 30 characters and all random,
7
- # no regular words or you'll be exposed to dictionary attacks.
8
- # You can use `rake secret` to generate a secure secret key.
9
-
10
- # Make sure your secret_key_base is kept private
11
- # if you're sharing your code publicly.
12
- unless Rails.env.production?
13
- Houston::Application.config.secret_key_base = "8cf48c792d860953a74ecaa7c779c6019ecddf39a03300a9aed505662f519cf933b4b0ecba3bea4f0eaaf3debd09b08c3e2bd87b9d30be8df0b1166ab4962752"
14
- else
15
- Houston::Application.config.secret_key_base = ENV["HOUSTON_SECRET_KEY_BASE"]
6
+ unless Rails.env.production?
7
+ Houston::Application.config.secret_key_base = "8cf48c792d860953a74ecaa7c779c6019ecddf39a03300a9aed505662f519cf933b4b0ecba3bea4f0eaaf3debd09b08c3e2bd87b9d30be8df0b1166ab4962752"
8
+ else
9
+ Houston::Application.config.secret_key_base = ENV["HOUSTON_SECRET_KEY_BASE"]
10
+ end
16
11
  end
data/config/routes.rb CHANGED
@@ -23,8 +23,8 @@ Rails.application.routes.draw do
23
23
  put :retire
24
24
  end
25
25
 
26
- post "follow", to: "project_roles#create", :as => :follow
27
- delete "unfollow", to: "project_roles#destroy", :as => :unfollow
26
+ post "follow", to: "project_follows#create", :as => :follow
27
+ delete "unfollow", to: "project_follows#destroy", :as => :unfollow
28
28
  end
29
29
 
30
30
 
@@ -41,13 +41,6 @@ Rails.application.routes.draw do
41
41
 
42
42
 
43
43
 
44
- # Settings
45
-
46
- get "settings", to: "settings#show"
47
- put "settings", to: "settings#update"
48
-
49
-
50
-
51
44
  # Uploads
52
45
 
53
46
  post "uploads/policies", to: "uploads#policies"
@@ -68,31 +61,26 @@ Rails.application.routes.draw do
68
61
 
69
62
  # Authorizations
70
63
 
71
- put "credentials", to: "user_credentials#upsert"
72
- delete "credentials/:id", to: "user_credentials#destroy"
73
-
74
64
  get "authorizations" => "authorizations#index", as: :authorizations
65
+ get "my/authorizations" => "authorizations#mine", as: :my_authorizations
75
66
  get "authorizations/new" => "authorizations#new", as: :new_authorization
76
67
  post "authorizations" => "authorizations#create"
77
68
  get "authorizations/:id/edit" => "authorizations#edit", as: :edit_authorization
78
69
  patch "authorizations/:id" => "authorizations#update", as: :authorization
70
+ delete "authorizations/:id" => "authorizations#destroy"
79
71
 
72
+ get "auth/:id" => "authorizations#grant"
80
73
  get "authorizations/:id/grant" => "authorizations#grant", as: :grant_authorization
81
74
  get "authorizations/:id/granted" => "authorizations#granted", as: :authorization_granted
82
75
  get "oauth2/callback" => "authorizations#oauth2_callback", as: :oauth2_callback
83
76
 
84
- get "oauth/providers" => "oauth/providers#index", as: :oauth_providers
85
- get "oauth/providers/new" => "oauth/providers#new", as: :new_oauth_provider
86
- post "oauth/providers" => "oauth/providers#create"
87
- get "oauth/providers/:id/edit" => "oauth/providers#edit", as: :edit_oauth_provider
88
- patch "oauth/providers/:id" => "oauth/providers#update", as: :oauth_provider
89
-
90
77
 
91
78
 
92
79
  # Actions
93
80
 
94
81
  get "actions", to: "actions#index", as: :actions
95
82
  get "actions/running", to: "actions#running", as: :running_actions
83
+ get "actions/unqueued", to: "actions#unqueued", as: :unqueued_actions
96
84
  get "actions/:slug", to: "actions#show", as: :action, constraints: { slug: /[^\/]+/ }
97
85
  post "actions/:slug", to: "actions#run", as: :run_action, constraints: { slug: /[^\/]+/ }
98
86
  post "actions/:id/retry", to: "actions#retry", as: :retry_action
@@ -121,8 +109,12 @@ Rails.application.routes.draw do
121
109
 
122
110
 
123
111
 
124
- # Tester Bar
125
- match "tester_bar/:action", :controller => "tester_bar", via: [:get, :post] if Rails.env.development?
112
+ # The Instance
113
+ # (before Modules so that it can override routes in the modules)
114
+
115
+ if defined?(Houston::Engine)
116
+ mount Houston::Engine => "/"
117
+ end
126
118
 
127
119
 
128
120
 
@@ -134,14 +126,6 @@ Rails.application.routes.draw do
134
126
 
135
127
 
136
128
 
137
- # The Instance
138
-
139
- if defined?(Houston::Engine)
140
- mount Houston::Engine => "/"
141
- end
142
-
143
-
144
-
145
129
  # Web Hooks
146
130
  # (at the bottom, allows modules or instances to define specific hooks)
147
131
 
@@ -1,6 +1,10 @@
1
+ class LegacyRole < ActiveRecord::Base
2
+ self.table_name = "roles"
3
+ end
4
+
1
5
  class DropDeprecatedProjectRoles < ActiveRecord::Migration
2
6
  def up
3
- Role.where(name: %w{Contributor Tester}).delete_all
7
+ LegacyRole.where(name: %w{Contributor Tester}).delete_all
4
8
  end
5
9
 
6
10
  def down
@@ -1,5 +1,5 @@
1
1
  class RemoveAntecedentsFromVersionsOfTickets < ActiveRecord::Migration[5.0]
2
- include VestalVersions
2
+ class Version < ActiveRecord::Base; end
3
3
 
4
4
  def up
5
5
  versions = Version.where("modifications like '%!ruby/object:TicketAntecedent%'")
@@ -0,0 +1,9 @@
1
+ class DropUsersEnvironmentsSubscribedTo < ActiveRecord::Migration[5.0]
2
+ def up
3
+ remove_column :users, :environments_subscribed_to
4
+ end
5
+
6
+ def down
7
+ add_column :users, :environments_subscribed_to, :string, :null => false, :default => ""
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ class DropSettings < ActiveRecord::Migration[5.0]
2
+ def up
3
+ drop_table :settings
4
+ end
5
+
6
+ def down
7
+ create_table :settings do |t|
8
+ t.string :name, null: false
9
+ t.string :value, null: false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ class DropExtensionHstore < ActiveRecord::Migration[5.0]
2
+ def up
3
+ disable_extension "hstore"
4
+ end
5
+
6
+ def down
7
+ enable_extension "hstore"
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ class DropLegacyColumnsFromUsers < ActiveRecord::Migration[5.0]
2
+ def up
3
+ remove_column :users, :legacy_role
4
+ remove_column :users, :legacy_administrator
5
+ end
6
+
7
+ def down
8
+ raise ActiveRecord::IrreversibleMigration
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ class RenameProjectsColorToColorName < ActiveRecord::Migration[5.0]
2
+ def change
3
+ rename_column :projects, :color, :color_name
4
+ end
5
+ end
@@ -0,0 +1,27 @@
1
+ class ChangeProvidersFromModelsToExtensions < ActiveRecord::Migration[5.0]
2
+ def up
3
+ drop_table :oauth_providers
4
+ execute "DELETE FROM authorizations"
5
+
6
+ remove_column :authorizations, :provider_id
7
+ add_column :authorizations, :provider_name, :string, null: false
8
+ add_reference :authorizations, :user, null: false, foreign_key: true
9
+ end
10
+
11
+ def down
12
+ add_column :authorizations, :provider_id, :integer
13
+ remove_column :authorizations, :provider
14
+ remove_reference :authorizations, :user
15
+
16
+ create_table :oauth_providers do |t|
17
+ t.string :name, null: false
18
+ t.string :site, null: false
19
+ t.string :authorize_path, null: false
20
+ t.string :token_path, null: false
21
+ t.string :client_id, null: false
22
+ t.string :client_secret, null: false
23
+
24
+ t.timestamps
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,5 @@
1
+ class AddPropsToAuthorizations < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :authorizations, :props, :jsonb, default: {}
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddUserToPersistentTriggers < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :persistent_triggers, :user_id, :integer, null: false
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ class CreateFollows < ActiveRecord::Migration[5.0]
2
+ class Role < ActiveRecord::Base
3
+ belongs_to :project
4
+ belongs_to :user
5
+ end
6
+
7
+ def up
8
+ create_table :follows do |t|
9
+ t.belongs_to :user, foreign_key: { on_delete: :cascade }
10
+ t.belongs_to :project, foreign_key: { on_delete: :cascade }
11
+ end
12
+
13
+ Follow.import(Role.joins(:project, :user).distinct.pluck(:user_id, :project_id).map { |user_id, project_id|
14
+ { user_id: user_id, project_id: project_id } })
15
+ end
16
+
17
+ def down
18
+ drop_table :follows
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ class DropNameFromAuthorizations < ActiveRecord::Migration[5.0]
2
+ def up
3
+ remove_column :authorizations, :name
4
+ end
5
+
6
+ def down
7
+ add_column :authorizations, :name, :string
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ class AddCreatedAtToActions < ActiveRecord::Migration[5.0]
2
+ def up
3
+ add_column :actions, :created_at, :timestamp
4
+ Action.update_all "created_at=started_at"
5
+ change_column_null :actions, :created_at, false
6
+ end
7
+
8
+ def down
9
+ remove_column :actions, :created_at
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class AllowActionsStartedAtToBeNull < ActiveRecord::Migration[5.0]
2
+ def change
3
+ change_column_null :actions, :started_at, true
4
+ end
5
+ end
@@ -0,0 +1,12 @@
1
+ class ReplaceAuthorizationsProviderNameWithType < ActiveRecord::Migration[5.0]
2
+ def up
3
+ Authorization.delete_all
4
+ remove_column :authorizations, :provider_name
5
+ add_column :authorizations, :type, :string, null: false
6
+ end
7
+
8
+ def down
9
+ remove_column :authorizations, :type
10
+ add_column :authorizations, :provider_name, :string, null: false
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ class DropConsumerTokens < ActiveRecord::Migration[5.0]
2
+ def up
3
+ drop_table :consumer_tokens
4
+ end
5
+
6
+ def down
7
+ raise ActiveRecord::IrreversibleMigration
8
+ end
9
+ end
data/db/structure.sql CHANGED
@@ -2,8 +2,8 @@
2
2
  -- PostgreSQL database dump
3
3
  --
4
4
 
5
- -- Dumped from database version 9.6.0
6
- -- Dumped by pg_dump version 9.6.0
5
+ -- Dumped from database version 9.6.2
6
+ -- Dumped by pg_dump version 9.6.2
7
7
 
8
8
  SET statement_timeout = 0;
9
9
  SET lock_timeout = 0;
@@ -28,20 +28,6 @@ CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
28
28
  COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
29
29
 
30
30
 
31
- --
32
- -- Name: hstore; Type: EXTENSION; Schema: -; Owner: -
33
- --
34
-
35
- CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public;
36
-
37
-
38
- --
39
- -- Name: EXTENSION hstore; Type: COMMENT; Schema: -; Owner: -
40
- --
41
-
42
- COMMENT ON EXTENSION hstore IS 'data type for storing sets of (key, value) pairs';
43
-
44
-
45
31
  SET search_path = public, pg_catalog;
46
32
 
47
33
  SET default_tablespace = '';
@@ -55,12 +41,13 @@ SET default_with_oids = false;
55
41
  CREATE TABLE actions (
56
42
  id integer NOT NULL,
57
43
  name character varying NOT NULL,
58
- started_at timestamp without time zone NOT NULL,
44
+ started_at timestamp without time zone,
59
45
  finished_at timestamp without time zone,
60
46
  succeeded boolean,
61
47
  error_id integer,
62
48
  trigger character varying,
63
- params text
49
+ params text,
50
+ created_at timestamp without time zone NOT NULL
64
51
  );
65
52
 
66
53
 
@@ -101,8 +88,6 @@ CREATE TABLE ar_internal_metadata (
101
88
 
102
89
  CREATE TABLE authorizations (
103
90
  id integer NOT NULL,
104
- name character varying NOT NULL,
105
- provider_id integer,
106
91
  scope character varying,
107
92
  access_token character varying,
108
93
  refresh_token character varying,
@@ -110,7 +95,10 @@ CREATE TABLE authorizations (
110
95
  expires_in integer,
111
96
  expires_at timestamp without time zone,
112
97
  created_at timestamp without time zone,
113
- updated_at timestamp without time zone
98
+ updated_at timestamp without time zone,
99
+ user_id integer NOT NULL,
100
+ props jsonb DEFAULT '{}'::jsonb,
101
+ type character varying NOT NULL
114
102
  );
115
103
 
116
104
 
@@ -133,43 +121,6 @@ CREATE SEQUENCE authorizations_id_seq
133
121
  ALTER SEQUENCE authorizations_id_seq OWNED BY authorizations.id;
134
122
 
135
123
 
136
- --
137
- -- Name: consumer_tokens; Type: TABLE; Schema: public; Owner: -
138
- --
139
-
140
- CREATE TABLE consumer_tokens (
141
- id integer NOT NULL,
142
- user_id integer,
143
- type character varying(30),
144
- token character varying(1024),
145
- refresh_token character varying,
146
- secret character varying,
147
- expires_at integer,
148
- expires_in character varying,
149
- created_at timestamp without time zone,
150
- updated_at timestamp without time zone
151
- );
152
-
153
-
154
- --
155
- -- Name: consumer_tokens_id_seq; Type: SEQUENCE; Schema: public; Owner: -
156
- --
157
-
158
- CREATE SEQUENCE consumer_tokens_id_seq
159
- START WITH 1
160
- INCREMENT BY 1
161
- NO MINVALUE
162
- NO MAXVALUE
163
- CACHE 1;
164
-
165
-
166
- --
167
- -- Name: consumer_tokens_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
168
- --
169
-
170
- ALTER SEQUENCE consumer_tokens_id_seq OWNED BY consumer_tokens.id;
171
-
172
-
173
124
  --
174
125
  -- Name: errors; Type: TABLE; Schema: public; Owner: -
175
126
  --
@@ -205,27 +156,21 @@ ALTER SEQUENCE errors_id_seq OWNED BY errors.id;
205
156
 
206
157
 
207
158
  --
208
- -- Name: measurements; Type: TABLE; Schema: public; Owner: -
159
+ -- Name: follows; Type: TABLE; Schema: public; Owner: -
209
160
  --
210
161
 
211
- CREATE TABLE measurements (
162
+ CREATE TABLE follows (
212
163
  id integer NOT NULL,
213
- subject_type character varying,
214
- subject_id integer,
215
- name character varying NOT NULL,
216
- value character varying NOT NULL,
217
- taken_at timestamp without time zone NOT NULL,
218
- taken_on date NOT NULL,
219
- created_at timestamp without time zone,
220
- updated_at timestamp without time zone
164
+ user_id integer,
165
+ project_id integer
221
166
  );
222
167
 
223
168
 
224
169
  --
225
- -- Name: measurements_id_seq; Type: SEQUENCE; Schema: public; Owner: -
170
+ -- Name: follows_id_seq; Type: SEQUENCE; Schema: public; Owner: -
226
171
  --
227
172
 
228
- CREATE SEQUENCE measurements_id_seq
173
+ CREATE SEQUENCE follows_id_seq
229
174
  START WITH 1
230
175
  INCREMENT BY 1
231
176
  NO MINVALUE
@@ -234,34 +179,34 @@ CREATE SEQUENCE measurements_id_seq
234
179
 
235
180
 
236
181
  --
237
- -- Name: measurements_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
182
+ -- Name: follows_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
238
183
  --
239
184
 
240
- ALTER SEQUENCE measurements_id_seq OWNED BY measurements.id;
185
+ ALTER SEQUENCE follows_id_seq OWNED BY follows.id;
241
186
 
242
187
 
243
188
  --
244
- -- Name: oauth_providers; Type: TABLE; Schema: public; Owner: -
189
+ -- Name: measurements; Type: TABLE; Schema: public; Owner: -
245
190
  --
246
191
 
247
- CREATE TABLE oauth_providers (
192
+ CREATE TABLE measurements (
248
193
  id integer NOT NULL,
194
+ subject_type character varying,
195
+ subject_id integer,
249
196
  name character varying NOT NULL,
250
- site character varying NOT NULL,
251
- authorize_path character varying NOT NULL,
252
- token_path character varying NOT NULL,
253
- client_id character varying NOT NULL,
254
- client_secret character varying NOT NULL,
197
+ value character varying NOT NULL,
198
+ taken_at timestamp without time zone NOT NULL,
199
+ taken_on date NOT NULL,
255
200
  created_at timestamp without time zone,
256
201
  updated_at timestamp without time zone
257
202
  );
258
203
 
259
204
 
260
205
  --
261
- -- Name: oauth_providers_id_seq; Type: SEQUENCE; Schema: public; Owner: -
206
+ -- Name: measurements_id_seq; Type: SEQUENCE; Schema: public; Owner: -
262
207
  --
263
208
 
264
- CREATE SEQUENCE oauth_providers_id_seq
209
+ CREATE SEQUENCE measurements_id_seq
265
210
  START WITH 1
266
211
  INCREMENT BY 1
267
212
  NO MINVALUE
@@ -270,10 +215,10 @@ CREATE SEQUENCE oauth_providers_id_seq
270
215
 
271
216
 
272
217
  --
273
- -- Name: oauth_providers_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
218
+ -- Name: measurements_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
274
219
  --
275
220
 
276
- ALTER SEQUENCE oauth_providers_id_seq OWNED BY oauth_providers.id;
221
+ ALTER SEQUENCE measurements_id_seq OWNED BY measurements.id;
277
222
 
278
223
 
279
224
  --
@@ -285,7 +230,8 @@ CREATE TABLE persistent_triggers (
285
230
  type character varying NOT NULL,
286
231
  value text NOT NULL,
287
232
  params text DEFAULT '{}'::text NOT NULL,
288
- action character varying NOT NULL
233
+ action character varying NOT NULL,
234
+ user_id integer NOT NULL
289
235
  );
290
236
 
291
237
 
@@ -318,7 +264,7 @@ CREATE TABLE projects (
318
264
  slug character varying NOT NULL,
319
265
  created_at timestamp without time zone,
320
266
  updated_at timestamp without time zone,
321
- color character varying DEFAULT 'default'::character varying NOT NULL,
267
+ color_name character varying DEFAULT 'default'::character varying NOT NULL,
322
268
  retired_at timestamp without time zone,
323
269
  category character varying,
324
270
  version_control_name character varying DEFAULT 'None'::character varying NOT NULL,
@@ -395,36 +341,6 @@ CREATE TABLE schema_migrations (
395
341
  );
396
342
 
397
343
 
398
- --
399
- -- Name: settings; Type: TABLE; Schema: public; Owner: -
400
- --
401
-
402
- CREATE TABLE settings (
403
- id integer NOT NULL,
404
- name character varying NOT NULL,
405
- value character varying NOT NULL
406
- );
407
-
408
-
409
- --
410
- -- Name: settings_id_seq; Type: SEQUENCE; Schema: public; Owner: -
411
- --
412
-
413
- CREATE SEQUENCE settings_id_seq
414
- START WITH 1
415
- INCREMENT BY 1
416
- NO MINVALUE
417
- NO MAXVALUE
418
- CACHE 1;
419
-
420
-
421
- --
422
- -- Name: settings_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
423
- --
424
-
425
- ALTER SEQUENCE settings_id_seq OWNED BY settings.id;
426
-
427
-
428
344
  --
429
345
  -- Name: teams; Type: TABLE; Schema: public; Owner: -
430
346
  --
@@ -488,42 +404,6 @@ CREATE SEQUENCE teams_users_id_seq
488
404
  ALTER SEQUENCE teams_users_id_seq OWNED BY teams_users.id;
489
405
 
490
406
 
491
- --
492
- -- Name: user_credentials; Type: TABLE; Schema: public; Owner: -
493
- --
494
-
495
- CREATE TABLE user_credentials (
496
- id integer NOT NULL,
497
- user_id integer,
498
- service character varying,
499
- login character varying,
500
- password bytea,
501
- password_key bytea,
502
- password_iv bytea,
503
- created_at timestamp without time zone,
504
- updated_at timestamp without time zone
505
- );
506
-
507
-
508
- --
509
- -- Name: user_credentials_id_seq; Type: SEQUENCE; Schema: public; Owner: -
510
- --
511
-
512
- CREATE SEQUENCE user_credentials_id_seq
513
- START WITH 1
514
- INCREMENT BY 1
515
- NO MINVALUE
516
- NO MAXVALUE
517
- CACHE 1;
518
-
519
-
520
- --
521
- -- Name: user_credentials_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
522
- --
523
-
524
- ALTER SEQUENCE user_credentials_id_seq OWNED BY user_credentials.id;
525
-
526
-
527
407
  --
528
408
  -- Name: users; Type: TABLE; Schema: public; Owner: -
529
409
  --
@@ -548,15 +428,12 @@ CREATE TABLE users (
548
428
  invitation_limit integer,
549
429
  invited_by_type character varying,
550
430
  invited_by_id integer,
551
- legacy_role character varying DEFAULT 'Guest'::character varying,
552
431
  authentication_token character varying,
553
- legacy_administrator boolean DEFAULT false,
554
432
  first_name character varying,
555
433
  last_name character varying,
556
434
  retired_at timestamp without time zone,
557
435
  email_addresses text[],
558
436
  invitation_created_at timestamp without time zone,
559
- environments_subscribed_to text[] DEFAULT '{}'::text[] NOT NULL,
560
437
  current_project_id integer,
561
438
  nickname character varying,
562
439
  username character varying,
@@ -637,13 +514,6 @@ ALTER TABLE ONLY actions ALTER COLUMN id SET DEFAULT nextval('actions_id_seq'::r
637
514
  ALTER TABLE ONLY authorizations ALTER COLUMN id SET DEFAULT nextval('authorizations_id_seq'::regclass);
638
515
 
639
516
 
640
- --
641
- -- Name: consumer_tokens id; Type: DEFAULT; Schema: public; Owner: -
642
- --
643
-
644
- ALTER TABLE ONLY consumer_tokens ALTER COLUMN id SET DEFAULT nextval('consumer_tokens_id_seq'::regclass);
645
-
646
-
647
517
  --
648
518
  -- Name: errors id; Type: DEFAULT; Schema: public; Owner: -
649
519
  --
@@ -652,17 +522,17 @@ ALTER TABLE ONLY errors ALTER COLUMN id SET DEFAULT nextval('errors_id_seq'::reg
652
522
 
653
523
 
654
524
  --
655
- -- Name: measurements id; Type: DEFAULT; Schema: public; Owner: -
525
+ -- Name: follows id; Type: DEFAULT; Schema: public; Owner: -
656
526
  --
657
527
 
658
- ALTER TABLE ONLY measurements ALTER COLUMN id SET DEFAULT nextval('measurements_id_seq'::regclass);
528
+ ALTER TABLE ONLY follows ALTER COLUMN id SET DEFAULT nextval('follows_id_seq'::regclass);
659
529
 
660
530
 
661
531
  --
662
- -- Name: oauth_providers id; Type: DEFAULT; Schema: public; Owner: -
532
+ -- Name: measurements id; Type: DEFAULT; Schema: public; Owner: -
663
533
  --
664
534
 
665
- ALTER TABLE ONLY oauth_providers ALTER COLUMN id SET DEFAULT nextval('oauth_providers_id_seq'::regclass);
535
+ ALTER TABLE ONLY measurements ALTER COLUMN id SET DEFAULT nextval('measurements_id_seq'::regclass);
666
536
 
667
537
 
668
538
  --
@@ -686,13 +556,6 @@ ALTER TABLE ONLY projects ALTER COLUMN id SET DEFAULT nextval('projects_id_seq':
686
556
  ALTER TABLE ONLY roles ALTER COLUMN id SET DEFAULT nextval('roles_id_seq'::regclass);
687
557
 
688
558
 
689
- --
690
- -- Name: settings id; Type: DEFAULT; Schema: public; Owner: -
691
- --
692
-
693
- ALTER TABLE ONLY settings ALTER COLUMN id SET DEFAULT nextval('settings_id_seq'::regclass);
694
-
695
-
696
559
  --
697
560
  -- Name: teams id; Type: DEFAULT; Schema: public; Owner: -
698
561
  --
@@ -707,13 +570,6 @@ ALTER TABLE ONLY teams ALTER COLUMN id SET DEFAULT nextval('teams_id_seq'::regcl
707
570
  ALTER TABLE ONLY teams_users ALTER COLUMN id SET DEFAULT nextval('teams_users_id_seq'::regclass);
708
571
 
709
572
 
710
- --
711
- -- Name: user_credentials id; Type: DEFAULT; Schema: public; Owner: -
712
- --
713
-
714
- ALTER TABLE ONLY user_credentials ALTER COLUMN id SET DEFAULT nextval('user_credentials_id_seq'::regclass);
715
-
716
-
717
573
  --
718
574
  -- Name: users id; Type: DEFAULT; Schema: public; Owner: -
719
575
  --
@@ -752,14 +608,6 @@ ALTER TABLE ONLY authorizations
752
608
  ADD CONSTRAINT authorizations_pkey PRIMARY KEY (id);
753
609
 
754
610
 
755
- --
756
- -- Name: consumer_tokens consumer_tokens_pkey; Type: CONSTRAINT; Schema: public; Owner: -
757
- --
758
-
759
- ALTER TABLE ONLY consumer_tokens
760
- ADD CONSTRAINT consumer_tokens_pkey PRIMARY KEY (id);
761
-
762
-
763
611
  --
764
612
  -- Name: errors errors_pkey; Type: CONSTRAINT; Schema: public; Owner: -
765
613
  --
@@ -769,19 +617,19 @@ ALTER TABLE ONLY errors
769
617
 
770
618
 
771
619
  --
772
- -- Name: measurements measurements_pkey; Type: CONSTRAINT; Schema: public; Owner: -
620
+ -- Name: follows follows_pkey; Type: CONSTRAINT; Schema: public; Owner: -
773
621
  --
774
622
 
775
- ALTER TABLE ONLY measurements
776
- ADD CONSTRAINT measurements_pkey PRIMARY KEY (id);
623
+ ALTER TABLE ONLY follows
624
+ ADD CONSTRAINT follows_pkey PRIMARY KEY (id);
777
625
 
778
626
 
779
627
  --
780
- -- Name: oauth_providers oauth_providers_pkey; Type: CONSTRAINT; Schema: public; Owner: -
628
+ -- Name: measurements measurements_pkey; Type: CONSTRAINT; Schema: public; Owner: -
781
629
  --
782
630
 
783
- ALTER TABLE ONLY oauth_providers
784
- ADD CONSTRAINT oauth_providers_pkey PRIMARY KEY (id);
631
+ ALTER TABLE ONLY measurements
632
+ ADD CONSTRAINT measurements_pkey PRIMARY KEY (id);
785
633
 
786
634
 
787
635
  --
@@ -816,14 +664,6 @@ ALTER TABLE ONLY schema_migrations
816
664
  ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version);
817
665
 
818
666
 
819
- --
820
- -- Name: settings settings_pkey; Type: CONSTRAINT; Schema: public; Owner: -
821
- --
822
-
823
- ALTER TABLE ONLY settings
824
- ADD CONSTRAINT settings_pkey PRIMARY KEY (id);
825
-
826
-
827
667
  --
828
668
  -- Name: teams teams_pkey; Type: CONSTRAINT; Schema: public; Owner: -
829
669
  --
@@ -840,14 +680,6 @@ ALTER TABLE ONLY teams_users
840
680
  ADD CONSTRAINT teams_users_pkey PRIMARY KEY (id);
841
681
 
842
682
 
843
- --
844
- -- Name: user_credentials user_credentials_pkey; Type: CONSTRAINT; Schema: public; Owner: -
845
- --
846
-
847
- ALTER TABLE ONLY user_credentials
848
- ADD CONSTRAINT user_credentials_pkey PRIMARY KEY (id);
849
-
850
-
851
683
  --
852
684
  -- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: -
853
685
  --
@@ -872,10 +704,10 @@ CREATE INDEX index_actions_on_name ON actions USING btree (name);
872
704
 
873
705
 
874
706
  --
875
- -- Name: index_consumer_tokens_on_token; Type: INDEX; Schema: public; Owner: -
707
+ -- Name: index_authorizations_on_user_id; Type: INDEX; Schema: public; Owner: -
876
708
  --
877
709
 
878
- CREATE UNIQUE INDEX index_consumer_tokens_on_token ON consumer_tokens USING btree (token);
710
+ CREATE INDEX index_authorizations_on_user_id ON authorizations USING btree (user_id);
879
711
 
880
712
 
881
713
  --
@@ -885,6 +717,20 @@ CREATE UNIQUE INDEX index_consumer_tokens_on_token ON consumer_tokens USING btre
885
717
  CREATE UNIQUE INDEX index_errors_on_sha ON errors USING btree (sha);
886
718
 
887
719
 
720
+ --
721
+ -- Name: index_follows_on_project_id; Type: INDEX; Schema: public; Owner: -
722
+ --
723
+
724
+ CREATE INDEX index_follows_on_project_id ON follows USING btree (project_id);
725
+
726
+
727
+ --
728
+ -- Name: index_follows_on_user_id; Type: INDEX; Schema: public; Owner: -
729
+ --
730
+
731
+ CREATE INDEX index_follows_on_user_id ON follows USING btree (user_id);
732
+
733
+
888
734
  --
889
735
  -- Name: index_measurements_on_name; Type: INDEX; Schema: public; Owner: -
890
736
  --
@@ -1025,12 +871,141 @@ CREATE INDEX index_versions_on_user_name ON versions USING btree (user_name);
1025
871
  CREATE INDEX index_versions_on_versioned_id_and_versioned_type ON versions USING btree (versioned_id, versioned_type);
1026
872
 
1027
873
 
874
+ --
875
+ -- Name: follows fk_rails_32479bd030; Type: FK CONSTRAINT; Schema: public; Owner: -
876
+ --
877
+
878
+ ALTER TABLE ONLY follows
879
+ ADD CONSTRAINT fk_rails_32479bd030 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
880
+
881
+
882
+ --
883
+ -- Name: authorizations fk_rails_4ecef5b8c5; Type: FK CONSTRAINT; Schema: public; Owner: -
884
+ --
885
+
886
+ ALTER TABLE ONLY authorizations
887
+ ADD CONSTRAINT fk_rails_4ecef5b8c5 FOREIGN KEY (user_id) REFERENCES users(id);
888
+
889
+
890
+ --
891
+ -- Name: follows fk_rails_572bf69092; Type: FK CONSTRAINT; Schema: public; Owner: -
892
+ --
893
+
894
+ ALTER TABLE ONLY follows
895
+ ADD CONSTRAINT fk_rails_572bf69092 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
896
+
897
+
1028
898
  --
1029
899
  -- PostgreSQL database dump complete
1030
900
  --
1031
901
 
1032
902
  SET search_path TO "$user", public;
1033
903
 
1034
- INSERT INTO schema_migrations (version) VALUES ('20120324185914'), ('20120408155047'), ('20120417175450'), ('20120417175841'), ('20120417190504'), ('20120504143615'), ('20120525013703'), ('20120607124115'), ('20120715230922'), ('20120726231754'), ('20120823025935'), ('20120826022643'), ('20120827190634'), ('20120913020218'), ('20120920023251'), ('20120922010212'), ('20121026014457'), ('20121126005019'), ('20121219202734'), ('20121222170917'), ('20121222223325'), ('20121222223635'), ('20121230173644'), ('20130105200429'), ('20130119203853'), ('20130302205014'), ('20130312224911'), ('20130407195450'), ('20130407200624'), ('20130416020627'), ('20130420151334'), ('20130420155332'), ('20130420172322'), ('20130420174002'), ('20130420174126'), ('20130428005808'), ('20130504014802'), ('20130518224406'), ('20130518224722'), ('20130519163615'), ('20130706141443'), ('20130728191005'), ('20130914155044'), ('20131002005512'), ('20131002015547'), ('20131216014505'), ('20140106212047'), ('20140106212305'), ('20140217150735'), ('20140217160450'), ('20140406183224'), ('20140411214022'), ('20140419152214'), ('20140429000919'), ('20140516005310'), ('20140517012626'), ('20140606232907'), ('20140907013836'), ('20140921201441'), ('20141027194819'), ('20141226171730'), ('20150116153233'), ('20150222205616'), ('20150222214124'), ('20150223013721'), ('20150302153319'), ('20151201042126'), ('20151202005557'), ('20151202011812'), ('20151205204922'), ('20151228183704'), ('20160317140151'), ('20160419230411'), ('20160420000616'), ('20160507135209'), ('20160507135846'), ('20160625203412'), ('20160625221840'), ('20160625230420'), ('20160711170921'), ('20160713204605'), ('20160715173039'), ('20160812233255'), ('20160813001242'), ('20160814024129'), ('20160916191300'), ('20161102012059'), ('20161102012231'), ('20170115150643'), ('20170116002818'), ('20170116210225'), ('20170118005958');
904
+ INSERT INTO "schema_migrations" (version) VALUES
905
+ ('20120324185914'),
906
+ ('20120408155047'),
907
+ ('20120417175450'),
908
+ ('20120417175841'),
909
+ ('20120417190504'),
910
+ ('20120504143615'),
911
+ ('20120525013703'),
912
+ ('20120607124115'),
913
+ ('20120715230922'),
914
+ ('20120726231754'),
915
+ ('20120823025935'),
916
+ ('20120826022643'),
917
+ ('20120827190634'),
918
+ ('20120913020218'),
919
+ ('20120920023251'),
920
+ ('20120922010212'),
921
+ ('20121026014457'),
922
+ ('20121126005019'),
923
+ ('20121219202734'),
924
+ ('20121222170917'),
925
+ ('20121222223325'),
926
+ ('20121222223635'),
927
+ ('20121230173644'),
928
+ ('20130105200429'),
929
+ ('20130119203853'),
930
+ ('20130302205014'),
931
+ ('20130312224911'),
932
+ ('20130407195450'),
933
+ ('20130407200624'),
934
+ ('20130416020627'),
935
+ ('20130420151334'),
936
+ ('20130420155332'),
937
+ ('20130420172322'),
938
+ ('20130420174002'),
939
+ ('20130420174126'),
940
+ ('20130428005808'),
941
+ ('20130504014802'),
942
+ ('20130518224406'),
943
+ ('20130518224722'),
944
+ ('20130706141443'),
945
+ ('20130728191005'),
946
+ ('20130914155044'),
947
+ ('20131002005512'),
948
+ ('20131002015547'),
949
+ ('20131216014505'),
950
+ ('20140106212047'),
951
+ ('20140106212305'),
952
+ ('20140217150735'),
953
+ ('20140217160450'),
954
+ ('20140406183224'),
955
+ ('20140411214022'),
956
+ ('20140419152214'),
957
+ ('20140429000919'),
958
+ ('20140516005310'),
959
+ ('20140517012626'),
960
+ ('20140606232907'),
961
+ ('20140907013836'),
962
+ ('20140921201441'),
963
+ ('20141027194819'),
964
+ ('20141226171730'),
965
+ ('20150116153233'),
966
+ ('20150222205616'),
967
+ ('20150222214124'),
968
+ ('20150223013721'),
969
+ ('20150302153319'),
970
+ ('20151201042126'),
971
+ ('20151202005557'),
972
+ ('20151202011812'),
973
+ ('20151205204922'),
974
+ ('20151228183704'),
975
+ ('20160317140151'),
976
+ ('20160419230411'),
977
+ ('20160420000616'),
978
+ ('20160507135209'),
979
+ ('20160507135846'),
980
+ ('20160625203412'),
981
+ ('20160625221840'),
982
+ ('20160625230420'),
983
+ ('20160711170921'),
984
+ ('20160713204605'),
985
+ ('20160715173039'),
986
+ ('20160812233255'),
987
+ ('20160813001242'),
988
+ ('20160814024129'),
989
+ ('20160916191300'),
990
+ ('20161102012059'),
991
+ ('20161102012231'),
992
+ ('20170115150643'),
993
+ ('20170116002818'),
994
+ ('20170116210225'),
995
+ ('20170118005958'),
996
+ ('20170130011016'),
997
+ ('20170205004452'),
998
+ ('20170206002030'),
999
+ ('20170206002732'),
1000
+ ('20170209022159'),
1001
+ ('20170213001453'),
1002
+ ('20170215012012'),
1003
+ ('20170216041034'),
1004
+ ('20170226201504'),
1005
+ ('20170301014051'),
1006
+ ('20170307032041'),
1007
+ ('20170307035755'),
1008
+ ('20170310024505'),
1009
+ ('20170329030329');
1035
1010
 
1036
1011