databag/net/server/internal/api_getNodeAccounts.go

44 lines
1.1 KiB
Go
Raw Normal View History

2022-03-10 05:19:05 +00:00
package databag
import (
2022-07-22 19:28:14 +00:00
"databag/internal/store"
2022-03-10 05:19:05 +00:00
"net/http"
)
2022-07-29 07:21:32 +00:00
//GetNodeAccounts retrieves profiles of hosted accounts for the admin
2022-03-10 05:19:05 +00:00
func GetNodeAccounts(w http.ResponseWriter, r *http.Request) {
2024-05-21 07:56:25 +00:00
if code, err := ParamSessionToken(r); err != nil {
2022-07-22 19:28:14 +00:00
ErrResponse(w, code, err)
return
}
2022-03-10 05:19:05 +00:00
2022-07-22 19:28:14 +00:00
var accounts []store.Account
2023-07-11 05:15:02 +00:00
if err := store.DB.Preload("Assets").Preload("AccountDetail").Find(&accounts).Error; err != nil {
2022-07-22 19:28:14 +00:00
ErrResponse(w, http.StatusInternalServerError, err)
return
}
2022-03-10 05:19:05 +00:00
2022-07-22 19:28:14 +00:00
profiles := []AccountProfile{}
for _, account := range accounts {
2023-07-11 05:15:02 +00:00
var size int64
for _, asset := range account.Assets {
size += asset.Size
}
2022-07-22 19:28:14 +00:00
profiles = append(profiles, AccountProfile{
AccountID: uint32(account.ID),
GUID: account.GUID,
Handle: account.Username,
Name: account.AccountDetail.Name,
Description: account.AccountDetail.Description,
Location: account.AccountDetail.Location,
ImageSet: account.AccountDetail.Image != "",
Disabled: account.Disabled,
2023-07-11 05:15:02 +00:00
StorageUsed: size,
2022-07-22 19:28:14 +00:00
})
}
2022-03-10 05:19:05 +00:00
2022-07-22 19:28:14 +00:00
WriteResponse(w, &profiles)
2022-03-10 05:19:05 +00:00
}