From 799b58d4b224f079dde1b0d6311b752292fb8d76 Mon Sep 17 00:00:00 2001 From: Curran McConnell Date: Wed, 2 Oct 2024 15:47:20 -0400 Subject: [PATCH 1/2] update sqlQQ test to consider a case with a schema --- persistent-qq/test/PersistentTestModels.hs | 7 +++++++ persistent-qq/test/Spec.hs | 12 ++++++++++++ 2 files changed, 19 insertions(+) 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..644bca3af 100644 --- a/persistent-qq/test/Spec.hs +++ b/persistent-qq/test/Spec.hs @@ -115,6 +115,18 @@ 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 runQuery + :: (RawSql a, Functor m, MonadIO m) + => ReaderT SqlBackend m [a] + runQuery = [sqlQQ| SELECT ?? FROM ^{PetAnimal} |] + ret <- runQuery + liftIO $ ret @?= [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) From 62ed27232c34464fb95e650a0a99ed67d19fb7cf Mon Sep 17 00:00:00 2001 From: Curran McConnell Date: Wed, 2 Oct 2024 17:09:18 -0400 Subject: [PATCH 2/2] strengthen test --- persistent-qq/test/Spec.hs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/persistent-qq/test/Spec.hs b/persistent-qq/test/Spec.hs index 644bca3af..b075d0194 100644 --- a/persistent-qq/test/Spec.hs +++ b/persistent-qq/test/Spec.hs @@ -120,12 +120,15 @@ spec = describe "persistent-qq" $ do personKey <- insert person let pet = PetAnimal personKey "Fluffy" petKey <- insert pet - let runQuery + let runQueryQuoted, runQueryRaw :: (RawSql a, Functor m, MonadIO m) => ReaderT SqlBackend m [a] - runQuery = [sqlQQ| SELECT ?? FROM ^{PetAnimal} |] - ret <- runQuery - liftIO $ ret @?= [Entity petKey pet] + 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)