Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ecto, você sabe o que é ?

7c1e5b1b100ab8cfacbe14173437c998?s=47 Amanda
August 06, 2016

Ecto, você sabe o que é ?

Palestra apresentada no encontro do ELUG-SP

7c1e5b1b100ab8cfacbe14173437c998?s=128

Amanda

August 06, 2016
Tweet

Transcript

  1. Ecto Você sabe o que é?

  2. @amandasposito @amsposito @amandasposito

  3. None
  4. Agenda • O que é? • Seus benefícios; • Componentes;

    • Novidades da última versão.
  5. O que é?

  6. “Ecto is a domain specific language for writing queries and

    interacting with databases in Elixir.”
  7. object-relational mapping

  8. object-relational mapping

  9. None
  10. Inspiração

  11. LINQ Language Integrated Query

  12. Parte do .NET Framework - Nov/2007

  13. C#

  14. Ecto

  15. None
  16. Vantagens

  17. Composição

  18. Você pode continuar a usar uma query em outra parte

    do codigo
  19. None
  20. Isso é possível por causa dos Protocols de Elixir

  21. None
  22. Protocols ?

  23. "Elixir provides protocols as a mechanism for polymorphism." http://elixir-lang.org/getting-started/protocols.html http://blog.plataformatec.com.br/2014/09/writing-assertive-code-with-elixir/

  24. None
  25. Sobre dados

  26. Evita SQL injection

  27. Interpolação e Casting de dados

  28. Valores externos e expressões em Elixir podem ser adicionados a

    uma query com ^ http://elixir-lang.org/getting-started/pattern-matching.html#the-pin-operator
  29. None
  30. None
  31. Type safety

  32. name == 1 ** (Ecto.Query.TypeCheckError) the following expression does not

    type check:
  33. Componentes

  34. • Repo • Schema • Changeset • Query

  35. Nosso modelo de dados

  36. None
  37. Ecto.Repo

  38. Repo.all(query) https://hexdocs.pm/ecto/Ecto.Repo.html

  39. Repo.start_link()

  40. Ecto.Schema

  41. None
  42. None
  43. None
  44. Ecto.Changeset

  45. None
  46. None
  47. None
  48. Ecto.Query

  49. None
  50. None
  51. https://hexdocs.pm/ecto/Ecto.Query.html#preload

  52. https://hexdocs.pm/ecto/Ecto.Query.html#preload

  53. https://hexdocs.pm/ecto/Ecto.Query.html#join/5

  54. https://hexdocs.pm/ecto/Ecto.Query.html#join/5

  55. https://hexdocs.pm/ecto/Ecto.Query.html#join/5

  56. https://hexdocs.pm/ecto/Ecto.Query.html#preload

  57. https://hexdocs.pm/ecto/Ecto.Query.html#preload

  58. Novidades da última versão

  59. Model -> Schema

  60. Insert_all *http://blog.plataformatec.com.br/2016/05/ectos-insert_all-and-schemaless-queries/

  61. None
  62. Relacionamentos many_to_many

  63. Subqueries

  64. Chaves compostas

  65. Otimização em connection pooling *https://github.com/elixir-ecto/ecto/releases/tag/v2.0.0 *http://blog.plataformatec.com.br/2016/04/ecto-2-0-0-rc-is-out/

  66. Testes concorrentes, mesmo dependendo do banco de dados

  67. Falei de mais né? Falei de mais né?

  68. Resumindo

  69. É uma Lib para você poder interagir com o banco

    de dados
  70. Consegue escrever queries no banco de dados escrevendo código Elixir

  71. Composição / SQL Injection / Type Safety

  72. Repo / Schema / Changeset / Query

  73. https://github.com/amandasposito/ecto_demo

  74. Obrigada!

  75. Referências • http://blog.plataformatec.com.br/2016/05/ectos-insert_all-and-schemaless-queries/ • http://blog.plataformatec.com.br/2016/04/ecto-2-0-0-rc-is-out/ • https://hexdocs.pm/ecto/Ecto.html • https://github.com/elixir-ecto/ecto/wiki/Ecto-Basics •

    https://changelog.com/208/ • https://www.youtube.com/watch?v=SJRfujy9vLA&feature=youtu.be&t=18m38s • https://www.youtube.com/watch?v=snka1bAtZS0