feat(ui+backend): base of data persistence
This commit is contained in:
@ -79,6 +79,10 @@ func applyMigration(ctx context.Context, ctn *service.Container) error {
|
||||
// nolint: gochecknoglobals
|
||||
var initialModels = []interface{}{
|
||||
&model.User{},
|
||||
&model.Project{},
|
||||
&model.Access{},
|
||||
&model.TaskCategory{},
|
||||
&model.Task{},
|
||||
}
|
||||
|
||||
func m000initialSchema() orm.Migration {
|
||||
@ -91,15 +95,50 @@ func m000initialSchema() orm.Migration {
|
||||
}
|
||||
}
|
||||
|
||||
// Create foreign keys indexes
|
||||
err := tx.Model(&model.Access{}).
|
||||
AddForeignKey("user_id", "users(id)", "CASCADE", "CASCADE").Error
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
err = tx.Model(&model.TaskCategory{}).
|
||||
AddForeignKey("project_id", "projects(id)", "CASCADE", "CASCADE").Error
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
err = tx.Model(&model.Access{}).
|
||||
AddForeignKey("project_id", "projects(id)", "CASCADE", "CASCADE").Error
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
err = tx.Model(&model.Access{}).
|
||||
AddForeignKey("user_id", "users(id)", "CASCADE", "CASCADE").Error
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
err = tx.Model(&model.Task{}).
|
||||
AddForeignKey("category_id", "task_categories(id)", "CASCADE", "CASCADE").Error
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
return nil
|
||||
},
|
||||
func(ctx context.Context, tx *gorm.DB) error {
|
||||
for _, m := range initialModels {
|
||||
if err := tx.DropTableIfExists(m).Error; err != nil {
|
||||
for i := len(initialModels) - 1; i >= 0; i-- {
|
||||
if err := tx.DropTableIfExists(initialModels[i]).Error; err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
}
|
||||
|
||||
if err := tx.DropTableIfExists("sessions").Error; err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
return nil
|
||||
},
|
||||
)
|
||||
|
Reference in New Issue
Block a user