@ -248,12 +248,20 @@ defmodule GcIndexRelay.Nostr.Filter do
@spec apply_ids ( Ecto.Query . t ( ) , [ String . t ( ) ] | nil ) :: Ecto.Query . t ( )
@spec apply_ids ( Ecto.Query . t ( ) , [ String . t ( ) ] | nil ) :: Ecto.Query . t ( )
defp apply_ids ( query , nil ) , do : query
defp apply_ids ( query , nil ) , do : query
defp apply_ids ( query , [ ] ) , do : query
defp apply_ids ( query , [ ] ) , do : query
defp apply_ids ( query , ids ) , do : where ( query , [ e ] , e . id in ^ ids )
defp apply_ids ( query , ids ) do
binary_ids = Enum . map ( ids , & Base . decode16! ( &1 , case : :lower ) )
where ( query , [ e ] , e . id in ^ binary_ids )
end
@spec apply_authors ( Ecto.Query . t ( ) , [ String . t ( ) ] | nil ) :: Ecto.Query . t ( )
@spec apply_authors ( Ecto.Query . t ( ) , [ String . t ( ) ] | nil ) :: Ecto.Query . t ( )
defp apply_authors ( query , nil ) , do : query
defp apply_authors ( query , nil ) , do : query
defp apply_authors ( query , [ ] ) , do : query
defp apply_authors ( query , [ ] ) , do : query
defp apply_authors ( query , authors ) , do : where ( query , [ e ] , e . pubkey in ^ authors )
defp apply_authors ( query , authors ) do
binary_authors = Enum . map ( authors , & Base . decode16! ( &1 , case : :lower ) )
where ( query , [ e ] , e . pubkey in ^ binary_authors )
end
@spec apply_kinds ( Ecto.Query . t ( ) , [ integer ( ) ] | nil ) :: Ecto.Query . t ( )
@spec apply_kinds ( Ecto.Query . t ( ) , [ integer ( ) ] | nil ) :: Ecto.Query . t ( )
defp apply_kinds ( query , nil ) , do : query
defp apply_kinds ( query , nil ) , do : query
@ -262,11 +270,19 @@ defmodule GcIndexRelay.Nostr.Filter do
@spec apply_since ( Ecto.Query . t ( ) , integer ( ) | nil ) :: Ecto.Query . t ( )
@spec apply_since ( Ecto.Query . t ( ) , integer ( ) | nil ) :: Ecto.Query . t ( )
defp apply_since ( query , nil ) , do : query
defp apply_since ( query , nil ) , do : query
defp apply_since ( query , since ) , do : where ( query , [ e ] , e . created_at >= ^ since )
defp apply_since ( query , since ) when is_integer ( since ) do
datetime = DateTime . from_unix! ( since )
where ( query , [ e ] , e . created_at >= ^ datetime )
end
@spec apply_until ( Ecto.Query . t ( ) , integer ( ) | nil ) :: Ecto.Query . t ( )
@spec apply_until ( Ecto.Query . t ( ) , integer ( ) | nil ) :: Ecto.Query . t ( )
defp apply_until ( query , nil ) , do : query
defp apply_until ( query , nil ) , do : query
defp apply_until ( query , until ) , do : where ( query , [ e ] , e . created_at <= ^ until )
defp apply_until ( query , until ) when is_integer ( until ) do
datetime = DateTime . from_unix! ( until )
where ( query , [ e ] , e . created_at <= ^ datetime )
end
@spec apply_tags ( Ecto.Query . t ( ) , map ( ) | nil ) :: Ecto.Query . t ( )
@spec apply_tags ( Ecto.Query . t ( ) , map ( ) | nil ) :: Ecto.Query . t ( )
defp apply_tags ( query , nil ) , do : query
defp apply_tags ( query , nil ) , do : query