From 54ca415d7364867ee47bd7381c6629c25332f154 Mon Sep 17 00:00:00 2001 From: mngshm Date: Mon, 24 Feb 2025 17:07:08 +0530 Subject: [PATCH] fix: change table to allow null values --- server/migrations/96_storage_table_families.up.sql | 2 +- server/pkg/api/family.go | 5 +++-- server/pkg/controller/family/admin.go | 4 ++-- server/pkg/repo/family.go | 11 ++++++----- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/server/migrations/96_storage_table_families.up.sql b/server/migrations/96_storage_table_families.up.sql index 8f3e88b0f3..d41daeef51 100644 --- a/server/migrations/96_storage_table_families.up.sql +++ b/server/migrations/96_storage_table_families.up.sql @@ -1,2 +1,2 @@ ALTER TABLE families -ADD COLUMN storage_limit BIGINT NULL; \ No newline at end of file +ADD COLUMN storage_limit BIGINT; \ No newline at end of file diff --git a/server/pkg/api/family.go b/server/pkg/api/family.go index 37c2991c16..1da77b557b 100644 --- a/server/pkg/api/family.go +++ b/server/pkg/api/family.go @@ -42,7 +42,7 @@ func (h *FamilyHandler) InviteMember(c *gin.Context) { return } - err := h.Controller.InviteMember(c, auth.GetUserID(c.Request.Header), request.Email) + err := h.Controller.InviteMember(c, auth.GetUserID(c.Request.Header), request.Email, request.StorageLimit) if err != nil { handler.Error(c, stacktrace.Propagate(err, "")) return @@ -120,10 +120,11 @@ func (h *FamilyHandler) AcceptInvite(c *gin.Context) { c.JSON(http.StatusOK, response) } +// ModifyStorageLimit allows adminUser to Modify the storage for a member in the Family. func (h *FamilyHandler) ModifyStorageLimit(c *gin.Context) { var request ente.ModifyMemberStorage if err := c.ShouldBindJSON(&request); err != nil { - handler.Error(c, stacktrace.Propagate(err, "could not bind request params")) + handler.Error(c, stacktrace.Propagate(err, "Could not bind request params")) return } diff --git a/server/pkg/controller/family/admin.go b/server/pkg/controller/family/admin.go index f09b069618..e08475d89b 100644 --- a/server/pkg/controller/family/admin.go +++ b/server/pkg/controller/family/admin.go @@ -57,7 +57,7 @@ func (c *Controller) CreateFamily(ctx context.Context, adminUserID int64) error } // InviteMember invites a user to join the family plan of admin User -func (c *Controller) InviteMember(ctx *gin.Context, adminUserID int64, email string) error { +func (c *Controller) InviteMember(ctx *gin.Context, adminUserID int64, email string, storageLimit *int64) error { err := c.BillingCtrl.IsActivePayingSubscriber(adminUserID) if err != nil { return stacktrace.Propagate(ente.ErrNoActiveSubscription, "you must be on a paid plan") @@ -114,7 +114,7 @@ func (c *Controller) InviteMember(ctx *gin.Context, adminUserID int64, email str return stacktrace.Propagate(err, "") } - activeInviteToken, err := c.FamilyRepo.AddMemberInvite(ctx, adminUserID, potentialMemberUser.ID, inviteToken) + activeInviteToken, err := c.FamilyRepo.AddMemberInvite(ctx, adminUserID, potentialMemberUser.ID, inviteToken, storageLimit) if err != nil { return stacktrace.Propagate(err, "") } diff --git a/server/pkg/repo/family.go b/server/pkg/repo/family.go index d3c2848916..b9cdfb4cbc 100644 --- a/server/pkg/repo/family.go +++ b/server/pkg/repo/family.go @@ -90,16 +90,16 @@ func (repo *FamilyRepository) CloseFamily(ctx context.Context, adminID int64) er // AddMemberInvite inserts a family invitation entry for this given pair of admin & member and return the active inviteToken // which can be used to accept the invite -func (repo *FamilyRepository) AddMemberInvite(ctx context.Context, adminID int64, memberID int64, inviteToken string) (string, error) { +func (repo *FamilyRepository) AddMemberInvite(ctx context.Context, adminID int64, memberID int64, inviteToken string, storageLimit *int64) (string, error) { if adminID == memberID { return "", stacktrace.Propagate(errors.New("memberID and adminID can not be same"), "") } // on conflict, we should not change the status from 'ACCEPTED' to `INVITED`. // Also, the token should not be updated if the user is already in `INVITED` state. - _, err := repo.DB.ExecContext(ctx, `INSERT INTO families(id, admin_id, member_id, status, token) - VALUES($1, $2, $3, $4, $5) ON CONFLICT (admin_id,member_id) - DO UPDATE SET(status, token) = ($4, $5) WHERE NOT (families.status = ANY($6))`, - uuid.New(), adminID, memberID, ente.INVITED, inviteToken, pq.Array([]ente.MemberStatus{ente.INVITED, ente.ACCEPTED})) + _, err := repo.DB.ExecContext(ctx, `INSERT INTO families(id, admin_id, member_id, status, token, storage_limit) + VALUES($1, $2, $3, $4, $5, $6) ON CONFLICT (admin_id,member_id) + DO UPDATE SET(status, token) = ($4, $5) WHERE NOT (families.status = ANY($7))`, + uuid.New(), adminID, memberID, ente.INVITED, inviteToken, storageLimit, pq.Array([]ente.MemberStatus{ente.INVITED, ente.ACCEPTED})) if err != nil { return "", stacktrace.Propagate(err, "") } @@ -202,6 +202,7 @@ func (repo *FamilyRepository) ModifyMemberStorage(ctx context.Context, id uuid.U if err != nil { return stacktrace.Propagate(err, "Could not update Members Storage Limit") } + return stacktrace.Propagate(err, "Failed to Modify Members Storage Limit") }