summaryrefslogtreecommitdiff
path: root/lib/farside.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/farside.ex')
-rw-r--r--lib/farside.ex45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/farside.ex b/lib/farside.ex
new file mode 100644
index 0000000..9432406
--- /dev/null
+++ b/lib/farside.ex
@@ -0,0 +1,45 @@
+defmodule Farside do
+ @service_prefix Application.fetch_env!(:farside, :service_prefix)
+
+ def get_services_map do
+ {:ok, redis_keys} = Redix.command(:redix, ["KEYS", "*"])
+
+ # Extract only service related keys
+ service_list =
+ Enum.filter(
+ redis_keys,
+ fn key ->
+ String.starts_with?(key, @service_prefix)
+ end
+ )
+
+ # Match service name to list of available instances
+ Enum.reduce(service_list, %{}, fn service, acc ->
+ {:ok, instance_list} =
+ Redix.command(
+ :redix,
+ ["LRANGE", service, "0", "-1"]
+ )
+
+ Map.put(
+ acc,
+ String.replace_prefix(
+ service,
+ @service_prefix,
+ ""
+ ),
+ instance_list
+ )
+ end)
+ end
+
+ def get_last_updated do
+ {:ok, last_updated} =
+ Redix.command(
+ :redix,
+ ["GET", "last_updated"]
+ )
+
+ last_updated
+ end
+end