From 4fc226858e507a35fec0d361cffb905099193427 Mon Sep 17 00:00:00 2001 From: Abhishek Shroff Date: Tue, 25 Mar 2025 01:00:59 +0530 Subject: [PATCH] [server][core][fs] ReadDir to use goqu --- server/internal/core/fs/open.go | 35 +++++++++------------------ server/internal/core/fs/sql_common.go | 1 + 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/server/internal/core/fs/open.go b/server/internal/core/fs/open.go index ad4ff637..afd35d5a 100644 --- a/server/internal/core/fs/open.go +++ b/server/internal/core/fs/open.go @@ -4,6 +4,7 @@ import ( "crypto/sha256" "io" + "github.com/doug-martin/goqu/v9" "github.com/jackc/pgx/v5" "github.com/shroff/phylum/server/internal/api/serve" "github.com/shroff/phylum/server/internal/core/db" @@ -38,34 +39,20 @@ func (r Resource) ReadDir(recursive bool) ([]serve.Resource, error) { return nil, ErrResourceNotCollection } + var q *goqu.SelectDataset if !recursive { - _, q := selectDirectChildren(r.id, r.deleted) - query, args, _ := q.ToSQL() - if rows, err := r.f.db.Query(r.f.ctx, query, args...); err != nil { - return nil, err - } else { - return pgx.CollectRows(rows, r.f.scanServeResource) - } - } - maxDepth := 1 - if recursive { - maxDepth = 1000 - } - children, err := r.f.db.ReadDir(r.f.ctx, db.ReadDirParams{ - ResourceID: r.ID(), - MinDepth: 1, - MaxDepth: int32(maxDepth), - }) - if err != nil { - return nil, err + _, q = selectDirectChildren(r.id, r.deleted) + } else { + t, _, qq := selectResourceTree(r.id, true, false) + q = qq.Select(t.All()) } - result := make([]serve.Resource, len(children)) - for i, c := range children { - info := ResourceFromDB(c) - result[i] = info + query, args, _ := q.ToSQL() + if rows, err := r.f.db.Query(r.f.ctx, query, args...); err != nil { + return nil, err + } else { + return pgx.CollectRows(rows, r.f.scanServeResource) } - return result, nil } func (r Resource) Walk(depth int, fn func(serve.ResourceInfo, string) error) error { diff --git a/server/internal/core/fs/sql_common.go b/server/internal/core/fs/sql_common.go index 07c96b1c..c8832841 100644 --- a/server/internal/core/fs/sql_common.go +++ b/server/internal/core/fs/sql_common.go @@ -13,6 +13,7 @@ import ( type tbl interface { Col(interface{}) exp.IdentifierExpression + All() exp.IdentifierExpression } func selectResourceTree(id uuid.UUID, excludeTreeRoot, includeDeleted bool) (tbl, tbl, *goqu.SelectDataset) {