adds rest api connector
- routing setup with path to message_controller - messages api to database updated to function similar to a stack system (push, pop, peek, ..) - rest calls the same as database calls - setup default controller showing text message - parsing database output with Jason to client - adds curl examples
This commit is contained in:
@ -3,39 +3,56 @@ defmodule Bump.Messages do
|
||||
alias Bump.Messages.Message
|
||||
import Ecto.Query
|
||||
|
||||
def get_newest_message(sender) do
|
||||
def pop(sender) do
|
||||
query = from m in "messages",
|
||||
where: m.sender == ^sender,
|
||||
order_by: [desc: m.timestamp],
|
||||
limit: 1,
|
||||
select: m.data
|
||||
select: %{id: m.id, data: m.data, timestamp: m.timestamp}
|
||||
|
||||
res = Repo.one(query)
|
||||
|
||||
if not is_nil(res) do
|
||||
Repo.delete_all(from m in "messages", where: m.id == ^res.id)
|
||||
%{data: res.data, timestamp: res.timestamp}
|
||||
else
|
||||
nil
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def peak(sender) do
|
||||
query = from m in "messages",
|
||||
where: m.sender == ^sender,
|
||||
order_by: [desc: m.timestamp],
|
||||
limit: 1,
|
||||
select: %{data: m.data, timestamp: m.timestamp}
|
||||
Repo.one(query)
|
||||
end
|
||||
|
||||
def get_all_messages_since(sender, minutes) do
|
||||
def list(sender, minutes) do
|
||||
|
||||
ago = DateTime.utc_now
|
||||
|> Timex.shift(minutes: -minutes)
|
||||
|> DateTime.truncate(:second)
|
||||
|
||||
query = from m in "messages",
|
||||
where: m.sender == ^sender and
|
||||
m.timestamp >= ^ago,
|
||||
select: m.data
|
||||
where: m.sender == ^sender and
|
||||
m.timestamp >= ^ago,
|
||||
select: %{data: m.data, timestamp: m.timestamp}
|
||||
|
||||
Repo.all(query)
|
||||
end
|
||||
|
||||
def remove_sender(sender) do
|
||||
def clear(sender) do
|
||||
query = from m in "messages",
|
||||
where: m.sender == ^sender,
|
||||
select: m.id
|
||||
where: m.sender == ^sender
|
||||
|
||||
Repo.delete_all(query)
|
||||
end
|
||||
|
||||
def add_message(sender, message) do
|
||||
time =
|
||||
DateTime.utc_now
|
||||
|> DateTime.truncate(:second)
|
||||
def push(sender, message) do
|
||||
time = DateTime.utc_now |> DateTime.truncate(:second)
|
||||
|
||||
Repo.insert(%Message{sender: sender, data: message, timestamp: time})
|
||||
|
||||
|
Reference in New Issue
Block a user