From 3b3afffda596e648cd9256bfa9d0111b2a67c309 Mon Sep 17 00:00:00 2001 From: Abhishek Shroff Date: Tue, 15 Oct 2024 21:44:08 +0530 Subject: [PATCH] [server] add creation data and fix deletion date --- server/internal/core/app.go | 8 +++- server/internal/core/filesystem.go | 60 ++++++++++++++++++------------ server/internal/core/resource.go | 1 + 3 files changed, 45 insertions(+), 24 deletions(-) diff --git a/server/internal/core/app.go b/server/internal/core/app.go index 4d2f3459..638d92a0 100644 --- a/server/internal/core/app.go +++ b/server/internal/core/app.go @@ -3,6 +3,7 @@ package core import ( "context" "errors" + "time" "github.com/google/uuid" "github.com/shroff/phylum/server/internal/db" @@ -118,13 +119,18 @@ func (a App) GetSharedResources(ctx context.Context, user User) (result []Resour result = make([]Resource, len(res)) for i, r := range res { + var deleted *time.Time + if r.Deleted.Valid { + deleted = &r.Deleted.Time + } result[i] = Resource{ ID: r.ID, ParentID: r.Parent, Name: r.Name, Dir: r.Dir, + Created: r.Created.Time, Modified: r.Modified.Time, - Deleted: &r.Deleted.Time, + Deleted: deleted, ContentSize: r.ContentSize, ContentType: r.ContentType, ContentSHA256: r.ContentSha256, diff --git a/server/internal/core/filesystem.go b/server/internal/core/filesystem.go index fdcd814d..2f2d1cc1 100644 --- a/server/internal/core/filesystem.go +++ b/server/internal/core/filesystem.go @@ -94,9 +94,9 @@ func (f filesystem) ResourceByPath(path string) (Resource, error) { } func (f filesystem) ResourceByID(id uuid.UUID) (Resource, error) { - res, err := f.db.ResourceByID(f.ctx, db.ResourceByIDParams{Root: f.rootID, ResourceID: id, Username: f.username}) + r, err := f.db.ResourceByID(f.ctx, db.ResourceByIDParams{Root: f.rootID, ResourceID: id, Username: f.username}) // TODO: verify found - if err == pgx.ErrNoRows || !res.Found || res.UserPermission == 0 { + if err == pgx.ErrNoRows || !r.Found || r.UserPermission == 0 { err = ErrResourceNotFound } if err != nil { @@ -104,23 +104,24 @@ func (f filesystem) ResourceByID(id uuid.UUID) (Resource, error) { } var delTime *time.Time - if res.Deleted.Valid { - delTime = &res.Deleted.Time + if r.Deleted.Valid { + delTime = &r.Deleted.Time } return Resource{ - ID: res.ID, - ParentID: res.Parent, - Name: res.Name, - Dir: res.Dir, - Modified: res.Modified.Time, + ID: r.ID, + ParentID: r.Parent, + Name: r.Name, + Dir: r.Dir, + Created: r.Created.Time, + Modified: r.Modified.Time, Deleted: delTime, - ContentSize: res.ContentSize, - ContentType: res.ContentType, - ContentSHA256: res.ContentSha256, - Permissions: string(res.Permissions), + ContentSize: r.ContentSize, + ContentType: r.ContentType, + ContentSHA256: r.ContentSha256, + Permissions: string(r.Permissions), // Definitely Needed - UserPermissions: res.UserPermission, - InheritedPermissions: string(res.InheritedPermissions), + UserPermissions: r.UserPermission, + InheritedPermissions: string(r.InheritedPermissions), }, nil } func (f filesystem) OpenRead(r Resource, start, length int64) (io.ReadCloser, error) { @@ -166,8 +167,9 @@ func (f filesystem) ReadDir(r Resource) ([]Resource, error) { ID: c.ID, ParentID: c.Parent, Name: c.Name, + Created: c.Created.Time, Modified: c.Modified.Time, - Deleted: nil, + Deleted: nil, // Query will not return deleted results Dir: c.Dir, ContentSize: c.ContentSize, ContentType: c.ContentType, @@ -210,14 +212,16 @@ func (f filesystem) CreateMemberResource(r Resource, id uuid.UUID, name string, return Resource{}, err } return Resource{ - ID: id, + ID: result.ID, ParentID: result.Parent, Name: result.Name, - Dir: dir, - ContentSize: 0, + Dir: result.Dir, + Created: result.Created.Time, Modified: result.Modified.Time, - Deleted: nil, - ContentSHA256: "", + Deleted: nil, // Cannot be deleted when created + ContentType: result.ContentType, + ContentSize: result.ContentSize, + ContentSHA256: result.ContentSha256, Permissions: string(result.Permissions), UserPermissions: r.UserPermissions, // Not Needed @@ -266,12 +270,17 @@ func (f filesystem) UpdateName(r Resource, name string) (Resource, error) { if r, err := f.db.UpdateResourceName(f.ctx, db.UpdateResourceNameParams{ID: r.ID, Name: name}); err != nil { return Resource{}, err } else { + var deleted *time.Time + if r.Deleted.Valid { + deleted = &r.Deleted.Time + } return Resource{ ID: r.ID, ParentID: r.Parent, Name: r.Name, + Created: r.Created.Time, Modified: r.Modified.Time, - Deleted: &r.Deleted.Time, + Deleted: deleted, Dir: r.Dir, ContentSize: r.ContentSize, ContentType: r.ContentType, @@ -327,12 +336,17 @@ func (f filesystem) Move(r Resource, name string, parent *uuid.UUID) (Resource, } return Resource{}, err } else { + var deleted *time.Time + if r.Deleted.Valid { + deleted = &r.Deleted.Time + } return Resource{ ID: r.ID, ParentID: r.Parent, Name: r.Name, + Created: r.Created.Time, Modified: r.Modified.Time, - Deleted: &r.Deleted.Time, + Deleted: deleted, Dir: r.Dir, ContentSize: r.ContentSize, ContentType: r.ContentType, diff --git a/server/internal/core/resource.go b/server/internal/core/resource.go index 1b42ea86..213e28fd 100644 --- a/server/internal/core/resource.go +++ b/server/internal/core/resource.go @@ -11,6 +11,7 @@ type Resource struct { ParentID *uuid.UUID `json:"parent"` Name string `json:"name"` Dir bool `json:"dir"` + Created time.Time `json:"created"` Modified time.Time `json:"modified"` Deleted *time.Time `json:"deleted"` ContentSize int64 `json:"csize"`