diff options
27 files changed, 355 insertions, 41 deletions
diff --git a/app/assets/stylesheets/admin/layout.scss b/app/assets/stylesheets/admin/layout.scss index bbe5383..6645709 100644 --- a/app/assets/stylesheets/admin/layout.scss +++ b/app/assets/stylesheets/admin/layout.scss | |||
@@ -80,7 +80,7 @@ body { | |||
80 | background-color: #eee; | 80 | background-color: #eee; |
81 | } | 81 | } |
82 | 82 | ||
83 | #blog-form { | 83 | #entry-form { |
84 | display: flex; | 84 | display: flex; |
85 | 85 | ||
86 | fieldset { | 86 | fieldset { |
@@ -163,6 +163,18 @@ body { | |||
163 | td { | 163 | td { |
164 | padding: .25em; | 164 | padding: .25em; |
165 | } | 165 | } |
166 | |||
167 | .admin-actions { | ||
168 | margin: 0; | ||
169 | |||
170 | li { | ||
171 | display: inline; | ||
172 | |||
173 | &+li:before { | ||
174 | content: " - "; | ||
175 | } | ||
176 | } | ||
177 | } | ||
166 | } | 178 | } |
167 | 179 | ||
168 | .details-module { | 180 | .details-module { |
diff --git a/app/assets/stylesheets/main/entries.scss b/app/assets/stylesheets/main/entries.scss index bd0b5ba..b2a07c5 100644 --- a/app/assets/stylesheets/main/entries.scss +++ b/app/assets/stylesheets/main/entries.scss | |||
@@ -26,54 +26,87 @@ | |||
26 | margin-bottom: 0; | 26 | margin-bottom: 0; |
27 | font-weight: normal; | 27 | font-weight: normal; |
28 | } | 28 | } |
29 | } | ||
29 | 30 | ||
30 | #blog-content { | 31 | #stream-post { |
31 | hyphens: auto; | 32 | h2 { |
32 | word-wrap: break-word; | 33 | background-color: #98FB98; |
34 | display: block; | ||
35 | font-size: 20px; | ||
33 | font-family: 'Roboto', sans-serif; | 36 | font-family: 'Roboto', sans-serif; |
34 | text-align: justify; | 37 | padding: 0.5em 20px; |
38 | border-top: 1px solid #7BCC70; | ||
39 | border-bottom: 1px solid #7BCC70; | ||
40 | } | ||
35 | 41 | ||
36 | a { | 42 | #stream-intro { |
37 | text-decoration: none; | 43 | font-size: 16px; |
38 | font-weight: bold; | 44 | margin: 0 20px; |
45 | } | ||
39 | 46 | ||
40 | &, &:visited { | 47 | .stream-update { |
41 | color: #ee2c2c; | 48 | font-size: 16px; |
42 | } | 49 | padding: 0 20px; |
50 | border-top: 1px solid #DEDEDE; | ||
43 | 51 | ||
44 | &:hover { | 52 | .update-posted { |
45 | text-decoration: underline; | 53 | display: block; |
46 | color: #9ea1ad; | 54 | font-style: italic; |
47 | } | 55 | text-align: right; |
56 | color: #989898; | ||
57 | font-size: 14px; | ||
58 | margin-top: .5em; | ||
48 | } | 59 | } |
60 | } | ||
61 | } | ||
62 | |||
63 | .entry-content { | ||
64 | hyphens: auto; | ||
65 | word-wrap: break-word; | ||
66 | text-align: justify; | ||
67 | font-family: 'Roboto', sans-serif; | ||
68 | |||
69 | a { | ||
70 | text-decoration: none; | ||
71 | font-weight: bold; | ||
49 | 72 | ||
50 | li { | 73 | &, &:visited { |
51 | & + li { | 74 | color: #ee2c2c; |
52 | margin-top: 1em; | ||
53 | } | ||
54 | } | 75 | } |
55 | 76 | ||
56 | img { | 77 | &:hover { |
57 | max-width: 100%; | 78 | text-decoration: underline; |
58 | box-sizing: border-box; | 79 | color: #9ea1ad; |
59 | } | 80 | } |
81 | } | ||
60 | 82 | ||
61 | figure { | 83 | li { |
62 | background-color: #eee; | 84 | & + li { |
85 | margin-top: 1em; | ||
86 | } | ||
87 | } | ||
88 | |||
89 | img { | ||
90 | max-width: 100%; | ||
91 | box-sizing: border-box; | ||
92 | } | ||
93 | |||
94 | figure { | ||
95 | background-color: #eee; | ||
96 | border: 1px solid #bbb; | ||
97 | padding: 0.25em 0.25em 0 0.25em; | ||
98 | font-size: 0.75em; | ||
99 | line-height: 24px; | ||
100 | |||
101 | img { | ||
102 | display: block; | ||
63 | border: 1px solid #bbb; | 103 | border: 1px solid #bbb; |
64 | padding: 0.25em 0.25em 0 0.25em; | 104 | } |
65 | font-size: 0.75em; | 105 | |
66 | 106 | figcaption { | |
67 | img { | 107 | font-style: italic; |
68 | display: block; | 108 | text-align: center; |
69 | border: 1px solid #bbb; | 109 | margin: 0.25em; |
70 | } | ||
71 | |||
72 | figcaption { | ||
73 | font-style: italic; | ||
74 | text-align: center; | ||
75 | margin: 0.25em; | ||
76 | } | ||
77 | } | 110 | } |
78 | } | 111 | } |
79 | } | 112 | } |
diff --git a/app/assets/stylesheets/main/records.scss b/app/assets/stylesheets/main/records.scss index dd4eac1..f57dded 100644 --- a/app/assets/stylesheets/main/records.scss +++ b/app/assets/stylesheets/main/records.scss | |||
@@ -52,6 +52,10 @@ | |||
52 | &.entry-type-blog { | 52 | &.entry-type-blog { |
53 | background-color: #90fefb; | 53 | background-color: #90fefb; |
54 | } | 54 | } |
55 | |||
56 | &.entry-type-stream, &.entry-type-update { | ||
57 | background-color: #98FB98; | ||
58 | } | ||
55 | } | 59 | } |
56 | 60 | ||
57 | & + li { | 61 | & + li { |
diff --git a/app/controllers/admin/streams_controller.rb b/app/controllers/admin/streams_controller.rb new file mode 100644 index 0000000..86dec06 --- /dev/null +++ b/app/controllers/admin/streams_controller.rb | |||
@@ -0,0 +1,52 @@ | |||
1 | class Admin::StreamsController < Admin::AdminController | ||
2 | before_action :set_section | ||
3 | |||
4 | def index | ||
5 | @streams = Stream.order(created_at: :desc) | ||
6 | end | ||
7 | |||
8 | def new | ||
9 | @stream = Stream.new | ||
10 | end | ||
11 | |||
12 | def create | ||
13 | @stream = Stream.new(stream_params) | ||
14 | |||
15 | if @stream.save | ||
16 | flash.notice = "Stream created successfully!" | ||
17 | |||
18 | render :edit | ||
19 | else | ||
20 | flash.alert = "Error creating stream." | ||
21 | |||
22 | render :new | ||
23 | end | ||
24 | end | ||
25 | |||
26 | def edit | ||
27 | @stream = Stream.find(params[:id]) | ||
28 | end | ||
29 | |||
30 | def update | ||
31 | @stream = Stream.find(params[:id]) | ||
32 | |||
33 | if @stream.update_attributes(stream_params) | ||
34 | flash.notice = "Stream updated successfully!" | ||
35 | else | ||
36 | flash.alert = "Error updating stream." | ||
37 | end | ||
38 | |||
39 | render :edit | ||
40 | end | ||
41 | |||
42 | private | ||
43 | |||
44 | def stream_params | ||
45 | params.require(:stream).permit(:title, :body, :slug, records_attributes: [:description, :_destroy]) | ||
46 | end | ||
47 | |||
48 | def set_section | ||
49 | @section = "streams" | ||
50 | end | ||
51 | |||
52 | end | ||
diff --git a/app/controllers/admin/updates_controller.rb b/app/controllers/admin/updates_controller.rb new file mode 100644 index 0000000..9bf9caf --- /dev/null +++ b/app/controllers/admin/updates_controller.rb | |||
@@ -0,0 +1,52 @@ | |||
1 | class Admin::UpdatesController < Admin::AdminController | ||
2 | before_action :set_section | ||
3 | |||
4 | def new | ||
5 | @stream = Stream.find(params[:stream_id]) | ||
6 | @update = @stream.updates.build | ||
7 | end | ||
8 | |||
9 | def create | ||
10 | @stream = Stream.find(params[:stream_id]) | ||
11 | @update = @stream.updates.build(update_params) | ||
12 | |||
13 | if @update.save | ||
14 | flash.notice = "Update created successfully!" | ||
15 | |||
16 | render :edit | ||
17 | else | ||
18 | flash.alert = "Error creating update." | ||
19 | |||
20 | render :new | ||
21 | end | ||
22 | end | ||
23 | |||
24 | def edit | ||
25 | @stream = Stream.find(params[:stream_id]) | ||
26 | @update = Update.find(params[:id]) | ||
27 | end | ||
28 | |||
29 | def update | ||
30 | @stream = Stream.find(params[:stream_id]) | ||
31 | @update = Update.find(params[:id]) | ||
32 | |||
33 | if @update.update_attributes(update_params) | ||
34 | flash.notice = "Update updated successfully!" | ||
35 | else | ||
36 | flash.alert = "Error updating update." | ||
37 | end | ||
38 | |||
39 | render :edit | ||
40 | end | ||
41 | |||
42 | private | ||
43 | |||
44 | def update_params | ||
45 | params.require(:update).permit(:body, records_attributes: [:description, :_destroy]) | ||
46 | end | ||
47 | |||
48 | def set_section | ||
49 | @section = "streams" | ||
50 | end | ||
51 | |||
52 | end | ||
diff --git a/app/controllers/streams_controller.rb b/app/controllers/streams_controller.rb new file mode 100644 index 0000000..664f533 --- /dev/null +++ b/app/controllers/streams_controller.rb | |||
@@ -0,0 +1,7 @@ | |||
1 | class StreamsController < ApplicationController | ||
2 | |||
3 | def show | ||
4 | @stream = Stream.find_by_slug(params[:slug]) | ||
5 | end | ||
6 | |||
7 | end | ||
diff --git a/app/helpers/streams_helper.rb b/app/helpers/streams_helper.rb new file mode 100644 index 0000000..ad2665b --- /dev/null +++ b/app/helpers/streams_helper.rb | |||
@@ -0,0 +1,2 @@ | |||
1 | module StreamsHelper | ||
2 | end | ||
diff --git a/app/models/stream.rb b/app/models/stream.rb new file mode 100644 index 0000000..7faa370 --- /dev/null +++ b/app/models/stream.rb | |||
@@ -0,0 +1,13 @@ | |||
1 | class Stream < ApplicationRecord | ||
2 | has_many :records, as: :recordable, inverse_of: :recordable | ||
3 | has_many :updates | ||
4 | |||
5 | validates :title, presence: true | ||
6 | validates :slug, presence: true, format: /\A[-a-z0-9]+\z/ | ||
7 | |||
8 | accepts_nested_attributes_for :records, allow_destroy: true | ||
9 | |||
10 | def path | ||
11 | "/thinks/#{slug}" | ||
12 | end | ||
13 | end | ||
diff --git a/app/models/update.rb b/app/models/update.rb new file mode 100644 index 0000000..41cc453 --- /dev/null +++ b/app/models/update.rb | |||
@@ -0,0 +1,12 @@ | |||
1 | class Update < ApplicationRecord | ||
2 | has_many :records, as: :recordable, inverse_of: :recordable | ||
3 | belongs_to :stream | ||
4 | |||
5 | validates :stream, :body, presence: true | ||
6 | |||
7 | accepts_nested_attributes_for :records, allow_destroy: true | ||
8 | |||
9 | def path | ||
10 | "/thinks/#{stream.slug}\#update-#{id}" | ||
11 | end | ||
12 | end | ||
diff --git a/app/views/admin/blogs/edit.html.haml b/app/views/admin/blogs/edit.html.haml index 3f4d412..f356069 100644 --- a/app/views/admin/blogs/edit.html.haml +++ b/app/views/admin/blogs/edit.html.haml | |||
@@ -1,2 +1,2 @@ | |||
1 | = form_for @blog, url: admin_blog_url(@blog), html: { id: "blog-form" } do |f| | 1 | = form_for @blog, url: admin_blog_url(@blog), html: { id: "entry-form" } do |f| |
2 | = render partial: "form", locals: { f: f } | 2 | = render partial: "form", locals: { f: f } |
diff --git a/app/views/admin/blogs/new.html.haml b/app/views/admin/blogs/new.html.haml index 914f27b..0005278 100644 --- a/app/views/admin/blogs/new.html.haml +++ b/app/views/admin/blogs/new.html.haml | |||
@@ -1,2 +1,2 @@ | |||
1 | = form_for @blog, url: admin_blogs_url, html: { id: "blog-form" } do |f| | 1 | = form_for @blog, url: admin_blogs_url, html: { id: "entry-form" } do |f| |
2 | = render partial: "form", locals: { f: f } | 2 | = render partial: "form", locals: { f: f } |
diff --git a/app/views/admin/streams/_form.html.haml b/app/views/admin/streams/_form.html.haml new file mode 100644 index 0000000..ce457cb --- /dev/null +++ b/app/views/admin/streams/_form.html.haml | |||
@@ -0,0 +1,25 @@ | |||
1 | %fieldset#content | ||
2 | .title-field | ||
3 | = f.label :title | ||
4 | = f.text_field :title, placeholder: "Title" | ||
5 | .slug-field | ||
6 | = f.label :slug, "https://feffernoo.se/thinks/" | ||
7 | = f.text_field :slug, placeholder: "insert-slug-here" | ||
8 | .body-field | ||
9 | = f.label :body | ||
10 | = f.cktext_area :body | ||
11 | %fieldset#details | ||
12 | - if f.object.errors.any? | ||
13 | #errors.details-module | ||
14 | %h3 Error! | ||
15 | %ul | ||
16 | - f.object.errors.full_messages.each do |error| | ||
17 | %li= error | ||
18 | .details-module | ||
19 | = f.fields_for :records, Record.new do |builder| | ||
20 | .should-create-record-field | ||
21 | = builder.check_box :_destroy, {checked: false}, "0", "1" | ||
22 | = builder.label :_destroy, "Create record?" | ||
23 | .record-description-field | ||
24 | = builder.text_area :description, placeholder: "record text" | ||
25 | .details-module= f.submit | ||
diff --git a/app/views/admin/streams/edit.html.haml b/app/views/admin/streams/edit.html.haml new file mode 100644 index 0000000..1b58331 --- /dev/null +++ b/app/views/admin/streams/edit.html.haml | |||
@@ -0,0 +1,2 @@ | |||
1 | = form_for @stream, url: admin_stream_url(@stream), html: { id: "entry-form" } do |f| | ||
2 | = render partial: "form", locals: { f: f } | ||
diff --git a/app/views/admin/streams/index.html.haml b/app/views/admin/streams/index.html.haml new file mode 100644 index 0000000..c69c6f9 --- /dev/null +++ b/app/views/admin/streams/index.html.haml | |||
@@ -0,0 +1,13 @@ | |||
1 | %table#entries | ||
2 | %tr | ||
3 | %th Title | ||
4 | %th Date created | ||
5 | %th | ||
6 | - @streams.each do |stream| | ||
7 | %tr{ class: cycle("even", "odd") } | ||
8 | %td= stream.title | ||
9 | %td= stream.created_at.strftime("%B %d, %Y, %l:%M%P") | ||
10 | %td | ||
11 | %ul.admin-actions | ||
12 | %li= link_to "Edit", edit_admin_stream_url(stream) | ||
13 | %li= link_to "Add Update", new_admin_stream_update_url(stream) | ||
diff --git a/app/views/admin/streams/new.html.haml b/app/views/admin/streams/new.html.haml new file mode 100644 index 0000000..52febf5 --- /dev/null +++ b/app/views/admin/streams/new.html.haml | |||
@@ -0,0 +1,2 @@ | |||
1 | = form_for @stream, url: admin_streams_url, html: { id: "entry-form" } do |f| | ||
2 | = render partial: "form", locals: { f: f } | ||
diff --git a/app/views/admin/updates/_form.html.haml b/app/views/admin/updates/_form.html.haml new file mode 100644 index 0000000..9dd8741 --- /dev/null +++ b/app/views/admin/updates/_form.html.haml | |||
@@ -0,0 +1,22 @@ | |||
1 | %fieldset#content | ||
2 | .title-field | ||
3 | = f.label :title | ||
4 | = f.text_field :title, value: @stream.title, readonly: true | ||
5 | .body-field | ||
6 | = f.label :body | ||
7 | = f.cktext_area :body | ||
8 | %fieldset#details | ||
9 | - if f.object.errors.any? | ||
10 | #errors.details-module | ||
11 | %h3 Error! | ||
12 | %ul | ||
13 | - f.object.errors.full_messages.each do |error| | ||
14 | %li= error | ||
15 | .details-module | ||
16 | = f.fields_for :records, Record.new do |builder| | ||
17 | .should-create-record-field | ||
18 | = builder.check_box :_destroy, {checked: false}, "0", "1" | ||
19 | = builder.label :_destroy, "Create record?" | ||
20 | .record-description-field | ||
21 | = builder.text_area :description, placeholder: "record text" | ||
22 | .details-module= f.submit | ||
diff --git a/app/views/admin/updates/edit.html.haml b/app/views/admin/updates/edit.html.haml new file mode 100644 index 0000000..5651d23 --- /dev/null +++ b/app/views/admin/updates/edit.html.haml | |||
@@ -0,0 +1,2 @@ | |||
1 | = form_for @update, url: admin_stream_update_url(@stream, @update), html: { id: "entry-form" } do |f| | ||
2 | = render partial: "form", locals: { f: f } | ||
diff --git a/app/views/admin/updates/new.html.haml b/app/views/admin/updates/new.html.haml new file mode 100644 index 0000000..14c6d77 --- /dev/null +++ b/app/views/admin/updates/new.html.haml | |||
@@ -0,0 +1,2 @@ | |||
1 | = form_for @update, url: admin_stream_updates_url(@stream), html: { id: "entry-form" } do |f| | ||
2 | = render partial: "form", locals: { f: f } | ||
diff --git a/app/views/blogs/_blog.html.haml b/app/views/blogs/_blog.html.haml index e83d21a..91b1d20 100644 --- a/app/views/blogs/_blog.html.haml +++ b/app/views/blogs/_blog.html.haml | |||
@@ -1,3 +1,3 @@ | |||
1 | %article#blog-post | 1 | %article#blog-post |
2 | %h2#blog-title= blog.title | 2 | %h2#blog-title= blog.title |
3 | %section#blog-content= blog.body.html_safe | 3 | %section#blog-content.entry-content= blog.body.html_safe |
diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index 7f8c171..68bbd96 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml | |||
@@ -24,5 +24,9 @@ | |||
24 | = link_to "Blogs", admin_blogs_url, class: "major-link" | 24 | = link_to "Blogs", admin_blogs_url, class: "major-link" |
25 | %ul.minors | 25 | %ul.minors |
26 | %li.minor= link_to "New blog", new_admin_blog_url | 26 | %li.minor= link_to "New blog", new_admin_blog_url |
27 | %li{major_sidebar_attrs("streams")} | ||
28 | = link_to "Streams", admin_streams_url, class: "major-link" | ||
29 | %ul.minors | ||
30 | %li.minor= link_to "New stream", new_admin_stream_url | ||
27 | #main | 31 | #main |
28 | = yield | 32 | = yield |
diff --git a/app/views/streams/_stream.html.haml b/app/views/streams/_stream.html.haml new file mode 100644 index 0000000..84a6478 --- /dev/null +++ b/app/views/streams/_stream.html.haml | |||
@@ -0,0 +1,6 @@ | |||
1 | %article#stream-post | ||
2 | %h2#stream-title= stream.title | ||
3 | - unless stream.body.blank? | ||
4 | %header#stream-intro.entry-content= stream.body.html_safe | ||
5 | - unless stream.updates.empty? | ||
6 | = render stream.updates | ||
diff --git a/app/views/streams/show.html.haml b/app/views/streams/show.html.haml new file mode 100644 index 0000000..dcec0a2 --- /dev/null +++ b/app/views/streams/show.html.haml | |||
@@ -0,0 +1,2 @@ | |||
1 | .breadcrumb= link_to "← Back to home page", root_path | ||
2 | = render @stream | ||
diff --git a/app/views/updates/_update.html.haml b/app/views/updates/_update.html.haml new file mode 100644 index 0000000..c8ce224 --- /dev/null +++ b/app/views/updates/_update.html.haml | |||
@@ -0,0 +1,3 @@ | |||
1 | %section.stream-update.entry-content{ id: "update-#{update.id}" } | ||
2 | %time.update-posted= update.created_at.strftime("%b #{update.created_at.day.ordinalize} %Y at %-I:%M:%S%P") | ||
3 | = update.body.html_safe | ||
diff --git a/config/routes.rb b/config/routes.rb index cf0bdd6..7369514 100644 --- a/config/routes.rb +++ b/config/routes.rb | |||
@@ -3,6 +3,10 @@ Rails.application.routes.draw do | |||
3 | get '/', to: 'dashboard#index' | 3 | get '/', to: 'dashboard#index' |
4 | 4 | ||
5 | resources :blogs, except: [:show] | 5 | resources :blogs, except: [:show] |
6 | |||
7 | resources :streams, except: [:show] do | ||
8 | resources :updates, except: [:index, :show] | ||
9 | end | ||
6 | end | 10 | end |
7 | 11 | ||
8 | mount Ckeditor::Engine => '/ckeditor' | 12 | mount Ckeditor::Engine => '/ckeditor' |
@@ -16,5 +20,7 @@ Rails.application.routes.draw do | |||
16 | 20 | ||
17 | get 'says/:slug', to: 'blogs#show' | 21 | get 'says/:slug', to: 'blogs#show' |
18 | 22 | ||
23 | get 'thinks/:slug', to: 'streams#show' | ||
24 | |||
19 | mount Pokeviewer::Engine => '/poke3' | 25 | mount Pokeviewer::Engine => '/poke3' |
20 | end | 26 | end |
diff --git a/db/migrate/20180702220722_create_streams.rb b/db/migrate/20180702220722_create_streams.rb new file mode 100644 index 0000000..bb8255e --- /dev/null +++ b/db/migrate/20180702220722_create_streams.rb | |||
@@ -0,0 +1,11 @@ | |||
1 | class CreateStreams < ActiveRecord::Migration[5.1] | ||
2 | def change | ||
3 | create_table :streams do |t| | ||
4 | t.string :title | ||
5 | t.text :body | ||
6 | t.string :slug | ||
7 | |||
8 | t.timestamps | ||
9 | end | ||
10 | end | ||
11 | end | ||
diff --git a/db/migrate/20180702221133_create_updates.rb b/db/migrate/20180702221133_create_updates.rb new file mode 100644 index 0000000..05cc35a --- /dev/null +++ b/db/migrate/20180702221133_create_updates.rb | |||
@@ -0,0 +1,10 @@ | |||
1 | class CreateUpdates < ActiveRecord::Migration[5.1] | ||
2 | def change | ||
3 | create_table :updates do |t| | ||
4 | t.references :stream, foreign_key: true | ||
5 | t.text :body | ||
6 | |||
7 | t.timestamps | ||
8 | end | ||
9 | end | ||
10 | end | ||
diff --git a/db/schema.rb b/db/schema.rb index e036b75..2ca0b58 100644 --- a/db/schema.rb +++ b/db/schema.rb | |||
@@ -10,7 +10,7 @@ | |||
10 | # | 10 | # |
11 | # It's strongly recommended that you check this file into your version control system. | 11 | # It's strongly recommended that you check this file into your version control system. |
12 | 12 | ||
13 | ActiveRecord::Schema.define(version: 20180702214240) do | 13 | ActiveRecord::Schema.define(version: 20180702221133) do |
14 | 14 | ||
15 | create_table "blogs", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" do |t| | 15 | create_table "blogs", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" do |t| |
16 | t.string "title" | 16 | t.string "title" |
@@ -228,6 +228,22 @@ ActiveRecord::Schema.define(version: 20180702214240) do | |||
228 | t.index ["recordable_type", "recordable_id"], name: "index_records_on_recordable_type_and_recordable_id" | 228 | t.index ["recordable_type", "recordable_id"], name: "index_records_on_recordable_type_and_recordable_id" |
229 | end | 229 | end |
230 | 230 | ||
231 | create_table "streams", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci" do |t| | ||
232 | t.string "title" | ||
233 | t.text "body" | ||
234 | t.string "slug" | ||
235 | t.datetime "created_at", null: false | ||
236 | t.datetime "updated_at", null: false | ||
237 | end | ||
238 | |||
239 | create_table "updates", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci" do |t| | ||
240 | t.bigint "stream_id" | ||
241 | t.text "body" | ||
242 | t.datetime "created_at", null: false | ||
243 | t.datetime "updated_at", null: false | ||
244 | t.index ["stream_id"], name: "index_updates_on_stream_id" | ||
245 | end | ||
246 | |||
231 | create_table "users", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" do |t| | 247 | create_table "users", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" do |t| |
232 | t.string "login", default: "", null: false | 248 | t.string "login", default: "", null: false |
233 | t.string "email", default: "", null: false | 249 | t.string "email", default: "", null: false |
@@ -253,4 +269,5 @@ ActiveRecord::Schema.define(version: 20180702214240) do | |||
253 | add_foreign_key "pokeviewer_pokedex_entries", "pokeviewer_trainers", column: "trainer_id" | 269 | add_foreign_key "pokeviewer_pokedex_entries", "pokeviewer_trainers", column: "trainer_id" |
254 | add_foreign_key "pokeviewer_pokemon", "pokeviewer_revisions", column: "current_id" | 270 | add_foreign_key "pokeviewer_pokemon", "pokeviewer_revisions", column: "current_id" |
255 | add_foreign_key "pokeviewer_revisions", "pokeviewer_species", column: "species_id" | 271 | add_foreign_key "pokeviewer_revisions", "pokeviewer_species", column: "species_id" |
272 | add_foreign_key "updates", "streams" | ||
256 | end | 273 | end |