Class: Notion::Resolver
- Inherits:
-
Object
- Object
- Notion::Resolver
- Defined in:
- lib/notion/resolver.rb
Constant Summary collapse
- TTL =
900- MAX_CACHE_SIZE =
100
Instance Method Summary collapse
-
#initialize(client, clock: Process.method(:clock_gettime)) ⇒ Resolver
constructor
A new instance of Resolver.
- #resolve(database_id, name: nil) ⇒ Object
Constructor Details
#initialize(client, clock: Process.method(:clock_gettime)) ⇒ Resolver
Returns a new instance of Resolver.
11 12 13 14 15 16 17 |
# File 'lib/notion/resolver.rb', line 11 def initialize(client, clock: Process.method(:clock_gettime)) @client = client @clock = clock @store = client.config.cache if client.respond_to?(:config) @cache = {} @mutex = Mutex.new end |
Instance Method Details
#resolve(database_id, name: nil) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/notion/resolver.rb', line 19 def resolve(database_id, name: nil) key = [database_id, name] external = @store&.read(cache_key(key)) return external if external cached = cached_value(key) return cached if cached sources = Array(@client.databases.retrieve(database_id: database_id).data_sources) selected = select(sources, name) id = selected.fetch("id") write_cache(key, id) id end |