You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
on prefix ||files_folders.folder=objects.nameandobjects.bucket_id=bucketname;
1091
-
END
1092
-
$$;
1192
+
CREATEFUNCTIONstorage.search(prefix text, bucketname text, limits integer DEFAULT 100, levels integer DEFAULT 1, offsets integer DEFAULT 0, search text DEFAULT ''::text, sortcolumn text DEFAULT 'name'::text, sortorder text DEFAULT 'asc'::text) RETURNS TABLE(name text, id uuid, updated_at timestamp with time zone, created_at timestamp with time zone, last_accessed_at timestamp with time zone, metadata jsonb)
1193
+
LANGUAGE plpgsql STABLE
1194
+
AS $_$
1195
+
declare
1196
+
v_order_by text;
1197
+
v_sort_order text;
1198
+
begin
1199
+
case
1200
+
when sortcolumn ='name' then
1201
+
v_order_by ='name';
1202
+
when sortcolumn ='updated_at' then
1203
+
v_order_by ='updated_at';
1204
+
when sortcolumn ='created_at' then
1205
+
v_order_by ='created_at';
1206
+
when sortcolumn ='last_accessed_at' then
1207
+
v_order_by ='last_accessed_at';
1208
+
else
1209
+
v_order_by ='name';
1210
+
end case;
1211
+
1212
+
case
1213
+
when sortorder ='asc' then
1214
+
v_sort_order ='asc';
1215
+
when sortorder ='desc' then
1216
+
v_sort_order ='desc';
1217
+
else
1218
+
v_sort_order ='asc';
1219
+
end case;
1220
+
1221
+
v_order_by = v_order_by ||''|| v_sort_order;
1222
+
1223
+
return query execute
1224
+
'with folders as (
1225
+
select path_tokens[$1] as folder
1226
+
from storage.objects
1227
+
where objects.name ilike $2 || $3 || ''%''
1228
+
and bucket_id = $4
1229
+
and array_length(regexp_split_to_array(objects.name, ''/''), 1) <> $1
1230
+
group by folder
1231
+
order by folder '|| v_sort_order ||'
1232
+
)
1233
+
(select folder as "name",
1234
+
null as id,
1235
+
null as updated_at,
1236
+
null as created_at,
1237
+
null as last_accessed_at,
1238
+
null as metadata from folders)
1239
+
union all
1240
+
(select path_tokens[$1] as "name",
1241
+
id,
1242
+
updated_at,
1243
+
created_at,
1244
+
last_accessed_at,
1245
+
metadata
1246
+
from storage.objects
1247
+
where objects.name ilike $2 || $3 || ''%''
1248
+
and bucket_id = $4
1249
+
and array_length(regexp_split_to_array(objects.name, ''/''), 1) = $1
1250
+
order by '|| v_order_by ||')
1251
+
limit $5
1252
+
offset $6' using levels, prefix, search, bucketname, limits, offsets;
0 commit comments