Skip to content

Commit 7dfcd19

Browse files
committed
refactor word model
1 parent 72a92d1 commit 7dfcd19

File tree

1 file changed

+30
-89
lines changed

1 file changed

+30
-89
lines changed

Sources/NWSharedModels/Word/WordExtra.swift

Lines changed: 30 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -85,40 +85,6 @@ public struct WordGetObjectWithUser: Codable {
8585
public var updatedAt: Date?
8686
}
8787

88-
public struct WordGetObject: Codable {
89-
90-
public var _id: ObjectId
91-
public var icon: String?
92-
public let englishWord: String
93-
public let englishDefinition: String
94-
public let englishImageLink: String?
95-
public let englishVideoLink: String?
96-
97-
public let russianWord: String?
98-
public let russianDefinition: String?
99-
public let russianImageLink: String?
100-
public let russianVideoLink: String?
101-
102-
public let banglaWord: String?
103-
public let banglaDefinition: String?
104-
public let banglaImageLink: String?
105-
public let banglaVideoLink: String?
106-
107-
public var spanishWord: String?
108-
public var spanishDefinition: String?
109-
public var spanishImageLink: String?
110-
public var spanishVideoLink: String?
111-
112-
public let isReadFromNotification: Bool
113-
public let isReadFromView: Bool
114-
public let user: UserGetPublicObject
115-
116-
public let level: WordLevel
117-
118-
public var createdAt: Date?
119-
public var updatedAt: Date?
120-
}
121-
12288
public struct WordCreateObject: Codable {
12389
public var icon: String?
12490
public var englishWord: String
@@ -183,7 +149,7 @@ public struct WordEditObject: Codable {
183149
public var wordLevelAllCases = WordLevel.allCases
184150
}
185151

186-
extension Word {
152+
extension WordGetObject {
187153
public var englishTitle: String {
188154
if let iconR = icon {
189155
return iconR + " " + englishWord
@@ -261,16 +227,16 @@ extension Word {
261227
}
262228
}
263229

264-
public struct Word: Equatable, Identifiable, Codable {
230+
public struct WordGetObject: Equatable, Identifiable, Codable {
265231

266232
public var id: String
267233
public let icon: String?
268234

269235
// English
270-
public let englishWord: String
271-
public let englishDefinition: String
272-
public let englishImageLink: String?
273-
public let englishVideoLink: String?
236+
public var englishWord: String
237+
public var englishDefinition: String
238+
public var englishImageLink: String?
239+
public var englishVideoLink: String?
274240

275241
// Russian
276242
public var russianWord: String?
@@ -296,10 +262,13 @@ public struct Word: Equatable, Identifiable, Codable {
296262
public var level: WordLevel
297263
public var user: UserGetPublicObject?
298264

265+
public var isActive: Bool = false
266+
public var isComplete: Bool = false
267+
299268
public var createdAt: Date?
300269
public var updatedAt: Date?
301270

302-
enum CodingKeys: String, CodingKey {
271+
public enum CodingKeys: String, CodingKey {
303272
case id = "_id"
304273
case icon
305274

@@ -313,6 +282,8 @@ public struct Word: Equatable, Identifiable, Codable {
313282

314283
case isReadFromView, level, isReadFromNotification, user
315284

285+
case isActive, isComplete
286+
316287
case createdAt, updatedAt
317288
}
318289

@@ -348,6 +319,9 @@ public struct Word: Equatable, Identifiable, Codable {
348319
level: WordLevel = .beginner,
349320
user: UserGetPublicObject? = nil,
350321

322+
isActive: Bool = false,
323+
isComplete: Bool = false,
324+
351325
createdAt: Date? = nil,
352326
updatedAt: Date? = nil
353327

@@ -384,50 +358,17 @@ public struct Word: Equatable, Identifiable, Codable {
384358
self.level = level
385359
self.user = user
386360

361+
self.isActive = isActive
362+
self.isComplete = isComplete
363+
387364
self.createdAt = createdAt
388365
self.updatedAt = updatedAt
389366
}
390367

391-
public init(_ word: Word) {
392-
self.id = word.id
393-
self.icon = word.icon
394-
395-
// English
396-
self.englishWord = word.englishWord
397-
self.englishDefinition = word.englishDefinition
398-
self.englishImageLink = word.englishImageLink
399-
self.englishVideoLink = word.englishVideoLink
400-
401-
// Russian
402-
self.russianWord = word.russianWord
403-
self.russianDefinition = word.russianDefinition
404-
self.russianImageLink = word.russianImageLink
405-
self.russianVideoLink = word.russianVideoLink
406-
407-
// Bangla
408-
self.banglaWord = word.banglaWord
409-
self.banglaDefinition = word.banglaDefinition
410-
self.banglaImageLink = word.banglaImageLink
411-
self.banglaVideoLink = word.banglaVideoLink
412-
413-
// Spanish
414-
self.spanishWord = word.spanishWord
415-
self.spanishDefinition = word.spanishDefinition
416-
self.spanishImageLink = word.spanishImageLink
417-
self.spanishVideoLink = word.spanishVideoLink
418-
419-
self.isReadFromNotification = word.isReadFromNotification
420-
self.isReadFromView = word.isReadFromView
421-
self.level = word.level
422-
self.user = word.user
423-
424-
self.createdAt = word.createdAt
425-
self.updatedAt = word.updatedAt
426-
}
427368
}
428369

429-
extension Word: Hashable {
430-
public static func == (lhs: Word, rhs: Word) -> Bool {
370+
extension WordGetObject: Hashable {
371+
public static func == (lhs: WordGetObject, rhs: WordGetObject) -> Bool {
431372
return lhs.id == rhs.id && lhs.id == rhs.id
432373
}
433374

@@ -436,7 +377,7 @@ extension Word: Hashable {
436377
}
437378
}
438379

439-
extension Word {
380+
extension WordGetObject {
440381
public static let demo: Self = .init(
441382
id: UUID().uuidString,
442383
englishWord: "Apple",
@@ -454,16 +395,16 @@ extension Word {
454395
public struct DayWords: Codable, Equatable, Identifiable {
455396
public var id: String { return "\(dayNumber)" }
456397
public var dayNumber: Int
457-
public var words: [Word] = []
398+
public var words: [WordGetObject] = []
458399

459-
public init(dayNumber: Int, words: [Word] = []) {
400+
public init(dayNumber: Int, words: [WordGetObject] = []) {
460401
self.dayNumber = dayNumber
461402
self.words = words
462403
}
463404
}
464405

465406
extension DayWords {
466-
public static let happyPath: DayWords = .init(dayNumber: 117, words: Word.mockDatas)
407+
public static let happyPath: DayWords = .init(dayNumber: 117, words: WordGetObject.mockDatas)
467408
}
468409

469410
public struct User: Codable, Equatable {
@@ -474,10 +415,10 @@ extension User {
474415
public static var demo: User = .init(fullName: "Saroar", language: "ru", id: "624c31898addf0419b877915", role: "superAdmin")
475416
}
476417

477-
extension Word {
478-
public static let mockEmpty: Word = .init(id: "", englishWord: "", englishDefinition: "")
479-
public static let mockDatas: [Word] = [
480-
Word(
418+
extension WordGetObject {
419+
public static let mockEmpty: WordGetObject = .init(id: "", englishWord: "", englishDefinition: "")
420+
public static let mockDatas: [WordGetObject] = [
421+
WordGetObject(
481422
id: "D6168009-CEA2-45FC-874B-1426F7FB1005", icon: "🍏", englishWord: "Apple", englishDefinition: "AppleAppleAppleAppleAppleApple", englishImageLink: nil, englishVideoLink: nil,
482423

483424
russianWord: "Яблока", russianDefinition: "ЯблокаЯблокаЯблокаЯблокаЯблокаЯблока", russianImageLink: nil, russianVideoLink: nil,
@@ -487,7 +428,7 @@ extension Word {
487428
isReadFromNotification: false, isReadFromView: false, level: .beginner, user: nil, createdAt: nil, updatedAt: nil
488429
),
489430

490-
Word(
431+
WordGetObject(
491432
id: "610800E5-A59C-44F5-ACC3-6809F39B42D2", icon: "🧰", englishWord: "Able", englishDefinition: "AbleAbleAbleAbleAbleAble", englishImageLink: nil, englishVideoLink: nil,
492433

493434
russianWord: "Способный", russianDefinition: "СпособныйСпособныйСпособныйСпособныйСпособный", russianImageLink: nil, russianVideoLink: nil,
@@ -497,7 +438,7 @@ extension Word {
497438
isReadFromNotification: false, isReadFromView: false, level: .beginner, user: nil, createdAt: nil, updatedAt: nil
498439
),
499440

500-
Word(
441+
WordGetObject(
501442
id: "FC6F24EF-0DF7-4551-97AA-64E0340860D5", icon: "💨", englishWord: "Air", englishDefinition: "Air Air Air Air Air Air", englishImageLink: nil, englishVideoLink: nil,
502443

503444
russianWord: "Воздух", russianDefinition: "Воздух Воздух Воздух Воздух", russianImageLink: nil, russianVideoLink: nil,

0 commit comments

Comments
 (0)