sea_query/backend/postgres/
extension.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
use super::*;
use crate::extension::postgres::*;

impl ExtensionBuilder for PostgresQueryBuilder {
    fn prepare_extension_create_statement(
        &self,
        create: &ExtensionCreateStatement,
        sql: &mut dyn SqlWriter,
    ) {
        write!(sql, "CREATE EXTENSION ").unwrap();

        if create.if_not_exists {
            write!(sql, "IF NOT EXISTS ").unwrap()
        }

        write!(sql, "{}", create.name).unwrap();

        if let Some(schema) = create.schema.as_ref() {
            write!(sql, " WITH SCHEMA {}", schema).unwrap();
        }

        if let Some(version) = create.version.as_ref() {
            write!(sql, " VERSION {}", version).unwrap();
        }

        if create.cascade {
            write!(sql, " CASCADE").unwrap();
        }
    }

    fn prepare_extension_drop_statement(
        &self,
        drop: &ExtensionDropStatement,
        sql: &mut dyn SqlWriter,
    ) {
        write!(sql, "DROP EXTENSION ").unwrap();

        if drop.if_exists {
            write!(sql, "IF EXISTS ").unwrap();
        }

        write!(sql, "{}", drop.name).unwrap();

        if drop.cascade {
            write!(sql, " CASCADE").unwrap();
        }

        if drop.restrict {
            write!(sql, " RESTRICT").unwrap();
        }
    }
}