Skip to main content

typeql/query/schema/
mod.rs

1/*
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
5 */
6
7use std::fmt;
8
9pub use self::{define::Define, redefine::Redefine, undefine::Undefine};
10use crate::common::{Span, Spanned};
11
12mod define;
13mod redefine;
14mod undefine;
15
16#[derive(Debug, Eq, PartialEq)]
17pub enum SchemaQuery {
18    Define(Define),
19    Redefine(Redefine),
20    Undefine(Undefine),
21}
22
23impl Spanned for SchemaQuery {
24    fn span(&self) -> Option<Span> {
25        match self {
26            Self::Define(inner) => inner.span(),
27            Self::Redefine(inner) => inner.span(),
28            Self::Undefine(inner) => inner.span(),
29        }
30    }
31}
32
33impl fmt::Display for SchemaQuery {
34    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35        match self {
36            Self::Define(inner) => fmt::Display::fmt(inner, f),
37            Self::Redefine(inner) => fmt::Display::fmt(inner, f),
38            Self::Undefine(inner) => fmt::Display::fmt(inner, f),
39        }
40    }
41}