#![forbid(unsafe_code)]
#![deny(missing_docs)]
#![deny(rustdoc::broken_intra_doc_links)]
pub mod dax;
pub mod graph;
pub mod identity;
pub mod ingest;
pub mod m;
pub mod model;
pub mod report;
pub use dax::{
Binding, RawRef, Token, TokenKind, bind, quoted_names, references, tokenize, unescape_name,
};
pub use graph::{
AutoDateTimeStatus, AutoDateTimeVerdict, BindingEdge, BindingSite, BrokenBinding, BrokenReason,
DependencyGraph, Provenance, StructuralEdge, UnusedObject, UsedBy,
};
pub use identity::{FieldRef, NameKey, ObjectId};
pub use ingest::{Ingested, SkipKind, SkipNotice};
pub use model::index::{
ColumnHandle, ExpressionHandle, FunctionHandle, HierarchyHandle, MeasureHandle, ModelIndex,
Resolved, TableHandle, UnqualifiedMatches,
};
pub use model::{
CalculationGroup, CalculationItem, Calendar, Column, ColumnKind, DaxExpressionKind,
DaxExpressionRef, ExpressionOwner, Function, Hierarchy, HierarchyLevel, HierarchyRef, Kpi,
MExpressionRef, Measure, Partition, PartitionSource, Relationship, Role, SharedExpression,
Table, TablePermission, TabularDatabase, Variation,
};
pub use report::{
BindingKind, BindingRef, Bookmark, BookmarkSection, BookmarkVisual, DatasetReference,
DrillthroughParameter, FieldTarget, FieldWell, Filter, Page, PageBinding, PageBindingKind,
Projection, ReportMeasure, ReportModel, Visual,
};
use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("invalid archive: {0}")]
Archive(#[from] zip::result::ZipError),
#[error("invalid JSON: {0}")]
Json(#[from] serde_json::Error),
#[error("malformed TMDL: {0}")]
Tmdl(String),
#[error("unsupported or unrecognized source format: {0}")]
UnsupportedFormat(String),
}
pub type Result<T> = std::result::Result<T, Error>;