databag/net/server/internal/api_getNodeAccounts.go
2023-07-10 22:15:02 -07:00

44 lines
1.1 KiB
Go

package databag
import (
"databag/internal/store"
"net/http"
)
//GetNodeAccounts retrieves profiles of hosted accounts for the admin
func GetNodeAccounts(w http.ResponseWriter, r *http.Request) {
if code, err := ParamAdminToken(r); err != nil {
ErrResponse(w, code, err)
return
}
var accounts []store.Account
if err := store.DB.Preload("Assets").Preload("AccountDetail").Find(&accounts).Error; err != nil {
ErrResponse(w, http.StatusInternalServerError, err)
return
}
profiles := []AccountProfile{}
for _, account := range accounts {
var size int64
for _, asset := range account.Assets {
size += asset.Size
}
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,
StorageUsed: size,
})
}
WriteResponse(w, &profiles)
}