mirror of
https://github.com/sysadminsmedia/homebox.git
synced 2025-12-21 13:23:14 +01:00
Merge commit from fork
This commit is contained in:
@@ -175,7 +175,7 @@ func (ctrl *V1Controller) handleItemAttachmentsHandler(w http.ResponseWriter, r
|
|||||||
ctx := services.NewContext(r.Context())
|
ctx := services.NewContext(r.Context())
|
||||||
switch r.Method {
|
switch r.Method {
|
||||||
case http.MethodGet:
|
case http.MethodGet:
|
||||||
doc, err := ctrl.svc.Items.AttachmentPath(r.Context(), attachmentID)
|
doc, err := ctrl.svc.Items.AttachmentPath(r.Context(), ctx.GID, attachmentID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Err(err).Msg("failed to get attachment path")
|
log.Err(err).Msg("failed to get attachment path")
|
||||||
return validate.NewRequestError(err, http.StatusInternalServerError)
|
return validate.NewRequestError(err, http.StatusInternalServerError)
|
||||||
@@ -230,9 +230,9 @@ func (ctrl *V1Controller) handleItemAttachmentsHandler(w http.ResponseWriter, r
|
|||||||
}
|
}
|
||||||
|
|
||||||
attachment.ID = attachmentID
|
attachment.ID = attachmentID
|
||||||
val, err := ctrl.svc.Items.AttachmentUpdate(ctx, ID, &attachment)
|
val, err := ctrl.svc.Items.AttachmentUpdate(ctx, ctx.GID, ID, &attachment)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Err(err).Msg("failed to delete attachment")
|
log.Err(err).Msg("failed to update attachment")
|
||||||
return validate.NewRequestError(err, http.StatusInternalServerError)
|
return validate.NewRequestError(err, http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (svc *ItemService) AttachmentPath(ctx context.Context, attachmentID uuid.UUID) (*ent.Attachment, error) {
|
func (svc *ItemService) AttachmentPath(ctx context.Context, gid uuid.UUID, attachmentID uuid.UUID) (*ent.Attachment, error) {
|
||||||
attachment, err := svc.repo.Attachments.Get(ctx, attachmentID)
|
attachment, err := svc.repo.Attachments.Get(ctx, gid, attachmentID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -19,16 +19,16 @@ func (svc *ItemService) AttachmentPath(ctx context.Context, attachmentID uuid.UU
|
|||||||
return attachment, nil
|
return attachment, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (svc *ItemService) AttachmentUpdate(ctx Context, itemID uuid.UUID, data *repo.ItemAttachmentUpdate) (repo.ItemOut, error) {
|
func (svc *ItemService) AttachmentUpdate(ctx Context, gid uuid.UUID, itemID uuid.UUID, data *repo.ItemAttachmentUpdate) (repo.ItemOut, error) {
|
||||||
// Update Attachment
|
// Update Attachment
|
||||||
attachment, err := svc.repo.Attachments.Update(ctx, data.ID, data)
|
attachment, err := svc.repo.Attachments.Update(ctx, gid, data.ID, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return repo.ItemOut{}, err
|
return repo.ItemOut{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update Document
|
// Update Document
|
||||||
attDoc := attachment
|
attDoc := attachment
|
||||||
_, err = svc.repo.Attachments.Rename(ctx, attDoc.ID, data.Title)
|
_, err = svc.repo.Attachments.Rename(ctx, gid, attDoc.ID, data.Title)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return repo.ItemOut{}, err
|
return repo.ItemOut{}, err
|
||||||
}
|
}
|
||||||
@@ -57,7 +57,7 @@ func (svc *ItemService) AttachmentAdd(ctx Context, itemID uuid.UUID, filename st
|
|||||||
|
|
||||||
func (svc *ItemService) AttachmentDelete(ctx context.Context, gid uuid.UUID, id uuid.UUID, attachmentID uuid.UUID) error {
|
func (svc *ItemService) AttachmentDelete(ctx context.Context, gid uuid.UUID, id uuid.UUID, attachmentID uuid.UUID) error {
|
||||||
// Delete the attachment
|
// Delete the attachment
|
||||||
err := svc.repo.Attachments.Delete(ctx, attachmentID)
|
err := svc.repo.Attachments.Delete(ctx, gid, id, attachmentID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -256,16 +256,30 @@ func (r *AttachmentRepo) Create(ctx context.Context, itemID uuid.UUID, doc ItemC
|
|||||||
return attachmentDb, nil
|
return attachmentDb, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *AttachmentRepo) Get(ctx context.Context, id uuid.UUID) (*ent.Attachment, error) {
|
func (r *AttachmentRepo) Get(ctx context.Context, gid uuid.UUID, id uuid.UUID) (*ent.Attachment, error) {
|
||||||
return r.db.Attachment.
|
return r.db.Attachment.
|
||||||
Query().
|
Query().
|
||||||
Where(attachment.ID(id)).
|
Where(
|
||||||
|
attachment.ID(id),
|
||||||
|
attachment.HasItemWith(item.HasGroupWith(group.ID(gid))),
|
||||||
|
).
|
||||||
WithItem().
|
WithItem().
|
||||||
WithThumbnail().
|
WithThumbnail().
|
||||||
Only(ctx)
|
Only(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *AttachmentRepo) Update(ctx context.Context, id uuid.UUID, data *ItemAttachmentUpdate) (*ent.Attachment, error) {
|
func (r *AttachmentRepo) Update(ctx context.Context, gid uuid.UUID, id uuid.UUID, data *ItemAttachmentUpdate) (*ent.Attachment, error) {
|
||||||
|
// Validate that the attachment belongs to the specified group
|
||||||
|
_, err := r.db.Attachment.Query().
|
||||||
|
Where(
|
||||||
|
attachment.ID(id),
|
||||||
|
attachment.HasItemWith(item.HasGroupWith(group.ID(gid))),
|
||||||
|
).
|
||||||
|
Only(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: execute within Tx
|
// TODO: execute within Tx
|
||||||
typ := attachment.Type(data.Type)
|
typ := attachment.Type(data.Type)
|
||||||
|
|
||||||
@@ -301,13 +315,19 @@ func (r *AttachmentRepo) Update(ctx context.Context, id uuid.UUID, data *ItemAtt
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return r.Get(ctx, updatedAttachment.ID)
|
return r.Get(ctx, gid, updatedAttachment.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *AttachmentRepo) Delete(ctx context.Context, id uuid.UUID) error {
|
func (r *AttachmentRepo) Delete(ctx context.Context, gid uuid.UUID, itemId uuid.UUID, id uuid.UUID) error {
|
||||||
doc, error := r.db.Attachment.Get(ctx, id)
|
// Validate that the attachment belongs to the specified group
|
||||||
if error != nil {
|
doc, err := r.db.Attachment.Query().
|
||||||
return error
|
Where(
|
||||||
|
attachment.ID(id),
|
||||||
|
attachment.HasItemWith(item.HasGroupWith(group.ID(gid))),
|
||||||
|
).
|
||||||
|
Only(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
all, err := r.db.Attachment.Query().Where(attachment.Path(doc.Path)).All(ctx)
|
all, err := r.db.Attachment.Query().Where(attachment.Path(doc.Path)).All(ctx)
|
||||||
@@ -358,7 +378,18 @@ func (r *AttachmentRepo) Delete(ctx context.Context, id uuid.UUID) error {
|
|||||||
return r.db.Attachment.DeleteOneID(id).Exec(ctx)
|
return r.db.Attachment.DeleteOneID(id).Exec(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *AttachmentRepo) Rename(ctx context.Context, id uuid.UUID, title string) (*ent.Attachment, error) {
|
func (r *AttachmentRepo) Rename(ctx context.Context, gid uuid.UUID, id uuid.UUID, title string) (*ent.Attachment, error) {
|
||||||
|
// Validate that the attachment belongs to the specified group
|
||||||
|
_, err := r.db.Attachment.Query().
|
||||||
|
Where(
|
||||||
|
attachment.ID(id),
|
||||||
|
attachment.HasItemWith(item.HasGroupWith(group.ID(gid))),
|
||||||
|
).
|
||||||
|
Only(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return r.db.Attachment.UpdateOneID(id).SetTitle(title).Save(ctx)
|
return r.db.Attachment.UpdateOneID(id).SetTitle(title).Save(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user