module TeaCleaner.Filter ( filterByActivities , filterByUserProperties ) where import Data.Text (StrictText) import qualified Data.Text as Text import Data.Time (LocalTime(..), ZonedTime(..)) import Data.Time.Calendar.OrdinalDate (fromOrdinalDate) import qualified Data.Vector as Vector import Text.URI (URI) import TeaCleaner.Client (Activity(..), User(..), getActivities) filterByUserProperties :: User -> Bool filterByUserProperties User{ created, lastLogin, description, website } = zonedDay created == zonedDay lastLogin && zonedDay created > fromOrdinalDate 2024 1 && zonedDay created < fromOrdinalDate 2025 17 && not (Text.null description) && not (Text.null website) where zonedDay = localDay . zonedTimeToLocalTime filterByActivities :: URI -> StrictText -> User -> IO Bool filterByActivities server token user = getActivities server token user >>= evalActivities where evalActivities activities | Just (Activity{ opType }, rest) <- Vector.uncons activities , Vector.null rest = pure $ opType == "create_repo" evalActivities _ = pure False