@@ -512,7 +512,7 @@ COMMIT;
512
512
513
513
err := tx .AutoMigrate (& types.User {})
514
514
if err != nil {
515
- return err
515
+ return fmt . Errorf ( "automigrating types.User: %w" , err )
516
516
}
517
517
518
518
return nil
@@ -527,7 +527,7 @@ COMMIT;
527
527
Migrate : func (tx * gorm.DB ) error {
528
528
err := tx .AutoMigrate (& types.User {})
529
529
if err != nil {
530
- return err
530
+ return fmt . Errorf ( "automigrating types.User: %w" , err )
531
531
}
532
532
533
533
// Set up indexes and unique constraints outside of GORM, it does not support
@@ -575,7 +575,7 @@ COMMIT;
575
575
576
576
err := tx .AutoMigrate (& types.Route {})
577
577
if err != nil {
578
- return err
578
+ return fmt . Errorf ( "automigrating types.Route: %w" , err )
579
579
}
580
580
581
581
return nil
@@ -589,11 +589,33 @@ COMMIT;
589
589
Migrate : func (tx * gorm.DB ) error {
590
590
err := tx .AutoMigrate (& types.PreAuthKey {})
591
591
if err != nil {
592
- return err
592
+ return fmt . Errorf ( "automigrating types.PreAuthKey: %w" , err )
593
593
}
594
594
err = tx .AutoMigrate (& types.Node {})
595
595
if err != nil {
596
- return err
596
+ return fmt .Errorf ("automigrating types.Node: %w" , err )
597
+ }
598
+
599
+ return nil
600
+ },
601
+ Rollback : func (db * gorm.DB ) error { return nil },
602
+ },
603
+ // Ensure there are no nodes refering to a deleted preauthkey.
604
+ {
605
+ ID : "202502070949" ,
606
+ Migrate : func (tx * gorm.DB ) error {
607
+ if tx .Migrator ().HasTable (& types.PreAuthKey {}) {
608
+ err := tx .Exec (`
609
+ UPDATE nodes
610
+ SET auth_key_id = NULL
611
+ WHERE auth_key_id IS NOT NULL
612
+ AND auth_key_id NOT IN (
613
+ SELECT id FROM pre_auth_keys
614
+ );
615
+ ` ).Error
616
+ if err != nil {
617
+ return fmt .Errorf ("setting auth_key to null on nodes with non-existing keys: %w" , err )
618
+ }
597
619
}
598
620
599
621
return nil
0 commit comments