CREATE EXTENSION IF NOT EXISTS "pgcrypto";

create or replace function uuid_generate_v7()
returns uuid
as $$
select encode(
    set_bit(
      set_bit(
        overlay(uuid_send(gen_random_uuid())
                placing substring(int8send(floor(extract(epoch from clock_timestamp()) * 1000)::bigint) from 3)
                from 1 for 6
        ),
        52, 1
      ),
      53, 1
    ),
    'hex')::uuid;
$$
language SQL
volatile;

CREATE FUNCTION isInVersion(
    _version int,
    _addedVersion int,
    _removedVersion int
)
RETURNS boolean as $$
BEGIN
    RETURN _version is null OR (
        _version >= _addedVersion AND 
        (_removedVersion is null OR _version < _removedVersion)
    );
END;
$$ LANGUAGE plpgsql;