teldrive/pkg/database/migrations/20230817172319_init.sql
2023-12-03 01:17:23 +05:30

66 lines
1.2 KiB
PL/PgSQL

-- +goose Up
create extension if not exists pgcrypto;
create extension if not exists btree_gin;
create schema if not exists teldrive;
create collation if not exists numeric (provider = icu, locale = 'en@colnumeric=yes');
-- +goose StatementBegin
create or replace
function teldrive.generate_uid(size int) returns text language plpgsql as $$
declare characters text := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
bytes bytea := gen_random_bytes(size);
l int := length(characters);
i int := 0;
output text := '';
begin while i < size loop output := output || substr(characters,
get_byte(bytes,
i) % l + 1,
1);
i := i + 1;
end loop;
return output;
end;
$$;
-- +goose StatementEnd
-- +goose StatementBegin
create or replace
function teldrive.get_tsvector(t text) returns tsvector language plpgsql immutable as $$
declare res tsvector := to_tsvector(regexp_replace(t,
'[^A-Za-z0-9 ]',
' ',
'g'));
begin return res;
end;
$$;
-- +goose StatementEnd
-- +goose StatementBegin
create or replace
function teldrive.get_tsquery(t text) returns tsquery language plpgsql immutable as $$
declare res tsquery = concat(
plainto_tsquery(regexp_replace(t,
'[^A-Za-z0-9 ]',
' ',
'g')),
':*'
)::tsquery;
begin return res;
end;
$$;
-- +goose StatementEnd