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
Hasuraを活用するためのTips集
Search
KazukiHayase
December 09, 2022
Technology
0
34k
Hasuraを活用するためのTips集
KazukiHayase
December 09, 2022
Tweet
Share
More Decks by KazukiHayase
See All by KazukiHayase
もし今からGraphQLを採用するなら
kazukihayase
12
5.1k
Goでテストをしやすくするためにやったこと
kazukihayase
1
800
GraphQLクライアントの技術選定 2023冬
kazukihayase
9
6.8k
Introduction and Insights of the Hasura-based Architecture
kazukihayase
0
930
自分だけが頑張るのをやめて、フルスタックなチームを作る
kazukihayase
2
3.1k
Goでテンプレートからファイルを自動生成するCLIを作る
kazukihayase
0
1.3k
生産性が上がり続けるチームを作るための第一歩
kazukihayase
4
3.7k
GraphQLにおけるクライアントキャッシュ戦略
kazukihayase
0
3k
MUIをベースにしたデザインシステムの構築
kazukihayase
0
560
Other Decks in Technology
See All in Technology
テストコードにはテストの意図を込めよう(2025年版) #retechtalk / Put the intent of the test 2025
nihonbuson
PRO
1
420
Aspire をカスタマイズしよう & Aspire 9.2
nenonaninu
0
380
Как мы автоматизировали интеграционное тестирование с Gonkey и не пожалели. Паша Егорычев, Кирилл Поляков
lamodatech
0
2.1k
SaaS公式MCPサーバーをリリースして得た学び
kawamataryo
2
430
MySQL Indexes and Histograms – How they really speed up your queries
lefred
0
160
『ささAI』ネタづくりをささえるAI📝 (にぼしいわし担当:GIFTech2025)
masapyon1212
0
110
MySQL InnoDB Data Recovery - The Last Resort
lefred
0
110
genspark_presentation.pdf
haruki_uiru
1
240
Асинхронная коммуникация в Go: от понятного к душному. Дима Некрасов, Otello, 2ГИС
lamodatech
0
2.1k
データベース04: SQL (1/3) 単純質問 & 集約演算
trycycle
PRO
0
730
AIにおけるソフトウェアテスト_ver1.00
fumisuke
1
370
続・やっぱり余白が大切だった話
kakehashi
PRO
3
310
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
700
Producing Creativity
orderedlist
PRO
344
40k
Into the Great Unknown - MozCon
thekraken
38
1.8k
How to Ace a Technical Interview
jacobian
276
23k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
33k
Six Lessons from altMBA
skipperchong
28
3.8k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Scaling GitHub
holman
459
140k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Transcript
HasuraΛ׆༻͢ΔͨΊͷTipsू 2022/08/30 ։ൃ2෦ ૣً
ࣗݾհ • ૣً • ग़ཧSaa S ◦ ϓϩδΣΫτϦʔμʔ ◦ ϑϧελοΫΤϯδχΞ
• ࠷ۙͷϚΠϒʔϜ ◦ ݸਓ։ൃ࠶։͠·ͨ͠ ▪ Cloud Run(gqlgen) + Firestore(Datastore mode ) ▪ Next.js + Rela y ◦ Ҿͬӽ͠४උத
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
Hasuraͱ • DBͷεΩʔϚ͔ΒGraphQLαʔόʔΛੜͰ͖ΔΦʔϓϯιʔε • DB͑͋͞Εαʔόʔཱ͕ͯΒΕΔͷͰ࣮ίετ͕֨ஈʹݮΔ
ΧελϜϩδοΫʹ͍ͭͯ • ΧελϜϩδοΫΛՃ͢Δํ๏ΛHasuraఏڙ͍ͯ͠Δ ◦ Actio n ◦ Remote Schem a
• ҙ֎ͱΧελϜϩδοΫΛ࣮͍ͨ͠໘ଟ͍ • ࣮ͨͩ͠ίετɺϝϯςφϯείετ͕૿Ճ͢Δ
HasuraͷػೳΛ׆༻͢Δ͜ͱͰ ΧελϜϩδοΫͷ࣮ΛݮΒ͢͜ͱ͕Ͱ͖Δ
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
Upsertͷ׆༻ on_conflictΛࢦఆ͢Δ͜ͱͰUpsertͰ࣮ߦ
Upsert༻࣌ͷҙ • σʔλ͕ଘࡏ͢Δ͔Θ͔Βͳ͍߹ͷΈ༻͢Δ ◦ ϕʔεͷMutationInsertͳͷͰશͯͷඞਢύϥϝʔλΛ͢ඞཁ͕͋Δ ◦ Updateͷ༻ͱͯ͑͠ͳ͍ • σʔλ͕ଘࡏ͢Δ͜ͱ͕Θ͔͍ͬͯΔ߹UpdateΛ༻͢Δ
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
τϥϯβΫγϣϯ Hasura1ͭͷϦΫΤετʹෳͷMutationؚ͕·Ε͍ͯΔ߹ɺ ֤Mutation1ͭτϥϯβΫγϣϯͰॱ൪ʹ࣮ߦ͞ΕΔ ͲΕ͔ҰͭͰࣦഊͨ͠߹શͯͷMutation͕ϩʔϧόοΫ͞ΕΔ
τϥϯβΫγϣϯͷྫ deletePost͕ࣦഊͯ͠SampleMutationશମ͕ϩʔϧόοΫ͞ΕΔ ϩʔϧόοΫ͞ΕΔͷͰtaggingsআ͞Ε͍ͯͳ͍
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
ϦϨʔγϣϯΛؚΜͩMutation MutationͷΈཱͯ࣍ୈͰ༷ʑͳϦϨʔγϣϯΛؚΜͩσʔλͷ࡞͕Մೳ • 1: 1 • 1: N • N:N
1:1ͷϦϨʔγϣϯ profileͱͦΕʹඥͮ͘userΛ࡞ userͱͦΕʹඥͮ͘profileΛ࡞͠Α͏ͱ͢ΔͱΤϥʔ
ΦϒδΣΫτͷ࡞ॱং σϑΥϧτͰ1:1ͷϦϨʔγϣϯԼهͷॱ൪ͰΦϒδΣΫτ͕࡞͞ΕΔ 1. ࢠΦϒδΣΫτΛ࡞ͯ͠idΛऔಘ 2. FKΧϥϜʹ 1 Ͱऔಘͨ͠idΛઃఆͯ͠ΦϒδΣΫτΛ࡞ ※ ϦϨʔγϣϯ࡞࣌ͷinsertion_orderͷઃఆͰॱ൪มߋՄೳ
1:NͷϦϨʔγϣϯ ߘͱͦΕʹඥ͍͍ͮ͘ͶΛ࡞
ΦϒδΣΫτͷ࡞ॱং 1:NͷϦϨʔγϣϯԼهͷॱ൪ͰΦϒδΣΫτ͕࡞͞ΕΔ 1. ΦϒδΣΫτΛ࡞ͯ͠idΛऔಘ 2. FKΧϥϜʹ 1 Ͱऔಘͨ͠idΛઃఆͯ͠ࢠΦϒδΣΫτΛ࡞
N:NͷϦϨʔγϣϯ ߘͱͦΕʹඥͮ͘λάΛ࡞
ߴͳN:NͷϦϨʔγϣϯ ߘͱͦΕʹඥͮ͘λάΛ࡞ɺλάͷ࡞Upsert λά͕͢Ͱʹଘࡏ͢Δ߹ͦͷλά ͱඥ͚ɺλά͕ଘࡏ͠ͳ͍߹λ άΛ࡞ͯ͠ඥ͚ͱ͍ͬͨෳࡶͳ Mutation࣮Մೳ
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
σΟϨΫςΟϒʹΑΔ੍ޚ Hasuraඪ४σΟϨΫςΟϒ͕ར༻Մೳ σΟϨΫςΟϒΛ׆༻͢Δ͜ͱͰQuery, Mutationͷදݱͷ෯͕͕Δ
σΟϨΫςΟϒʹΑΔ੍ޚ @includeͰऔಘ͢ΔϑΟʔϧυΛ੍ޚ @skipͰ࣮ߦ͢ΔMutationΛ੍ޚ
σΟϨΫςΟϒʹΑΔ੍ޚ ؔ࿈ͷͳ͍MutationͰ͋ΕϦΫΤετͷׂͰରԠՄೳ ಉ͡τϥϯβΫγϣϯͰMutationͷ࣮ߦΛ੍ޚ͍ͨ͠߹ σΟϨΫςΟϒͰͷ੍ޚ͕༗ޮ
͓ΘΓʹ • HasuraΛ׆༻͢Δ͜ͱͰόοΫΤϯυͷ࣮ΛݮΒ͢͜ͱ͕Ͱ͖Δ • ଞʹHasuraͷػೳ͚ͩͰ࣮ݱͰ͖Δ͜ͱੵۃతʹ׆༻͢Δͷ͕ ྑ͍ͱࢥ͍·͢ʂ