Description:
resize submissions.source field from "TEXT" to "MEDIUMTEXT"
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r712:04cb04cf3cfa - - 2 files changed: 29 inserted, 29 deleted

@@ -1,35 +1,35
1 1 class Submission < ActiveRecord::Base
2 2
3 3 belongs_to :language
4 4 belongs_to :problem
5 5 belongs_to :user
6 6
7 7 before_validation :assign_problem
8 8 before_validation :assign_language
9 9
10 10 validates_presence_of :source
11 - validates_length_of :source, :maximum => 100_000, :allow_blank => true, :message => 'too long'
11 + validates_length_of :source, :maximum => 100_000, :allow_blank => true, :message => 'code too long, the limit is 100,000 bytes'
12 12 validates_length_of :source, :minimum => 1, :allow_blank => true, :message => 'too short'
13 13 validate :must_have_valid_problem
14 14 validate :must_specify_language
15 15
16 16 has_one :task
17 17
18 18 before_save :assign_latest_number_if_new_recond
19 19
20 20 def self.find_last_by_user_and_problem(user_id, problem_id)
21 21 where("user_id = ? AND problem_id = ?",user_id,problem_id).last
22 22 end
23 23
24 24 def self.find_all_last_by_problem(problem_id)
25 25 # need to put in SQL command, maybe there's a better way
26 26 Submission.includes(:user).find_by_sql("SELECT * FROM submissions " +
27 27 "WHERE id = " +
28 28 "(SELECT MAX(id) FROM submissions AS subs " +
29 29 "WHERE subs.user_id = submissions.user_id AND " +
30 30 "problem_id = " + problem_id.to_s + " " +
31 31 "GROUP BY user_id) " +
32 32 "ORDER BY user_id")
33 33 end
34 34
35 35 def self.find_in_range_by_user_and_problem(user_id, problem_id,since_id,until_id)
@@ -1,89 +1,89
1 1 # encoding: UTF-8
2 2 # This file is auto-generated from the current state of the database. Instead
3 3 # of editing this file, please use the migrations feature of Active Record to
4 4 # incrementally modify your database, and then regenerate this schema definition.
5 5 #
6 6 # Note that this schema.rb definition is the authoritative source for your
7 7 # database schema. If you need to create the application database on another
8 8 # system, you should be using db:schema:load, not running all the migrations
9 9 # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10 10 # you'll amass, the slower it'll run and the greater likelihood for issues).
11 11 #
12 12 # It's strongly recommended that you check this file into your version control system.
13 13
14 - ActiveRecord::Schema.define(version: 20170914150742) do
14 + ActiveRecord::Schema.define(version: 20180612102327) do
15 15
16 16 create_table "announcements", force: :cascade do |t|
17 17 t.string "author", limit: 255
18 - t.text "body", limit: 16777215
18 + t.text "body", limit: 65535
19 19 t.boolean "published"
20 - t.datetime "created_at", null: false
21 - t.datetime "updated_at", null: false
22 - t.boolean "frontpage", default: false
23 - t.boolean "contest_only", default: false
20 + t.datetime "created_at", null: false
21 + t.datetime "updated_at", null: false
22 + t.boolean "frontpage", default: false
23 + t.boolean "contest_only", default: false
24 24 t.string "title", limit: 255
25 25 t.string "notes", limit: 255
26 26 end
27 27
28 28 create_table "contests", force: :cascade do |t|
29 29 t.string "title", limit: 255
30 30 t.boolean "enabled"
31 31 t.datetime "created_at", null: false
32 32 t.datetime "updated_at", null: false
33 33 t.string "name", limit: 255
34 34 end
35 35
36 36 create_table "contests_problems", id: false, force: :cascade do |t|
37 37 t.integer "contest_id", limit: 4
38 38 t.integer "problem_id", limit: 4
39 39 end
40 40
41 41 create_table "contests_users", id: false, force: :cascade do |t|
42 42 t.integer "contest_id", limit: 4
43 43 t.integer "user_id", limit: 4
44 44 end
45 45
46 46 create_table "countries", force: :cascade do |t|
47 47 t.string "name", limit: 255
48 48 t.datetime "created_at", null: false
49 49 t.datetime "updated_at", null: false
50 50 end
51 51
52 52 create_table "descriptions", force: :cascade do |t|
53 - t.text "body", limit: 16777215
53 + t.text "body", limit: 65535
54 54 t.boolean "markdowned"
55 - t.datetime "created_at", null: false
56 - t.datetime "updated_at", null: false
55 + t.datetime "created_at", null: false
56 + t.datetime "updated_at", null: false
57 57 end
58 58
59 59 create_table "grader_configurations", force: :cascade do |t|
60 60 t.string "key", limit: 255
61 61 t.string "value_type", limit: 255
62 62 t.string "value", limit: 255
63 - t.datetime "created_at", null: false
64 - t.datetime "updated_at", null: false
65 - t.text "description", limit: 16777215
63 + t.datetime "created_at", null: false
64 + t.datetime "updated_at", null: false
65 + t.text "description", limit: 65535
66 66 end
67 67
68 68 create_table "grader_processes", force: :cascade do |t|
69 69 t.string "host", limit: 255
70 70 t.integer "pid", limit: 4
71 71 t.string "mode", limit: 255
72 72 t.boolean "active"
73 73 t.datetime "created_at", null: false
74 74 t.datetime "updated_at", null: false
75 75 t.integer "task_id", limit: 4
76 76 t.string "task_type", limit: 255
77 77 t.boolean "terminated"
78 78 end
79 79
80 80 add_index "grader_processes", ["host", "pid"], name: "index_grader_processes_on_ip_and_pid", using: :btree
81 81
82 82 create_table "groups", force: :cascade do |t|
83 83 t.string "name", limit: 255
84 84 t.string "description", limit: 255
85 85 end
86 86
87 87 create_table "groups_problems", id: false, force: :cascade do |t|
88 88 t.integer "problem_id", limit: 4, null: false
89 89 t.integer "group_id", limit: 4, null: false
@@ -105,52 +105,52
105 105 t.datetime "updated_at", null: false
106 106 t.string "status", limit: 255
107 107 end
108 108
109 109 add_index "heart_beats", ["updated_at"], name: "index_heart_beats_on_updated_at", using: :btree
110 110
111 111 create_table "languages", force: :cascade do |t|
112 112 t.string "name", limit: 10
113 113 t.string "pretty_name", limit: 255
114 114 t.string "ext", limit: 10
115 115 t.string "common_ext", limit: 255
116 116 end
117 117
118 118 create_table "logins", force: :cascade do |t|
119 119 t.integer "user_id", limit: 4
120 120 t.string "ip_address", limit: 255
121 121 t.datetime "created_at", null: false
122 122 t.datetime "updated_at", null: false
123 123 end
124 124
125 125 create_table "messages", force: :cascade do |t|
126 126 t.integer "sender_id", limit: 4
127 127 t.integer "receiver_id", limit: 4
128 128 t.integer "replying_message_id", limit: 4
129 - t.text "body", limit: 16777215
129 + t.text "body", limit: 65535
130 130 t.boolean "replied"
131 - t.datetime "created_at", null: false
132 - t.datetime "updated_at", null: false
131 + t.datetime "created_at", null: false
132 + t.datetime "updated_at", null: false
133 133 end
134 134
135 135 create_table "problems", force: :cascade do |t|
136 136 t.string "name", limit: 30
137 137 t.string "full_name", limit: 255
138 138 t.integer "full_score", limit: 4
139 139 t.date "date_added"
140 140 t.boolean "available"
141 141 t.string "url", limit: 255
142 142 t.integer "description_id", limit: 4
143 143 t.boolean "test_allowed"
144 144 t.boolean "output_only"
145 145 t.string "description_filename", limit: 255
146 146 t.boolean "view_testcase"
147 147 end
148 148
149 149 create_table "problems_tags", force: :cascade do |t|
150 150 t.integer "problem_id", limit: 4
151 151 t.integer "tag_id", limit: 4
152 152 end
153 153
154 154 add_index "problems_tags", ["problem_id", "tag_id"], name: "index_problems_tags_on_problem_id_and_tag_id", unique: true, using: :btree
155 155 add_index "problems_tags", ["problem_id"], name: "index_problems_tags_on_problem_id", using: :btree
156 156 add_index "problems_tags", ["tag_id"], name: "index_problems_tags_on_tag_id", using: :btree
@@ -160,162 +160,162
160 160 t.string "controller", limit: 255
161 161 t.string "action", limit: 255
162 162 end
163 163
164 164 create_table "rights_roles", id: false, force: :cascade do |t|
165 165 t.integer "right_id", limit: 4
166 166 t.integer "role_id", limit: 4
167 167 end
168 168
169 169 add_index "rights_roles", ["role_id"], name: "index_rights_roles_on_role_id", using: :btree
170 170
171 171 create_table "roles", force: :cascade do |t|
172 172 t.string "name", limit: 255
173 173 end
174 174
175 175 create_table "roles_users", id: false, force: :cascade do |t|
176 176 t.integer "role_id", limit: 4
177 177 t.integer "user_id", limit: 4
178 178 end
179 179
180 180 add_index "roles_users", ["user_id"], name: "index_roles_users_on_user_id", using: :btree
181 181
182 182 create_table "sessions", force: :cascade do |t|
183 183 t.string "session_id", limit: 255
184 - t.text "data", limit: 16777215
184 + t.text "data", limit: 65535
185 185 t.datetime "updated_at"
186 186 end
187 187
188 188 add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", using: :btree
189 189 add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree
190 190
191 191 create_table "sites", force: :cascade do |t|
192 192 t.string "name", limit: 255
193 193 t.boolean "started"
194 194 t.datetime "start_time"
195 195 t.datetime "created_at", null: false
196 196 t.datetime "updated_at", null: false
197 197 t.integer "country_id", limit: 4
198 198 t.string "password", limit: 255
199 199 end
200 200
201 201 create_table "submission_view_logs", force: :cascade do |t|
202 202 t.integer "user_id", limit: 4
203 203 t.integer "submission_id", limit: 4
204 204 t.datetime "created_at", null: false
205 205 t.datetime "updated_at", null: false
206 206 end
207 207
208 208 create_table "submissions", force: :cascade do |t|
209 209 t.integer "user_id", limit: 4
210 210 t.integer "problem_id", limit: 4
211 211 t.integer "language_id", limit: 4
212 212 t.text "source", limit: 16777215
213 213 t.binary "binary", limit: 65535
214 214 t.datetime "submitted_at"
215 215 t.datetime "compiled_at"
216 - t.text "compiler_message", limit: 16777215
216 + t.text "compiler_message", limit: 65535
217 217 t.datetime "graded_at"
218 218 t.integer "points", limit: 4
219 - t.text "grader_comment", limit: 16777215
219 + t.text "grader_comment", limit: 65535
220 220 t.integer "number", limit: 4
221 221 t.string "source_filename", limit: 255
222 222 t.float "max_runtime", limit: 24
223 223 t.integer "peak_memory", limit: 4
224 224 t.integer "effective_code_length", limit: 4
225 225 t.string "ip_address", limit: 255
226 226 end
227 227
228 228 add_index "submissions", ["user_id", "problem_id", "number"], name: "index_submissions_on_user_id_and_problem_id_and_number", unique: true, using: :btree
229 229 add_index "submissions", ["user_id", "problem_id"], name: "index_submissions_on_user_id_and_problem_id", using: :btree
230 230
231 231 create_table "tags", force: :cascade do |t|
232 232 t.string "name", limit: 255, null: false
233 233 t.text "description", limit: 65535
234 234 t.boolean "public"
235 235 t.datetime "created_at", null: false
236 236 t.datetime "updated_at", null: false
237 237 end
238 238
239 239 create_table "tasks", force: :cascade do |t|
240 240 t.integer "submission_id", limit: 4
241 241 t.datetime "created_at"
242 242 t.integer "status", limit: 4
243 243 t.datetime "updated_at"
244 244 end
245 245
246 246 add_index "tasks", ["submission_id"], name: "index_tasks_on_submission_id", using: :btree
247 247
248 248 create_table "test_pairs", force: :cascade do |t|
249 249 t.integer "problem_id", limit: 4
250 - t.text "input", limit: 4294967295
251 - t.text "solution", limit: 4294967295
252 - t.datetime "created_at", null: false
253 - t.datetime "updated_at", null: false
250 + t.text "input", limit: 16777215
251 + t.text "solution", limit: 16777215
252 + t.datetime "created_at", null: false
253 + t.datetime "updated_at", null: false
254 254 end
255 255
256 256 create_table "test_requests", force: :cascade do |t|
257 257 t.integer "user_id", limit: 4
258 258 t.integer "problem_id", limit: 4
259 259 t.integer "submission_id", limit: 4
260 260 t.string "input_file_name", limit: 255
261 261 t.string "output_file_name", limit: 255
262 262 t.string "running_stat", limit: 255
263 263 t.integer "status", limit: 4
264 - t.datetime "updated_at", null: false
264 + t.datetime "updated_at", null: false
265 265 t.datetime "submitted_at"
266 266 t.datetime "compiled_at"
267 - t.text "compiler_message", limit: 16777215
267 + t.text "compiler_message", limit: 65535
268 268 t.datetime "graded_at"
269 269 t.string "grader_comment", limit: 255
270 - t.datetime "created_at", null: false
270 + t.datetime "created_at", null: false
271 271 t.float "running_time", limit: 24
272 272 t.string "exit_status", limit: 255
273 273 t.integer "memory_usage", limit: 4
274 274 end
275 275
276 276 add_index "test_requests", ["user_id", "problem_id"], name: "index_test_requests_on_user_id_and_problem_id", using: :btree
277 277
278 278 create_table "testcases", force: :cascade do |t|
279 279 t.integer "problem_id", limit: 4
280 280 t.integer "num", limit: 4
281 281 t.integer "group", limit: 4
282 282 t.integer "score", limit: 4
283 283 t.text "input", limit: 4294967295
284 284 t.text "sol", limit: 4294967295
285 - t.datetime "created_at", null: false
286 - t.datetime "updated_at", null: false
285 + t.datetime "created_at"
286 + t.datetime "updated_at"
287 287 end
288 288
289 289 add_index "testcases", ["problem_id"], name: "index_testcases_on_problem_id", using: :btree
290 290
291 291 create_table "user_contest_stats", force: :cascade do |t|
292 292 t.integer "user_id", limit: 4
293 293 t.datetime "started_at"
294 294 t.datetime "created_at", null: false
295 295 t.datetime "updated_at", null: false
296 296 t.boolean "forced_logout"
297 297 end
298 298
299 299 create_table "users", force: :cascade do |t|
300 300 t.string "login", limit: 50
301 301 t.string "full_name", limit: 255
302 302 t.string "hashed_password", limit: 255
303 303 t.string "salt", limit: 5
304 304 t.string "alias", limit: 255
305 305 t.string "email", limit: 255
306 306 t.integer "site_id", limit: 4
307 307 t.integer "country_id", limit: 4
308 308 t.boolean "activated", default: false
309 309 t.datetime "created_at"
310 310 t.datetime "updated_at"
311 - t.string "section", limit: 255
312 311 t.boolean "enabled", default: true
313 312 t.string "remark", limit: 255
314 313 t.string "last_ip", limit: 255
314 + t.string "section", limit: 255
315 315 end
316 316
317 317 add_index "users", ["login"], name: "index_users_on_login", unique: true, using: :btree
318 318
319 319 add_foreign_key "problems_tags", "problems"
320 320 add_foreign_key "problems_tags", "tags"
321 321 end
You need to be logged in to leave comments. Login now