1- use crate :: schema:: {
2- ColumnDef , ColumnName , ColumnType , IndexDef , IndexName , TableConstraint , TableName ,
3- } ;
1+ use crate :: schema:: { ColumnDef , ColumnName , ColumnType , TableConstraint , TableName } ;
42use schemars:: JsonSchema ;
53use serde:: { Deserialize , Serialize } ;
64use std:: fmt;
@@ -46,14 +44,6 @@ pub enum MigrationAction {
4644 column : ColumnName ,
4745 new_type : ColumnType ,
4846 } ,
49- AddIndex {
50- table : TableName ,
51- index : IndexDef ,
52- } ,
53- RemoveIndex {
54- table : TableName ,
55- name : IndexName ,
56- } ,
5747 AddConstraint {
5848 table : TableName ,
5949 constraint : TableConstraint ,
@@ -92,12 +82,6 @@ impl fmt::Display for MigrationAction {
9282 MigrationAction :: ModifyColumnType { table, column, .. } => {
9383 write ! ( f, "ModifyColumnType: {}.{}" , table, column)
9484 }
95- MigrationAction :: AddIndex { table, index } => {
96- write ! ( f, "AddIndex: {}.{}" , table, index. name)
97- }
98- MigrationAction :: RemoveIndex { name, .. } => {
99- write ! ( f, "RemoveIndex: {}" , name)
100- }
10185 MigrationAction :: AddConstraint { table, constraint } => {
10286 let constraint_name = match constraint {
10387 TableConstraint :: PrimaryKey { .. } => "PRIMARY KEY" ,
@@ -116,6 +100,12 @@ impl fmt::Display for MigrationAction {
116100 TableConstraint :: Check { name, .. } => {
117101 return write ! ( f, "AddConstraint: {}.{} (CHECK)" , table, name) ;
118102 }
103+ TableConstraint :: Index { name, .. } => {
104+ if let Some ( n) = name {
105+ return write ! ( f, "AddConstraint: {}.{} (INDEX)" , table, n) ;
106+ }
107+ "INDEX"
108+ }
119109 } ;
120110 write ! ( f, "AddConstraint: {}.{}" , table, constraint_name)
121111 }
@@ -137,6 +127,12 @@ impl fmt::Display for MigrationAction {
137127 TableConstraint :: Check { name, .. } => {
138128 return write ! ( f, "RemoveConstraint: {}.{} (CHECK)" , table, name) ;
139129 }
130+ TableConstraint :: Index { name, .. } => {
131+ if let Some ( n) = name {
132+ return write ! ( f, "RemoveConstraint: {}.{} (INDEX)" , table, n) ;
133+ }
134+ "INDEX"
135+ }
140136 } ;
141137 write ! ( f, "RemoveConstraint: {}.{}" , table, constraint_name)
142138 }
@@ -159,7 +155,7 @@ impl fmt::Display for MigrationAction {
159155#[ cfg( test) ]
160156mod tests {
161157 use super :: * ;
162- use crate :: schema:: { IndexDef , ReferenceAction , SimpleColumnType } ;
158+ use crate :: schema:: { ReferenceAction , SimpleColumnType } ;
163159 use rstest:: rstest;
164160
165161 fn default_column ( ) -> ColumnDef {
@@ -222,23 +218,25 @@ mod tests {
222218 } ,
223219 "ModifyColumnType: users.age"
224220 ) ]
225- #[ case:: add_index (
226- MigrationAction :: AddIndex {
221+ #[ case:: add_constraint_index_with_name (
222+ MigrationAction :: AddConstraint {
227223 table: "users" . into( ) ,
228- index : IndexDef {
229- name: "idx_email ". into( ) ,
224+ constraint : TableConstraint :: Index {
225+ name: Some ( "ix_users__email ". into( ) ) ,
230226 columns: vec![ "email" . into( ) ] ,
231- unique: false ,
232227 } ,
233228 } ,
234- "AddIndex : users.idx_email "
229+ "AddConstraint : users.ix_users__email (INDEX) "
235230 ) ]
236- #[ case:: remove_index (
237- MigrationAction :: RemoveIndex {
231+ #[ case:: remove_constraint_index_with_name (
232+ MigrationAction :: RemoveConstraint {
238233 table: "users" . into( ) ,
239- name: "idx_email" . into( ) ,
234+ constraint: TableConstraint :: Index {
235+ name: Some ( "ix_users__email" . into( ) ) ,
236+ columns: vec![ "email" . into( ) ] ,
237+ } ,
240238 } ,
241- "RemoveIndex: idx_email "
239+ "RemoveConstraint: users.ix_users__email (INDEX) "
242240 ) ]
243241 #[ case:: rename_table(
244242 MigrationAction :: RenameTable {
0 commit comments