Description:
merge
Commit status:
[Not Reviewed]
References:
merge algo
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r841:19cce9abf4b7 - - 6 files changed: 99 inserted, 76 deleted

@@ -0,0 +1,5
1 + class AddDefaultLanguageToUser < ActiveRecord::Migration[5.2]
2 + def change
3 + add_column :users, :default_language, :integer
4 + end
5 + end
@@ -47,12 +47,23
47 else
47 else
48 flash[:notice] = 'Error: password changing failed'
48 flash[:notice] = 'Error: password changing failed'
49 end
49 end
50 redirect_to :action => 'profile'
50 redirect_to :action => 'profile'
51 end
51 end
52
52
53 + def chg_default_language
54 + user = User.find(session[:user_id])
55 + user.default_language = params[:default_language]
56 + if user.save
57 + flash[:notice] = 'default language changed'
58 + else
59 + flash[:notice] = 'Error: default language changing failed'
60 + end
61 + redirect_to :action => 'profile'
62 + end
63 +
53 def new
64 def new
54 @user = User.new
65 @user = User.new
55 render :action => 'new', :layout => 'empty'
66 render :action => 'new', :layout => 'empty'
56 end
67 end
57
68
58 def register
69 def register
@@ -23,13 +23,13
23 .form-group
23 .form-group
24 = label_tag "Description:"
24 = label_tag "Description:"
25 = link_to_description_if_any "[download] <span class='glyphicon glyphicon-file'></span>".html_safe, @problem
25 = link_to_description_if_any "[download] <span class='glyphicon glyphicon-file'></span>".html_safe, @problem
26
26
27 .form-group
27 .form-group
28 = label_tag 'Language:'
28 = label_tag 'Language:'
29 - = select_tag 'language_id', options_from_collection_for_select(Language.all, 'id', 'pretty_name', @lang_id || Language.find_by_pretty_name("Python").id || Language.first.id), class: 'form-control select', style: "width: 100px"
29 + = select_tag 'language_id', options_from_collection_for_select(Language.all, 'id', 'pretty_name', @lang_id || @current_user.default_language || Language.find_by_pretty_name("Python").id || Language.first.id), class: 'form-control select', style: "width: 100px"
30 .form-group
30 .form-group
31 .input-group
31 .input-group
32 %span.input-group-btn
32 %span.input-group-btn
33 %span.btn.btn-default.btn-file
33 %span.btn.btn-default.btn-file
34 Browse
34 Browse
35 = file_field_tag 'load_file'
35 = file_field_tag 'load_file'
@@ -1,24 +1,29
1
1
2 .container-fluid
2 .container-fluid
3 - = form_tag :action => 'chg_passwd', :method => 'post' do
3 + .row
4 - .row
4 + .col-md-6
5 - .col-md-6
5 + %h1 Your account settings
6 - %h1 Your account settings
6 + .form-group
7 + %label{:for => "login"} Login
8 + =@user.login
9 + .form-group
10 + %label{:for => "full_name"} Full name
11 + =@user.full_name
12 + = form_tag :action => 'chg_default_language', :method => 'post' do
13 + %h2 Change default submission language
7 .form-group
14 .form-group
8 - %label{:for => "login"} Login
15 + = select_tag 'default_language', options_from_collection_for_select(Language.all, 'id', 'pretty_name', @user.default_language || Language.find_by_pretty_name("Python").id || Language.first.id), class: 'form-control select', style: "width: 100px"
9 - =@user.login
16 + = submit_tag 'Save', class: 'btn btn-success'
10 - .form-group
17 + %br
11 - %label{:for => "full_name"} Full name
18 + = form_tag :action => 'chg_passwd', :method => 'post' do
12 - =@user.full_name
19 + %h2 Change password
13 .form-group
20 .form-group
14 %label{:for => "password"} Password
21 %label{:for => "password"} Password
15 =password_field_tag :password, nil, class: 'form-control'
22 =password_field_tag :password, nil, class: 'form-control'
16 .form-group
23 .form-group
17 %label{:for => "password_confirmation"} Password confirmation
24 %label{:for => "password_confirmation"} Password confirmation
18 =password_field_tag :password_confirmation, nil, class: 'form-control'
25 =password_field_tag :password_confirmation, nil, class: 'form-control'
19 - .row
20 - .col-md-6
21 =submit_tag 'Edit', class: 'btn btn-primary'
26 =submit_tag 'Edit', class: 'btn btn-primary'
22
27
23
28
24
29
@@ -82,12 +82,13
82 get 'toggle_activate', 'toggle_enable'
82 get 'toggle_activate', 'toggle_enable'
83 get 'stat'
83 get 'stat'
84 end
84 end
85 collection do
85 collection do
86 get 'profile'
86 get 'profile'
87 post 'chg_passwd'
87 post 'chg_passwd'
88 + post 'chg_default_language'
88 end
89 end
89 end
90 end
90
91
91 resources :submissions do
92 resources :submissions do
92 member do
93 member do
93 get 'download'
94 get 'download'
@@ -7,133 +7,133
7 # system, you should be using db:schema:load, not running all the migrations
7 # system, you should be using db:schema:load, not running all the migrations
8 # from scratch. The latter is a flawed and unsustainable approach (the more migrations
8 # from scratch. The latter is a flawed and unsustainable approach (the more migrations
9 # you'll amass, the slower it'll run and the greater likelihood for issues).
9 # you'll amass, the slower it'll run and the greater likelihood for issues).
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: 2021_01_24_101028) do
13 + ActiveRecord::Schema.define(version: 2021_01_30_121812) do
14
14
15 - create_table "announcements", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
15 + create_table "announcements", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
16 t.string "author"
16 t.string "author"
17 t.text "body"
17 t.text "body"
18 t.boolean "published"
18 t.boolean "published"
19 - t.datetime "created_at", null: false
19 + t.datetime "created_at"
20 - t.datetime "updated_at", null: false
20 + t.datetime "updated_at"
21 t.boolean "frontpage", default: false
21 t.boolean "frontpage", default: false
22 t.boolean "contest_only", default: false
22 t.boolean "contest_only", default: false
23 t.string "title"
23 t.string "title"
24 t.string "notes"
24 t.string "notes"
25 t.boolean "on_nav_bar", default: false
25 t.boolean "on_nav_bar", default: false
26 end
26 end
27
27
28 - create_table "contests", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
28 + create_table "contests", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
29 t.string "title"
29 t.string "title"
30 t.boolean "enabled"
30 t.boolean "enabled"
31 - t.datetime "created_at", null: false
31 + t.datetime "created_at"
32 - t.datetime "updated_at", null: false
32 + t.datetime "updated_at"
33 t.string "name"
33 t.string "name"
34 end
34 end
35
35
36 - create_table "contests_problems", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
36 + create_table "contests_problems", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
37 t.integer "contest_id"
37 t.integer "contest_id"
38 t.integer "problem_id"
38 t.integer "problem_id"
39 end
39 end
40
40
41 - create_table "contests_users", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
41 + create_table "contests_users", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
42 t.integer "contest_id"
42 t.integer "contest_id"
43 t.integer "user_id"
43 t.integer "user_id"
44 end
44 end
45
45
46 - create_table "countries", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
46 + create_table "countries", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
47 t.string "name"
47 t.string "name"
48 - t.datetime "created_at", null: false
48 + t.datetime "created_at"
49 - t.datetime "updated_at", null: false
49 + t.datetime "updated_at"
50 end
50 end
51
51
52 - create_table "descriptions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
52 + create_table "descriptions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
53 t.text "body"
53 t.text "body"
54 t.boolean "markdowned"
54 t.boolean "markdowned"
55 - t.datetime "created_at", null: false
55 + t.datetime "created_at"
56 - t.datetime "updated_at", null: false
56 + t.datetime "updated_at"
57 end
57 end
58
58
59 - create_table "grader_configurations", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
59 + create_table "grader_configurations", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
60 t.string "key"
60 t.string "key"
61 t.string "value_type"
61 t.string "value_type"
62 t.string "value"
62 t.string "value"
63 - t.datetime "created_at", null: false
63 + t.datetime "created_at"
64 - t.datetime "updated_at", null: false
64 + t.datetime "updated_at"
65 t.text "description"
65 t.text "description"
66 end
66 end
67
67
68 - create_table "grader_processes", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
68 + create_table "grader_processes", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
69 t.string "host"
69 t.string "host"
70 t.integer "pid"
70 t.integer "pid"
71 t.string "mode"
71 t.string "mode"
72 t.boolean "active"
72 t.boolean "active"
73 - t.datetime "created_at", null: false
73 + t.datetime "created_at"
74 - t.datetime "updated_at", null: false
74 + t.datetime "updated_at"
75 t.integer "task_id"
75 t.integer "task_id"
76 t.string "task_type"
76 t.string "task_type"
77 t.boolean "terminated"
77 t.boolean "terminated"
78 - t.index ["host", "pid"], name: "index_grader_processes_on_ip_and_pid"
78 + t.index ["host", "pid"], name: "index_grader_processes_on_host_and_pid"
79 end
79 end
80
80
81 - create_table "groups", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
81 + create_table "groups", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
82 t.string "name"
82 t.string "name"
83 t.string "description"
83 t.string "description"
84 t.boolean "enabled", default: true
84 t.boolean "enabled", default: true
85 end
85 end
86
86
87 - create_table "groups_problems", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
87 + create_table "groups_problems", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
88 t.integer "problem_id", null: false
88 t.integer "problem_id", null: false
89 t.integer "group_id", null: false
89 t.integer "group_id", null: false
90 t.index ["group_id", "problem_id"], name: "index_groups_problems_on_group_id_and_problem_id"
90 t.index ["group_id", "problem_id"], name: "index_groups_problems_on_group_id_and_problem_id"
91 end
91 end
92
92
93 - create_table "groups_users", options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
93 + create_table "groups_users", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
94 t.integer "group_id", null: false
94 t.integer "group_id", null: false
95 t.integer "user_id", null: false
95 t.integer "user_id", null: false
96 t.index ["user_id", "group_id"], name: "index_groups_users_on_user_id_and_group_id"
96 t.index ["user_id", "group_id"], name: "index_groups_users_on_user_id_and_group_id"
97 end
97 end
98
98
99 - create_table "heart_beats", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
99 + create_table "heart_beats", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
100 t.integer "user_id"
100 t.integer "user_id"
101 t.string "ip_address"
101 t.string "ip_address"
102 - t.datetime "created_at", null: false
102 + t.datetime "created_at"
103 - t.datetime "updated_at", null: false
103 + t.datetime "updated_at"
104 t.string "status"
104 t.string "status"
105 t.index ["updated_at"], name: "index_heart_beats_on_updated_at"
105 t.index ["updated_at"], name: "index_heart_beats_on_updated_at"
106 end
106 end
107
107
108 - create_table "languages", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
108 + create_table "languages", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
109 t.string "name", limit: 10
109 t.string "name", limit: 10
110 t.string "pretty_name"
110 t.string "pretty_name"
111 t.string "ext", limit: 10
111 t.string "ext", limit: 10
112 t.string "common_ext"
112 t.string "common_ext"
113 end
113 end
114
114
115 - create_table "logins", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
115 + create_table "logins", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
116 t.integer "user_id"
116 t.integer "user_id"
117 t.string "ip_address"
117 t.string "ip_address"
118 - t.datetime "created_at", null: false
118 + t.datetime "created_at"
119 - t.datetime "updated_at", null: false
119 + t.datetime "updated_at"
120 t.index ["user_id"], name: "index_logins_on_user_id"
120 t.index ["user_id"], name: "index_logins_on_user_id"
121 end
121 end
122
122
123 - create_table "messages", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
123 + create_table "messages", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
124 t.integer "sender_id"
124 t.integer "sender_id"
125 t.integer "receiver_id"
125 t.integer "receiver_id"
126 t.integer "replying_message_id"
126 t.integer "replying_message_id"
127 t.text "body"
127 t.text "body"
128 t.boolean "replied"
128 t.boolean "replied"
129 - t.datetime "created_at", null: false
129 + t.datetime "created_at"
130 - t.datetime "updated_at", null: false
130 + t.datetime "updated_at"
131 end
131 end
132
132
133 - create_table "problems", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
133 + create_table "problems", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
134 t.string "name", limit: 30
134 t.string "name", limit: 30
135 t.string "full_name"
135 t.string "full_name"
136 t.integer "full_score"
136 t.integer "full_score"
137 t.date "date_added"
137 t.date "date_added"
138 t.boolean "available"
138 t.boolean "available"
139 t.string "url"
139 t.string "url"
@@ -141,68 +141,68
141 t.boolean "test_allowed"
141 t.boolean "test_allowed"
142 t.boolean "output_only"
142 t.boolean "output_only"
143 t.string "description_filename"
143 t.string "description_filename"
144 t.boolean "view_testcase"
144 t.boolean "view_testcase"
145 end
145 end
146
146
147 - create_table "problems_tags", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
147 + create_table "problems_tags", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
148 t.integer "problem_id"
148 t.integer "problem_id"
149 t.integer "tag_id"
149 t.integer "tag_id"
150 t.index ["problem_id", "tag_id"], name: "index_problems_tags_on_problem_id_and_tag_id", unique: true
150 t.index ["problem_id", "tag_id"], name: "index_problems_tags_on_problem_id_and_tag_id", unique: true
151 t.index ["problem_id"], name: "index_problems_tags_on_problem_id"
151 t.index ["problem_id"], name: "index_problems_tags_on_problem_id"
152 t.index ["tag_id"], name: "index_problems_tags_on_tag_id"
152 t.index ["tag_id"], name: "index_problems_tags_on_tag_id"
153 end
153 end
154
154
155 - create_table "rights", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
155 + create_table "rights", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
156 t.string "name"
156 t.string "name"
157 t.string "controller"
157 t.string "controller"
158 t.string "action"
158 t.string "action"
159 end
159 end
160
160
161 - create_table "rights_roles", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
161 + create_table "rights_roles", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
162 t.integer "right_id"
162 t.integer "right_id"
163 t.integer "role_id"
163 t.integer "role_id"
164 t.index ["role_id"], name: "index_rights_roles_on_role_id"
164 t.index ["role_id"], name: "index_rights_roles_on_role_id"
165 end
165 end
166
166
167 - create_table "roles", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
167 + create_table "roles", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
168 t.string "name"
168 t.string "name"
169 end
169 end
170
170
171 - create_table "roles_users", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
171 + create_table "roles_users", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
172 t.integer "role_id"
172 t.integer "role_id"
173 t.integer "user_id"
173 t.integer "user_id"
174 t.index ["user_id"], name: "index_roles_users_on_user_id"
174 t.index ["user_id"], name: "index_roles_users_on_user_id"
175 end
175 end
176
176
177 - create_table "sessions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
177 + create_table "sessions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
178 t.string "session_id"
178 t.string "session_id"
179 t.text "data"
179 t.text "data"
180 t.datetime "updated_at"
180 t.datetime "updated_at"
181 t.index ["session_id"], name: "index_sessions_on_session_id"
181 t.index ["session_id"], name: "index_sessions_on_session_id"
182 t.index ["updated_at"], name: "index_sessions_on_updated_at"
182 t.index ["updated_at"], name: "index_sessions_on_updated_at"
183 end
183 end
184
184
185 - create_table "sites", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
185 + create_table "sites", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
186 t.string "name"
186 t.string "name"
187 t.boolean "started"
187 t.boolean "started"
188 t.datetime "start_time"
188 t.datetime "start_time"
189 - t.datetime "created_at", null: false
189 + t.datetime "created_at"
190 - t.datetime "updated_at", null: false
190 + t.datetime "updated_at"
191 t.integer "country_id"
191 t.integer "country_id"
192 t.string "password"
192 t.string "password"
193 end
193 end
194
194
195 - create_table "submission_view_logs", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
195 + create_table "submission_view_logs", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
196 t.integer "user_id"
196 t.integer "user_id"
197 t.integer "submission_id"
197 t.integer "submission_id"
198 - t.datetime "created_at", null: false
198 + t.datetime "created_at"
199 - t.datetime "updated_at", null: false
199 + t.datetime "updated_at"
200 end
200 end
201
201
202 - create_table "submissions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
202 + create_table "submissions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
203 t.integer "user_id"
203 t.integer "user_id"
204 t.integer "problem_id"
204 t.integer "problem_id"
205 t.integer "language_id"
205 t.integer "language_id"
206 t.text "source", limit: 16777215
206 t.text "source", limit: 16777215
207 t.binary "binary"
207 t.binary "binary"
208 t.datetime "submitted_at"
208 t.datetime "submitted_at"
@@ -219,93 +219,94
219 t.string "ip_address"
219 t.string "ip_address"
220 t.index ["submitted_at"], name: "index_submissions_on_submitted_at"
220 t.index ["submitted_at"], name: "index_submissions_on_submitted_at"
221 t.index ["user_id", "problem_id", "number"], name: "index_submissions_on_user_id_and_problem_id_and_number", unique: true
221 t.index ["user_id", "problem_id", "number"], name: "index_submissions_on_user_id_and_problem_id_and_number", unique: true
222 t.index ["user_id", "problem_id"], name: "index_submissions_on_user_id_and_problem_id"
222 t.index ["user_id", "problem_id"], name: "index_submissions_on_user_id_and_problem_id"
223 end
223 end
224
224
225 - create_table "tags", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
225 + create_table "tags", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
226 t.string "name", null: false
226 t.string "name", null: false
227 t.text "description"
227 t.text "description"
228 t.boolean "public"
228 t.boolean "public"
229 t.datetime "created_at", null: false
229 t.datetime "created_at", null: false
230 t.datetime "updated_at", null: false
230 t.datetime "updated_at", null: false
231 end
231 end
232
232
233 - create_table "tasks", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
233 + create_table "tasks", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
234 t.integer "submission_id"
234 t.integer "submission_id"
235 t.datetime "created_at"
235 t.datetime "created_at"
236 t.integer "status"
236 t.integer "status"
237 t.datetime "updated_at"
237 t.datetime "updated_at"
238 t.index ["submission_id"], name: "index_tasks_on_submission_id"
238 t.index ["submission_id"], name: "index_tasks_on_submission_id"
239 end
239 end
240
240
241 - create_table "test_pairs", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
241 + create_table "test_pairs", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
242 t.integer "problem_id"
242 t.integer "problem_id"
243 t.text "input", limit: 16777215
243 t.text "input", limit: 16777215
244 t.text "solution", limit: 16777215
244 t.text "solution", limit: 16777215
245 - t.datetime "created_at", null: false
245 + t.datetime "created_at"
246 - t.datetime "updated_at", null: false
246 + t.datetime "updated_at"
247 end
247 end
248
248
249 - create_table "test_requests", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
249 + create_table "test_requests", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
250 t.integer "user_id"
250 t.integer "user_id"
251 t.integer "problem_id"
251 t.integer "problem_id"
252 t.integer "submission_id"
252 t.integer "submission_id"
253 t.string "input_file_name"
253 t.string "input_file_name"
254 t.string "output_file_name"
254 t.string "output_file_name"
255 t.string "running_stat"
255 t.string "running_stat"
256 t.integer "status"
256 t.integer "status"
257 - t.datetime "updated_at", null: false
257 + t.datetime "updated_at"
258 t.datetime "submitted_at"
258 t.datetime "submitted_at"
259 t.datetime "compiled_at"
259 t.datetime "compiled_at"
260 t.text "compiler_message"
260 t.text "compiler_message"
261 t.datetime "graded_at"
261 t.datetime "graded_at"
262 t.string "grader_comment"
262 t.string "grader_comment"
263 - t.datetime "created_at", null: false
263 + t.datetime "created_at"
264 t.float "running_time"
264 t.float "running_time"
265 t.string "exit_status"
265 t.string "exit_status"
266 t.integer "memory_usage"
266 t.integer "memory_usage"
267 t.index ["user_id", "problem_id"], name: "index_test_requests_on_user_id_and_problem_id"
267 t.index ["user_id", "problem_id"], name: "index_test_requests_on_user_id_and_problem_id"
268 end
268 end
269
269
270 - create_table "testcases", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
270 + create_table "testcases", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
271 t.integer "problem_id"
271 t.integer "problem_id"
272 t.integer "num"
272 t.integer "num"
273 t.integer "group"
273 t.integer "group"
274 t.integer "score"
274 t.integer "score"
275 t.text "input", limit: 4294967295
275 t.text "input", limit: 4294967295
276 t.text "sol", limit: 4294967295
276 t.text "sol", limit: 4294967295
277 t.datetime "created_at"
277 t.datetime "created_at"
278 t.datetime "updated_at"
278 t.datetime "updated_at"
279 t.index ["problem_id"], name: "index_testcases_on_problem_id"
279 t.index ["problem_id"], name: "index_testcases_on_problem_id"
280 end
280 end
281
281
282 - create_table "user_contest_stats", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
282 + create_table "user_contest_stats", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
283 t.integer "user_id"
283 t.integer "user_id"
284 - t.datetime "started_at"
284 + t.timestamp "started_at"
285 - t.datetime "created_at", null: false
285 + t.datetime "created_at"
286 - t.datetime "updated_at", null: false
286 + t.datetime "updated_at"
287 t.boolean "forced_logout"
287 t.boolean "forced_logout"
288 end
288 end
289
289
290 - create_table "users", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
290 + create_table "users", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
291 t.string "login", limit: 50
291 t.string "login", limit: 50
292 t.string "full_name"
292 t.string "full_name"
293 t.string "hashed_password"
293 t.string "hashed_password"
294 t.string "salt", limit: 5
294 t.string "salt", limit: 5
295 t.string "alias"
295 t.string "alias"
296 t.string "email"
296 t.string "email"
297 t.integer "site_id"
297 t.integer "site_id"
298 t.integer "country_id"
298 t.integer "country_id"
299 t.boolean "activated", default: false
299 t.boolean "activated", default: false
300 t.datetime "created_at"
300 t.datetime "created_at"
301 t.datetime "updated_at"
301 t.datetime "updated_at"
302 + t.string "section"
302 t.boolean "enabled", default: true
303 t.boolean "enabled", default: true
303 t.string "remark"
304 t.string "remark"
304 t.string "last_ip"
305 t.string "last_ip"
305 - t.string "section"
306 + t.integer "default_language"
306 t.index ["login"], name: "index_users_on_login", unique: true
307 t.index ["login"], name: "index_users_on_login", unique: true
307 end
308 end
308
309
309 add_foreign_key "problems_tags", "problems"
310 add_foreign_key "problems_tags", "problems"
310 add_foreign_key "problems_tags", "tags"
311 add_foreign_key "problems_tags", "tags"
311 end
312 end
You need to be logged in to leave comments. Login now