summaryrefslogtreecommitdiff
path: root/lib/powerdnsex/gen_server/server.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/powerdnsex/gen_server/server.ex')
-rw-r--r--lib/powerdnsex/gen_server/server.ex42
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/powerdnsex/gen_server/server.ex b/lib/powerdnsex/gen_server/server.ex
new file mode 100644
index 0000000..52768b3
--- /dev/null
+++ b/lib/powerdnsex/gen_server/server.ex
@@ -0,0 +1,42 @@
+defmodule PowerDNSex.Server do
+ use GenServer
+
+ alias PowerDNSex.Managers.{ZonesManager, RecordsManager}
+ alias PowerDNSex.Models.Zone
+
+ def start_link(name) do
+ GenServer.start_link(__MODULE__, :ok, name: name)
+ end
+
+ ###
+ # Zones
+ ###
+
+ def handle_call({:create_zone, zone, server_name}, _from, state) do
+ {:reply, ZonesManager.create(zone, server_name), state}
+ end
+
+ def handle_call({:show_zone, zone, server_name}, _from, state) do
+ {:reply, ZonesManager.show(zone, server_name), state}
+ end
+
+ def handle_call({:delete_zone, zone, server_name}, _from, state) do
+ {:reply, ZonesManager.delete(zone, server_name), state}
+ end
+
+ def handle_call({:create_record, zone, rrset_attrs}, _from, state) do
+ {:reply, RecordsManager.create(zone, rrset_attrs), state}
+ end
+
+ def handle_call({:show_record, zone, rrset_attrs}, _from, state) do
+ {:reply, RecordsManager.show(zone, rrset_attrs), state}
+ end
+
+ def handle_call({:update_record, zone, rrset_attrs}, _from, state) do
+ {:reply, RecordsManager.update(zone, rrset_attrs), state}
+ end
+
+ def handle_call({:delete_record, zone, rrset_attrs}, _from, state) do
+ {:reply, RecordsManager.delete(zone, rrset_attrs), state}
+ end
+end