chore: have db-fill use modification times for changelog

This commit is contained in:
Gregor Kleen 2020-11-05 17:29:54 +01:00
parent 70d552cda7
commit 44d43c706a
2 changed files with 33 additions and 0 deletions

View File

@ -139,3 +139,17 @@ put :: ( MonadIO m
put v = do
forM_ (persistUniqueKeys v) deleteBy
insert v
selectMaybe :: forall record backend m.
( MonadIO m
, PersistQueryRead backend
, PersistRecordBackend record backend
)
=> [Filter record] -> [SelectOpt record]
-> ReaderT backend m (Maybe (Entity record))
selectMaybe fltrs opts = listToMaybe <$> selectList fltrs (LimitTo 1 : opts')
where opts' = filter (not . isLimit) opts
isLimit = \case
LimitTo _ -> True
_other -> False

View File

@ -31,6 +31,9 @@ import Data.List (genericLength)
import qualified Data.Conduit.Combinators as C
import System.Directory (getModificationTime)
import System.FilePath.Glob (glob)
testdataDir :: FilePath
testdataDir = "testdata"
@ -1283,3 +1286,19 @@ fillDb = do
_other -> return mempty
liftIO . LBS.writeFile (testdataDir </> "bigAlloc_ordinal.csv") $ Csv.encode ordinalPriorities
forM_ universeF $ \changelogItem -> do
let ptn = "templates/i18n/changelog/" <> unpack (toPathPiece changelogItem) <> ".*"
files <- liftIO $ glob ptn
mTime <- fmap minimum . fromNullable <$> mapM (liftIO . getModificationTime) files
whenIsJust mTime $ \(utctDay -> firstSeen) -> do
oldFirstSeen <- selectMaybe [ ChangelogItemFirstSeenItem ==. changelogItem ] [ Asc ChangelogItemFirstSeenFirstSeen ]
case oldFirstSeen of
Just (Entity firstSeenId oldEntry)
| changelogItemFirstSeenFirstSeen oldEntry > firstSeen
-> update firstSeenId [ ChangelogItemFirstSeenFirstSeen =. firstSeen ]
Just _
-> return ()
Nothing
-> insert_ $ ChangelogItemFirstSeen changelogItem firstSeen