diff --git a/apps/backend/internal/virtualfs/node.go b/apps/backend/internal/virtualfs/node.go index b17c417..ccd81d8 100644 --- a/apps/backend/internal/virtualfs/node.go +++ b/apps/backend/internal/virtualfs/node.go @@ -28,18 +28,22 @@ type Node struct { ID uuid.UUID `bun:",pk,type:uuid"` PublicID string `bun:"public_id,notnull"` AccountID uuid.UUID `bun:"account_id,notnull,type:uuid"` - ParentID uuid.UUID `bun:"parent_id"` + ParentID uuid.UUID `bun:"parent_id,nullzero"` Kind NodeKind `bun:"kind,notnull"` Status NodeStatus `bun:"status,notnull"` Name string `bun:"name,notnull"` - BlobKey blob.Key `bun:"blob_key"` + BlobKey blob.Key `bun:"blob_key,nullzero"` Size int64 `bun:"size"` - MimeType string `bun:"mime_type"` + MimeType string `bun:"mime_type,nullzero"` CreatedAt time.Time `bun:"created_at,notnull,nullzero"` UpdatedAt time.Time `bun:"updated_at,notnull,nullzero"` - DeletedAt time.Time `bun:"deleted_at"` + DeletedAt time.Time `bun:"deleted_at,nullzero"` +} + +func newNodeID() (uuid.UUID, error) { + return uuid.NewV7() } // IsAccessible returns true if the node can be accessed. diff --git a/apps/backend/internal/virtualfs/vfs.go b/apps/backend/internal/virtualfs/vfs.go index 6cbc042..a3823b2 100644 --- a/apps/backend/internal/virtualfs/vfs.go +++ b/apps/backend/internal/virtualfs/vfs.go @@ -125,7 +125,13 @@ func (vfs *VirtualFS) CreateFile(ctx context.Context, db bun.IDB, accountID uuid return nil, err } + id, err := newNodeID() + if err != nil { + return nil, err + } + node := Node{ + ID: id, PublicID: pid, AccountID: accountID, ParentID: opts.ParentID, @@ -239,7 +245,13 @@ func (vfs *VirtualFS) CreateDirectory(ctx context.Context, db bun.IDB, accountID return nil, err } + id, err := newNodeID() + if err != nil { + return nil, err + } + node := Node{ + ID: id, PublicID: pid, AccountID: accountID, ParentID: parentID,