Skip to content

Commit 28a9c7a

Browse files
authored
Text exercises: **Breaking** Add participation in text exercises (#39)
* **Breaking**: Fix typo * Encode submissionExerciseType 14:29:19.089 ❤️ ERROR EditTextExerciseViewModel.submit():86 - jhipsterError( error: Common.UserFacingError( title: "Bad Request", status: Optional(400), detail: Optional("JSON parse error: Could not resolve subtype of [simple type, class de.tum.in.www1.artemis.domain.TextSubmission]: missing type id property \'submissionExerciseType\'"), message: Optional("error.http.400"), path: Optional("/api/exercises/137/text-submissions"), code: nil, type: Optional(https://www.jhipster.tech/problem/problem-with-message)))
1 parent 1ca62a4 commit 28a9c7a

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

Sources/SharedModels/Exercise/Participation/BaseParticipation.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public enum Participation: Identifiable, Codable {
5959
}
6060

6161
public enum InitializationState: String, Codable {
62-
case uninitalized = "UNINITIALIZED"
62+
case uninitialized = "UNINITIALIZED"
6363
case repoCopied = "REPO_COPIED"
6464
case repoConfigured = "REPO_CONFIGURED"
6565
case buildPlanCopied = "BUILD_PLAN_COPIED"

Sources/SharedModels/Exercise/Submission/TextSubmission.swift

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,48 @@ public struct TextSubmission: BaseSubmission {
2525
public var blocks: [TextBlock]?
2626
}
2727

28+
public extension TextSubmission {
29+
private enum CodingKeys: String, CodingKey {
30+
case type = "submissionExerciseType"
31+
case id
32+
case submitted
33+
case submissionDate
34+
case exampleSubmission
35+
case durationInMinutes
36+
case results
37+
case participation
38+
case text
39+
case blocks
40+
}
41+
42+
init(from decoder: Decoder) throws {
43+
let container = try decoder.container(keyedBy: CodingKeys.self)
44+
id = try container.decodeIfPresent(Int.self, forKey: .id)
45+
submitted = try container.decodeIfPresent(Bool.self, forKey: .submitted)
46+
submissionDate = try container.decodeIfPresent(Date.self, forKey: .submissionDate)
47+
exampleSubmission = try container.decodeIfPresent(Bool.self, forKey: .exampleSubmission)
48+
durationInMinutes = try container.decodeIfPresent(Double.self, forKey: .durationInMinutes)
49+
results = try container.decodeIfPresent([Result?].self, forKey: .results)
50+
participation = try container.decodeIfPresent(Participation.self, forKey: .participation)
51+
text = try container.decodeIfPresent(String.self, forKey: .text)
52+
blocks = try container.decodeIfPresent([TextBlock].self, forKey: .blocks)
53+
}
54+
55+
public func encode(to encoder: Encoder) throws {
56+
var container = encoder.container(keyedBy: CodingKeys.self)
57+
try container.encode(Self.type, forKey: .type)
58+
try container.encode(id, forKey: .id)
59+
try container.encode(submitted, forKey: .submitted)
60+
try container.encode(submissionDate, forKey: .submissionDate)
61+
try container.encode(exampleSubmission, forKey: .exampleSubmission)
62+
try container.encode(durationInMinutes, forKey: .durationInMinutes)
63+
try container.encode(results, forKey: .results)
64+
try container.encode(participation, forKey: .participation)
65+
try container.encode(text, forKey: .text)
66+
try container.encode(blocks, forKey: .blocks)
67+
}
68+
}
69+
2870
public struct TextBlock: Codable {
2971
public var id: String?
3072
public var text: String?

0 commit comments

Comments
 (0)