44 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
| defmodule Pleroma.Activity do
 | |
|   use Ecto.Schema
 | |
|   alias Pleroma.{Repo, Activity, Notification}
 | |
|   import Ecto.Query
 | |
| 
 | |
|   schema "activities" do
 | |
|     field :data, :map
 | |
|     field :local, :boolean, default: true
 | |
|     has_many :notifications, Notification
 | |
| 
 | |
|     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
 | |
| 
 | |
|   # TODO:
 | |
|   # Go through these and fix them everywhere.
 | |
|   # Wrong name, only returns create activities
 | |
|   def all_by_object_ap_id_q(ap_id) do
 | |
|     from activity in Activity,
 | |
|       where: fragment("coalesce((?)->'object'->>'id', (?)->>'object') = ?", activity.data, activity.data, ^to_string(ap_id)),
 | |
|       where: fragment("(?)->>'type' = 'Create'", activity.data)
 | |
|   end
 | |
| 
 | |
|   # Wrong name, returns all.
 | |
|   def all_non_create_by_object_ap_id_q(ap_id) do
 | |
|     from activity in Activity,
 | |
|       where: fragment("coalesce((?)->'object'->>'id', (?)->>'object') = ?", activity.data, activity.data, ^to_string(ap_id))
 | |
|   end
 | |
| 
 | |
|   # Wrong name plz fix thx
 | |
|   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("coalesce((?)->'object'->>'id', (?)->>'object') = ?", activity.data, activity.data, ^to_string(ap_id)),
 | |
|       where: fragment("(?)->>'type' = 'Create'", activity.data))
 | |
|   end
 | |
| end
 | 
