CREATE EXTENSION IF NOT EXISTS pgcrypto; CREATE OR REPLACE FUNCTION public.nanoid(size integer DEFAULT 21) RETURNS text LANGUAGE plpgsql STABLE AS $function$ DECLARE id text := ''; i int := 0; urlAlphabet char(64) := '_-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; bytes bytea := gen_random_bytes(size); byte int; pos int; BEGIN WHILE i < size LOOP byte := get_byte(bytes, i); pos := (byte & 63) + 1; id := id || substr(urlAlphabet, pos, 1); i = i + 1; END LOOP; RETURN id; END $function$