diff --git a/persistent-qq/test/PersistentTestModels.hs b/persistent-qq/test/PersistentTestModels.hs index 5b256cdfc..acdf94f36 100644 --- a/persistent-qq/test/PersistentTestModels.hs +++ b/persistent-qq/test/PersistentTestModels.hs @@ -110,11 +110,17 @@ share ~no Int def Int + PetAnimal schema=animals + ownerId PersonId + name Text |] deriving instance Show (BackendKey backend) => Show (PetGeneric backend) deriving instance Eq (BackendKey backend) => Eq (PetGeneric backend) +deriving instance Show (BackendKey backend) => Show (PetAnimalGeneric backend) +deriving instance Eq (BackendKey backend) => Eq (PetAnimalGeneric backend) + share [ mkPersist sqlSettings { mpsPrefixFields = False, mpsGeneric = True } , mkMigrate "noPrefixMigrate" ] [persistLowerCase| @@ -178,3 +184,4 @@ cleanDB = do deleteWhere ([] :: [Filter (OutdoorPetGeneric backend)]) deleteWhere ([] :: [Filter (UserPTGeneric backend)]) deleteWhere ([] :: [Filter (EmailPTGeneric backend)]) + deleteWhere ([] :: [Filter (PetAnimalGeneric backend)]) diff --git a/persistent-qq/test/Spec.hs b/persistent-qq/test/Spec.hs index 315a15bf7..b075d0194 100644 --- a/persistent-qq/test/Spec.hs +++ b/persistent-qq/test/Spec.hs @@ -115,6 +115,21 @@ spec = describe "persistent-qq" $ do liftIO $ ret1 @?= [Entity p1k p1] liftIO $ ret2 @?= [Entity (RFOKey $ unPersonKey p1k) (RFO p1)] + it "sqlQQ/entity in schema" $ db $ do + let person = Person "Zacarias" 93 Nothing + personKey <- insert person + let pet = PetAnimal personKey "Fluffy" + petKey <- insert pet + let runQueryQuoted, runQueryRaw + :: (RawSql a, Functor m, MonadIO m) + => ReaderT SqlBackend m [a] + runQueryQuoted = [sqlQQ| SELECT ?? FROM ^{PetAnimal} |] + runQueryRaw = [sqlQQ| SELECT ?? FROM animals.pet_animal |] + retQuoted <- runQueryQuoted + retRaw <- runQueryRaw + liftIO $ retQuoted @?= [Entity petKey pet] + liftIO $ retRaw @?= [Entity petKey pet] + it "sqlQQ/OUTER JOIN" $ db $ do let insert' :: (PersistStore backend, PersistEntity val, PersistEntityBackend val ~ BaseBackend backend, MonadIO m, SafeToInsert val) => val -> ReaderT backend m (Key val, val)