Cache objects in dev and prod.
This commit is contained in:
		
							parent
							
								
									b9d1fc05b2
								
							
						
					
					
						commit
						f169de3454
					
				
					 2 changed files with 10 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -14,6 +14,15 @@ def get_by_ap_id(ap_id) do
 | 
			
		|||
      where: fragment("? @> ?", object.data, ^%{id: ap_id}))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def get_cached_by_ap_id(ap_id) do
 | 
			
		||||
    if Mix.env == :test do
 | 
			
		||||
      get_by_ap_id(ap_id)
 | 
			
		||||
    else
 | 
			
		||||
      key = "object:#{ap_id}"
 | 
			
		||||
      Cachex.get!(:user_cache, key, fallback: fn(_) -> get_by_ap_id(ap_id) end)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def context_mapping(context) do
 | 
			
		||||
    %Object{data: %{"id" => context}}
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -317,7 +317,7 @@ defp make_date do
 | 
			
		|||
 | 
			
		||||
  def context_to_conversation_id(context) do
 | 
			
		||||
    {:ok, id} = Repo.transaction(fn ->
 | 
			
		||||
      with %Object{id: id} <- Object.get_by_ap_id(context) do
 | 
			
		||||
      with %Object{id: id} <- Object.get_cached_by_ap_id(context) do
 | 
			
		||||
        id
 | 
			
		||||
      else _e ->
 | 
			
		||||
        changeset = Object.context_mapping(context)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue