@@ -646,6 +646,42 @@ instance
646 ) => FromRow row (hask1, hask2) where
646 ) => FromRow row (hask1, hask2) where
647 fromRow row = case disjoin @row1 @row2 row of
647 fromRow row = case disjoin @row1 @row2 row of
648 (row1, row2) -> (,) <$> fromRow row1 <*> fromRow row2
648 (row1, row2) -> (,) <$> fromRow row1 <*> fromRow row2
650+ ( Joinable row1 row23
651+ , row ~ Join row1 row23
652+ , FromRow row1 hask1
653+ , FromRow row23 (hask2, hask3)
655+ ) => FromRow row (hask1, hask2, hask3) where
656+ fromRow row = case disjoin @row1 @row23 row of
658+ hask1 <- fromRow row1
659+ (hask2, hask3) <- fromRow row23
660+ return (hask1, hask2, hask3)
662+ ( Joinable row1 row234
663+ , row ~ Join row1 row234
664+ , FromRow row1 hask1
665+ , FromRow row234 (hask2, hask3, hask4)
667+ ) => FromRow row (hask1, hask2, hask3, hask4) where
668+ fromRow row = case disjoin @row1 @row234 row of
669+ (row1, row234) -> do
670+ hask1 <- fromRow row1
671+ (hask2, hask3, hask4) <- fromRow row234
672+ return (hask1, hask2, hask3, hask4)
674+ ( Joinable row1 row2345
675+ , row ~ Join row1 row2345
676+ , FromRow row1 hask1
677+ , FromRow row2345 (hask2, hask3, hask4, hask5)
679+ ) => FromRow row (hask1, hask2, hask3, hask4, hask5) where
680+ fromRow row = case disjoin @row1 @row2345 row of
681+ (row1, row2345) -> do
682+ hask1 <- fromRow row1
683+ (hask2, hask3, hask4, hask5) <- fromRow row2345
684+ return (hask1, hask2, hask3, hask4, hask5)
650-- | `Only` is a 1-tuple type, useful for encoding a single parameter with
686-- | `Only` is a 1-tuple type, useful for encoding a single parameter with
651-- `toParams` or decoding a single value with `fromRow`.
687-- `toParams` or decoding a single value with `fromRow`.