Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions migrations/tenant/0002-pathtoken-column.sql
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
alter table storage.objects add column path_tokens text[] generated always as (string_to_array("name", '/')) stored;

CREATE OR REPLACE FUNCTION storage.search(prefix text, bucketname text, limits int DEFAULT 100, levels int DEFAULT 1, offsets int DEFAULT 0)
RETURNS TABLE (
RETURNS TABLE (
name text,
id uuid,
updated_at TIMESTAMPTZ,
created_at TIMESTAMPTZ,
last_accessed_at TIMESTAMPTZ,
metadata jsonb
)
LANGUAGE plpgsql
LANGUAGE plpgsql
AS $function$
BEGIN
return query
with files_folders as (
select path_tokens[levels] as folder
from storage.objects
where objects.name ilike prefix || '%'
and bucket_id = bucketname
GROUP by folder
limit limits
offset offsets
)
select files_folders.folder as name, objects.id, objects.updated_at, objects.created_at, objects.last_accessed_at, objects.metadata from files_folders
left join storage.objects
on prefix || files_folders.folder = objects.name
where objects.id is null or objects.bucket_id=bucketname;
return query
with files_folders as (
select path_tokens[levels] as folder
from storage.objects
where objects.name ilike prefix || '%'
and bucket_id = bucketname
GROUP by folder
limit limits
offset offsets
)
select files_folders.folder as name, objects.id, objects.updated_at, objects.created_at, objects.last_accessed_at, objects.metadata from files_folders
left join storage.objects
on prefix || files_folders.folder = objects.name
where objects.id is null or objects.bucket_id=bucketname;
END
$function$;
14 changes: 7 additions & 7 deletions migrations/tenant/0004-add-size-functions.sql
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
CREATE OR REPLACE FUNCTION storage.get_size_by_bucket()
RETURNS TABLE (
RETURNS TABLE (
size BIGINT,
bucket text
)
LANGUAGE plpgsql
LANGUAGE plpgsql
AS $function$
BEGIN
return query
select sum((metadata->>'size')::int) as size, bucket_id as bucket
from "storage".objects
group by bucket_id;
return query
select sum((metadata->>'size')::int) as size, bucket_id as bucket
from "storage".objects
group by bucket_id;
END
$function$;
$function$;
12 changes: 6 additions & 6 deletions migrations/tenant/0005-change-column-name-in-get-size.sql
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
DROP FUNCTION storage.get_size_by_bucket();
CREATE OR REPLACE FUNCTION storage.get_size_by_bucket()
RETURNS TABLE (
RETURNS TABLE (
size BIGINT,
bucket_id text
)
LANGUAGE plpgsql
LANGUAGE plpgsql
AS $function$
BEGIN
return query
select sum((metadata->>'size')::int) as size, obj.bucket_id
from "storage".objects as obj
group by obj.bucket_id;
return query
select sum((metadata->>'size')::int) as size, obj.bucket_id
from "storage".objects as obj
group by obj.bucket_id;
END
$function$;
30 changes: 15 additions & 15 deletions migrations/tenant/0008-fix-search-function.sql
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
CREATE OR REPLACE FUNCTION storage.search(prefix text, bucketname text, limits int DEFAULT 100, levels int DEFAULT 1, offsets int DEFAULT 0)
RETURNS TABLE (
RETURNS TABLE (
name text,
id uuid,
updated_at TIMESTAMPTZ,
created_at TIMESTAMPTZ,
last_accessed_at TIMESTAMPTZ,
metadata jsonb
)
LANGUAGE plpgsql
LANGUAGE plpgsql
AS $function$
BEGIN
return query
with files_folders as (
select path_tokens[levels] as folder
from storage.objects
where objects.name ilike prefix || '%'
and bucket_id = bucketname
GROUP by folder
limit limits
offset offsets
)
select files_folders.folder as name, objects.id, objects.updated_at, objects.created_at, objects.last_accessed_at, objects.metadata from files_folders
left join storage.objects
on prefix || files_folders.folder = objects.name and objects.bucket_id=bucketname;
return query
with files_folders as (
select path_tokens[levels] as folder
from storage.objects
where objects.name ilike prefix || '%'
and bucket_id = bucketname
GROUP by folder
limit limits
offset offsets
)
select files_folders.folder as name, objects.id, objects.updated_at, objects.created_at, objects.last_accessed_at, objects.metadata from files_folders
left join storage.objects
on prefix || files_folders.folder = objects.name and objects.bucket_id=bucketname;
END
$function$;
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
CREATE OR REPLACE FUNCTION update_updated_at_column()
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
NEW.updated_at = now();
RETURN NEW;
END;
$$ language plpgsql;

CREATE TRIGGER update_objects_updated_at BEFORE UPDATE ON storage.objects FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column();
CREATE TRIGGER update_objects_updated_at BEFORE UPDATE ON storage.objects FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column();