packages feed

glean-0.1.0.0: glean/db/Glean/Logger/Database.hs

{-
  Copyright (c) Meta Platforms, Inc. and affiliates.
  All rights reserved.

  This source code is licensed under the BSD-style license found in the
  LICENSE file in the root directory of this source tree.
-}

module Glean.Logger.Database (
    GleanDatabaseLog(..),
    GleanDatabaseLogger(..),
    NullGleanDatabaseLogger(..),
  ) where

import Data.Text (Text)

class GleanDatabaseLogger l where
  runLog :: l -> GleanDatabaseLog -> IO ()

data GleanDatabaseLog
  = GleanDatabaseLogEmpty
  | GleanDatabaseLogAnd GleanDatabaseLog GleanDatabaseLog
  | SetRepoName Text
  | SetRepoHash Text
  | SetPredicateCount Int
  | SetUploadDestination Text
  | SetPredicateName Text
  | SetPredicateVersion Int
  | SetPredicateSize Int
  | SetMetric Text
  | SetCount Int
  | SetSize Int
  | SetHasExcludeProperty Bool

instance Semigroup GleanDatabaseLog where
  a <> b = GleanDatabaseLogAnd a b

instance Monoid GleanDatabaseLog where
  mempty = GleanDatabaseLogEmpty

data NullGleanDatabaseLogger = NullGleanDatabaseLogger

instance GleanDatabaseLogger NullGleanDatabaseLogger where
  runLog _ _ = return ()