on dev help sign in
more nested rows
a0afa3cEitan Chatav
squeal-postgresql/src/Squeal/PostgreSQL/Binary.hs+36
@@ -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
649+instance
650+ ( Joinable row1 row23
651+ , row ~ Join row1 row23
652+ , FromRow row1 hask1
653+ , FromRow row23 (hask2, hask3)
654+ , SListI row
655+ ) => FromRow row (hask1, hask2, hask3) where
656+ fromRow row = case disjoin @row1 @row23 row of
657+ (row1, row23) -> do
658+ hask1 <- fromRow row1
659+ (hask2, hask3) <- fromRow row23
660+ return (hask1, hask2, hask3)
661+instance
662+ ( Joinable row1 row234
663+ , row ~ Join row1 row234
664+ , FromRow row1 hask1
665+ , FromRow row234 (hask2, hask3, hask4)
666+ , SListI row
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)
673+instance
674+ ( Joinable row1 row2345
675+ , row ~ Join row1 row2345
676+ , FromRow row1 hask1
677+ , FromRow row2345 (hask2, hask3, hask4, hask5)
678+ , SListI row
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)
649
685
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`.
squeal-postgresql/src/Squeal/PostgreSQL/Schema.hs+6
@@ -831,6 +831,12 @@ RowPG Person :: [(Symbol, NullityType)]
831-}
831-}
832type family RowPG (hask :: Type) :: RowType where
832type family RowPG (hask :: Type) :: RowType where
833 RowPG (hask1, hask2) = Join (RowPG hask1) (RowPG hask2)
833 RowPG (hask1, hask2) = Join (RowPG hask1) (RowPG hask2)
834+ RowPG (hask1, hask2, hask3) =
835+ Join (RowPG hask1) (RowPG (hask2, hask3))
836+ RowPG (hask1, hask2, hask3, hask4) =
837+ Join (RowPG hask1) (RowPG (hask2, hask3, hask4))
838+ RowPG (hask1, hask2, hask3, hask4, hask5) =
839+ Join (RowPG hask1) (RowPG (hask2, hask3, hask4, hask5))
834 RowPG (P (col ::: head)) = '[col ::: NullPG head]
840 RowPG (P (col ::: head)) = '[col ::: NullPG head]
835 RowPG hask = RowOf (RecordCodeOf hask)
841 RowPG hask = RowOf (RecordCodeOf hask)
836
842