Skip to main content

sea_query/extension/mysql/
explain.rs

1use crate::{DynIden, IntoTableRef, TableRef};
2
3/// MySQL-only EXPLAIN table/column or wildcard target.
4#[derive(Debug, Clone, PartialEq)]
5pub enum ExplainTable {
6    Table(TableRef),
7    WithColumn(TableRef, DynIden),
8    WithWildcard(TableRef, &'static str),
9}
10
11#[derive(Debug, Clone, PartialEq)]
12pub(crate) enum ExplainTableTarget {
13    Column(DynIden),
14    Wildcard(&'static str),
15}
16
17#[derive(Debug, Clone, PartialEq)]
18pub(crate) enum MySqlExplainSchemaSpec {
19    Schema(DynIden),
20    Database(DynIden),
21}
22
23impl<T> From<T> for ExplainTable
24where
25    T: IntoTableRef,
26{
27    fn from(value: T) -> Self {
28        Self::Table(value.into_table_ref())
29    }
30}
31
32#[derive(Default, Debug, Clone, PartialEq)]
33pub(crate) struct MySqlExplainOptions {
34    pub(crate) into_variable: Option<String>,
35    pub(crate) schema_spec: Option<MySqlExplainSchemaSpec>,
36    pub(crate) table: Option<TableRef>,
37    pub(crate) target: Option<ExplainTableTarget>,
38    pub(crate) for_connection: Option<u64>,
39}