DictionaryModels.swift 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import Foundation
  2. struct DictionaryEntry: Identifiable, Equatable {
  3. let id = UUID()
  4. let word: String
  5. let phonetic: String?
  6. let audioURL: URL?
  7. let meanings: [DictionaryMeaning]
  8. }
  9. struct DictionaryMeaning: Identifiable, Equatable {
  10. let id = UUID()
  11. let partOfSpeech: String
  12. let definitions: [DictionaryDefinition]
  13. let synonyms: [String]
  14. let antonyms: [String]
  15. }
  16. struct DictionaryDefinition: Identifiable, Equatable {
  17. let id = UUID()
  18. let text: String
  19. let example: String?
  20. }
  21. enum DictionaryServiceError: LocalizedError {
  22. case missingAPIKey
  23. case emptyInput
  24. case wordNotFound
  25. case invalidResponse
  26. case networkError(String)
  27. var errorDescription: String? {
  28. switch self {
  29. case .missingAPIKey:
  30. UserFacingError.generic
  31. case .emptyInput:
  32. "Enter a word to look up."
  33. case .wordNotFound:
  34. "No definition found for that word."
  35. case .invalidResponse:
  36. UserFacingError.generic
  37. case .networkError(let message):
  38. UserFacingError.sanitized(message) ?? UserFacingError.generic
  39. }
  40. }
  41. }