Guest User

Untitled

a guest
Feb 21st, 2018
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. // 1. Creat a basic type that can easily hold data.
  2.  
  3. import Service
  4.  
  5. public class Storage: Service {
  6. public var cache: [String: Codable] = [:]
  7.  
  8. public init() {}
  9. }
  10.  
  11. // 2. Register the service as a singleton with the rest of your applications services in `configure`.
  12. // Make sure you set the return type of the closuer!
  13.  
  14. services.register(isSingleton: true) { (container) -> (Storage) in
  15. return Storage()
  16. }
  17.  
  18. // 3. Make it from a request! I created a couple of helper methods for this:
  19.  
  20. extension Request {
  21. public func get(_ key: String)throws -> Codable? {
  22. let storage = try self.privateContainer.make(Storage.self, for: Request.self)
  23. return storage.cache[key]
  24. }
  25.  
  26. public func set(_ key: String, to value: Codable)throws {
  27. var storage = try self.privateContainer.make(Storage.self, for: Request.self)
  28. storage.cache[key] = value
  29. }
  30. }
  31.  
  32. // usage:
  33.  
  34. try request.set("user", to: user)
Add Comment
Please, Sign In to add comment