Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ecto, você sabe o que é ?
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Amanda
August 06, 2016
Technology
250
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ecto, você sabe o que é ?
Palestra apresentada no encontro do ELUG-SP
Amanda
August 06, 2016
More Decks by Amanda
See All by Amanda
Lessons Learned From an Elixir OTP Project
amandasposito
2
100
Aprendizados de um projeto Elixir OTP
amandasposito
4
640
SOLID - Dependency inversion principle
amandasposito
0
94
Como concorrência funciona em Elixir?
amandasposito
1
240
Programação Funcional & Elixir
amandasposito
3
130
Novidades no Rails 5
amandasposito
0
100
Rails Engines & RSpec
amandasposito
0
240
Elixir e Phoenix
amandasposito
3
600
Elixir em 5 minutos
amandasposito
1
100
Other Decks in Technology
See All in Technology
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
720
Making sense of Google’s agentic dev tools
glaforge
1
300
AI時代のPlaywright活用(システムテストを自動化する ー 実行エンジンにPla ywrightを選んだ理由)
ynisqa1988
2
910
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
320
Multicaで30個のミニプロジェクトをAIエージェント運用して見えてきたこと
eiei114
1
610
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
360
[Droidcon Orlando '26] The Android Lens: Applying Mobile Forensics to AI Performance
amanda_hinchman
1
100
AIが実装を自走する時代の認知負債との戦い
lycorptech_jp
PRO
2
1k
Amazon Quick 入門!
ysuzuki
2
130
Type-safe IaC for Dart
coborinai
0
180
実践!既存 Project への AI-Driven Development 適用〜 一ヶ月で Project 唯一のフロントエンドエンジニアを作り出せ〜
lycorptech_jp
PRO
0
380
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
600
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
770
BBQ
matthewcrist
89
10k
Unsuck your backbone
ammeep
672
58k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Agile that works and the tools we love
rasmusluckow
331
22k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
sira's awesome portfolio website redesign presentation
elsirapls
0
300
Navigating Team Friction
lara
192
16k
Transcript
Ecto Você sabe o que é?
@amandasposito @amsposito @amandasposito
None
Agenda • O que é? • Seus benefícios; • Componentes;
• Novidades da última versão.
O que é?
“Ecto is a domain specific language for writing queries and
interacting with databases in Elixir.”
object-relational mapping
object-relational mapping
None
Inspiração
LINQ Language Integrated Query
Parte do .NET Framework - Nov/2007
C#
Ecto
None
Vantagens
Composição
Você pode continuar a usar uma query em outra parte
do codigo
None
Isso é possível por causa dos Protocols de Elixir
None
Protocols ?
"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/
None
Sobre dados
Evita SQL injection
Interpolação e Casting de dados
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
None
None
Type safety
name == 1 ** (Ecto.Query.TypeCheckError) the following expression does not
type check:
Componentes
• Repo • Schema • Changeset • Query
Nosso modelo de dados
None
Ecto.Repo
Repo.all(query) https://hexdocs.pm/ecto/Ecto.Repo.html
Repo.start_link()
Ecto.Schema
None
None
None
Ecto.Changeset
None
None
None
Ecto.Query
None
None
https://hexdocs.pm/ecto/Ecto.Query.html#preload
https://hexdocs.pm/ecto/Ecto.Query.html#preload
https://hexdocs.pm/ecto/Ecto.Query.html#join/5
https://hexdocs.pm/ecto/Ecto.Query.html#join/5
https://hexdocs.pm/ecto/Ecto.Query.html#join/5
https://hexdocs.pm/ecto/Ecto.Query.html#preload
https://hexdocs.pm/ecto/Ecto.Query.html#preload
Novidades da última versão
Model -> Schema
Insert_all *http://blog.plataformatec.com.br/2016/05/ectos-insert_all-and-schemaless-queries/
None
Relacionamentos many_to_many
Subqueries
Chaves compostas
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/
Testes concorrentes, mesmo dependendo do banco de dados
Falei de mais né? Falei de mais né?
Resumindo
É uma Lib para você poder interagir com o banco
de dados
Consegue escrever queries no banco de dados escrevendo código Elixir
Composição / SQL Injection / Type Safety
Repo / Schema / Changeset / Query
https://github.com/amandasposito/ecto_demo
Obrigada!
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