Skip to content

Instantly share code, notes, and snippets.

View radzserg's full-sized avatar

Sergey Radzishevskii radzserg

View GitHub Profile
defmodule App.ModelHelpers.HasImageHelper do
alias App.Repo
alias App.Image
defmacro __using__(_) do
quote do
def get_image_url(model, field, base_path \\ "", default_image \\ nil) do
field = if is_bitstring(field), do: String.to_atom(field), else: field
@radzserg
radzserg / image_helper.ex
Created October 10, 2016 12:39
elixir image helper
defmodule App.Helpers.ImageHelper do
#https://github.com/route/mogrify
import Mogrify
def thumb(src, dest, width, height) do
open(src)
|> resize_to_fill("#{width}x#{height}")
|> gravity("center")
|> save(path: dest)
defmodule App.Image do
use App.Web, :model
alias App.Image
alias App.Repo
alias App.Helpers.FileHelper
alias App.Helpers.ImageHelper
schema "images" do
field :type, :string
@radzserg
radzserg / updates_in_image.ex
Created October 10, 2016 12:51
Updates in image model
defmodule App.Image do
# updates from part #1
# full image code https://gist.github.com/radzserg/3abc7a6fdac6fb98af8607d1b5a0cdaf
alias App.Helpers.FileHelper
alias App.Helpers.ImageHelper
@doc """
Return resized image from parent image
"""
defmodule App.Helpers.FileHelper do
def get_mime!(path) do
{result, 0} = System.cmd("file", ["--mime-type"|[path]])
result
|> String.split(":")
|> List.last
|> String.trim
|> String.downcase
end
defmodule App.ModelHelpers.HasImageHelper do
alias App.Repo
alias App.Image
import Ecto.Changeset, only: [cast: 3]
defmacro __using__(config) do
quote do
defmodule App.Helpers.ViewHelpers do
alias App.Repo
alias App.Image
defmacro __using__(_) do
quote do
def image_url(model, field, options \\ %{}) do
module = model.__struct__
@radzserg
radzserg / es_raw_user_input_example.php
Last active January 10, 2017 19:00
An example of building ES query for raw user input.
<?php
if (!empty($filterParams['q'])) {
$query = CMap::mergeArray($query, [
[
'bool' => [
'should' => [
['match' => ['name' => ['query' => $filterParams['q'], 'boost' => 5]]],
['match' => ['short_description' => ['query' => $filterParams['q'], 'boost' => 3]]],
['match' => ['tag_names' => ['query' => $filterParams['q'], 'boost' => 1]]]
]
@radzserg
radzserg / es_client.ex
Last active January 29, 2017 09:54
An example of low level client
defmodule App.Es.EsClient do
@config Application.get_env(:app, :es)
@doc """
Builds index/type/id|action URL. Like index-prefix/index/id|action
"""
def build_url(index, id_or_action \\ nil, type \\ nil) do
host = @config[:host]
index_prefix = @config[:index_prefix]
@radzserg
radzserg / document_behavior.es
Last active January 30, 2017 19:21
Behaviour for ES domain models
defmodule App.Es.DocumentBehavior do
@doc """
Build es document body
"""
@callback index() :: string
@doc """
Build es document body
"""