versia-go/internal/entity/follow.go

75 lines
1.5 KiB
Go
Raw Normal View History

2024-08-11 03:51:22 +02:00
package entity
import (
"github.com/lysand-org/versia-go/ent"
2024-08-22 23:03:38 +02:00
"github.com/lysand-org/versia-go/pkg/versia"
versiautils "github.com/lysand-org/versia-go/pkg/versia/utils"
2024-08-11 03:51:22 +02:00
)
type Follow struct {
*ent.Follow
URI *versiautils.URL
Follower *User
Followee *User
2024-08-11 03:51:22 +02:00
}
func NewFollow(dbData *ent.Follow) (*Follow, error) {
f := &Follow{Follow: dbData}
2024-08-11 03:51:22 +02:00
var err error
if f.URI, err = versiautils.ParseURL(dbData.URI); err != nil {
2024-08-11 03:51:22 +02:00
return nil, err
}
if f.Follower, err = NewUser(dbData.Edges.Follower); err != nil {
2024-08-11 03:51:22 +02:00
return nil, err
}
if f.Followee, err = NewUser(dbData.Edges.Followee); err != nil {
2024-08-11 03:51:22 +02:00
return nil, err
}
return f, nil
}
func (f Follow) ToVersia() *versia.Follow {
2024-08-22 23:03:38 +02:00
return &versia.Follow{
Entity: versia.Entity{
2024-08-11 03:51:22 +02:00
ID: f.ID,
URI: f.URI,
2024-08-22 23:03:38 +02:00
CreatedAt: versiautils.Time(f.CreatedAt),
2024-08-11 03:51:22 +02:00
Extensions: f.Extensions,
},
Author: f.Follower.URI,
Followee: f.Followee.URI,
2024-08-11 03:51:22 +02:00
}
}
func (f Follow) ToVersiaAccept() *versia.FollowAccept {
2024-08-22 23:03:38 +02:00
return &versia.FollowAccept{
Entity: versia.Entity{
2024-08-11 03:51:22 +02:00
ID: f.ID,
URI: f.URI,
2024-08-22 23:03:38 +02:00
CreatedAt: versiautils.Time(f.CreatedAt),
2024-08-11 03:51:22 +02:00
Extensions: f.Extensions,
},
Author: f.Followee.URI,
Follower: f.Follower.URI,
2024-08-11 03:51:22 +02:00
}
}
func (f Follow) ToVersiaReject() *versia.FollowReject {
2024-08-22 23:03:38 +02:00
return &versia.FollowReject{
Entity: versia.Entity{
2024-08-11 03:51:22 +02:00
ID: f.ID,
URI: f.URI,
2024-08-22 23:03:38 +02:00
CreatedAt: versiautils.Time(f.CreatedAt),
2024-08-11 03:51:22 +02:00
Extensions: f.Extensions,
},
Author: f.Followee.URI,
Follower: f.Follower.URI,
2024-08-11 03:51:22 +02:00
}
}