glean-0.1.0.0: glean/schema/source/glass.angle
# Copyright (c) Meta Platforms, Inc. and affiliates.
schema glass.1 {
import src
import digest
import codemarkup
# Everything we need to initialize a file info for querying in Glass
type FileMetadata = {
indexed: bool,
offsets: maybe src.FileLines,
digest: maybe digest.Digest,
indexFailure: maybe src.IndexFailure
}
# Key by filepath to get blob of metadata back.
# This is how src.File facts and their related data are introduced into Glass
predicate FileInfo:
{
file: src.File,
info: FileMetadata
}
{ File, { Indexed, MOffsets, MDigest, MFailure } } where
src.File _ = File; # binding occurence
MOffsets =
if (Offsets = src.FileLines { file = File } )
then ( { just = Offsets } )
else ( nothing );
MDigest =
if (digest.FileDigest { File, Digest })
then ( { just = Digest } )
else ( nothing );
Indexed = if (codemarkup.IndexedFile File) then (true) else (false);
MFailure =
if (F = src.IndexFailure { file = File } )
then ( { just = F } )
else ( nothing );
}