tracks user requests to registry

This commit is contained in:
Keagan McClelland
2022-06-27 14:35:34 -06:00
parent e96fe6424f
commit 16e9f1ac80
4 changed files with 25 additions and 1 deletions

View File

@@ -15,7 +15,7 @@ import Database.Esqueleto.Experimental (
) )
import Foundation (Handler) import Foundation (Handler)
import Handler.Package.V0.ReleaseNotes (ReleaseNotes (..)) import Handler.Package.V0.ReleaseNotes (ReleaseNotes (..))
import Handler.Util (queryParamAs) import Handler.Util (queryParamAs, tickleMAU)
import Lib.Types.Emver (Version, parseVersion) import Lib.Types.Emver (Version, parseVersion)
import Model (EntityField (..), OsVersion (..)) import Model (EntityField (..), OsVersion (..))
import Orphans.Emver () import Orphans.Emver ()
@@ -56,6 +56,7 @@ getEosVersionR = do
filter (maybe (const True) (<) eosVersion . fst) $ filter (maybe (const True) (<) eosVersion . fst) $
((osVersionNumber &&& osVersionReleaseNotes)) ((osVersionNumber &&& osVersionReleaseNotes))
<$> osV <$> osV
tickleMAU
pure . JSONResponse $ pure . JSONResponse $
mLatest <&> \latest -> mLatest <&> \latest ->
EosRes EosRes

View File

@@ -3,6 +3,7 @@ module Handler.Package.V0.Info where
import Data.Aeson (ToJSON (..)) import Data.Aeson (ToJSON (..))
import Database.Esqueleto.Experimental (Entity (..), asc, from, orderBy, select, table, (^.)) import Database.Esqueleto.Experimental (Entity (..), asc, from, orderBy, select, table, (^.))
import Foundation (Handler, RegistryCtx (..)) import Foundation (Handler, RegistryCtx (..))
import Handler.Util (tickleMAU)
import Model (Category (..), EntityField (..)) import Model (Category (..), EntityField (..))
import Settings (AppSettings (..)) import Settings (AppSettings (..))
import Startlude (Generic, Show, Text, pure, ($), (.), (<$>)) import Startlude (Generic, Show, Text, pure, ($), (.), (<$>))
@@ -30,4 +31,5 @@ getInfoR = do
cats <- from $ table @Category cats <- from $ table @Category
orderBy [asc (cats ^. CategoryPriority)] orderBy [asc (cats ^. CategoryPriority)]
pure cats pure cats
tickleMAU
pure $ JSONResponse $ InfoRes name $ categoryName . entityVal <$> allCategories pure $ JSONResponse $ InfoRes name $ categoryName . entityVal <$> allCategories

View File

@@ -11,12 +11,14 @@ import Data.String.Interpolate.IsString (i)
import Data.Text qualified as T import Data.Text qualified as T
import Data.Text.Lazy qualified as TL import Data.Text.Lazy qualified as TL
import Data.Text.Lazy.Builder qualified as TB import Data.Text.Lazy.Builder qualified as TB
import Foundation
import Lib.PkgRepository (PkgRepo, getHash) import Lib.PkgRepository (PkgRepo, getHash)
import Lib.Types.Core (PkgId) import Lib.Types.Core (PkgId)
import Lib.Types.Emver ( import Lib.Types.Emver (
Version, Version,
VersionRange, VersionRange,
) )
import Model (UserActivity (..))
import Network.HTTP.Types ( import Network.HTTP.Types (
Status, Status,
status400, status400,
@@ -32,10 +34,13 @@ import Startlude (
decodeUtf8, decodeUtf8,
fromMaybe, fromMaybe,
fst, fst,
getCurrentTime,
isSpace, isSpace,
liftIO,
not, not,
pure, pure,
readMaybe, readMaybe,
void,
($), ($),
(.), (.),
(<$>), (<$>),
@@ -46,6 +51,9 @@ import Yesod (
MonadHandler, MonadHandler,
RenderRoute (..), RenderRoute (..),
TypedContent (..), TypedContent (..),
YesodPersist (runDB),
insertRecord,
liftHandler,
lookupGetParam, lookupGetParam,
sendResponseStatus, sendResponseStatus,
toContent, toContent,
@@ -101,3 +109,12 @@ queryParamAs k p =
Left e -> Left e ->
sendResponseText status400 [i|Invalid Request! The query parameter '#{k}' failed to parse: #{e}|] sendResponseText status400 [i|Invalid Request! The query parameter '#{k}' failed to parse: #{e}|]
Right a -> pure (Just a) Right a -> pure (Just a)
tickleMAU :: Handler ()
tickleMAU = do
lookupGetParam "server-id" >>= \case
Nothing -> pure ()
Just sid -> do
now <- liftIO getCurrentTime
void $ liftHandler $ runDB $ insertRecord $ UserActivity now sid

View File

@@ -125,6 +125,10 @@ PkgDependency
deriving Eq deriving Eq
deriving Show deriving Show
UserActivity
createdAt UTCTime
serverId Text
Admin Admin
Id Text Id Text
createdAt UTCTime createdAt UTCTime