tank_core/query/builder/
drop_table.rs

1use crate::{Driver, DynQuery, Entity, NA, SqlWriter};
2use std::marker::PhantomData;
3
4pub struct DropTableQueryBuilder<Table: Entity, Exists> {
5    pub(crate) if_exists: bool,
6    pub(crate) _table: PhantomData<Table>,
7    pub(crate) _e: PhantomData<Exists>,
8}
9
10impl<T: Entity> DropTableQueryBuilder<T, NA> {
11    pub fn if_exists(self) -> DropTableQueryBuilder<T, bool> {
12        DropTableQueryBuilder {
13            if_exists: true,
14            _table: self._table,
15            _e: Default::default(),
16        }
17    }
18}
19
20impl<T: Entity, E> DropTableQueryBuilder<T, E> {
21    pub fn get_exists(&self) -> bool {
22        self.if_exists
23    }
24
25    pub fn build<D: Driver>(&self, driver: &D) -> String {
26        let writer = driver.sql_writer();
27        let mut query = DynQuery::default();
28        writer.write_drop_table::<T>(&mut query, self.if_exists);
29        query.into_buffer()
30    }
31
32    pub fn build_into<D: Driver>(&self, driver: &D, out: &mut DynQuery) {
33        let writer = driver.sql_writer();
34        writer.write_drop_table::<T>(out, self.if_exists);
35    }
36}
37
38pub trait DropTableQuery<Table: Entity> {
39    fn get_exists(&self) -> bool;
40}
41
42impl<T: Entity, E> DropTableQuery<T> for DropTableQueryBuilder<T, E> {
43    fn get_exists(&self) -> bool {
44        self.get_exists()
45    }
46}