defmodule LiveQuery.Core do alias LiveQuery.Core.Supervisor alias LiveQuery.Core.Store alias LiveQuery.Core.System alias LiveQuery.Core.Proxy defdelegate start_link(opts), to: Supervisor def start_using({system, key}), do: start_using(system, key) def start_using(system, key), do: Proxy.start_using(system, key) def stop_using({system, key}), do: stop_using(system, key) def stop_using(system, key), do: Proxy.stop_using(system, key) def subscribe({system, key}), do: subscribe(system, key) def subscribe(system, key), do: System.subscribe(system, "store:#{inspect(key)}") def unsubscribe({system, key}), do: unsubscribe(system, key) def unsubscribe(system, key), do: System.unsubscribe(system, "store:#{inspect(key)}") def get_data({system, key}), do: get_data(system, key) def get_data(system, key), do: Store.read(system, key) def set_data({system, key}, data), do: Store.set(system, key, data) def is_topic_for_key({system, key}, topic), do: is_topic_for_key(system, key, topic) def is_topic_for_key(system, key, topic) do "#{inspect(system)}:store:#{inspect(key)}" === topic end end