versia-go/internal/entity/note.go

72 lines
1.6 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 Note struct {
*ent.Note
2024-08-22 23:03:38 +02:00
URI *versiautils.URL
Content versiautils.TextContentTypeMap
2024-08-11 03:51:22 +02:00
Author *User
Mentions []User
2024-08-22 23:03:38 +02:00
MentionURIs []versiautils.URL
2024-08-11 03:51:22 +02:00
}
func NewNote(dbNote *ent.Note) (*Note, error) {
n := &Note{
Note: dbNote,
2024-08-22 23:03:38 +02:00
Content: versiautils.TextContentTypeMap{
"text/plain": versiautils.TextContent{Content: dbNote.Content},
2024-08-11 03:51:22 +02:00
},
Mentions: make([]User, 0, len(dbNote.Edges.Mentions)),
2024-08-22 23:03:38 +02:00
MentionURIs: make([]versiautils.URL, 0, len(dbNote.Edges.Mentions)),
2024-08-11 03:51:22 +02:00
}
var err error
2024-08-22 23:03:38 +02:00
if n.URI, err = versiautils.ParseURL(dbNote.URI); err != nil {
2024-08-11 03:51:22 +02:00
return nil, err
}
if n.Author, err = NewUser(dbNote.Edges.Author); err != nil {
return nil, err
}
for _, m := range dbNote.Edges.Mentions {
u, err := NewUser(m)
if err != nil {
return nil, err
}
n.Mentions = append(n.Mentions, *u)
n.MentionURIs = append(n.MentionURIs, *u.URI)
}
return n, nil
}
func (n Note) ToVersia() versia.Note {
2024-08-22 23:03:38 +02:00
return versia.Note{
Entity: versia.Entity{
2024-08-11 03:51:22 +02:00
ID: n.ID,
URI: n.URI,
2024-08-22 23:03:38 +02:00
CreatedAt: versiautils.Time(n.CreatedAt),
2024-08-11 03:51:22 +02:00
Extensions: n.Extensions,
},
Author: n.Author.URI,
Content: n.Content,
Category: nil,
Device: nil,
Previews: nil,
Group: nil,
Attachments: nil,
RepliesTo: nil,
Quoting: nil,
Mentions: n.MentionURIs,
Subject: n.Subject,
IsSensitive: &n.IsSensitive,
2024-08-22 23:03:38 +02:00
Visibility: versia.NoteVisibility(n.Visibility),
2024-08-11 03:51:22 +02:00
}
}