diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e0a4f8486..ef54540af 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -255,7 +255,7 @@ jobs: - uses: actions/checkout@v3 - id: Remote-Dir name: Unique directory name for the remote build - run: echo "::set-output name=remotepath::postgrest-build-$(uuidgen)" + run: echo "remotepath=postgrest-build-$(uuidgen)" >> "$GITHUB_OUTPUT" - name: Copy script files to the remote server uses: appleboy/scp-action@master with: @@ -328,14 +328,14 @@ jobs: exit 1 else echo "Version to be released is $cabal_version" - echo "::set-output name=version::$cabal_version" + echo "version=$cabal_version" >> "$GITHUB_OUTPUT" fi if [[ "$cabal_version" != *.*.*.* ]]; then echo "Version is for a full release (version does not have four components)" else echo "Version is for a pre-release (version has four components, e.g., 1.1.1.1)" - echo "::set-output name=isprerelease::1" + echo "isprerelease=1" >> "$GITHUB_OUTPUT" fi - name: Identify changes from CHANGELOG.md run: | diff --git a/nix/nixpkgs-version.nix b/nix/nixpkgs-version.nix index 6f83145e3..698225df2 100644 --- a/nix/nixpkgs-version.nix +++ b/nix/nixpkgs-version.nix @@ -1,6 +1,6 @@ # Pinned version of Nixpkgs, generated with postgrest-nixpkgs-upgrade. { - date = "2022-10-28"; - rev = "f44ba1be526c8da9e79a5759feca2365204003f6"; - tarballHash = "0npbwsdjw88py5w2pjflwh94wgi4jmnmls0k1n7q8m6h94w1y1ps"; + date = "2023-01-12"; + rev = "92f9580a4c369b4b51a7b6a5e77da43720134c9f"; + tarballHash = "0w9bz4f2bmkj4a59n4z279zcgs9clyc40a4ny312rafyaknzghvw"; } diff --git a/nix/overlays/haskell-packages.nix b/nix/overlays/haskell-packages.nix index dbb1f9ab2..c6ce85ed5 100644 --- a/nix/overlays/haskell-packages.nix +++ b/nix/overlays/haskell-packages.nix @@ -29,24 +29,6 @@ let # To fill in the sha256: # update-nix-fetchgit nix/overlays/haskell-packages.nix - hashtables = lib.dontCheck prev.hashtables_1_3_1; - hasql = lib.dontCheck prev.hasql_1_6_1_4; - hasql-dynamic-statements = lib.dontCheck prev.hasql-dynamic-statements_0_3_1_2; - hasql-pool = lib.dontCheck - (prev.callHackageDirect - { - pkg = "hasql-pool"; - ver = "0.8.0.6"; - sha256 = "sha256-2u/cwPk8XfXffaDRzGeyzhL+9k2+2T4b8bGOZwz8AX0="; - } - { }); - hasql-transaction = lib.dontCheck prev.hasql-transaction_1_0_1_2; - isomorphism-class = lib.unmarkBroken prev.isomorphism-class; - lens = lib.dontCheck prev.lens_5_2; - postgresql-binary = lib.dontCheck prev.postgresql-binary_0_13_1; - text-builder = lib.dontCheck prev.text-builder_0_6_7; - text-builder-dev = lib.dontCheck prev.text-builder-dev_0_3_3; - postgresql-libpq = lib.dontCheck (prev.callCabal2nix "postgresql-libpq" (super.fetchFromGitHub { diff --git a/nix/tools/devTools.nix b/nix/tools/devTools.nix index 8745054a2..f1b9a6966 100644 --- a/nix/tools/devTools.nix +++ b/nix/tools/devTools.nix @@ -164,6 +164,7 @@ let # The following unsets all GIT_ variables. unset "''${!GIT_@}" + # shellcheck disable=SC2317 function restore () { ref="$(git stash list --format=format:%gD --grep "$1" -n1)" # this will avoid merge conflicts when applying the stash diff --git a/nix/tools/release/default.nix b/nix/tools/release/default.nix index a38e9becc..62c86e55b 100644 --- a/nix/tools/release/default.nix +++ b/nix/tools/release/default.nix @@ -106,7 +106,7 @@ let echo "Tagging ..." git tag "v$new_version" > /dev/null - trap "Couldn't find remote. Please push manually ..." ERR + trap "echo Remote not found. Please push manually ..." ERR remote="$(git remote -v | grep PostgREST/postgrest | grep push | cut -f1)" trap "" ERR diff --git a/nix/tools/withTools.nix b/nix/tools/withTools.nix index 8d158d3b8..042140d0c 100644 --- a/nix/tools/withTools.nix +++ b/nix/tools/withTools.nix @@ -65,6 +65,7 @@ let pg_ctl -l "$tmpdir/db.log" -w start -o "-F -c listen_addresses=\"\" -k $PGHOST -c log_statement=\"all\"" \ >> "$setuplog" + # shellcheck disable=SC2317 stop () { log "Stopping the database cluster..." pg_ctl stop -m i >> "$setuplog" @@ -256,6 +257,7 @@ let echo -n "Starting postgrest... " ./result/bin/postgrest ${legacyConfig} > "$tmpdir"/run.log 2>&1 & pid=$! + # shellcheck disable=SC2317 cleanup() { kill "$pid" || true } diff --git a/postgrest.cabal b/postgrest.cabal index f6495f68a..32d3a4cac 100644 --- a/postgrest.cabal +++ b/postgrest.cabal @@ -73,7 +73,7 @@ library PostgREST.Workers other-modules: Paths_postgrest build-depends: base >= 4.9 && < 4.17 - , HTTP >= 4000.3.7 && < 4000.4 + , HTTP >= 4000.3.7 && < 4000.5 , Ranged-sets >= 0.3 && < 0.5 , aeson >= 2.0.3 && < 2.2 , auto-update >= 0.1.4 && < 0.2 @@ -99,11 +99,11 @@ library , interpolatedstring-perl6 >= 1 && < 1.1 , jose >= 0.8.5.1 && < 0.11 , lens >= 4.14 && < 5.3 - , lens-aeson >= 1.0.1 && < 1.2 + , lens-aeson >= 1.0.1 && < 1.3 , mtl >= 2.2.2 && < 2.3 , network >= 2.6 && < 3.2 , network-uri >= 2.6.1 && < 2.8 - , optparse-applicative >= 0.13 && < 0.17 + , optparse-applicative >= 0.13 && < 0.18 , parsec >= 3.1.11 && < 3.2 , protolude >= 0.3.1 && < 0.4 , regex-tdfa >= 1.2.2 && < 1.4 @@ -233,12 +233,12 @@ test-suite spec , hasql-pool >= 0.8.0.2 && < 0.9 , hasql-transaction >= 1.0.1 && < 1.1 , heredoc >= 0.2 && < 0.3 - , hspec >= 2.3 && < 2.9 + , hspec >= 2.3 && < 2.10 , hspec-wai >= 0.10 && < 0.12 , hspec-wai-json >= 0.10 && < 0.12 , http-types >= 0.12.3 && < 0.13 , lens >= 4.14 && < 5.3 - , lens-aeson >= 1.0.1 && < 1.2 + , lens-aeson >= 1.0.1 && < 1.3 , monad-control >= 1.0.1 && < 1.1 , postgrest , process >= 1.4.2 && < 1.7 diff --git a/src/PostgREST/ApiRequest/QueryParams.hs b/src/PostgREST/ApiRequest/QueryParams.hs index 0fd1e3255..97d9fa8bf 100644 --- a/src/PostgREST/ApiRequest/QueryParams.hs +++ b/src/PostgREST/ApiRequest/QueryParams.hs @@ -145,7 +145,7 @@ parse qs = <*> (fmap snd <$> (pRequestFilter `traverse` filtersRoot)) <*> pRequestFilter `traverse` filtersNotRoot <*> pure (S.fromList (fst <$> filters)) - <*> sequenceA (pRequestOnConflict <$> onConflict) + <*> pRequestOnConflict `traverse` onConflict where logic = filter (endingIn ["and", "or"] . fst) nonemptyParams select = fromMaybe "*" $ lookupParam "select" diff --git a/src/PostgREST/SchemaCache.hs b/src/PostgREST/SchemaCache.hs index c456173c0..14cd9428e 100644 --- a/src/PostgREST/SchemaCache.hs +++ b/src/PostgREST/SchemaCache.hs @@ -405,7 +405,7 @@ test | personnages_view | test | actors_view | personnage -} addViewM2OAndO2ORels :: [ViewKeyDependency] -> [Relationship] -> [Relationship] addViewM2OAndO2ORels keyDeps rels = - rels ++ concat (viewRels <$> rels) + rels ++ concatMap viewRels rels where isM2O card = case card of {M2O _ _ -> True; _ -> False;} isO2O card = case card of {O2O _ _ -> True; _ -> False;} @@ -455,7 +455,7 @@ addViewM2OAndO2ORels keyDeps rels = , keyDepColsTblVw <- expandKeyDepCols $ keyDepCols tblVw ] else [] viewRels _ = [] - expandKeyDepCols kdc = zip (fst <$> kdc) <$> sequenceA (snd <$> kdc) + expandKeyDepCols kdc = zip (fst <$> kdc) <$> traverse snd kdc addInverseRels :: [Relationship] -> [Relationship] addInverseRels rels = @@ -491,7 +491,7 @@ addViewPrimaryKeys tabs keyDeps = -- * We don't have any logic that requires the client to name a PK column (compared to the column hints in embedding for FKs), -- so we don't need to know about the other references. -- * We need to choose a single reference for each column, otherwise we'd output too many columns in location headers etc. - takeFirstPK pkCols = catMaybes $ head . snd <$> pkCols + takeFirstPK = mapMaybe (head . snd) allTables :: PgVersion -> Bool -> SQL.Statement [Schema] TablesMap allTables pgVer = diff --git a/stack.yaml b/stack.yaml index cdc46a3b8..bf9ba9ef1 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,4 @@ -resolver: lts-19.14 # 2022-07-01, GHC 9.0.2 +resolver: lts-20.6 # 2023-01-09, GHC 9.2.5 nix: packages: @@ -10,23 +10,5 @@ nix: pure: false extra-deps: - - HTTP-4000.3.16 - - configurator-pg-0.2.6 - - hashable-1.4.1.0 - - hashtables-1.3 - - hasql-1.6.1.1 - - hasql-dynamic-statements-0.3.1.2 - - hasql-implicits-0.1.0.5 - - hasql-notifications-0.2.0.3 - - hasql-pool-0.8.0.6 - - hasql-transaction-1.0.1.2 - - isomorphism-class-0.1.0.6 - - lens-aeson-1.1.3 - - optparse-applicative-0.16.1.0 - - postgresql-binary-0.12.5 - - protolude-0.3.2 - - ptr-0.16.8.2 - - text-builder-0.6.7 - - text-builder-dev-0.3.3 - git: https://github.com/PostgREST/postgresql-libpq.git commit: 890a0a16cf57dd401420fdc6c7d576fb696003bc diff --git a/stack.yaml.lock b/stack.yaml.lock index 7c8959efd..dabb9ea08 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -4,132 +4,6 @@ # https://docs.haskellstack.org/en/stable/lock_files packages: -- completed: - hackage: HTTP-4000.3.16@sha256:6042643c15a0b43e522a6693f1e322f05000d519543a84149cb80aeffee34f71,5947 - pantry-tree: - sha256: b73a7f6d21cf20bbf819e19039409c9010efb5000d2b72cdd8fd67a9027c14e8 - size: 1428 - original: - hackage: HTTP-4000.3.16 -- completed: - hackage: configurator-pg-0.2.6@sha256:cd9b06a458428e493a4d6def725af7ab1ab0fef678fbd871f9586fc7f9aa70be,2849 - pantry-tree: - sha256: 97efe7a22afc93033bda5adcffdabc0f1c30dc32b2c3ba02114ce7cd74c942fd - size: 2463 - original: - hackage: configurator-pg-0.2.6 -- completed: - hackage: hashable-1.4.1.0@sha256:50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b,5019 - pantry-tree: - sha256: 9af2f7a42674f7effcabbebc043f97057240783f1709338a77f58216f4a5f18c - size: 1248 - original: - hackage: hashable-1.4.1.0 -- completed: - hackage: hashtables-1.3@sha256:ab21804fdafbbd8ad918b2911dabb729ae0ea891780fe66bf7804cbcd07edadf,10379 - pantry-tree: - sha256: e71f113ad989dbc994e0fb52bcc219d62930de9afa8b3441bf7909e864481b33 - size: 2895 - original: - hackage: hashtables-1.3 -- completed: - hackage: hasql-1.6.1.1@sha256:948a2137308cc5354e4997bc3666753867124cd25db792424cb9614b1c1b44cf,6626 - pantry-tree: - sha256: 28d21bf061522fc513f040e9c383b90532222b7258216cc094e07736add8be10 - size: 2622 - original: - hackage: hasql-1.6.1.1 -- completed: - hackage: hasql-dynamic-statements-0.3.1.2@sha256:417aa533c84f074e2fa16bb2c4d4231326aa512097dd1025d915388e56acd1eb,2675 - pantry-tree: - sha256: 91696d3f3e0ef3254772ae5a8e4e89be68285febb49b302ed83d85ac4037a417 - size: 595 - original: - hackage: hasql-dynamic-statements-0.3.1.2 -- completed: - hackage: hasql-implicits-0.1.0.5@sha256:d16aacad6dc21428d72447d3ae8bcc03839a2f0aa1ec29c797ed9aca4609f9af,1361 - pantry-tree: - sha256: 0451b99a0a1d02db673d0c40acdf60d4e769e15852eed9e8dc05bffaf43efb70 - size: 264 - original: - hackage: hasql-implicits-0.1.0.5 -- completed: - hackage: hasql-notifications-0.2.0.3@sha256:aca3f7ee847a8f0b7ef6f989dc48f4a094a06c1a34e92aa3c8bb230085966ea6,2027 - pantry-tree: - sha256: 999f0f2856a00d21f4498a8a58452bbefc4ea972fe2984fd234a68a5fe61d98b - size: 452 - original: - hackage: hasql-notifications-0.2.0.3 -- completed: - hackage: hasql-pool-0.8.0.6@sha256:b63bb83409bab5bc20ff24f5d62205e9b117701a0fc24531ddeac20ab8c2a42c,1818 - pantry-tree: - sha256: c4100946b7eae44375511e35a393abe2e1db0e5637c68cea8f53176b796bfd5b - size: 346 - original: - hackage: hasql-pool-0.8.0.6 -- completed: - hackage: hasql-transaction-1.0.1.2@sha256:297b158cd1f0727f9b0e175bd7d3741c1bcb725a8094956d0ee79b41aafdb30a,2890 - pantry-tree: - sha256: 3679e6d5c835cc17a8fa0c252b8221e282880044b7219aa1de2531bbd5c40691 - size: 983 - original: - hackage: hasql-transaction-1.0.1.2 -- completed: - hackage: isomorphism-class-0.1.0.6@sha256:d93da31287359c761953b876354de28381f409c5c50e3241c572a443e50c553d,1703 - pantry-tree: - sha256: c97f922d1ae8f1a0db4c28fac9383d2716934879e95ff0b2b88ebb861d6fba14 - size: 465 - original: - hackage: isomorphism-class-0.1.0.6 -- completed: - hackage: lens-aeson-1.1.3@sha256:52c8eaecd2d1c2a969c0762277c4a8ee72c339a686727d5785932e72ef9c3050,1764 - pantry-tree: - sha256: b31392b78f2a03111c805f4400007778eb93b49f998ab41dfbebaaf9b5526bad - size: 541 - original: - hackage: lens-aeson-1.1.3 -- completed: - hackage: optparse-applicative-0.16.1.0@sha256:418c22ed6a19124d457d96bc66bd22c93ac22fad0c7100fe4972bbb4ac989731,4982 - pantry-tree: - sha256: dd092d843091c08691485d68a1908517079b1bc6f3d73928f37635a19dc27fc1 - size: 2979 - original: - hackage: optparse-applicative-0.16.1.0 -- completed: - hackage: postgresql-binary-0.12.5@sha256:de9da3cba9be541d6c75ae8da2858c33d83dc1b2e0c639b0b9781816b78a91f4,5594 - pantry-tree: - sha256: b392337f91031a5b3407393e2f04dfe4e7a28019e88eae6a9370538b90e28c51 - size: 1619 - original: - hackage: postgresql-binary-0.12.5 -- completed: - hackage: protolude-0.3.2@sha256:2a38b3dad40d238ab644e234b692c8911423f9d3ed0e36b62287c4a698d92cd1,2240 - pantry-tree: - sha256: a36d2912ac552d950ba4476de7d950b56b82dd28e48b9f4d0efee938f10bc525 - size: 1594 - original: - hackage: protolude-0.3.2 -- completed: - hackage: ptr-0.16.8.2@sha256:708ebb95117f2872d2c5a554eb6804cf1126e86abe793b2673f913f14e5eb1ac,3959 - pantry-tree: - sha256: 557c438345de19f82bf01d676100da2a191ef06f624e7a4b90b09ac17cbb52a5 - size: 1303 - original: - hackage: ptr-0.16.8.2 -- completed: - hackage: text-builder-0.6.7@sha256:efbb3e06107e9c8d1cfe85c963938ca9f375a74379af03da3173be4ef5c37bcf,2364 - pantry-tree: - sha256: cd0ae197e6f9f3860a8ab71f5b87c4a8452ed1fce2fdfd35e36d68ded6e6648e - size: 425 - original: - hackage: text-builder-0.6.7 -- completed: - hackage: text-builder-dev-0.3.3@sha256:79ec422defcc2e5b34f94129c72b98d34b2efc1ed8bbd945ccb8f4f535a892c3,2784 - pantry-tree: - sha256: 8883631a132438e7892fcb13e89d6bbcdc0ac76c56fbea8df8d7aa482ce81f73 - size: 724 - original: - hackage: text-builder-dev-0.3.3 - completed: commit: 890a0a16cf57dd401420fdc6c7d576fb696003bc git: https://github.com/PostgREST/postgresql-libpq.git @@ -143,7 +17,7 @@ packages: git: https://github.com/PostgREST/postgresql-libpq.git snapshots: - completed: - sha256: 4c31d4ef975b0211078862566aedf3b82b6cea569fc2cde4c72a51e5a8d236ce - size: 618951 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/19/14.yaml - original: lts-19.14 + sha256: 4905c93319aa94aa53da8f41d614d7bacdbfe6c63a8c6132d32e6e62f24a9af4 + size: 649315 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/6.yaml + original: lts-20.6