Conhecendo o Lucky

Operations

Conhecendo o Lucky - Operations

Fala pessoal! Em um dos meus videos da série, "Criando uma API WEB com Lucky e Crystal" eu falo um pouco mais sobre o operations se você ainda não viu o confere lá!

Quando geramos um model usando a CLI do lucky ele gera acaba gerando alguns arquivos a mais pra gente e um desses arquvios é gerado dentro um diretório chamado Operations basicamente é aqui que ficaram nosso arquivos de operations😅.

As operations são classes usadas pelo Arvram, ORM que default no Lucky, que servem para criar e atualizar registros no banco de dados. Segundo a documentação o conceito foi inspirado na forma como o Phoenix e o ecto trabalham. Além disso as operations servem com um filtro do que será mapeado no objto params onde basicamente definimos os atributos que irão compor este objeto:

Por exemplo:

class SaveUser < User::SaveOperation
  permit_columns name, email, password
end

Isso resultaria em algo como:

{
  "name": "Jhon Doe",
  "email": "jhon@example.org",
  "passwod": "secret_password"
}

Também é possível costumizar a forma como você recebe os parametros, definir callbacks e um monte outras coisas.

Imagine que você tivesse que validar a criação de um "post" poderiamos ter um "operator" com algumas validações do tipo:

class SavePost < Post::SaveOperation
  permit_columns title, content, author

  before_save do
    validate_required title
    validate_required content
    validate_size_of content, is: 100
    validate_size_of name, min: 100
    validate_size_of name, max: 500
  end
end

Bacana né? 😉

Comentários