33 lines
1.1 KiB
Haskell
33 lines
1.1 KiB
Haskell
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
|