packages feed

type-level-kv-list-esqueleto (empty) → 0.1.0.0

raw patch · 5 files changed

+1200/−0 lines, 5 filesdep +basedep +esqueletodep +textsetup-changed

Dependencies added: base, esqueleto, text, type-level-kv-list

Files

+ LICENSE view
@@ -0,0 +1,21 @@+MIT License++Copyright (c) 2022 Sakura-chan the Goat++Permission is hereby granted, free of charge, to any person obtaining a copy+of this software and associated documentation files (the "Software"), to deal+in the Software without restriction, including without limitation the rights+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+copies of the Software, and to permit persons to whom the Software is+furnished to do so, subject to the following conditions:++The above copyright notice and this permission notice shall be included in all+copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE+SOFTWARE.
+ README.md view
@@ -0,0 +1,8 @@+[![test](https://github.com/arowM/type-level-kv-list-esqueleto/actions/workflows/test.yaml/badge.svg)](https://github.com/arowM/type-level-kv-list-esqueleto/actions/workflows/test.yaml)+[![Hackage](https://img.shields.io/hackage/v/type-level-kv-list-esqueleto.svg)](https://hackage.haskell.org/package/type-level-kv-list-esqueleto)+[![Stackage LTS](http://stackage.org/package/type-level-kv-list-esqueleto/badge/lts)](http://stackage.org/lts/package/type-level-kv-list-esqueleto)+[![Stackage Nightly](http://stackage.org/package/type-level-kv-list-esqueleto/badge/nightly)](http://stackage.org/nightly/package/type-level-kv-list-esqueleto)++# type-level-kv-list-esqueleto++Make Esqueleto handy with [type-level-kv-list](https://hackage.haskell.org/package/type-level-kv-list).
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ src/Data/KVList/Esqueleto.hs view
@@ -0,0 +1,1089 @@+{-| Helper library for KVList to use in Esqueleto.+-}++{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE UndecidableInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++module Data.KVList.Esqueleto+  ( SingleValue+  , singleValue+  , ToKVList(..)+  ) where++import Prelude++import Data.Functor ((<&>))+import Data.Text (Text)+import Data.Proxy (Proxy(..))+import Database.Esqueleto.Internal.Internal (SqlSelect(..))+import Data.KVList ((:=)((:=)), (&=), KVList, ListKey(..))+import qualified Data.KVList as KVList+import GHC.TypeLits (KnownSymbol)+++class ToKVList a kvls | kvls -> a, a -> kvls where+  toKVList :: a -> Either Text kvls++instance+  ( ToKVList a ls+  ) => ToKVList (Maybe a) (Maybe ls) where+  toKVList ma =+    case ma of+      Nothing -> Right Nothing+      Just a ->+        toKVList a+          <&> Just++{-| -}+newtype SingleValue e = SingleValue e++{-| -}+singleValue :: e -> SingleValue e+singleValue = SingleValue++instance+  forall a ra recA.+  ( SqlSelect a ra+  , ToKVList ra recA+  ) => SqlSelect (SingleValue a) (KVList '[ "value" := recA ]) where+  sqlSelectCols esc (SingleValue a) =+    sqlSelectCols esc a+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy a)+  sqlSelectProcessRow vs =+    do+      (ra :: ra) <- sqlSelectProcessRow vs+      recA <- toKVList ra+      pure $ KVList.singleton (#value := recA)++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , KnownSymbol la+  , KnownSymbol lb+  , ToKVList ra recA+  , ToKVList rb recB+  , KVList.HasKey la '[la := a, lb := b] a+  , KVList.HasKey lb '[la := a, lb := b] b+  ) => SqlSelect (KVList '[ la := a, lb := b ]) (KVList '[ la := recA, lb := recB ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , kvs ~ '[ la := a, lb := b, lc := c]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c]) (KVList '[ la := recA, lb := recB, lc := recC ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , kvs ~ '[ la := a, lb := b, lc := c, ld := d]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , SqlSelect g rg+  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , KnownSymbol lg+  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , ToKVList rg recG+  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  , KVList.HasKey lg kvs g+  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF, lg := recG ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f, KVList.get (ListKey :: ListKey lg) r :: g)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f, g))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf, rg :: rg) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      g <- toKVList rg+      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f+          &= (ListKey :: ListKey lg) := g++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , SqlSelect g rg+  , SqlSelect h rh+  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , KnownSymbol lg+  , KnownSymbol lh+  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , ToKVList rg recG+  , ToKVList rh recH+  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  , KVList.HasKey lg kvs g+  , KVList.HasKey lh kvs h+  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF, lg := recG, lh := recH ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f, KVList.get (ListKey :: ListKey lg) r :: g, KVList.get (ListKey :: ListKey lh) r :: h)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f, g, h))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf, rg :: rg, rh :: rh) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      g <- toKVList rg+      h <- toKVList rh+      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f+          &= (ListKey :: ListKey lg) := g+          &= (ListKey :: ListKey lh) := h++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , SqlSelect g rg+  , SqlSelect h rh+  , SqlSelect i ri+  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , KnownSymbol lg+  , KnownSymbol lh+  , KnownSymbol li+  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , ToKVList rg recG+  , ToKVList rh recH+  , ToKVList ri recI+  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  , KVList.HasKey lg kvs g+  , KVList.HasKey lh kvs h+  , KVList.HasKey li kvs i+  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF, lg := recG, lh := recH, li := recI ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f, KVList.get (ListKey :: ListKey lg) r :: g, KVList.get (ListKey :: ListKey lh) r :: h, KVList.get (ListKey :: ListKey li) r :: i)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f, g, h, i))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf, rg :: rg, rh :: rh, ri :: ri) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      g <- toKVList rg+      h <- toKVList rh+      i <- toKVList ri+      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f+          &= (ListKey :: ListKey lg) := g+          &= (ListKey :: ListKey lh) := h+          &= (ListKey :: ListKey li) := i++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , SqlSelect g rg+  , SqlSelect h rh+  , SqlSelect i ri+  , SqlSelect j rj+  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , KnownSymbol lg+  , KnownSymbol lh+  , KnownSymbol li+  , KnownSymbol lj+  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , ToKVList rg recG+  , ToKVList rh recH+  , ToKVList ri recI+  , ToKVList rj recJ+  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  , KVList.HasKey lg kvs g+  , KVList.HasKey lh kvs h+  , KVList.HasKey li kvs i+  , KVList.HasKey lj kvs j+  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF, lg := recG, lh := recH, li := recI, lj := recJ ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f, KVList.get (ListKey :: ListKey lg) r :: g, KVList.get (ListKey :: ListKey lh) r :: h, KVList.get (ListKey :: ListKey li) r :: i, KVList.get (ListKey :: ListKey lj) r :: j)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f, g, h, i, j))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf, rg :: rg, rh :: rh, ri :: ri, rj :: rj) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      g <- toKVList rg+      h <- toKVList rh+      i <- toKVList ri+      j <- toKVList rj+      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f+          &= (ListKey :: ListKey lg) := g+          &= (ListKey :: ListKey lh) := h+          &= (ListKey :: ListKey li) := i+          &= (ListKey :: ListKey lj) := j++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , SqlSelect g rg+  , SqlSelect h rh+  , SqlSelect i ri+  , SqlSelect j rj+  , SqlSelect k rk+  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , KnownSymbol lg+  , KnownSymbol lh+  , KnownSymbol li+  , KnownSymbol lj+  , KnownSymbol lk+  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , ToKVList rg recG+  , ToKVList rh recH+  , ToKVList ri recI+  , ToKVList rj recJ+  , ToKVList rk recK+  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  , KVList.HasKey lg kvs g+  , KVList.HasKey lh kvs h+  , KVList.HasKey li kvs i+  , KVList.HasKey lj kvs j+  , KVList.HasKey lk kvs k+  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF, lg := recG, lh := recH, li := recI, lj := recJ, lk := recK ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f, KVList.get (ListKey :: ListKey lg) r :: g, KVList.get (ListKey :: ListKey lh) r :: h, KVList.get (ListKey :: ListKey li) r :: i, KVList.get (ListKey :: ListKey lj) r :: j, KVList.get (ListKey :: ListKey lk) r :: k)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f, g, h, i, j, k))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf, rg :: rg, rh :: rh, ri :: ri, rj :: rj, rk :: rk) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      g <- toKVList rg+      h <- toKVList rh+      i <- toKVList ri+      j <- toKVList rj+      k <- toKVList rk+      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f+          &= (ListKey :: ListKey lg) := g+          &= (ListKey :: ListKey lh) := h+          &= (ListKey :: ListKey li) := i+          &= (ListKey :: ListKey lj) := j+          &= (ListKey :: ListKey lk) := k++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , SqlSelect g rg+  , SqlSelect h rh+  , SqlSelect i ri+  , SqlSelect j rj+  , SqlSelect k rk+  , SqlSelect l rl++  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , KnownSymbol lg+  , KnownSymbol lh+  , KnownSymbol li+  , KnownSymbol lj+  , KnownSymbol lk+  , KnownSymbol ll++  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , ToKVList rg recG+  , ToKVList rh recH+  , ToKVList ri recI+  , ToKVList rj recJ+  , ToKVList rk recK+  , ToKVList rl recL++  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k, ll := l ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  , KVList.HasKey lg kvs g+  , KVList.HasKey lh kvs h+  , KVList.HasKey li kvs i+  , KVList.HasKey lj kvs j+  , KVList.HasKey lk kvs k+  , KVList.HasKey ll kvs l++  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k, ll := l ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF, lg := recG, lh := recH, li := recI, lj := recJ, lk := recK, ll := recL ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f, KVList.get (ListKey :: ListKey lg) r :: g, KVList.get (ListKey :: ListKey lh) r :: h, KVList.get (ListKey :: ListKey li) r :: i, KVList.get (ListKey :: ListKey lj) r :: j, KVList.get (ListKey :: ListKey lk) r :: k, KVList.get (ListKey :: ListKey ll) r :: l)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f, g, h, i, j, k, l))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf, rg :: rg, rh :: rh, ri :: ri, rj :: rj, rk :: rk, rl :: rl) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      g <- toKVList rg+      h <- toKVList rh+      i <- toKVList ri+      j <- toKVList rj+      k <- toKVList rk+      l <- toKVList rl++      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f+          &= (ListKey :: ListKey lg) := g+          &= (ListKey :: ListKey lh) := h+          &= (ListKey :: ListKey li) := i+          &= (ListKey :: ListKey lj) := j+          &= (ListKey :: ListKey lk) := k+          &= (ListKey :: ListKey ll) := l++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , SqlSelect g rg+  , SqlSelect h rh+  , SqlSelect i ri+  , SqlSelect j rj+  , SqlSelect k rk+  , SqlSelect l rl+  , SqlSelect m rm++  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , KnownSymbol lg+  , KnownSymbol lh+  , KnownSymbol li+  , KnownSymbol lj+  , KnownSymbol lk+  , KnownSymbol ll+  , KnownSymbol lm++  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , ToKVList rg recG+  , ToKVList rh recH+  , ToKVList ri recI+  , ToKVList rj recJ+  , ToKVList rk recK+  , ToKVList rl recL+  , ToKVList rm recM++  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k, ll := l, lm := m ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  , KVList.HasKey lg kvs g+  , KVList.HasKey lh kvs h+  , KVList.HasKey li kvs i+  , KVList.HasKey lj kvs j+  , KVList.HasKey lk kvs k+  , KVList.HasKey ll kvs l+  , KVList.HasKey lm kvs m++  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k, ll := l, lm := m ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF, lg := recG, lh := recH, li := recI, lj := recJ, lk := recK, ll := recL, lm := recM ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f, KVList.get (ListKey :: ListKey lg) r :: g, KVList.get (ListKey :: ListKey lh) r :: h, KVList.get (ListKey :: ListKey li) r :: i, KVList.get (ListKey :: ListKey lj) r :: j, KVList.get (ListKey :: ListKey lk) r :: k, KVList.get (ListKey :: ListKey ll) r :: l, KVList.get (ListKey :: ListKey lm) r :: m)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f, g, h, i, j, k, l, m))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf, rg :: rg, rh :: rh, ri :: ri, rj :: rj, rk :: rk, rl :: rl, rm :: rm) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      g <- toKVList rg+      h <- toKVList rh+      i <- toKVList ri+      j <- toKVList rj+      k <- toKVList rk+      l <- toKVList rl+      m <- toKVList rm++      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f+          &= (ListKey :: ListKey lg) := g+          &= (ListKey :: ListKey lh) := h+          &= (ListKey :: ListKey li) := i+          &= (ListKey :: ListKey lj) := j+          &= (ListKey :: ListKey lk) := k+          &= (ListKey :: ListKey ll) := l+          &= (ListKey :: ListKey lm) := m++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , SqlSelect g rg+  , SqlSelect h rh+  , SqlSelect i ri+  , SqlSelect j rj+  , SqlSelect k rk+  , SqlSelect l rl+  , SqlSelect m rm+  , SqlSelect n rn++  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , KnownSymbol lg+  , KnownSymbol lh+  , KnownSymbol li+  , KnownSymbol lj+  , KnownSymbol lk+  , KnownSymbol ll+  , KnownSymbol lm+  , KnownSymbol ln++  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , ToKVList rg recG+  , ToKVList rh recH+  , ToKVList ri recI+  , ToKVList rj recJ+  , ToKVList rk recK+  , ToKVList rl recL+  , ToKVList rm recM+  , ToKVList rn recN++  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k, ll := l, lm := m, ln := n ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  , KVList.HasKey lg kvs g+  , KVList.HasKey lh kvs h+  , KVList.HasKey li kvs i+  , KVList.HasKey lj kvs j+  , KVList.HasKey lk kvs k+  , KVList.HasKey ll kvs l+  , KVList.HasKey lm kvs m+  , KVList.HasKey ln kvs n++  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k, ll := l, lm := m, ln := n ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF, lg := recG, lh := recH, li := recI, lj := recJ, lk := recK, ll := recL, lm := recM, ln := recN ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f, KVList.get (ListKey :: ListKey lg) r :: g, KVList.get (ListKey :: ListKey lh) r :: h, KVList.get (ListKey :: ListKey li) r :: i, KVList.get (ListKey :: ListKey lj) r :: j, KVList.get (ListKey :: ListKey lk) r :: k, KVList.get (ListKey :: ListKey ll) r :: l, KVList.get (ListKey :: ListKey lm) r :: m, KVList.get (ListKey :: ListKey ln) r :: n)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f, g, h, i, j, k, l, m, n))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf, rg :: rg, rh :: rh, ri :: ri, rj :: rj, rk :: rk, rl :: rl, rm :: rm, rn :: rn) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      g <- toKVList rg+      h <- toKVList rh+      i <- toKVList ri+      j <- toKVList rj+      k <- toKVList rk+      l <- toKVList rl+      m <- toKVList rm+      n <- toKVList rn++      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f+          &= (ListKey :: ListKey lg) := g+          &= (ListKey :: ListKey lh) := h+          &= (ListKey :: ListKey li) := i+          &= (ListKey :: ListKey lj) := j+          &= (ListKey :: ListKey lk) := k+          &= (ListKey :: ListKey ll) := l+          &= (ListKey :: ListKey lm) := m+          &= (ListKey :: ListKey ln) := n++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , SqlSelect g rg+  , SqlSelect h rh+  , SqlSelect i ri+  , SqlSelect j rj+  , SqlSelect k rk+  , SqlSelect l rl+  , SqlSelect m rm+  , SqlSelect n rn+  , SqlSelect o ro++  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , KnownSymbol lg+  , KnownSymbol lh+  , KnownSymbol li+  , KnownSymbol lj+  , KnownSymbol lk+  , KnownSymbol ll+  , KnownSymbol lm+  , KnownSymbol ln+  , KnownSymbol lo++  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , ToKVList rg recG+  , ToKVList rh recH+  , ToKVList ri recI+  , ToKVList rj recJ+  , ToKVList rk recK+  , ToKVList rl recL+  , ToKVList rm recM+  , ToKVList rn recN+  , ToKVList ro recO++  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k, ll := l, lm := m, ln := n, lo := o ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  , KVList.HasKey lg kvs g+  , KVList.HasKey lh kvs h+  , KVList.HasKey li kvs i+  , KVList.HasKey lj kvs j+  , KVList.HasKey lk kvs k+  , KVList.HasKey ll kvs l+  , KVList.HasKey lm kvs m+  , KVList.HasKey ln kvs n+  , KVList.HasKey lo kvs o++  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k, ll := l, lm := m, ln := n, lo := o ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF, lg := recG, lh := recH, li := recI, lj := recJ, lk := recK, ll := recL, lm := recM, ln := recN, lo := recO ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f, KVList.get (ListKey :: ListKey lg) r :: g, KVList.get (ListKey :: ListKey lh) r :: h, KVList.get (ListKey :: ListKey li) r :: i, KVList.get (ListKey :: ListKey lj) r :: j, KVList.get (ListKey :: ListKey lk) r :: k, KVList.get (ListKey :: ListKey ll) r :: l, KVList.get (ListKey :: ListKey lm) r :: m, KVList.get (ListKey :: ListKey ln) r :: n, KVList.get (ListKey :: ListKey lo) r :: o)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf, rg :: rg, rh :: rh, ri :: ri, rj :: rj, rk :: rk, rl :: rl, rm :: rm, rn :: rn, ro :: ro) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      g <- toKVList rg+      h <- toKVList rh+      i <- toKVList ri+      j <- toKVList rj+      k <- toKVList rk+      l <- toKVList rl+      m <- toKVList rm+      n <- toKVList rn+      o <- toKVList ro++      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f+          &= (ListKey :: ListKey lg) := g+          &= (ListKey :: ListKey lh) := h+          &= (ListKey :: ListKey li) := i+          &= (ListKey :: ListKey lj) := j+          &= (ListKey :: ListKey lk) := k+          &= (ListKey :: ListKey ll) := l+          &= (ListKey :: ListKey lm) := m+          &= (ListKey :: ListKey ln) := n+          &= (ListKey :: ListKey lo) := o++instance+  ( SqlSelect a ra+  , SqlSelect b rb+  , SqlSelect c rc+  , SqlSelect d rd+  , SqlSelect e re+  , SqlSelect f rf+  , SqlSelect g rg+  , SqlSelect h rh+  , SqlSelect i ri+  , SqlSelect j rj+  , SqlSelect k rk+  , SqlSelect l rl+  , SqlSelect m rm+  , SqlSelect n rn+  , SqlSelect o ro+  , SqlSelect p rp++  , KnownSymbol la+  , KnownSymbol lb+  , KnownSymbol lc+  , KnownSymbol ld+  , KnownSymbol le+  , KnownSymbol lf+  , KnownSymbol lg+  , KnownSymbol lh+  , KnownSymbol li+  , KnownSymbol lj+  , KnownSymbol lk+  , KnownSymbol ll+  , KnownSymbol lm+  , KnownSymbol ln+  , KnownSymbol lo+  , KnownSymbol lp++  , ToKVList ra recA+  , ToKVList rb recB+  , ToKVList rc recC+  , ToKVList rd recD+  , ToKVList re recE+  , ToKVList rf recF+  , ToKVList rg recG+  , ToKVList rh recH+  , ToKVList ri recI+  , ToKVList rj recJ+  , ToKVList rk recK+  , ToKVList rl recL+  , ToKVList rm recM+  , ToKVList rn recN+  , ToKVList ro recO+  , ToKVList rp recP++  , kvs ~ '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k, ll := l, lm := m, ln := n, lo := o, lp := p ]+  , KVList.HasKey la kvs a+  , KVList.HasKey lb kvs b+  , KVList.HasKey lc kvs c+  , KVList.HasKey ld kvs d+  , KVList.HasKey le kvs e+  , KVList.HasKey lf kvs f+  , KVList.HasKey lg kvs g+  , KVList.HasKey lh kvs h+  , KVList.HasKey li kvs i+  , KVList.HasKey lj kvs j+  , KVList.HasKey lk kvs k+  , KVList.HasKey ll kvs l+  , KVList.HasKey lm kvs m+  , KVList.HasKey ln kvs n+  , KVList.HasKey lo kvs o+  , KVList.HasKey lp kvs p++  ) => SqlSelect (KVList '[ la := a, lb := b, lc := c, ld := d, le := e, lf := f, lg := g, lh := h, li := i, lj := j, lk := k, ll := l, lm := m, ln := n, lo := o, lp := p ]) (KVList '[ la := recA, lb := recB, lc := recC, ld := recD, le := recE, lf := recF, lg := recG, lh := recH, li := recI, lj := recJ, lk := recK, ll := recL, lm := recM, ln := recN, lo := recO, lp := recP ]) where+  sqlSelectCols esc r =+    sqlSelectCols esc (KVList.get (ListKey :: ListKey la) r :: a, KVList.get (ListKey :: ListKey lb) r :: b, KVList.get (ListKey :: ListKey lc) r :: c, KVList.get (ListKey :: ListKey ld) r :: d, KVList.get (ListKey :: ListKey le) r :: e, KVList.get (ListKey :: ListKey lf) r :: f, KVList.get (ListKey :: ListKey lg) r :: g, KVList.get (ListKey :: ListKey lh) r :: h, KVList.get (ListKey :: ListKey li) r :: i, KVList.get (ListKey :: ListKey lj) r :: j, KVList.get (ListKey :: ListKey lk) r :: k, KVList.get (ListKey :: ListKey ll) r :: l, KVList.get (ListKey :: ListKey lm) r :: m, KVList.get (ListKey :: ListKey ln) r :: n, KVList.get (ListKey :: ListKey lo) r :: o, KVList.get (ListKey :: ListKey lp) r :: p)+  sqlSelectColCount _ =+    sqlSelectColCount (Proxy :: Proxy (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p))+  sqlSelectProcessRow vs =+    do+      (ra :: ra, rb :: rb, rc :: rc, rd :: rd, re :: re, rf :: rf, rg :: rg, rh :: rh, ri :: ri, rj :: rj, rk :: rk, rl :: rl, rm :: rm, rn :: rn, ro :: ro, rp :: rp) <- sqlSelectProcessRow vs+      a <- toKVList ra+      b <- toKVList rb+      c <- toKVList rc+      d <- toKVList rd+      e <- toKVList re+      f <- toKVList rf+      g <- toKVList rg+      h <- toKVList rh+      i <- toKVList ri+      j <- toKVList rj+      k <- toKVList rk+      l <- toKVList rl+      m <- toKVList rm+      n <- toKVList rn+      o <- toKVList ro+      p <- toKVList rp++      pure $+        KVList.empty+          &= (ListKey :: ListKey la) := a+          &= (ListKey :: ListKey lb) := b+          &= (ListKey :: ListKey lc) := c+          &= (ListKey :: ListKey ld) := d+          &= (ListKey :: ListKey le) := e+          &= (ListKey :: ListKey lf) := f+          &= (ListKey :: ListKey lg) := g+          &= (ListKey :: ListKey lh) := h+          &= (ListKey :: ListKey li) := i+          &= (ListKey :: ListKey lj) := j+          &= (ListKey :: ListKey lk) := k+          &= (ListKey :: ListKey ll) := l+          &= (ListKey :: ListKey lm) := m+          &= (ListKey :: ListKey ln) := n+          &= (ListKey :: ListKey lo) := o+          &= (ListKey :: ListKey lp) := p
+ type-level-kv-list-esqueleto.cabal view
@@ -0,0 +1,80 @@+cabal-version: 1.12++-- This file has been generated from package.yaml by hpack version 0.34.4.+--+-- see: https://github.com/sol/hpack++name:           type-level-kv-list-esqueleto+version:        0.1.0.0+synopsis:       Make Esqueleto handy with type-level-kv-list+description:    This library provides a way to use type-level-kv-list with Esqueleto.+category:       Data+homepage:       https://github.com/arowM/type-level-kv-list-esqueleto#readme+bug-reports:    https://github.com/arowM/type-level-kv-list-esqueleto/issues+author:         Sakura-chan the Goat+maintainer:     arow.okamoto+github@gmail.com+copyright:      2022 Sakura-chan the Goat+license:        MIT+license-file:   LICENSE+build-type:     Simple+extra-source-files:+    README.md++source-repository head+  type: git+  location: https://github.com/arowM/type-level-kv-list-esqueleto++library+  exposed-modules:+      Data.KVList.Esqueleto+  other-modules:+      Paths_type_level_kv_list_esqueleto+  hs-source-dirs:+      src+  default-extensions:+      BangPatterns+      BinaryLiterals+      ConstraintKinds+      DataKinds+      DefaultSignatures+      DeriveDataTypeable+      DeriveFoldable+      DeriveFunctor+      DeriveGeneric+      DeriveTraversable+      DoAndIfThenElse+      DuplicateRecordFields+      EmptyDataDecls+      ExistentialQuantification+      FlexibleContexts+      FlexibleInstances+      FunctionalDependencies+      GADTs+      GeneralizedNewtypeDeriving+      InstanceSigs+      KindSignatures+      LambdaCase+      MultiParamTypeClasses+      MultiWayIf+      NamedFieldPuns+      OverloadedStrings+      PartialTypeSignatures+      PatternGuards+      PolyKinds+      RankNTypes+      RecordWildCards+      ScopedTypeVariables+      StandaloneDeriving+      Strict+      StrictData+      TupleSections+      TypeFamilies+      TypeSynonymInstances+      ViewPatterns+  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints+  build-depends:+      base >=4.7 && <5+    , esqueleto >=3.2.0 && <4.0.0+    , text >=0.11 && <2.1+    , type-level-kv-list >=0.2.0.0 && <0.3.0.0+  default-language: Haskell2010