Skip to content
/ Pool Public

Modern lightweight cache library written in Swift

License

Notifications You must be signed in to change notification settings

Ryu0118/Pool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pool

Modern cache library written in Swift

Installation

.package(url: "https://github.com/Ryu0118/Pool.git", from: "0.0.2")

Usage

extension CachedValues<String, DefaultCachePolicy> {
    var hoge: AtomicPool {
        get { self[AtomicPool.self] }
        set { self[AtomicPool.self] = newValue }
    }
}

class Hoge {
    @Cache(\.hoge) var hoge
    
    func get() -> String? {
        hoge
    }
    
    func set(_ newValue: String) {
        hoge = newValue
    }
}

Custom CachePolicy

struct MyCachePolicy: CachePolicy {
    let memoryCachePolicy: MemoryCachePolicy
    let diskCachePolicy: DiskCachePolicy

    init() {
        memoryCachePolicy = .init()
        diskCachePolicy = .init(expiry: .hours(1), maxSize: 10000)
    }
}

extension CachedValues<String, CustomCachePolicy> {
    var hoge: AtomicPool {
        get { self[AtomicPool.self] }
        set { self[AtomicPool.self] = newValue }
    }
}

Cacheable

struct Hoge: Cacheable {
    let hoge: String
    let fuga: String
}

extension CachedValues<Hoge, DefaultCachePolicy> {
    var hoge: AtomicPool {
        get { self[AtomicPool.self] }
        set { self[AtomicPool.self] = newValue }
    }
}

About

Modern lightweight cache library written in Swift

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages