38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
defmodule Pleroma.Activity do
 | 
						|
  use Ecto.Schema
 | 
						|
  alias Pleroma.{Repo, Activity}
 | 
						|
  import Ecto.Query
 | 
						|
 | 
						|
  schema "activities" do
 | 
						|
    field :data, :map
 | 
						|
    field :local, :boolean, default: true
 | 
						|
 | 
						|
    timestamps()
 | 
						|
  end
 | 
						|
 | 
						|
  def get_by_ap_id(ap_id) do
 | 
						|
    Repo.one(from activity in Activity,
 | 
						|
      where: fragment("(?)->>'id' = ?", activity.data, ^to_string(ap_id)))
 | 
						|
  end
 | 
						|
 | 
						|
  # Wrong name, only returns create activities
 | 
						|
  def all_by_object_ap_id_q(ap_id) do
 | 
						|
    from activity in Activity,
 | 
						|
      where: fragment("(?)->'object'->>'id' = ?", activity.data, ^to_string(ap_id))
 | 
						|
  end
 | 
						|
 | 
						|
  def all_non_create_by_object_ap_id_q(ap_id) do
 | 
						|
    from activity in Activity,
 | 
						|
      where: fragment("(?)->>'object' = ?", activity.data, ^to_string(ap_id))
 | 
						|
  end
 | 
						|
 | 
						|
  def all_by_object_ap_id(ap_id) do
 | 
						|
    Repo.all(all_by_object_ap_id_q(ap_id))
 | 
						|
  end
 | 
						|
 | 
						|
  def get_create_activity_by_object_ap_id(ap_id) do
 | 
						|
    Repo.one(from activity in Activity,
 | 
						|
      where: fragment("(?)->'object'->>'id' = ?", activity.data, ^to_string(ap_id))
 | 
						|
             and fragment("(?)->>'type' = 'Create'", activity.data))
 | 
						|
  end
 | 
						|
end
 |