refactor!: add missing fields and docs

This commit is contained in:
DevMiner 2024-08-22 23:03:38 +02:00
parent 61891d891a
commit 6e59386f60
73 changed files with 726 additions and 580 deletions

View file

@ -2,15 +2,16 @@ package entity
import (
"github.com/lysand-org/versia-go/ent"
"github.com/lysand-org/versia-go/pkg/lysand"
"github.com/lysand-org/versia-go/pkg/versia"
versiautils "github.com/lysand-org/versia-go/pkg/versia/utils"
)
type Follow struct {
*ent.Follow
URI *lysand.URL
FollowerURI *lysand.URL
FolloweeURI *lysand.URL
URI *versiautils.URL
FollowerURI *versiautils.URL
FolloweeURI *versiautils.URL
}
func NewFollow(dbFollow *ent.Follow) (*Follow, error) {
@ -18,17 +19,17 @@ func NewFollow(dbFollow *ent.Follow) (*Follow, error) {
var err error
f.URI, err = lysand.ParseURL(dbFollow.URI)
f.URI, err = versiautils.ParseURL(dbFollow.URI)
if err != nil {
return nil, err
}
f.FollowerURI, err = lysand.ParseURL(dbFollow.Edges.Follower.URI)
f.FollowerURI, err = versiautils.ParseURL(dbFollow.Edges.Follower.URI)
if err != nil {
return nil, err
}
f.FolloweeURI, err = lysand.ParseURL(dbFollow.Edges.Followee.URI)
f.FolloweeURI, err = versiautils.ParseURL(dbFollow.Edges.Followee.URI)
if err != nil {
return nil, err
}
@ -36,12 +37,12 @@ func NewFollow(dbFollow *ent.Follow) (*Follow, error) {
return f, nil
}
func (f Follow) ToLysand() *lysand.Follow {
return &lysand.Follow{
Entity: lysand.Entity{
func (f Follow) ToLysand() *versia.Follow {
return &versia.Follow{
Entity: versia.Entity{
ID: f.ID,
URI: f.URI,
CreatedAt: lysand.TimeFromStd(f.CreatedAt),
CreatedAt: versiautils.Time(f.CreatedAt),
Extensions: f.Extensions,
},
Author: f.FollowerURI,
@ -49,12 +50,12 @@ func (f Follow) ToLysand() *lysand.Follow {
}
}
func (f Follow) ToLysandAccept() *lysand.FollowAccept {
return &lysand.FollowAccept{
Entity: lysand.Entity{
func (f Follow) ToLysandAccept() *versia.FollowAccept {
return &versia.FollowAccept{
Entity: versia.Entity{
ID: f.ID,
URI: f.URI,
CreatedAt: lysand.TimeFromStd(f.CreatedAt),
CreatedAt: versiautils.Time(f.CreatedAt),
Extensions: f.Extensions,
},
Author: f.FolloweeURI,
@ -62,12 +63,12 @@ func (f Follow) ToLysandAccept() *lysand.FollowAccept {
}
}
func (f Follow) ToLysandReject() *lysand.FollowReject {
return &lysand.FollowReject{
Entity: lysand.Entity{
func (f Follow) ToLysandReject() *versia.FollowReject {
return &versia.FollowReject{
Entity: versia.Entity{
ID: f.ID,
URI: f.URI,
CreatedAt: lysand.TimeFromStd(f.CreatedAt),
CreatedAt: versiautils.Time(f.CreatedAt),
Extensions: f.Extensions,
},
Author: f.FolloweeURI,

View file

@ -2,30 +2,31 @@ package entity
import (
"github.com/lysand-org/versia-go/ent"
"github.com/lysand-org/versia-go/pkg/lysand"
"github.com/lysand-org/versia-go/pkg/versia"
versiautils "github.com/lysand-org/versia-go/pkg/versia/utils"
)
type Note struct {
*ent.Note
URI *lysand.URL
Content lysand.TextContentTypeMap
URI *versiautils.URL
Content versiautils.TextContentTypeMap
Author *User
Mentions []User
MentionURIs []lysand.URL
MentionURIs []versiautils.URL
}
func NewNote(dbNote *ent.Note) (*Note, error) {
n := &Note{
Note: dbNote,
Content: lysand.TextContentTypeMap{
"text/plain": lysand.TextContent{Content: dbNote.Content},
Content: versiautils.TextContentTypeMap{
"text/plain": versiautils.TextContent{Content: dbNote.Content},
},
Mentions: make([]User, 0, len(dbNote.Edges.Mentions)),
MentionURIs: make([]lysand.URL, 0, len(dbNote.Edges.Mentions)),
MentionURIs: make([]versiautils.URL, 0, len(dbNote.Edges.Mentions)),
}
var err error
if n.URI, err = lysand.ParseURL(dbNote.URI); err != nil {
if n.URI, err = versiautils.ParseURL(dbNote.URI); err != nil {
return nil, err
}
if n.Author, err = NewUser(dbNote.Edges.Author); err != nil {
@ -45,12 +46,12 @@ func NewNote(dbNote *ent.Note) (*Note, error) {
return n, nil
}
func (n Note) ToLysand() lysand.Note {
return lysand.Note{
Entity: lysand.Entity{
func (n Note) ToLysand() versia.Note {
return versia.Note{
Entity: versia.Entity{
ID: n.ID,
URI: n.URI,
CreatedAt: lysand.TimeFromStd(n.CreatedAt),
CreatedAt: versiautils.Time(n.CreatedAt),
Extensions: n.Extensions,
},
Author: n.Author.URI,
@ -65,6 +66,6 @@ func (n Note) ToLysand() lysand.Note {
Mentions: n.MentionURIs,
Subject: n.Subject,
IsSensitive: &n.IsSensitive,
Visibility: lysand.PublicationVisibility(n.Visibility),
Visibility: versia.NoteVisibility(n.Visibility),
}
}

View file

@ -2,31 +2,32 @@ package entity
import (
"github.com/lysand-org/versia-go/ent"
"github.com/lysand-org/versia-go/pkg/lysand"
versiacrypto "github.com/lysand-org/versia-go/pkg/lysand/crypto"
"github.com/lysand-org/versia-go/pkg/versia"
versiacrypto "github.com/lysand-org/versia-go/pkg/versia/crypto"
versiautils "github.com/lysand-org/versia-go/pkg/versia/utils"
)
type InstanceMetadata struct {
*ent.InstanceMetadata
Moderators []User
ModeratorsCollection *lysand.URL
ModeratorsCollection *versiautils.URL
Admins []User
AdminsCollection *lysand.URL
AdminsCollection *versiautils.URL
SharedInbox *lysand.URL
SharedInbox *versiautils.URL
PublicKey *lysand.SPKIPublicKey
PublicKey *versiacrypto.SPKIPublicKey
Logo *lysand.ImageContentTypeMap
Banner *lysand.ImageContentTypeMap
Logo *versiautils.ImageContentTypeMap
Banner *versiautils.ImageContentTypeMap
}
func NewInstanceMetadata(dbData *ent.InstanceMetadata) (*InstanceMetadata, error) {
n := &InstanceMetadata{
InstanceMetadata: dbData,
PublicKey: &lysand.SPKIPublicKey{},
PublicKey: &versiacrypto.SPKIPublicKey{},
}
var err error
@ -34,16 +35,16 @@ func NewInstanceMetadata(dbData *ent.InstanceMetadata) (*InstanceMetadata, error
return nil, err
}
if n.SharedInbox, err = lysand.ParseURL(dbData.SharedInboxURI); err != nil {
if n.SharedInbox, err = versiautils.ParseURL(dbData.SharedInboxURI); err != nil {
return nil, err
}
if dbData.ModeratorsURI != nil {
if n.ModeratorsCollection, err = lysand.ParseURL(*dbData.ModeratorsURI); err != nil {
if n.ModeratorsCollection, err = versiautils.ParseURL(*dbData.ModeratorsURI); err != nil {
return nil, err
}
}
if dbData.AdminsURI != nil {
if n.AdminsCollection, err = lysand.ParseURL(*dbData.AdminsURI); err != nil {
if n.AdminsCollection, err = versiautils.ParseURL(*dbData.AdminsURI); err != nil {
return nil, err
}
}
@ -69,8 +70,8 @@ func NewInstanceMetadata(dbData *ent.InstanceMetadata) (*InstanceMetadata, error
return n, nil
}
func (m InstanceMetadata) ToLysand() lysand.InstanceMetadata {
return lysand.InstanceMetadata{
func (m InstanceMetadata) ToLysand() versia.InstanceMetadata {
return versia.InstanceMetadata{
Extensions: m.Extensions,
Name: m.Name,
Description: m.Description,
@ -80,15 +81,15 @@ func (m InstanceMetadata) ToLysand() lysand.InstanceMetadata {
Admins: m.AdminsCollection,
Logo: m.Logo,
Banner: m.Banner,
PublicKey: lysand.InstancePublicKey{
PublicKey: versia.InstancePublicKey{
Algorithm: m.PublicKeyAlgorithm,
Key: m.PublicKey,
},
Software: lysand.InstanceSoftware{
Software: versia.InstanceSoftware{
Name: m.SoftwareName,
Version: m.SoftwareVersion,
},
Compatibility: lysand.InstanceCompatibility{
Compatibility: versia.InstanceCompatibility{
Versions: m.SupportedVersions,
Extensions: m.SupportedExtensions,
},

View file

@ -2,36 +2,37 @@ package entity
import (
"github.com/lysand-org/versia-go/internal/helpers"
versiacrypto "github.com/lysand-org/versia-go/pkg/lysand/crypto"
"github.com/lysand-org/versia-go/pkg/versia"
versiacrypto "github.com/lysand-org/versia-go/pkg/versia/crypto"
versiautils "github.com/lysand-org/versia-go/pkg/versia/utils"
"net/url"
"github.com/lysand-org/versia-go/ent"
"github.com/lysand-org/versia-go/internal/utils"
"github.com/lysand-org/versia-go/pkg/lysand"
)
type User struct {
*ent.User
URI *lysand.URL
PKActorURI *lysand.URL
PublicKey *lysand.SPKIPublicKey
Inbox *lysand.URL
Outbox *lysand.URL
Featured *lysand.URL
Followers *lysand.URL
Following *lysand.URL
URI *versiautils.URL
PKActorURI *versiautils.URL
PublicKey *versiacrypto.SPKIPublicKey
Inbox *versiautils.URL
Outbox *versiautils.URL
Featured *versiautils.URL
Followers *versiautils.URL
Following *versiautils.URL
DisplayName string
LysandAvatar lysand.ImageContentTypeMap
LysandBiography lysand.TextContentTypeMap
Signer lysand.Signer
LysandAvatar versiautils.ImageContentTypeMap
LysandBiography versiautils.TextContentTypeMap
Signer versiacrypto.Signer
}
func NewUser(dbData *ent.User) (*User, error) {
u := &User{
User: dbData,
PublicKey: &lysand.SPKIPublicKey{
PublicKey: &versiacrypto.SPKIPublicKey{
Key: nil,
Algorithm: dbData.PublicKeyAlgorithm,
},
@ -50,29 +51,29 @@ func NewUser(dbData *ent.User) (*User, error) {
return nil, err
}
if u.URI, err = lysand.ParseURL(dbData.URI); err != nil {
if u.URI, err = versiautils.ParseURL(dbData.URI); err != nil {
return nil, err
}
if u.PKActorURI, err = lysand.ParseURL(dbData.PublicKeyActor); err != nil {
if u.PKActorURI, err = versiautils.ParseURL(dbData.PublicKeyActor); err != nil {
return nil, err
}
if u.Inbox, err = lysand.ParseURL(dbData.Inbox); err != nil {
if u.Inbox, err = versiautils.ParseURL(dbData.Inbox); err != nil {
return nil, err
}
if u.Outbox, err = lysand.ParseURL(dbData.Outbox); err != nil {
if u.Outbox, err = versiautils.ParseURL(dbData.Outbox); err != nil {
return nil, err
}
if u.Featured, err = lysand.ParseURL(dbData.Featured); err != nil {
if u.Featured, err = versiautils.ParseURL(dbData.Featured); err != nil {
return nil, err
}
if u.Followers, err = lysand.ParseURL(dbData.Followers); err != nil {
if u.Followers, err = versiautils.ParseURL(dbData.Followers); err != nil {
return nil, err
}
if u.Following, err = lysand.ParseURL(dbData.Following); err != nil {
if u.Following, err = versiautils.ParseURL(dbData.Following); err != nil {
return nil, err
}
u.Signer = lysand.Signer{
u.Signer = versiacrypto.Signer{
PrivateKey: dbData.PrivateKey,
UserURL: u.URI.ToStd(),
}
@ -80,12 +81,12 @@ func NewUser(dbData *ent.User) (*User, error) {
return u, nil
}
func (u User) ToLysand() *lysand.User {
return &lysand.User{
Entity: lysand.Entity{
func (u User) ToLysand() *versia.User {
return &versia.User{
Entity: versia.Entity{
ID: u.ID,
URI: u.URI,
CreatedAt: lysand.TimeFromStd(u.CreatedAt),
CreatedAt: versiautils.Time(u.CreatedAt),
Extensions: u.Extensions,
},
DisplayName: helpers.StringPtr(u.DisplayName),
@ -93,7 +94,7 @@ func (u User) ToLysand() *lysand.User {
Avatar: u.LysandAvatar,
Header: imageMap(u.Edges.HeaderImage),
Indexable: u.Indexable,
PublicKey: lysand.UserPublicKey{
PublicKey: versia.UserPublicKey{
Actor: u.PKActorURI,
Algorithm: u.PublicKeyAlgorithm,
Key: u.PublicKey,
@ -109,33 +110,33 @@ func (u User) ToLysand() *lysand.User {
}
}
func lysandAvatar(u *ent.User) lysand.ImageContentTypeMap {
func lysandAvatar(u *ent.User) versiautils.ImageContentTypeMap {
if avatar := imageMap(u.Edges.AvatarImage); avatar != nil {
return avatar
}
return lysand.ImageContentTypeMap{
"image/svg+xml": lysand.ImageContent{
return versiautils.ImageContentTypeMap{
"image/svg+xml": versiautils.ImageContent{
Content: utils.DefaultAvatarURL(u.ID),
},
}
}
func lysandBiography(u *ent.User) lysand.TextContentTypeMap {
func lysandBiography(u *ent.User) versiautils.TextContentTypeMap {
if u.Biography == nil {
return nil
}
// TODO: Render HTML
return lysand.TextContentTypeMap{
"text/html": lysand.TextContent{
return versiautils.TextContentTypeMap{
"text/html": versiautils.TextContent{
Content: *u.Biography,
},
}
}
func imageMap(i *ent.Image) lysand.ImageContentTypeMap {
func imageMap(i *ent.Image) versiautils.ImageContentTypeMap {
if i == nil {
return nil
}
@ -145,9 +146,9 @@ func imageMap(i *ent.Image) lysand.ImageContentTypeMap {
return nil
}
return lysand.ImageContentTypeMap{
return versiautils.ImageContentTypeMap{
i.MimeType: {
Content: (*lysand.URL)(u),
Content: (*versiautils.URL)(u),
},
}
}