diff --git a/Handler/Home.hs b/Handler/Home.hs index fa9c054..c2278b4 100644 --- a/Handler/Home.hs +++ b/Handler/Home.hs @@ -31,6 +31,7 @@ getHomeR = track "Handler.Snapshots.getAllSnapshotsR" $ do getSnapshots Nothing snapshotsPerPage ((fromIntegral currentPage - 1) * snapshotsPerPage) let groups = groupUp now' snapshots + latestLtsByGhc <- getLatestLtsByGhc defaultLayout $ do setTitle "Stackage Server" $(widgetFile "home") diff --git a/Stackage/Database.hs b/Stackage/Database.hs index 24a6f08..7f16a1b 100644 --- a/Stackage/Database.hs +++ b/Stackage/Database.hs @@ -39,6 +39,7 @@ module Stackage.Database , last5Lts5Nightly , snapshotsJSON , getPackageCount + , getLatestLtsByGhc ) where import Database.Sqlite (SqliteException) @@ -783,3 +784,15 @@ getPackageCount :: GetStackageDatabase m => SnapshotId -> m Int getPackageCount sid = run $ count [SnapshotPackageSnapshot ==. sid] + +getLatestLtsByGhc :: GetStackageDatabase m + => m [(Int, Int, Text)] +getLatestLtsByGhc = run $ fmap (map toTuple) $ do + E.select $ E.from $ \(lts `E.InnerJoin` snapshot) -> do + E.on $ lts E.^. LtsSnap E.==. snapshot E.^. SnapshotId + E.orderBy [E.desc (lts E.^. LtsMajor), E.desc (lts E.^. LtsMinor)] + E.groupBy (snapshot E.^. SnapshotGhc) + return (lts, snapshot) + where + toTuple (Entity _ lts, Entity _ snapshot) = + (ltsMajor lts, ltsMinor lts, snapshotGhc snapshot) diff --git a/templates/home.hamlet b/templates/home.hamlet index c26b8eb..8aa6b2e 100644 --- a/templates/home.hamlet +++ b/templates/home.hamlet @@ -46,6 +46,13 @@ on haskell-lang.org + +

+ Latest LTS per GHC version +