glean-0.1.0.0: glean/client/hs/Glean.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.
-}
--
-- | Interface providing everything that clients of a Glean server should need.
-- To use a local database store, see "Glean.LocalOrRemote".
--
-- Client code should look like:
--
-- > import Glean
-- > import Glean.Remote
-- > import Glean.Util.ConfigProvider
-- > import Glean.Impl.ConfigProvider
-- > import Glean.Schema.Builtin.Types (schema_id)
-- > import Util.EventBase
-- >
-- > main :: IO ()
-- > main =
-- > withConfigOptions options $ \(service, cfgOpts) ->
-- > withEventBaseDataplane $ \evb ->
-- > withConfigProvider cfgOpts $ \(cfgAPI :: ConfigAPI) ->
-- > withRemoteBackend evb cfgAPI service (Just schema_id) $ \backend -> do
-- > ...
--
module Glean
(
-- * Clients interact with Glean via a Backend
Backend(..)
, UseShards(..)
, ThriftSource
, ClientConfig(..)
, ListDatabases(..)
, ListDatabasesResult(..)
, KickOff(..)
, KickOffResponse(..)
, Database(..)
, DatabaseStatus(..)
, GetSchemaInfo(..)
, SchemaId(..)
, SchemaInfo(..)
, UnknownDatabase(..)
, Pruned(..)
, Stacked(..)
, Dependencies(..)
, PosixEpochTime(..)
, StackedDbOpts(..)
, LogDerivationResult
, SendJsonBatchOptions(..)
, Subst(..)
, DatabaseNotIncomplete(..)
, FactIdRange(..)
, GetDatabaseResult(..)
, PredicateStats(..)
-- * Repositories
, Repo(..)
, getLatestRepo
, NoDatabase(..)
, showRepo
, showRepoSep
, repoToText
, repoToTextSep
, readRepo
, parseRepo
, parseRepoText
, parseRepoTextSep
-- * Queries
, Query
-- ** Performing queries
, runQuery
, runQuery_
, runQueryEach
, runQueryEachBatch
, runQueryMapPages_
, BadQuery(..)
, allFacts
-- ** Query using Angle syntax
, angle
, angleData
, encodeTextForAngle
-- ** Query modifiers
, keys
, recursive
, limit
, limitBytes
, limitTime
, expanding
, store
-- ** Inspecting Query
, displayQuery
-- * Haxl: high-performance query API
, Haxl
, runHaxl
, runHaxlWithWrites
, haxlRepo
, search
, search_
, searchWith
, QueryResult(..)
, count
, get
, getRec
, getKey
, getKeyRec
, getOfId
, getRecOfId
, getKeyOfId
, getKeyRecOfId
, keyOf
, getFirstResult
-- ** Error handling
, trySyncHaxl
-- * Manipulating predicates and facts
, Predicate(..)
, Nat(..)
, toNat, fromNat
, Byte(..)
, Id
, justId
, IdOf(..)
, Fid(..) -- TODO: Fid isn't very useful, might want to tidy up the API here
, PredicateRef(..)
, predicateRef
, SourceRef(..) -- used in Glean.Util.Derive
, showRef
, parseRef
-- * Writing
, fillDatabase
, create
, finish
, finalize
, completePredicates
, CompletePredicates(..)
, CompleteDerivedPredicate(..)
, CompleteAxiomPredicates(..)
, basicWriter
, SchemaPredicates
, FactBuilder
, makeFact
, makeFact_
, makeFactV
, makeFactV_
, NewFact(..)
-- ** Lower-level write API
, withSender
, Sender
, SendAndRebaseQueue
, sendAndRebaseQueueOptions
, SendAndRebaseQueueSettings(..)
, sendQueueOptions
, SendQueueSettings(..)
, SendQueueEvent(..)
, withWriter
, withWriters
, Writer
, WriterSettings(..)
, WriterEvent(..)
, writerOptions
, writeFacts
, writeSendAndRebaseQueue
, withSendAndRebaseQueue
, writeSendQueue
, writeSendQueueJson
, writeSendQueueDescriptor
, withSendQueue
, SendQueue
, withBatchWriter
-- ** Writing binary
, sendBatch
-- ** Writing JSON
, sendJsonBatch
, SendJsonBatch(..)
, JsonFactBatch(..)
-- * Misc
, showUserQueryStats
, databases
, localDatabases
) where
import Glean.Backend.Types
import Glean.Angle.Lexer
import Glean.Angle.Types
import Glean.Schema.Util (showRef, parseRef)
import Glean.Impl.ConfigProvider ()
-- re-export instance ConfigProvider ConfigAPI, so that clients
-- don't have to import this.
import Glean.Haxl
import Glean.Query.Thrift
import Glean.Query.Thrift.Internal
import Glean.Repo
import Glean.Repo.Text
import Glean.Typed
import Glean.Types
import Glean.Write.Async
import Glean.Write.Options
import Glean.Write.SendBatch
import Glean.Write.SendAndRebaseQueue
import Glean.Write.SendQueue
import Glean.Util.ThriftSource (ThriftSource)
import Glean.ClientConfig.Types