aboutsummaryrefslogtreecommitdiff
path: root/tea-cleaner/TeaCleaner/Filter.hs
blob: c4f243e3273429a85feca8009175490d6175280d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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