2024-08-11 03:51:22 +02:00
|
|
|
package entity
|
|
|
|
|
|
|
|
|
|
import (
|
2024-08-28 00:25:25 +02:00
|
|
|
"github.com/versia-pub/versia-go/ent"
|
|
|
|
|
"github.com/versia-pub/versia-go/pkg/versia"
|
|
|
|
|
versiautils "github.com/versia-pub/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
|
|
|
|
|
}
|
|
|
|
|
|
2024-08-27 19:59:12 +02:00
|
|
|
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,
|
|
|
|
|
},
|
2024-08-28 00:25:25 +02:00
|
|
|
Author: n.Author.URI,
|
|
|
|
|
Content: n.Content,
|
|
|
|
|
Category: nil,
|
|
|
|
|
Device: nil,
|
|
|
|
|
Previews: nil,
|
|
|
|
|
// TODO: Get from database
|
2024-08-11 03:51:22 +02:00
|
|
|
Group: nil,
|
|
|
|
|
Attachments: nil,
|
|
|
|
|
RepliesTo: nil,
|
2024-08-28 00:25:25 +02:00
|
|
|
Quotes: nil,
|
2024-08-11 03:51:22 +02:00
|
|
|
Mentions: n.MentionURIs,
|
|
|
|
|
Subject: n.Subject,
|
|
|
|
|
IsSensitive: &n.IsSensitive,
|
|
|
|
|
}
|
|
|
|
|
}
|