kopia lustrzana https://github.com/reiver/greatape
feat(app): ✨ follow request acceptance
rodzic
8488e6f657
commit
c3af1bfd6a
|
@ -9,8 +9,9 @@ import (
|
|||
// Follower struct defines a follower
|
||||
type Follower struct {
|
||||
gorm.Model
|
||||
Target string `gorm:"not null"`
|
||||
Handle string `gorm:"not null"`
|
||||
Target string `gorm:"not null"`
|
||||
Handle string `gorm:"not null"`
|
||||
Accepted bool `gorm:"not null"`
|
||||
}
|
||||
|
||||
// CreateFollower creates a new entry in the followers's table
|
||||
|
@ -22,3 +23,8 @@ func CreateFollower(follower *Follower) *gorm.DB {
|
|||
func FindFollowers(dest interface{}, userIden interface{}) *gorm.DB {
|
||||
return db.DB.Model(&Follower{}).Find(dest, "`target` = ?", userIden)
|
||||
}
|
||||
|
||||
// AcceptFollower accepts a follow request
|
||||
func AcceptFollower(id interface{}) *gorm.DB {
|
||||
return db.DB.Model(&Follower{}).Where("id = ?", id).Update("accepted", true)
|
||||
}
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
package types
|
||||
|
||||
type FollowerDTO struct {
|
||||
Target string `json:"target" validate:"required"`
|
||||
Handle string `json:"handle" validate:"required"`
|
||||
Target string `json:"target" validate:"required"`
|
||||
Handle string `json:"handle" validate:"required"`
|
||||
Accepted bool `json:"accepted"`
|
||||
}
|
||||
|
||||
type FollowerResponse struct {
|
||||
Target string `json:"target"`
|
||||
Handle string `json:"handle"`
|
||||
Target string `json:"target"`
|
||||
Handle string `json:"handle"`
|
||||
Accepted bool `json:"accepted"`
|
||||
}
|
||||
|
|
|
@ -37,3 +37,14 @@ var Followers = route.New(HttpGet, "/u/:username/followers", func(x IContext) er
|
|||
x.Response().Header("Content-Type", "application/activity+json; charset=utf-8")
|
||||
return x.WriteString(string(json))
|
||||
})
|
||||
|
||||
var AcceptFollowRequest = route.New(HttpPut, "/u/:username/followers/:id/accept", func(x IContext) error {
|
||||
id := x.Request().Params("id")
|
||||
|
||||
err := repos.AcceptFollower(id).Error
|
||||
if err != nil {
|
||||
return x.InternalServerError(err.Error())
|
||||
}
|
||||
|
||||
return x.Nothing()
|
||||
})
|
||||
|
|
|
@ -66,8 +66,9 @@ var InboxPost = route.New(HttpPost, "/u/:username/inbox", func(x IContext) error
|
|||
}
|
||||
|
||||
if err := repos.CreateFollower(&repos.Follower{
|
||||
Target: x.StringUtil().Format("%s://%s/u/%s", config.PROTOCOL, config.DOMAIN, username),
|
||||
Handle: follower,
|
||||
Target: x.StringUtil().Format("%s://%s/u/%s", config.PROTOCOL, config.DOMAIN, username),
|
||||
Handle: follower,
|
||||
Accepted: true,
|
||||
}); err.Error != nil {
|
||||
return x.Conflict(err.Error.Error())
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue