fix: change table to allow null values

This commit is contained in:
mngshm
2025-02-24 17:07:08 +05:30
parent 32a6e8c700
commit 54ca415d73
4 changed files with 12 additions and 10 deletions

View File

@@ -1,2 +1,2 @@
ALTER TABLE families
ADD COLUMN storage_limit BIGINT NULL;
ADD COLUMN storage_limit BIGINT;

View File

@@ -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
}

View File

@@ -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, "")
}

View File

@@ -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")
}