[server] Fix queries

This commit is contained in:
Abhishek Shroff
2025-05-12 22:44:59 +05:30
parent 13f55225e1
commit bbc8030756
3 changed files with 9 additions and 9 deletions

View File

@@ -9,14 +9,14 @@ import (
func (f filesystem) Search(query string, includeDeleted bool) ([]Resource, error) {
qb := strings.Builder{}
qb.WriteString(fullResourceQuery)
qb.WriteString("WHERE f_prepare_search(name) %> @query::TEXT")
qb.WriteString("WHERE f_prepare_search(r.name) %> @query::TEXT")
if !includeDeleted {
qb.WriteString("\nAND deleted IS NULL")
qb.WriteString("\nAND r.deleted IS NULL")
}
if !f.fullAccess {
qb.WriteString("\nAND permissions[@username::TEXT]::integer <> 0")
qb.WriteString("\nAND r.permissions[@username::TEXT]::INTEGER <> 0")
}
qb.WriteString("\nORDER BY word_similarity(f_prepare_search(name), @query::TEXT) DESC ")
qb.WriteString("\nORDER BY word_similarity(f_prepare_search(r.name), @query::TEXT) DESC")
args := pgx.NamedArgs{
"query": strings.ToLower(query),

View File

@@ -6,11 +6,11 @@ import (
)
func (f filesystem) SharedResources(excluded pgtype.UUID) ([]Resource, error) {
const q = fullResourceQuery + `WHERE grants ? @username::TEXT
const q = fullResourceQuery + `WHERE r.grants ? @username::TEXT
AND r.id != @excluded::UUID
AND deleted IS NULL
AND (grants -> @username::TEXT -> 'p')::INTEGER <> 0
ORDER BY grants -> @username::TEXT -> 't' DESC`
AND r.deleted IS NULL
AND (r.grants -> @username::TEXT -> 'p')::INTEGER <> 0
ORDER BY r.grants -> @username::TEXT -> 't' DESC`
args := pgx.NamedArgs{
"username": f.username,
"excluded": excluded,

View File

@@ -21,7 +21,7 @@ const publinkFieldsQuery = "COALESCE(JSONB_AGG(JSONB_BUILD_OBJECT(" +
const fullResourceQuery = `SELECT r.*,
(SELECT ` + publinkFieldsQuery + ` FROM publinks l WHERE l.root = r.id) AS links,
CASE WHEN COALESCE(p.permissions[@username::TEXT]::INTEGER, 0) <> 0 THEN p.id ELSE NULL END AS visible_parent,
COALESCE(p.permissions, '{}'::JSONB} AS inherited_permissions
COALESCE(p.permissions, '{}'::JSONB) AS inherited_permissions
FROM resources r JOIN resources p ON p.id = r.parent
`