use super::{
migration::{MigratableItem, SchemaList},
DatabaseItem, DatabaseItemList, Schema,
};
macro_rules! make_ditem_list {
($nfirst:ident, $($n:ident),*) => {
impl<$nfirst: DatabaseItem, $( $n: DatabaseItem ),*> DatabaseItemList for ($nfirst, $( $n ),*)
{
type Head = $nfirst;
type Tail = ( $( $n ),*, );
}
}
}
make_ditem_list![DI0, DI1];
make_ditem_list![DI0, DI1, DI2];
make_ditem_list![DI0, DI1, DI2, DI3];
make_ditem_list![DI0, DI1, DI2, DI3, DI4];
make_ditem_list![DI0, DI1, DI2, DI3, DI4, DI5];
make_ditem_list![DI0, DI1, DI2, DI3, DI4, DI5, DI6];
make_ditem_list![DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7];
make_ditem_list![DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8];
make_ditem_list![DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9];
make_ditem_list![DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10];
make_ditem_list![DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11];
make_ditem_list![DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12];
make_ditem_list![DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13];
make_ditem_list![DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14];
make_ditem_list![
DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15
];
make_ditem_list![
DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15, DI16
];
make_ditem_list![
DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15, DI16,
DI17
];
make_ditem_list![
DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15, DI16,
DI17, DI18
];
make_ditem_list![
DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15, DI16,
DI17, DI18, DI19
];
impl<S0: Schema, S1: Schema> SchemaList for (S0, S1)
where
S1: MigratableItem<S0>,
{
type Head = S1;
type Tail = (S0,);
}
macro_rules! make_schema_list {
($nfirst:ident, $nlast:ident, $( $n1:ident : $n2:ident ),*) => {
impl<$nfirst: Schema, $( $n2: Schema),*> SchemaList for ($nfirst, $( $n2 ),*)
where
$( $n2 : MigratableItem < $n1 > ),*
{
type Head = $nlast;
type Tail = ( $( $n1 ),* );
}
}
}
make_schema_list![ S0, S2, S0:S1, S1:S2 ];
make_schema_list![ S0, S3, S0:S1, S1:S2, S2:S3 ];
make_schema_list![ S0, S4, S0:S1, S1:S2, S2:S3, S3:S4 ];
make_schema_list![ S0, S5, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5 ];
make_schema_list![ S0, S6, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6 ];
make_schema_list![ S0, S7, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7 ];
make_schema_list![ S0, S8, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8 ];
make_schema_list![ S0, S9, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9 ];
make_schema_list![ S0, S10, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9, S9:S10 ];
make_schema_list![ S0, S11, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9, S9:S10, S10:S11 ];
make_schema_list![ S0, S12, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9, S9:S10, S10:S11, S11:S12 ];
make_schema_list![ S0, S13, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9, S9:S10, S10:S11, S11:S12, S12:S13 ];
make_schema_list![ S0, S14, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9, S9:S10, S10:S11, S11:S12, S12:S13, S13:S14 ];
make_schema_list![ S0, S15, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9, S9:S10, S10:S11, S11:S12, S12:S13, S13:S14, S14:S15 ];
make_schema_list![ S0, S16, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9, S9:S10, S10:S11, S11:S12, S12:S13, S13:S14, S14:S15, S15:S16 ];
make_schema_list![ S0, S17, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9, S9:S10, S10:S11, S11:S12, S12:S13, S13:S14, S14:S15, S15:S16, S16:S17 ];
make_schema_list![ S0, S18, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9, S9:S10, S10:S11, S11:S12, S12:S13, S13:S14, S14:S15, S15:S16, S16:S17, S17:S18 ];
make_schema_list![ S0, S19, S0:S1, S1:S2, S2:S3, S3:S4, S4:S5, S5:S6, S6:S7, S7:S8, S8:S9, S9:S10, S10:S11, S11:S12, S12:S13, S13:S14, S14:S15, S15:S16, S16:S17, S17:S18, S18:S19 ];