diff --git a/internal/db/vendor.go b/internal/db/vendor.go index 91725eb..6107205 100644 --- a/internal/db/vendor.go +++ b/internal/db/vendor.go @@ -63,3 +63,7 @@ func AssignFirstOrCreateVendorByUserIDAndVendor(userID string, vendor model.Stre ).FirstOrCreate(&vendorInfo).Error return &vendorInfo, err } + +func DeleteVendorByUserIDAndVendor(userID string, vendor model.StreamingVendor) error { + return db.Where("user_id = ? AND vendor = ?", userID, vendor).Delete(&model.StreamingVendorInfo{}).Error +} diff --git a/server/handlers/init.go b/server/handlers/init.go index f07d9b8..fe8d1ff 100644 --- a/server/handlers/init.go +++ b/server/handlers/init.go @@ -164,6 +164,8 @@ func Init(e *gin.Engine) { bilibili.POST("/parse", Vbilibili.Parse) bilibili.GET("/me", Vbilibili.Me) + + bilibili.POST("/logout", Vbilibili.Logout) } } } diff --git a/server/handlers/vendors/bilibili/login.go b/server/handlers/vendors/bilibili/login.go index 5af0dd5..63a2ba0 100644 --- a/server/handlers/vendors/bilibili/login.go +++ b/server/handlers/vendors/bilibili/login.go @@ -172,3 +172,13 @@ func LoginWithSMS(ctx *gin.Context) { } ctx.Status(http.StatusNoContent) } + +func Logout(ctx *gin.Context) { + user := ctx.MustGet("user").(*op.User) + err := db.DeleteVendorByUserIDAndVendor(user.ID, dbModel.StreamingVendorBilibili) + if err != nil { + ctx.AbortWithStatusJSON(http.StatusInternalServerError, model.NewApiErrorResp(err)) + return + } + ctx.Status(http.StatusNoContent) +}