MCPcopy Create free account
hub / github.com/SeaQL/sea-orm / create_enum

Function create_enum

tests/common/setup/mod.rs:80–125  ·  view source on GitHub ↗
(
    db: &DbConn,
    creates: &[TypeCreateStatement],
    entity: E,
)

Source from the content-addressed store, hash-verified

78}
79
80pub async fn create_enum<E>(
81 db: &DbConn,
82 creates: &[TypeCreateStatement],
83 entity: E,
84) -> Result<(), DbErr>
85where
86 E: EntityTrait,
87{
88 let builder = db.get_database_backend();
89 if builder == DbBackend::Postgres {
90 for col in E::Column::iter() {
91 let col_def = col.def();
92 let col_type = col_def.get_column_type();
93 if !matches!(col_type, ColumnType::Enum { .. }) {
94 continue;
95 }
96 let name = match col_type {
97 ColumnType::Enum { name, .. } => name,
98 _ => unreachable!(),
99 };
100 let drop_type_stmt = Type::drop()
101 .name(SeaRc::clone(name))
102 .if_exists()
103 .cascade()
104 .to_owned();
105 let stmt = builder.build(&drop_type_stmt);
106 db.execute(stmt).await?;
107 }
108 }
109
110 let expect_stmts: Vec<Statement> = creates.iter().map(|stmt| builder.build(stmt)).collect();
111 let schema = Schema::new(builder);
112 let create_from_entity_stmts: Vec<Statement> = schema
113 .create_enum_from_entity(entity)
114 .iter()
115 .map(|stmt| builder.build(stmt))
116 .collect();
117
118 assert_eq!(expect_stmts, create_from_entity_stmts);
119
120 for stmt in expect_stmts {
121 db.execute(stmt).await.map(|_| ())?;
122 }
123
124 Ok(())
125}
126
127pub async fn create_table<E>(
128 db: &DbConn,

Callers 1

create_tablesFunction · 0.85

Calls 8

get_column_typeMethod · 0.80
newFunction · 0.50
get_database_backendMethod · 0.45
defMethod · 0.45
nameMethod · 0.45
buildMethod · 0.45
executeMethod · 0.45

Tested by

no test coverage detected