packages feed

relational-query 0.11.2.0 → 0.11.3.0

raw patch · 6 files changed

+77/−42 lines, 6 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a, Database.Record.Persistable.PersistableWidth b) => Database.Relational.OverloadedProjection.HasProjection "snd" (a, b) b
- Database.Relational.OverloadedInstances: instance Database.Record.Persistable.PersistableWidth a => Database.Relational.OverloadedProjection.HasProjection "fst" (a, b) a
+ Database.Relational.Derives: primarySelect :: HasConstraintKey Primary a p => Relation () a -> Relation p a
+ Database.Relational.Derives: uniqueSelect :: PersistableWidth p => Key Unique a p -> Relation () a -> Relation p a
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2) => Database.Relational.OverloadedProjection.HasProjection "fst" (a1, a2) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2) => Database.Relational.OverloadedProjection.HasProjection "pi0" (a1, a2) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2) => Database.Relational.OverloadedProjection.HasProjection "pi1" (a1, a2) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2) => Database.Relational.OverloadedProjection.HasProjection "snd" (a1, a2) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3) => Database.Relational.OverloadedProjection.HasProjection "fst" (a1, a2, a3) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3) => Database.Relational.OverloadedProjection.HasProjection "pi0" (a1, a2, a3) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3) => Database.Relational.OverloadedProjection.HasProjection "pi1" (a1, a2, a3) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3) => Database.Relational.OverloadedProjection.HasProjection "pi2" (a1, a2, a3) a3
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3) => Database.Relational.OverloadedProjection.HasProjection "snd" (a1, a2, a3) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4) => Database.Relational.OverloadedProjection.HasProjection "fst" (a1, a2, a3, a4) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4) => Database.Relational.OverloadedProjection.HasProjection "pi0" (a1, a2, a3, a4) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4) => Database.Relational.OverloadedProjection.HasProjection "pi1" (a1, a2, a3, a4) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4) => Database.Relational.OverloadedProjection.HasProjection "pi2" (a1, a2, a3, a4) a3
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4) => Database.Relational.OverloadedProjection.HasProjection "pi3" (a1, a2, a3, a4) a4
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4) => Database.Relational.OverloadedProjection.HasProjection "snd" (a1, a2, a3, a4) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5) => Database.Relational.OverloadedProjection.HasProjection "fst" (a1, a2, a3, a4, a5) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5) => Database.Relational.OverloadedProjection.HasProjection "pi0" (a1, a2, a3, a4, a5) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5) => Database.Relational.OverloadedProjection.HasProjection "pi1" (a1, a2, a3, a4, a5) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5) => Database.Relational.OverloadedProjection.HasProjection "pi2" (a1, a2, a3, a4, a5) a3
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5) => Database.Relational.OverloadedProjection.HasProjection "pi3" (a1, a2, a3, a4, a5) a4
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5) => Database.Relational.OverloadedProjection.HasProjection "pi4" (a1, a2, a3, a4, a5) a5
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5) => Database.Relational.OverloadedProjection.HasProjection "snd" (a1, a2, a3, a4, a5) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6) => Database.Relational.OverloadedProjection.HasProjection "fst" (a1, a2, a3, a4, a5, a6) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6) => Database.Relational.OverloadedProjection.HasProjection "pi0" (a1, a2, a3, a4, a5, a6) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6) => Database.Relational.OverloadedProjection.HasProjection "pi1" (a1, a2, a3, a4, a5, a6) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6) => Database.Relational.OverloadedProjection.HasProjection "pi2" (a1, a2, a3, a4, a5, a6) a3
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6) => Database.Relational.OverloadedProjection.HasProjection "pi3" (a1, a2, a3, a4, a5, a6) a4
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6) => Database.Relational.OverloadedProjection.HasProjection "pi4" (a1, a2, a3, a4, a5, a6) a5
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6) => Database.Relational.OverloadedProjection.HasProjection "pi5" (a1, a2, a3, a4, a5, a6) a6
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6) => Database.Relational.OverloadedProjection.HasProjection "snd" (a1, a2, a3, a4, a5, a6) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6, Database.Record.Persistable.PersistableWidth a7) => Database.Relational.OverloadedProjection.HasProjection "fst" (a1, a2, a3, a4, a5, a6, a7) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6, Database.Record.Persistable.PersistableWidth a7) => Database.Relational.OverloadedProjection.HasProjection "pi0" (a1, a2, a3, a4, a5, a6, a7) a1
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6, Database.Record.Persistable.PersistableWidth a7) => Database.Relational.OverloadedProjection.HasProjection "pi1" (a1, a2, a3, a4, a5, a6, a7) a2
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6, Database.Record.Persistable.PersistableWidth a7) => Database.Relational.OverloadedProjection.HasProjection "pi2" (a1, a2, a3, a4, a5, a6, a7) a3
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6, Database.Record.Persistable.PersistableWidth a7) => Database.Relational.OverloadedProjection.HasProjection "pi3" (a1, a2, a3, a4, a5, a6, a7) a4
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6, Database.Record.Persistable.PersistableWidth a7) => Database.Relational.OverloadedProjection.HasProjection "pi4" (a1, a2, a3, a4, a5, a6, a7) a5
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6, Database.Record.Persistable.PersistableWidth a7) => Database.Relational.OverloadedProjection.HasProjection "pi5" (a1, a2, a3, a4, a5, a6, a7) a6
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6, Database.Record.Persistable.PersistableWidth a7) => Database.Relational.OverloadedProjection.HasProjection "pi6" (a1, a2, a3, a4, a5, a6, a7) a7
+ Database.Relational.OverloadedInstances: instance (Database.Record.Persistable.PersistableWidth a1, Database.Record.Persistable.PersistableWidth a2, Database.Record.Persistable.PersistableWidth a3, Database.Record.Persistable.PersistableWidth a4, Database.Record.Persistable.PersistableWidth a5, Database.Record.Persistable.PersistableWidth a6, Database.Record.Persistable.PersistableWidth a7) => Database.Relational.OverloadedProjection.HasProjection "snd" (a1, a2, a3, a4, a5, a6, a7) a2

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ <!-- -*- Markdown -*- --> +## 0.11.3.0++- add some overloaded projection instances for tuple types.+- add #primary overloaded projection instance.+ ## 0.11.2.0  - add insertValueList API.
relational-query.cabal view
@@ -1,5 +1,5 @@ name:                relational-query-version:             0.11.2.0+version:             0.11.3.0 synopsis:            Typeful, Modular, Relational, algebraic query engine description:         This package contiains typeful relation structure and                      relational-algebraic query building DSL which can@@ -14,7 +14,7 @@ license-file:        LICENSE author:              Kei Hibino maintainer:          ex8k.hibino@gmail.com-copyright:           Copyright (c) 2013-2017 Kei Hibino+copyright:           Copyright (c) 2013-2018 Kei Hibino category:            Database build-type:          Simple cabal-version:       >=1.10
src/Database/Relational/Derives.hs view
@@ -14,9 +14,8 @@   -- * Query derivation   specifiedKey, -  unique,--  primary', primary,+  uniqueSelect,+  primarySelect,    -- * Update derivation   updateByConstraintKey,@@ -25,7 +24,11 @@   updateValuesWithKey,    -- * Derived objects from table-  derivedUniqueRelation+  derivedUniqueRelation,++  -- * Deprecated+  unique,+  primary', primary,   ) where  import Database.Record (PersistableWidth, ToSql)@@ -50,22 +53,31 @@  -- | Query restricted with specified key. specifiedKey :: PersistableWidth p-      => Pi a p        -- ^ Unique key proof object which record type is 'a' and key type is 'p'.-      -> Relation () a -- ^ 'Relation' to add restriction.-      -> Relation p a  -- ^ Result restricted 'Relation'+             => Pi a p        -- ^ Projection path+             -> Relation () a -- ^ 'Relation' to add restriction.+             -> Relation p a  -- ^ Result restricted 'Relation' specifiedKey key rel = relation' $ do   q <- query rel   (param, ()) <- placeholder (\ph -> wheres $ Record.wpi (relationWidth rel) q key .=. ph)   return (param, q)  -- | Query restricted with specified unique key.+uniqueSelect :: PersistableWidth p+             => Key Unique a p -- ^ Unique key proof object which record type is 'a' and key type is 'p'.+             -> Relation () a  -- ^ 'Relation' to add restriction.+             -> Relation p a   -- ^ Result restricted 'Relation'+uniqueSelect =  specifiedKey . projectionKey++{-# DEPRECATED unique "use `uniqueSelect` instead of this." #-}+-- | Deprecated. unique :: PersistableWidth p-       => Key Unique a p -- ^ Unique key proof object which record type is 'a' and key type is 'p'.-       -> Relation () a  -- ^ 'Relation' to add restriction.-       -> Relation p a   -- ^ Result restricted 'Relation'-unique =  specifiedKey . projectionKey+       => Key Unique a p+       -> Relation () a+       -> Relation p a+unique = uniqueSelect --- | Query restricted with specified primary key.+{-# DEPRECATED primary' "use `primarySelect` instead of this." #-}+-- | Deprecated. primary' :: PersistableWidth p          => Key Primary a p -- ^ Primary key proof object which record type is 'a' and key type is 'p'.          -> Relation () a   -- ^ 'Relation' to add restriction.@@ -73,11 +85,17 @@ primary' =  specifiedKey . projectionKey  -- | Query restricted with inferred primary key.-primary :: HasConstraintKey Primary a p-        => Relation () a -- ^ 'Relation' to add restriction.-        -> Relation p a  -- ^ Result restricted 'Relation'-primary =  primary' constraintKey+primarySelect :: HasConstraintKey Primary a p+              => Relation () a -- ^ 'Relation' to add restriction.+              -> Relation p a  -- ^ Result restricted 'Relation'+primarySelect =  primary' constraintKey +{-# DEPRECATED primary "use `primarySelect` instead of this." #-}+-- | Deprecated.+primary :: HasConstraintKey Primary a p+        => Relation () a+        -> Relation p a+primary = primarySelect  -- | Convert from Haskell type `r` into SQL value `q` list expected by update form like --
src/Database/Relational/InternalTH/Overloaded.hs view
@@ -1,9 +1,10 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE DataKinds #-}  -- | -- Module      : Database.Relational.InternalTH.Overloaded--- Copyright   : 2017 Kei Hibino+-- Copyright   : 2017-2018 Kei Hibino -- License     : BSD3 -- -- Maintainer  : ex8k.hibino@gmail.com@@ -15,12 +16,13 @@   monomorphicProjection,   polymorphicProjections,   tupleProjection,+  definePrimaryHasProjection,   ) where  #if __GLASGOW_HASKELL__ >= 800 import Language.Haskell.TH   (Name, mkName, Q, TypeQ, Dec, instanceD, funD, classP,-   appT, tupleT, varT, litT, strTyLit, clause, normalB)+   appT, tupleT, varT, litT, strTyLit, clause, normalB, listE) import Language.Haskell.TH.Lib.Extra (integralE) import Language.Haskell.TH.Name.CamelCase   (ConName, conName, toVarExp, toTypeCon)@@ -32,6 +34,7 @@ import Database.Record.TH (columnOffsetsVarNameDefault)  import Database.Relational.Pi.Unsafe (definePi)+import Database.Relational.Constraint (unsafeDefineConstraintKey, projectionKey) import Database.Relational.OverloadedProjection (HasProjection (projection)) #else import Language.Haskell.TH (Name, mkName, Q, TypeQ, appT, tupleT, varT, Dec)@@ -89,11 +92,16 @@  -- | Projection templates for tuple type. tupleProjection :: Int -> Q [Dec]-tupleProjection n =-    polymorphicProjections tyRec avs sels cts+tupleProjection n = do+    p <- polymorphicProjections tyRec avs ["fst", "snd"] cts+    q <- polymorphicProjections tyRec avs sels cts+    r <- polymorphicProjections tyRec avs oldSels cts -- DEPRECATED. drop in 0.12.0+    return $ p ++ q ++ r   where-    sels = [ "tuplePi" ++ show n ++ "_" ++ show i+    sels = [ "pi" ++ show i            | i <- [ 0 .. n - 1] ]+    oldSels = [ "tuplePi" ++ show n ++ "_" ++ show i+              | i <- [ 0 .. n - 1] ]     ((avs, cts), tyRec) = tupleN     tupleN :: (([Name], [TypeQ]), TypeQ)     --- same as tupleN of InternalTH.Base, merge after dropping GHC 7.x@@ -101,3 +109,18 @@       where         ns = [ mkName $ "a" ++ show j | j <- [1 .. n] ]         vs = map varT ns++-- | Projection template for primary key.+definePrimaryHasProjection :: TypeQ   -- ^ Record type+                           -> TypeQ   -- ^ Key type+                           -> [Int]   -- ^ Indexes specifies key+                           -> Q [Dec] -- ^ Result 'HasProjection' declaration+#if __GLASGOW_HASKELL__ >= 800+definePrimaryHasProjection recType colType indexes =+  [d| instance HasProjection "primary" $recType $colType  where+        projection _ = projectionKey+                       $ unsafeDefineConstraintKey $(listE [integralE ix | ix <- indexes])+    |]+#else+definePrimaryHasProjection _ _ _ = [d| |]+#endif
src/Database/Relational/OverloadedInstances.hs view
@@ -33,13 +33,3 @@  $(concat <$> mapM tupleProjection [2 .. 7]) -- Generic instances of tuple types are generated from 2 to 7 in GHC.Generics.--#if __GLASGOW_HASKELL__ >= 800-instance PersistableWidth a =>-         HasProjection "fst" (a, b) a where-  projection _ = definePi 0--instance (PersistableWidth a, PersistableWidth b) =>-         HasProjection "snd" (a, b) b where-  projection _ = definePi $ runPersistableRecordWidth (persistableWidth :: PersistableRecordWidth b)-#endif
src/Database/Relational/TH.hs view
@@ -92,7 +92,7 @@            schemaNameMode, nameConfig, identifierQuotation),    relationalQuerySQL, Query, relationalQuery, KeyUpdate,    Insert, insert, InsertQuery, insertQuery,-   HasConstraintKey(constraintKey), Primary, NotNull, primary, primaryUpdate)+   HasConstraintKey(constraintKey), Primary, NotNull, primarySelect, primaryUpdate)  import Database.Relational.InternalTH.Base (defineTuplePi, defineRecordProjections) import Database.Relational.Scalar (defineScalarDegree)@@ -112,12 +112,10 @@                                -> TypeQ   -- ^ Key type                                -> [Int]   -- ^ Indexes specifies key                                -> Q [Dec] -- ^ Result 'HasConstraintKey' declaration-defineHasConstraintKeyInstance constraint recType colType indexes = do-  -- kc <- defineHasColumnConstraintInstance constraint recType index-  ck <- [d| instance HasConstraintKey $constraint $recType $colType  where-              constraintKey = unsafeDefineConstraintKey $(listE [integralE ix | ix <- indexes])-          |]-  return ck+defineHasConstraintKeyInstance constraint recType colType indexes =+  [d| instance HasConstraintKey $constraint $recType $colType  where+        constraintKey = unsafeDefineConstraintKey $(listE [integralE ix | ix <- indexes])+    |]  -- | Rule template to infer primary key. defineHasPrimaryKeyInstance :: TypeQ   -- ^ Record type@@ -127,7 +125,8 @@ defineHasPrimaryKeyInstance recType colType indexes = do   kc <- Record.defineHasPrimaryKeyInstance recType indexes   ck <- defineHasConstraintKeyInstance [t| Primary |] recType colType indexes-  return $ kc ++ ck+  pp <- Overloaded.definePrimaryHasProjection recType colType indexes+  return $ kc ++ ck ++ pp  -- | Rule template to infer primary key. defineHasPrimaryKeyInstanceWithConfig :: Config  -- ^ configuration parameters@@ -344,7 +343,7 @@   let toDef = varName toDef'   simpleValD toDef     [t| Query $paramType $recType |]-    [|  relationalQuery (primary $relE) |]+    [|  relationalQuery (primarySelect $relE) |]  -- | Template of derived primary 'Update'. definePrimaryUpdate :: VarName -- ^ Variable name of result declaration