// // TimelineMarkers.swift // Pachyderm // // Created by Shadowfacts on 2/14/23. // import Foundation public struct TimelineMarkers: Decodable { public let home: Marker? public let notifications: Marker? public static func request(timelines: [Timeline]) -> Request { return Request(method: .get, path: "/api/v1/markers", queryParameters: "timeline[]" => timelines.map(\.rawValue)) } public static func update(timeline: Timeline, lastReadID: String) -> Request { return Request(method: .post, path: "/api/v1/markers", body: ParametersBody([ "\(timeline.rawValue)[last_read_id]" => lastReadID, ])) } public enum Timeline: String { case home case notifications } public struct Marker: Decodable { public let lastReadID: String public let version: Int public let updatedAt: Date enum CodingKeys: String, CodingKey { case lastReadID = "last_read_id" case version case updatedAt = "updated_at" } } }