💥 Pagination fetching realm member api
🐛 Fix remove realm member has no memberId path param
This commit is contained in:
@ -124,13 +124,13 @@ func MapAPIs(app *fiber.App, baseURL string) {
|
||||
realms.Get("/me", listOwnedRealm)
|
||||
realms.Get("/me/available", listAvailableRealm)
|
||||
realms.Get("/:realm", getRealm)
|
||||
realms.Get("/:realm/members/:memberId", listRealmMembers)
|
||||
realms.Get("/:realm/members", listRealmMembers)
|
||||
realms.Get("/:realm/members/me", getMyRealmMember)
|
||||
realms.Post("/", createRealm)
|
||||
realms.Put("/:realmId", editRealm)
|
||||
realms.Delete("/:realmId", deleteRealm)
|
||||
realms.Post("/:realm/members", addRealmMember)
|
||||
realms.Delete("/:realm/members", removeRealmMember)
|
||||
realms.Delete("/:realm/members/:memberId", removeRealmMember)
|
||||
realms.Delete("/:realm/members/me", leaveRealm)
|
||||
}
|
||||
|
||||
|
@ -11,13 +11,20 @@ import (
|
||||
|
||||
func listRealmMembers(c *fiber.Ctx) error {
|
||||
alias := c.Params("realm")
|
||||
take := c.QueryInt("take", 0)
|
||||
offset := c.QueryInt("offset", 0)
|
||||
|
||||
if realm, err := services.GetRealmWithAlias(alias); err != nil {
|
||||
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||
} else if members, err := services.ListRealmMember(realm.ID); err != nil {
|
||||
} else if count, err := services.CountRealmMember(realm.ID); err != nil {
|
||||
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
|
||||
} else if members, err := services.ListRealmMember(realm.ID, take, offset); err != nil {
|
||||
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
|
||||
} else {
|
||||
return c.JSON(members)
|
||||
return c.JSON(fiber.Map{
|
||||
"count": count,
|
||||
"data": members,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -74,10 +74,22 @@ func NewRealm(realm models.Realm, user models.Account) (models.Realm, error) {
|
||||
return realm, err
|
||||
}
|
||||
|
||||
func ListRealmMember(realmId uint) ([]models.RealmMember, error) {
|
||||
func CountRealmMember(realmId uint) (int64, error) {
|
||||
var count int64
|
||||
if err := database.C.Where(&models.RealmMember{
|
||||
RealmID: realmId,
|
||||
}).Model(&models.RealmMember{}).Count(&count).Error; err != nil {
|
||||
return 0, err
|
||||
} else {
|
||||
return count, nil
|
||||
}
|
||||
}
|
||||
|
||||
func ListRealmMember(realmId uint, take int, offset int) ([]models.RealmMember, error) {
|
||||
var members []models.RealmMember
|
||||
|
||||
if err := database.C.
|
||||
Limit(take).Offset(offset).
|
||||
Where(&models.RealmMember{RealmID: realmId}).
|
||||
Preload("Account").
|
||||
Find(&members).Error; err != nil {
|
||||
|
Reference in New Issue
Block a user