Код IT
← Каталог

Работа с данными и коллекциями — Пример минимального Repository

Фрагмент из «Работа с данными и коллекциями»: Пример минимального Repository.

Plain text main.swift
struct UserDTO: Codable {
    let id: Int
    let name: String
}

final class UserRepository {
    private let session: URLSession = .shared
    private var cache: [Int: UserDTO] = [:]

    func user(id: Int) async throws -> UserDTO {
        if let cached = cache[id] { return cached }
        let url = URL(string: "https://api.example.com/users/\(id)")!
        let (data, _) = try await session.data(from: url)
        let decoded = try JSONDecoder().decode(UserDTO.self, from: data)
        cache[id] = decoded
        return decoded
    }
}
struct UserDTO: Codable {
    let id: Int
    let name: String
}

final class UserRepository {
    private let session: URLSession = .shared
    private var cache: [Int: UserDTO] = [:]

    func user(id: Int) async throws -> UserDTO {
        if let cached = cache[id] { return cached }
        let url = URL(string: "https://api.example.com/users/\(id)")!
        let (data, _) = try await session.data(from: url)
        let decoded = try JSONDecoder().decode(UserDTO.self, from: data)
        cache[id] = decoded
        return decoded
    }
}