adds api calls for getting, setting, removing
- using Ecto queries, the api can now get newest message or get the last message - delete all messages of a sender id - add a message (auto adding a time stamp)
This commit is contained in:
		@@ -1,8 +1,15 @@
 | 
			
		||||
defmodule Bump.Messages do
 | 
			
		||||
  alias Bump.Repo
 | 
			
		||||
  alias Bump.Messages.Message
 | 
			
		||||
  import Ecto.Query
 | 
			
		||||
 | 
			
		||||
  def get_newest_message(_sender) do
 | 
			
		||||
  def get_newest_message(sender) do
 | 
			
		||||
    query = from m in "messages",
 | 
			
		||||
            where: m.sender == ^sender,
 | 
			
		||||
            order_by: [desc: m.timestamp],
 | 
			
		||||
            limit: 1,
 | 
			
		||||
            select: m.data
 | 
			
		||||
    Repo.one(query)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def get_all_messages_since(sender, minutes) do
 | 
			
		||||
@@ -18,10 +25,21 @@ defmodule Bump.Messages do
 | 
			
		||||
    Repo.all(query)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def remove_sender(_sender) do
 | 
			
		||||
  def remove_sender(sender) do
 | 
			
		||||
    query = from m in "messages",
 | 
			
		||||
      where: m.sender == ^sender,
 | 
			
		||||
      select: m.id
 | 
			
		||||
    Repo.delete_all(query)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def add_message(_sender, _message) do
 | 
			
		||||
  def add_message(sender, message) do
 | 
			
		||||
    time = 
 | 
			
		||||
      DateTime.utc_now 
 | 
			
		||||
      |> DateTime.truncate(:second)
 | 
			
		||||
 | 
			
		||||
    Repo.insert(%Message{sender: sender, data: message, timestamp: time})
 | 
			
		||||
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,7 @@ defmodule Bump.Messages.Message do
 | 
			
		||||
  schema "messages" do
 | 
			
		||||
    field :sender, :string
 | 
			
		||||
    field :data, :string, default: ""
 | 
			
		||||
    field :timestamp, :utc_datetime, default: DateTime.utc_now |> DateTime.truncate(:second)
 | 
			
		||||
 | 
			
		||||
    field :timestamp, :utc_datetime
 | 
			
		||||
    timestamps()
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user