diff options
Diffstat (limited to 'lib/powerdnsex/gen_server/server.ex')
-rw-r--r-- | lib/powerdnsex/gen_server/server.ex | 42 |
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 |