diff --git a/migrations/202203191_drop_diagnostics_user.go b/migrations/202203191_drop_diagnostics_user.go new file mode 100644 index 0000000..8146e8a --- /dev/null +++ b/migrations/202203191_drop_diagnostics_user.go @@ -0,0 +1,39 @@ +package migrations + +import ( + "github.com/emvi/logbuch" + "github.com/muety/wakapi/config" + "github.com/muety/wakapi/models" + "gorm.io/gorm" +) + +func init() { + const name = "202203191-drop_diagnostics_user" + f := migrationFunc{ + name: name, + f: func(db *gorm.DB, cfg *config.Config) error { + if hasRun(name, db) { + return nil + } + + migrator := db.Migrator() + + if migrator.HasColumn(&models.Diagnostics{}, "user_id") { + logbuch.Info("running migration '%s'", name) + + if err := migrator.DropConstraint(&models.Diagnostics{}, "fk_diagnostics_user"); err != nil { + logbuch.Warn("failed to drop 'fk_diagnostics_user' constraint (%v)", err) + } + + if err := migrator.DropColumn(&models.Diagnostics{}, "user_id"); err != nil { + logbuch.Warn("failed to drop user_id column of diagnostics (%v)", err) + } + } + + setHasRun(name, db) + return nil + }, + } + + registerPostMigration(f) +} diff --git a/models/diagnostics.go b/models/diagnostics.go index d5126e2..6031edd 100644 --- a/models/diagnostics.go +++ b/models/diagnostics.go @@ -2,8 +2,6 @@ package models type Diagnostics struct { ID uint `gorm:"primary_key"` - User *User `json:"-" gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE"` - UserID string `json:"-" gorm:"not null; index:idx_diagnostics_user"` Platform string `json:"platform"` Architecture string `json:"architecture"` Plugin string `json:"plugin"` diff --git a/routes/api/diagnostics.go b/routes/api/diagnostics.go index e63be87..f903dbe 100644 --- a/routes/api/diagnostics.go +++ b/routes/api/diagnostics.go @@ -46,20 +46,12 @@ func (h *DiagnosticsApiHandler) RegisterRoutes(router *mux.Router) { func (h *DiagnosticsApiHandler) Post(w http.ResponseWriter, r *http.Request) { var diagnostics models.Diagnostics - user := middlewares.GetPrincipal(r) - if user == nil { - w.WriteHeader(http.StatusUnauthorized) - w.Write([]byte(conf.ErrUnauthorized)) - return - } - if err := json.NewDecoder(r.Body).Decode(&diagnostics); err != nil { w.WriteHeader(http.StatusBadRequest) w.Write([]byte(conf.ErrBadRequest)) conf.Log().Request(r).Error("failed to parse diagnostics for user %s - %v", err) return } - diagnostics.UserID = user.ID if _, err := h.diagnosticsSrvc.Create(&diagnostics); err != nil { w.WriteHeader(http.StatusInternalServerError)