49 lines
1.3 KiB
Swift
49 lines
1.3 KiB
Swift
import Foundation
|
|
|
|
enum HabitFrequency: String, Codable {
|
|
case daily, weekly, monthly
|
|
var displayName: String {
|
|
switch self {
|
|
case .daily: return "Ежедневно"
|
|
case .weekly: return "Еженедельно"
|
|
case .monthly: return "Ежемесячно"
|
|
}
|
|
}
|
|
}
|
|
|
|
struct Habit: Codable, Identifiable {
|
|
let id: Int
|
|
var name: String
|
|
var description: String?
|
|
var icon: String?
|
|
var color: String?
|
|
var frequency: HabitFrequency
|
|
var reminderTime: String?
|
|
var targetDays: [Int]?
|
|
var targetCount: Int?
|
|
var currentStreak: Int?
|
|
var longestStreak: Int?
|
|
var completedToday: Bool?
|
|
var totalCompleted: Int?
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case id, name, description, icon, color, frequency
|
|
case reminderTime = "reminder_time"
|
|
case targetDays = "target_days"
|
|
case targetCount = "target_count"
|
|
case currentStreak = "current_streak"
|
|
case longestStreak = "longest_streak"
|
|
case completedToday = "completed_today"
|
|
case totalCompleted = "total_completed"
|
|
}
|
|
}
|
|
|
|
struct HabitLogRequest: Codable {
|
|
var completedAt: String?
|
|
var note: String?
|
|
enum CodingKeys: String, CodingKey {
|
|
case completedAt = "completed_at"
|
|
case note
|
|
}
|
|
}
|