mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-12 04:08:29 +01:00
Reverse dependencies #33
This commit is contained in:
parent
d24c1a36ff
commit
346cf7a8da
@ -282,6 +282,10 @@ appLoadCabalFiles updateDB forceUpdate env dbconf p = do
|
||||
let newMD' = toList newMD
|
||||
deleteWhere [MetadataName <-. map metadataName newMD']
|
||||
insertMany_ newMD'
|
||||
forM_ newMD' $ \md -> do
|
||||
deleteWhere [DependencyUser ==. metadataName md]
|
||||
insertMany_ $ flip map (metadataDeps md) $ \dep ->
|
||||
Dependency (PackageName dep) (metadataName md)
|
||||
let views =
|
||||
[ ("pvp", viewPVP uploadHistory)
|
||||
, ("no-bounds", viewNoBounds)
|
||||
|
||||
@ -23,7 +23,7 @@ getPackageR pn = do
|
||||
haddocksLink ident version =
|
||||
HaddockR ident [concat [toPathPiece pn, "-", toPathPiece version]]
|
||||
muid <- maybeAuthId
|
||||
(packages, downloads, recentDownloads, nLikes, liked, Entity _ metadata) <- runDB $ do
|
||||
(packages, downloads, recentDownloads, nLikes, liked, Entity _ metadata, revdeps') <- runDB $ do
|
||||
packages <- fmap (map reformat) $ E.select $ E.from $ \(p, s) -> do
|
||||
E.where_ $ (p ^. PackageStackage E.==. s ^. StackageId)
|
||||
&&. (p ^. PackageName' E.==. E.val pn)
|
||||
@ -41,7 +41,19 @@ getPackageR pn = do
|
||||
recentDownloads <- count [DownloadPackage ==. pn, DownloadTimestamp >=. nowMinus30]
|
||||
metadata <- getBy404 (UniqueMetadata pn)
|
||||
|
||||
return (packages, downloads, recentDownloads, nLikes, liked, metadata)
|
||||
revdeps' <- E.select $ E.from $ \dep -> do
|
||||
E.where_ $ dep ^. DependencyDep E.==. E.val pn
|
||||
E.orderBy [E.asc $ dep ^. DependencyUser]
|
||||
return $ dep ^. DependencyUser
|
||||
|
||||
return ( packages
|
||||
, downloads
|
||||
, recentDownloads
|
||||
, nLikes
|
||||
, liked
|
||||
, metadata
|
||||
, map E.unValue revdeps'
|
||||
)
|
||||
|
||||
myTags <-
|
||||
case muid of
|
||||
@ -70,6 +82,7 @@ getPackageR pn = do
|
||||
else "I like this!" :: Text
|
||||
|
||||
let deps = enumerate (metadataDeps metadata)
|
||||
revdeps = enumerate revdeps'
|
||||
authors = enumerate (parseIdentitiesLiberally (metadataAuthor metadata))
|
||||
maintainers = let ms = enumerate (parseIdentitiesLiberally (metadataMaintainer metadata))
|
||||
in if ms == authors
|
||||
|
||||
@ -87,6 +87,11 @@ Metadata
|
||||
|
||||
UniqueMetadata name
|
||||
|
||||
Dependency
|
||||
dep PackageName
|
||||
user PackageName
|
||||
UniqueDependency dep user
|
||||
|
||||
BannedTag
|
||||
tag Slug
|
||||
UniqueBannedTag tag
|
||||
|
||||
@ -103,6 +103,15 @@ $newline never
|
||||
, #
|
||||
<a href=@{PackageR (PackageName name)}>
|
||||
#{name}
|
||||
$if not $ null revdeps
|
||||
<div .reverse-dependencies>
|
||||
Used by
|
||||
<div .dep-list>
|
||||
$forall (i,name) <- revdeps
|
||||
$if i /= 0
|
||||
, #
|
||||
<a href=@{PackageR name}>
|
||||
#{name}
|
||||
$if not (null packages)
|
||||
<div .span6 .snapshots>
|
||||
<table .table .snapshots>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user