Vapor Documentation

Structure Storage

public struct Storage  

A container providing arbitrary storage for extensions of an existing type, designed to obviate the problem of being unable to add stored properties to a type in an extension. Each stored item is keyed by a type conforming to StorageKey protocol.

Initializers

init(logger:​)

public init(logger: Logger = .init(label: "codes.vapor.storage"))  

Create a new Storage container using the given logger.

Methods

clear()

public mutating func clear()  

Delete all values from the container. Does not invoke shutdown closures.

contains(_:​)

public func contains<Key>(_ key: Key.Type) -> Bool  

Test whether the given key exists in the container.

get(_:​)

public func get<Key>(_ key: Key.Type) -> Key.Value?
        where Key: StorageKey

Get the value of the given key if it exists and is of the proper type.

set(_:​to:​on​Shutdown:​)

public mutating func set<Key>(
        _ key: Key.Type,
        to value: Key.Value?,
        onShutdown: ((Key.Value) throws -> ())? = nil
    )
        where Key: StorageKey

Set or remove a value for a given key, optionally providing a shutdown closure for the value.

If a key that has a shutdown closure is removed by this method, the closure is invoked.

shutdown()

public func shutdown()  

For every key in the container having a shutdown closure, invoke the closure. Designed to be invoked during an explicit app shutdown process or in a reference type's deinit.