mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-24 01:41:55 +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
|
let newMD' = toList newMD
|
||||||
deleteWhere [MetadataName <-. map metadataName newMD']
|
deleteWhere [MetadataName <-. map metadataName newMD']
|
||||||
insertMany_ newMD'
|
insertMany_ newMD'
|
||||||
|
forM_ newMD' $ \md -> do
|
||||||
|
deleteWhere [DependencyUser ==. metadataName md]
|
||||||
|
insertMany_ $ flip map (metadataDeps md) $ \dep ->
|
||||||
|
Dependency (PackageName dep) (metadataName md)
|
||||||
let views =
|
let views =
|
||||||
[ ("pvp", viewPVP uploadHistory)
|
[ ("pvp", viewPVP uploadHistory)
|
||||||
, ("no-bounds", viewNoBounds)
|
, ("no-bounds", viewNoBounds)
|
||||||
|
|||||||
@ -23,7 +23,7 @@ getPackageR pn = do
|
|||||||
haddocksLink ident version =
|
haddocksLink ident version =
|
||||||
HaddockR ident [concat [toPathPiece pn, "-", toPathPiece version]]
|
HaddockR ident [concat [toPathPiece pn, "-", toPathPiece version]]
|
||||||
muid <- maybeAuthId
|
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
|
packages <- fmap (map reformat) $ E.select $ E.from $ \(p, s) -> do
|
||||||
E.where_ $ (p ^. PackageStackage E.==. s ^. StackageId)
|
E.where_ $ (p ^. PackageStackage E.==. s ^. StackageId)
|
||||||
&&. (p ^. PackageName' E.==. E.val pn)
|
&&. (p ^. PackageName' E.==. E.val pn)
|
||||||
@ -41,7 +41,19 @@ getPackageR pn = do
|
|||||||
recentDownloads <- count [DownloadPackage ==. pn, DownloadTimestamp >=. nowMinus30]
|
recentDownloads <- count [DownloadPackage ==. pn, DownloadTimestamp >=. nowMinus30]
|
||||||
metadata <- getBy404 (UniqueMetadata pn)
|
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 <-
|
myTags <-
|
||||||
case muid of
|
case muid of
|
||||||
@ -70,6 +82,7 @@ getPackageR pn = do
|
|||||||
else "I like this!" :: Text
|
else "I like this!" :: Text
|
||||||
|
|
||||||
let deps = enumerate (metadataDeps metadata)
|
let deps = enumerate (metadataDeps metadata)
|
||||||
|
revdeps = enumerate revdeps'
|
||||||
authors = enumerate (parseIdentitiesLiberally (metadataAuthor metadata))
|
authors = enumerate (parseIdentitiesLiberally (metadataAuthor metadata))
|
||||||
maintainers = let ms = enumerate (parseIdentitiesLiberally (metadataMaintainer metadata))
|
maintainers = let ms = enumerate (parseIdentitiesLiberally (metadataMaintainer metadata))
|
||||||
in if ms == authors
|
in if ms == authors
|
||||||
|
|||||||
@ -87,6 +87,11 @@ Metadata
|
|||||||
|
|
||||||
UniqueMetadata name
|
UniqueMetadata name
|
||||||
|
|
||||||
|
Dependency
|
||||||
|
dep PackageName
|
||||||
|
user PackageName
|
||||||
|
UniqueDependency dep user
|
||||||
|
|
||||||
BannedTag
|
BannedTag
|
||||||
tag Slug
|
tag Slug
|
||||||
UniqueBannedTag tag
|
UniqueBannedTag tag
|
||||||
|
|||||||
@ -103,6 +103,15 @@ $newline never
|
|||||||
, #
|
, #
|
||||||
<a href=@{PackageR (PackageName name)}>
|
<a href=@{PackageR (PackageName name)}>
|
||||||
#{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)
|
$if not (null packages)
|
||||||
<div .span6 .snapshots>
|
<div .span6 .snapshots>
|
||||||
<table .table .snapshots>
|
<table .table .snapshots>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user