diff options
Diffstat (limited to 'db/boards.go')
-rw-r--r-- | db/boards.go | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/db/boards.go b/db/boards.go new file mode 100644 index 0000000..b54ab60 --- /dev/null +++ b/db/boards.go @@ -0,0 +1,64 @@ +package db + +import ( + "sort" + + "github.com/FChannel0/FChannel-Server/activitypub" + "github.com/FChannel0/FChannel-Server/webfinger" +) + +var Boards []Board +var FollowingBoards []activitypub.ObjectBase + +type Board struct { + Name string + Actor activitypub.Actor + Summary string + PrefName string + InReplyTo string + Location string + To string + RedirectTo string + Captcha string + CaptchaCode string + ModCred string + Domain string + TP string + Restricted bool + Post activitypub.ObjectBase +} + +type BoardSortAsc []Board + +func (a BoardSortAsc) Len() int { return len(a) } +func (a BoardSortAsc) Less(i, j int) bool { return a[i].Name < a[j].Name } +func (a BoardSortAsc) Swap(i, j int) { a[i], a[j] = a[j], a[i] } + +func GetBoardCollection() ([]Board, error) { + var collection []Board + for _, e := range FollowingBoards { + var board Board + boardActor, err := GetActorFromDB(e.Id) + if err != nil { + return collection, err + } + + if boardActor.Id == "" { + boardActor, err = webfinger.FingerActor(e.Id) + if err != nil { + return collection, err + } + } + + board.Name = boardActor.Name + board.PrefName = boardActor.PreferredUsername + board.Location = "/" + boardActor.Name + board.Actor = boardActor + board.Restricted = boardActor.Restricted + collection = append(collection, board) + } + + sort.Sort(BoardSortAsc(collection)) + + return collection, nil +} |