CREATE TABLE meta_aliases (
	id UUID DEFAULT gen_random_uuid(),
	pattern BPCHAR NOT NULL,
	alias BPCHAR NOT NULL,
	
	CONSTRAINT unique_aliases UNIQUE (alias),
	PRIMARY KEY (id)
);

CREATE TABLE meta_links (
	id UUID DEFAULT gen_random_uuid(),
	pattern BPCHAR NOT NULL,
	rel BPCHAR NOT NULL,
	type BPCHAR,
	href BPCHAR,
	
	PRIMARY KEY (id)
);

CREATE TABLE meta_link_properties (
	id UUID DEFAULT gen_random_uuid(),
	link UUID REFERENCES meta_links (id) NOT NULL,
	rel BPCHAR NOT NULL,
	value BPCHAR,
	
	PRIMARY KEY (id)
);

CREATE TABLE meta_properties (
	id UUID DEFAULT gen_random_uuid(),
	pattern BPCHAR NOT NULL,
	value BPCHAR,
	
	PRIMARY KEY (id)
);

CREATE FUNCTION get_meta_aliases(BPCHAR) RETURNS SETOF meta_aliases AS $$
	SELECT * FROM meta_aliases WHERE meta_aliases.pattern ILIKE $1;
$$ LANGUAGE SQL;

CREATE FUNCTION get_meta_links(BPCHAR) RETURNS SETOF meta_links AS $$
	SELECT * FROM meta_links WHERE meta_links.pattern ILIKE $1;
$$ LANGUAGE SQL;

CREATE FUNCTION get_meta_properties(BPCHAR) RETURNS SETOF meta_properties AS $$
	SELECT * FROM meta_properties WHERE meta_properties.pattern ILIKE $1;
$$ LANGUAGE SQL;
