From 735b7e7f720b468cd27feeb98b10dc4d573e6df0 Mon Sep 17 00:00:00 2001 From: Abhishek Shroff Date: Sat, 16 Mar 2024 23:56:18 +0530 Subject: [PATCH] Update mod time when new member resources is added --- internal/handler_go-webdav/adapter.go | 4 ++-- internal/library/library.go | 11 ++++++++++- internal/sql/resources.sql.go | 14 +++++++++++++- sql/queries/resources.sql | 8 +++++++- 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/internal/handler_go-webdav/adapter.go b/internal/handler_go-webdav/adapter.go index bd57f0bd..16a55a18 100644 --- a/internal/handler_go-webdav/adapter.go +++ b/internal/handler_go-webdav/adapter.go @@ -24,7 +24,7 @@ func (a adapter) Open(ctx context.Context, name string) (io.ReadCloser, error) { if err != nil { return nil, err } - return a.lib.Open(ctx, resource.ID, false) + return a.lib.OpenRead(ctx, resource.ID, 0, -1) } func (a adapter) Stat(ctx context.Context, name string) (*webdav.FileInfo, error) { @@ -88,7 +88,7 @@ func (a adapter) Create(ctx context.Context, name string) (io.WriteCloser, error } } - return a.lib.Open(ctx, id, true) + return a.lib.OpenWrite(ctx, id) } func (a adapter) RemoveAll(ctx context.Context, name string) error { diff --git a/internal/library/library.go b/internal/library/library.go index 9b8d3699..4412feac 100644 --- a/internal/library/library.go +++ b/internal/library/library.go @@ -53,7 +53,16 @@ func (l Library) DeleteRecursive(ctx context.Context, id uuid.UUID, hardDelete b } func (l Library) CreateResource(ctx context.Context, id uuid.UUID, parent uuid.UUID, name string, dir bool) error { - return l.db.Queries().CreateResource(ctx, sql.CreateResourceParams{ID: id, Parent: &parent, Name: name, Dir: dir}) + return l.db.RunInTx(ctx, func(q *sql.Queries) error { + + if err := q.CreateResource(ctx, sql.CreateResourceParams{ID: id, Parent: &parent, Name: name, Dir: dir}); err != nil { + return err + } + if err := q.UpdateResourceModified(ctx, parent); err != nil { + return err + } + return nil + }) } func (l Library) Move(ctx context.Context, id uuid.UUID, parent uuid.UUID, name string) error { diff --git a/internal/sql/resources.sql.go b/internal/sql/resources.sql.go index 6b7c3611..154b160d 100644 --- a/internal/sql/resources.sql.go +++ b/internal/sql/resources.sql.go @@ -47,7 +47,7 @@ WITH RECURSIVE nodes(id, parent) AS ( WHERE deleted IS NULL ) UPDATE resources -SET deleted = NOW() +SET modified = NOW(), deleted = NOW() WHERE id in (SELECT id FROM nodes) RETURNING id, parent, name, dir, created, modified, deleted, size, etag ` @@ -301,3 +301,15 @@ func (q *Queries) UpdateResourceContents(ctx context.Context, arg UpdateResource _, err := q.db.Exec(ctx, updateResourceContents, arg.Size, arg.Etag, arg.ID) return err } + +const updateResourceModified = `-- name: UpdateResourceModified :exec +UPDATE resources +SET + modified = NOW() +WHERE id = $1 +` + +func (q *Queries) UpdateResourceModified(ctx context.Context, id uuid.UUID) error { + _, err := q.db.Exec(ctx, updateResourceModified, id) + return err +} diff --git a/sql/queries/resources.sql b/sql/queries/resources.sql index fb4ae45b..34639f84 100644 --- a/sql/queries/resources.sql +++ b/sql/queries/resources.sql @@ -16,6 +16,12 @@ SET modified = NOW() WHERE id = $3; +-- name: UpdateResourceModified :exec +UPDATE resources +SET + modified = NOW() +WHERE id = $1; + -- name: Rename :exec UPDATE resources SET @@ -60,7 +66,7 @@ WITH RECURSIVE nodes(id, parent) AS ( WHERE deleted IS NULL ) UPDATE resources -SET deleted = NOW() +SET modified = NOW(), deleted = NOW() WHERE id in (SELECT id FROM nodes) RETURNING *;