diff --git a/server/handlers/init.go b/server/handlers/init.go index 838616e..c2850ff 100644 --- a/server/handlers/init.go +++ b/server/handlers/init.go @@ -289,6 +289,12 @@ func initUser(user *gin.RouterGroup, needAuthUser *gin.RouterGroup) { needAuthUser.POST("/bind/email", UserBindEmail) needAuthUser.POST("/unbind/email", UserUnbindEmail) + + { + room := needAuthUser.Group("/room") + + room.POST("/delete", UserDeleteRoom) + } } func initVendor(vendor *gin.RouterGroup) { diff --git a/server/handlers/user.go b/server/handlers/user.go index c23572c..249356c 100644 --- a/server/handlers/user.go +++ b/server/handlers/user.go @@ -600,3 +600,37 @@ func UserRetrievePasswordEmail(ctx *gin.Context) { "token": token, })) } + +func UserDeleteRoom(ctx *gin.Context) { + user := ctx.MustGet("user").(*op.UserEntry).Value() + log := ctx.MustGet("log").(*logrus.Entry) + + var req model.IdReq + if err := model.Decode(ctx, &req); err != nil { + log.Errorf("failed to decode request: %v", err) + ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorResp(err)) + return + } + + room, err := db.GetRoomByID(req.Id) + if err != nil { + log.Errorf("failed to get room: %v", err) + ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorResp(err)) + return + } + + if room.CreatorID != user.ID { + log.Errorf("not creator") + ctx.AbortWithStatusJSON(http.StatusForbidden, model.NewApiErrorStringResp("not creator")) + return + } + + err = op.DeleteRoomByID(room.ID) + if err != nil { + log.Errorf("failed to delete room: %v", err) + ctx.AbortWithStatusJSON(http.StatusInternalServerError, model.NewApiErrorResp(err)) + return + } + + ctx.Status(http.StatusNoContent) +} diff --git a/server/model/movie.go b/server/model/movie.go index 410c6c6..96e44b0 100644 --- a/server/model/movie.go +++ b/server/model/movie.go @@ -15,7 +15,7 @@ var ( ErrEmptyName = errors.New("empty name") ErrTypeTooLong = errors.New("type too long") - ErrId = errors.New("id must be greater than 0") + ErrId = errors.New("id length must be 32") ErrEmptyIds = errors.New("empty ids") )