From 97a8cf85c8571fe00665265e1337744e4bf9d0e8 Mon Sep 17 00:00:00 2001 From: Lucy Cifferello <12953208+elvece@users.noreply.github.com> Date: Wed, 17 Apr 2024 17:04:57 -0400 Subject: [PATCH] check for backwards compatibility --- src/Cli/Cli.hs | 2 +- src/Database/Queries.hs | 13 +++++++++++-- src/Handler/Util.hs | 5 ++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Cli/Cli.hs b/src/Cli/Cli.hs index 8ab24de..1d002f6 100644 --- a/src/Cli/Cli.hs +++ b/src/Cli/Cli.hs @@ -53,7 +53,7 @@ import Data.HashMap.Internal.Strict ( import Data.String.Interpolate.IsString ( i, ) -import Data.Text (toLower, splitOn, unpack) +import Data.Text (toLower, splitOn) import Dhall ( Encoder (embed), FromDhall (..), diff --git a/src/Database/Queries.hs b/src/Database/Queries.hs index aaf5200..9ae3f5f 100644 --- a/src/Database/Queries.hs +++ b/src/Database/Queries.hs @@ -72,7 +72,7 @@ import Database.Esqueleto.Experimental ( (:&) (..), (==.), (^.), - (||.), + (||.), not_, ) import Database.Persist qualified as P import Database.Persist.Postgresql ( @@ -96,7 +96,7 @@ import Model ( VersionRecordNumber, VersionRecordPkgId, VersionRecordTitle, - VersionRecordUpdatedAt, PkgRecordHidden, VersionPlatformRam + VersionRecordUpdatedAt, PkgRecordHidden, VersionPlatformRam, PkgRecordUpdatedAt ), Key (unPkgRecordKey), PkgCategory, @@ -344,4 +344,13 @@ getPkg pkgId = do p <- from $ table @PkgRecord where_ $ p ^. PkgRecordId ==. val pkgId pure p + pure $ entityVal <$> pkg + +getPkgNew:: (Monad m, MonadIO m) => PkgRecordId -> ReaderT SqlBackend m [PkgRecord] +getPkgNew pkgId = do + pkg <- select $ do + p <- from $ table @PkgRecord + where_ $ p ^. PkgRecordId ==. val pkgId + where_ $ isNothing $ p ^. PkgRecordUpdatedAt + pure p pure $ entityVal <$> pkg \ No newline at end of file diff --git a/src/Handler/Util.hs b/src/Handler/Util.hs index e00261b..4b99934 100644 --- a/src/Handler/Util.hs +++ b/src/Handler/Util.hs @@ -18,7 +18,7 @@ import Data.String.Interpolate.IsString ( import Data.Text qualified as T import Data.Text.Lazy qualified as TL import Data.Text.Lazy.Builder qualified as TB -import Database.Queries (fetchAllPkgVersions, getVersionPlatform, getAllowedPkgs, getPkg) +import Database.Queries (fetchAllPkgVersions, getVersionPlatform, getAllowedPkgs, getPkg, getPkgNew) import Foundation import Lib.PkgRepository ( PkgRepo, @@ -271,10 +271,13 @@ checkAdminAllowedPkgs :: PkgId -> Text -> Handler (Bool, Bool) -- (authorized, n checkAdminAllowedPkgs pkgId adminId = do -- if pkg does not exist yet, allow, because authorized by whitelist pkg <- runDB $ getPkg (PkgRecordKey pkgId) + pkgCreated <- runDB $ getPkgNew (PkgRecordKey pkgId) if length pkg > 0 then do res <- runDB $ getAllowedPkgs pkgId (AdminKey adminId) pure $ if length res > 0 then (True, False) else (False, False) + else if length pkgCreated > 0 + then pure (True, True) else pure (True, True) checkAdminAuth :: PkgId -> Handler (Bool, Text)