From 9be5ab333a263bc32aa8b91384631a6c81c156de Mon Sep 17 00:00:00 2001 From: Matt Roberts Date: Thu, 21 Nov 2024 22:58:07 +0000 Subject: [PATCH] fix: pr feedback and small refactoring --- changelog.d/63 | 14 +---------- src/core/Flora/Model/PackageGroup/Query.hs | 28 +++++++++------------- src/core/Flora/Model/PackageGroup/Types.hs | 3 +-- test/Flora/PackageGroupSpec.hs | 6 ++--- 4 files changed, 16 insertions(+), 35 deletions(-) diff --git a/changelog.d/63 b/changelog.d/63 index 42fd59a0..a95a6613 100644 --- a/changelog.d/63 +++ b/changelog.d/63 @@ -3,17 +3,5 @@ prs: #785 issues: #556 description: { - -- Migration for `create_package_groups` & `create_package_group_packages` -- Updates to various files as a result of the work done -- Created: - - `Flora/Model/PackageGroup/Query.hs` - - `Flora/Model/PackageGroup/Types.hs` - - `Flora/Model/PackageGroup/Update.hs` -- Created: - - `Flora/Model/PackageGroupPackage/Query.hs` - - `Flora/Model/PackageGroupPackage/Types.hs` - - `Flora/Model/PackageGroupPackage/Update.hs` -- Created: - - test/Flora/PackageGroupSpec.hs` + Migration for `create_package_groups` & `create_package_group_packages` } diff --git a/src/core/Flora/Model/PackageGroup/Query.hs b/src/core/Flora/Model/PackageGroup/Query.hs index a927b983..d9ea6fb0 100644 --- a/src/core/Flora/Model/PackageGroup/Query.hs +++ b/src/core/Flora/Model/PackageGroup/Query.hs @@ -7,30 +7,24 @@ module Flora.Model.PackageGroup.Query import Data.Text (Text) import Data.Vector (Vector) -import Database.PostgreSQL.Entity (selectOneByField) -import Database.PostgreSQL.Entity.DBT - ( QueryNature (Select) - , query - ) +import Database.PostgreSQL.Entity (joinSelectOneByField, selectOneByField) import Database.PostgreSQL.Entity.Types (field) import Database.PostgreSQL.Simple (Only (..)) -import Database.PostgreSQL.Simple.SqlQQ (sql) import Effectful (Eff, type (:>)) import Effectful.PostgreSQL.Transact.Effect (DB, dbtToEff) import Flora.Model.Package.Types (Package) -import Flora.Model.PackageGroup.Types (PackageGroup, PackageGroupId) +import Flora.Model.PackageGroup.Types (PackageGroup (..), PackageGroupId (..)) +import Flora.Model.PackageGroupPackage.Types (PackageGroupPackage (..)) getPackagesByPackageGroupId :: DB :> es => PackageGroupId -> Eff es (Vector Package) -getPackagesByPackageGroupId packageGroupId = dbtToEff $ query Select q (Only packageGroupId) - where - q = - [sql| - SELECT p.* - FROM packages AS p - JOIN package_group_packages AS pgp - ON p.package_id = pgp.package_id - WHERE pgp.package_group_id = ? - |] +getPackagesByPackageGroupId packageGroupId = + dbtToEff $ + joinSelectOneByField + @Package + @PackageGroupPackage + [field| package_id |] + [field| package_group_id |] + packageGroupId getPackageGroupByPackageGroupName :: DB :> es => Text -> Eff es (Maybe PackageGroup) getPackageGroupByPackageGroupName groupName = dbtToEff $ selectOneByField [field| group_name |] (Only groupName) diff --git a/src/core/Flora/Model/PackageGroup/Types.hs b/src/core/Flora/Model/PackageGroup/Types.hs index 3d77e9c8..5e9294e2 100644 --- a/src/core/Flora/Model/PackageGroup/Types.hs +++ b/src/core/Flora/Model/PackageGroup/Types.hs @@ -1,7 +1,5 @@ module Flora.Model.PackageGroup.Types where -import GHC.Generics - import Control.DeepSeq (NFData) import Data.Aeson import Data.Text (Text) @@ -13,6 +11,7 @@ import Database.PostgreSQL.Simple (FromRow) import Database.PostgreSQL.Simple.FromField (FromField (..)) import Database.PostgreSQL.Simple.ToField (ToField (..)) import Database.PostgreSQL.Simple.ToRow (ToRow) +import GHC.Generics newtype PackageGroupId = PackageGroupId {getPackageGroupId :: UUID} deriving diff --git a/test/Flora/PackageGroupSpec.hs b/test/Flora/PackageGroupSpec.hs index c62aa4ca..8a859bbf 100644 --- a/test/Flora/PackageGroupSpec.hs +++ b/test/Flora/PackageGroupSpec.hs @@ -52,7 +52,7 @@ testAddPackageToPackageGroup = do .~ pure user.userId packageGroup <- instantiatePackageGroup randomPackageGroupTemplate - packageGroupPackage <- + void $ instantiatePackageGroupPackage $ randomPackageGroupPackageTemplate & #packageGroupId @@ -75,7 +75,7 @@ testRemovePackageFromPackageGroup = do .~ pure user.userId packageGroup <- instantiatePackageGroup randomPackageGroupTemplate - packageGroupPackage <- + void $ instantiatePackageGroupPackage $ randomPackageGroupPackageTemplate & #packageGroupId @@ -99,7 +99,7 @@ testGetPackagesByPackageGroupId = do .~ pure user.userId packageGroup <- instantiatePackageGroup randomPackageGroupTemplate - packageGroupPackage <- + void $ instantiatePackageGroupPackage $ randomPackageGroupPackageTemplate & #packageGroupId