$30 off During Our Annual Pro Sale. View Details »

Hasuraを活用するためのTips集

KazukiHayase
December 09, 2022

 Hasuraを活用するためのTips集

KazukiHayase

December 09, 2022
Tweet

More Decks by KazukiHayase

Other Decks in Technology

Transcript

  1. HasuraΛ׆༻͢ΔͨΊͷTipsू
    2022/08/30 ։ൃ2෦ ૣ੉࿨ً

    View Slide

  2. ࣗݾ঺հ
    ● ૣ੉࿨ً
    ● ग़඼؅ཧSaa
    S

    ○ ϓϩδΣΫτϦʔμʔ
    ○ ϑϧελοΫΤϯδχΞ
    ● ࠷ۙͷϚΠϒʔϜ
    ○ ݸਓ։ൃ࠶։͠·ͨ͠
    ■ Cloud Run(gqlgen) + Firestore(Datastore mode
    )

    ■ Next.js + Rela
    y

    ○ Ҿͬӽ͠४උத

    View Slide

  3. ΞδΣϯμ ● Hasuraͱ͸
    ● HasuraΛ׆༻͢ΔͨΊͷTipsू
    ○ Upsertͷ׆༻
    ○ τϥϯβΫγϣϯ
    ○ ϦϨʔγϣϯΛؚΜͩMutatio
    n

    ○ σΟϨΫςΟϒʹΑΔ੍ޚ
    ● ͓ΘΓʹ

    View Slide

  4. ΞδΣϯμ ● Hasuraͱ͸
    ● HasuraΛ׆༻͢ΔͨΊͷTipsू
    ○ Upsertͷ׆༻
    ○ τϥϯβΫγϣϯ
    ○ ϦϨʔγϣϯΛؚΜͩMutatio
    n

    ○ σΟϨΫςΟϒʹΑΔ੍ޚ
    ● ͓ΘΓʹ

    View Slide

  5. Hasuraͱ͸
    ● DBͷεΩʔϚ͔ΒGraphQLαʔόʔΛੜ੒Ͱ͖ΔΦʔϓϯιʔε
    ● DB͑͋͞Ε͹αʔόʔཱ͕ͯΒΕΔͷͰ࣮૷ίετ͕֨ஈʹݮΔ

    View Slide

  6. ΧελϜϩδοΫʹ͍ͭͯ
    ● ΧελϜϩδοΫΛ௥Ճ͢Δํ๏ΛHasura͸ఏڙ͍ͯ͠Δ
    ○ Actio
    n

    ○ Remote Schem
    a

    ● ҙ֎ͱΧελϜϩδοΫΛ࣮૷͍ͨ͠৔໘͸ଟ͍
    ● ࣮ͨͩ͠૷ίετɺϝϯςφϯείετ͕૿Ճ͢Δ

    View Slide

  7. HasuraͷػೳΛ׆༻͢Δ͜ͱͰ

    ΧελϜϩδοΫͷ࣮૷ΛݮΒ͢͜ͱ͕Ͱ͖Δ

    View Slide

  8. ΞδΣϯμ ● Hasuraͱ͸
    ● HasuraΛ׆༻͢ΔͨΊͷTipsू
    ○ Upsertͷ׆༻
    ○ τϥϯβΫγϣϯ
    ○ ϦϨʔγϣϯΛؚΜͩMutatio
    n

    ○ σΟϨΫςΟϒʹΑΔ੍ޚ
    ● ͓ΘΓʹ

    View Slide

  9. Upsertͷ׆༻
    on_conflictΛࢦఆ͢Δ͜ͱͰUpsertͰ࣮ߦ

    View Slide

  10. Upsert࢖༻࣌ͷ஫ҙ఺
    ● σʔλ͕ଘࡏ͢Δ͔Θ͔Βͳ͍৔߹ͷΈ࢖༻͢Δ
    ○ ϕʔεͷMutation͸InsertͳͷͰશͯͷඞਢύϥϝʔλΛ౉͢ඞཁ͕͋Δ
    ○ Updateͷ୅༻ͱͯ͠͸࢖͑ͳ͍
    ● σʔλ͕ଘࡏ͢Δ͜ͱ͕Θ͔͍ͬͯΔ৔߹͸UpdateΛ࢖༻͢Δ

    View Slide

  11. ΞδΣϯμ ● Hasuraͱ͸
    ● HasuraΛ׆༻͢ΔͨΊͷTipsू
    ○ Upsertͷ׆༻
    ○ τϥϯβΫγϣϯ
    ○ ϦϨʔγϣϯΛؚΜͩMutatio
    n

    ○ σΟϨΫςΟϒʹΑΔ੍ޚ
    ● ͓ΘΓʹ

    View Slide

  12. τϥϯβΫγϣϯ
    Hasura͸1ͭͷϦΫΤετʹෳ਺ͷMutationؚ͕·Ε͍ͯΔ৔߹ɺ

    ֤Mutation͸1ͭτϥϯβΫγϣϯͰॱ൪ʹ࣮ߦ͞ΕΔ
    ͲΕ͔ҰͭͰ΋ࣦഊͨ͠৔߹શͯͷMutation͕ϩʔϧόοΫ͞ΕΔ

    View Slide

  13. τϥϯβΫγϣϯͷྫ
    deletePost͕ࣦഊͯ͠SampleMutationશମ͕ϩʔϧόοΫ͞ΕΔ
    ϩʔϧόοΫ͞ΕΔͷͰtaggings͸࡟আ͞Ε͍ͯͳ͍

    View Slide

  14. ΞδΣϯμ ● Hasuraͱ͸
    ● HasuraΛ׆༻͢ΔͨΊͷTipsू
    ○ Upsertͷ׆༻
    ○ τϥϯβΫγϣϯ
    ○ ϦϨʔγϣϯΛؚΜͩMutatio
    n

    ○ σΟϨΫςΟϒʹΑΔ੍ޚ
    ● ͓ΘΓʹ

    View Slide

  15. ϦϨʔγϣϯΛؚΜͩMutation
    Mutationͷ૊Έཱͯ࣍ୈͰ༷ʑͳϦϨʔγϣϯΛؚΜͩσʔλͷ࡞੒͕Մೳ
    ● 1:
    1

    ● 1:
    N

    ● N:N

    View Slide

  16. 1:1ͷϦϨʔγϣϯ
    profileͱͦΕʹඥͮ͘userΛ࡞੒
    userͱͦΕʹඥͮ͘profileΛ࡞੒͠Α͏ͱ͢ΔͱΤϥʔ

    View Slide

  17. ΦϒδΣΫτͷ࡞੒ॱং
    σϑΥϧτͰ͸1:1ͷϦϨʔγϣϯ͸Լهͷॱ൪ͰΦϒδΣΫτ͕࡞੒͞ΕΔ
    1. ࢠΦϒδΣΫτΛ࡞੒ͯ͠idΛऔಘ
    2. FKΧϥϜʹ 1 Ͱऔಘͨ͠idΛઃఆͯ͠਌ΦϒδΣΫτΛ࡞੒
    ※ ϦϨʔγϣϯ࡞੒࣌ͷinsertion_orderͷઃఆͰॱ൪͸มߋՄೳ

    View Slide

  18. 1:NͷϦϨʔγϣϯ
    ౤ߘͱͦΕʹඥ͍͍ͮ͘ͶΛ࡞੒

    View Slide

  19. ΦϒδΣΫτͷ࡞੒ॱং
    1:NͷϦϨʔγϣϯ͸Լهͷॱ൪ͰΦϒδΣΫτ͕࡞੒͞ΕΔ
    1. ਌ΦϒδΣΫτΛ࡞੒ͯ͠idΛऔಘ
    2. FKΧϥϜʹ 1 Ͱऔಘͨ͠idΛઃఆͯ͠ࢠΦϒδΣΫτΛ࡞੒

    View Slide

  20. N:NͷϦϨʔγϣϯ
    ౤ߘͱͦΕʹඥͮ͘λάΛ࡞੒

    View Slide

  21. ߴ౓ͳN:NͷϦϨʔγϣϯ
    ౤ߘͱͦΕʹඥͮ͘λάΛ࡞੒ɺλάͷ࡞੒͸Upsert
    λά͕͢Ͱʹଘࡏ͢Δ৔߹͸ͦͷλά
    ͱඥ෇͚ɺλά͕ଘࡏ͠ͳ͍৔߹͸λ
    άΛ࡞੒ͯ͠ඥ෇͚ͱ͍ͬͨෳࡶͳ
    Mutation΋࣮૷Մೳ

    View Slide

  22. ΞδΣϯμ ● Hasuraͱ͸
    ● HasuraΛ׆༻͢ΔͨΊͷTipsू
    ○ Upsertͷ׆༻
    ○ τϥϯβΫγϣϯ
    ○ ϦϨʔγϣϯΛؚΜͩMutatio
    n

    ○ σΟϨΫςΟϒʹΑΔ੍ޚ
    ● ͓ΘΓʹ

    View Slide

  23. σΟϨΫςΟϒʹΑΔ੍ޚ
    Hasura͸ඪ४σΟϨΫςΟϒ͕ར༻Մೳ
    σΟϨΫςΟϒΛ׆༻͢Δ͜ͱͰQuery, Mutationͷදݱͷ෯͕޿͕Δ

    View Slide

  24. σΟϨΫςΟϒʹΑΔ੍ޚ
    @includeͰऔಘ͢ΔϑΟʔϧυΛ੍ޚ
    @skipͰ࣮ߦ͢ΔMutationΛ੍ޚ

    View Slide

  25. σΟϨΫςΟϒʹΑΔ੍ޚ
    ؔ࿈ͷͳ͍MutationͰ͋Ε͹ϦΫΤετͷ෼ׂͰରԠՄೳ
    ಉ͡τϥϯβΫγϣϯ಺ͰMutationͷ࣮ߦΛ੍ޚ͍ͨ͠৔߹͸

    σΟϨΫςΟϒͰͷ੍ޚ͕༗ޮ

    View Slide

  26. ͓ΘΓʹ
    ● HasuraΛ׆༻͢Δ͜ͱͰόοΫΤϯυͷ࣮૷޻਺ΛݮΒ͢͜ͱ͕Ͱ͖Δ
    ● ଞʹ΋Hasuraͷػೳ͚ͩͰ࣮ݱͰ͖Δ͜ͱ͸ੵۃతʹ׆༻͢Δͷ͕

    ྑ͍ͱࢥ͍·͢ʂ

    View Slide