Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@pgpm/verify

Package Overview
Dependencies
Maintainers
2
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pgpm/verify - npm Package Compare versions

Comparing version
0.21.2
to
0.22.0
+424
sql/pgpm-verify--0.15.5.sql
\echo Use "CREATE EXTENSION pgpm-verify" to load this file. \quit
CREATE FUNCTION get_entity_from_str(
qualified_name text
) RETURNS text AS $EOFCODE$
DECLARE
parts text[];
BEGIN
SELECT
parse_ident(qualified_name) INTO parts;
IF cardinality(parts) > 1 THEN
RETURN parts[2];
ELSE
RETURN parts[1];
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql STRICT;
CREATE FUNCTION get_schema_from_str(
qualified_name text
) RETURNS text AS $EOFCODE$
DECLARE
parts text[];
BEGIN
SELECT
parse_ident(qualified_name) INTO parts;
IF cardinality(parts) > 1 THEN
RETURN parts[1];
ELSE
RETURN 'public';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql STRICT;
CREATE FUNCTION list_indexes(
_table text,
_index text
) RETURNS TABLE (
schema_name text,
table_name text,
index_name text
) AS $EOFCODE$
SELECT
n.nspname::text AS schema_name,
t.relname::text AS table_name,
i.relname::text AS index_name
FROM
pg_class t,
pg_class i,
pg_index ix,
pg_catalog.pg_namespace n
WHERE
t.oid = ix.indrelid
AND i.oid = ix.indexrelid
AND n.oid = i.relnamespace
AND n.nspname = get_schema_from_str(_table)
AND i.relname = _index
AND t.relname = get_entity_from_str(_table);
$EOFCODE$ LANGUAGE sql IMMUTABLE;
CREATE FUNCTION list_memberships(
_user text
) RETURNS TABLE (
rolname text
) AS $EOFCODE$ WITH RECURSIVE cte AS (
SELECT
oid
FROM
pg_roles
WHERE
rolname = _user
UNION ALL
SELECT
m.roleid
FROM
cte
JOIN pg_auth_members m ON m.member = cte.oid
)
SELECT
pg_roles.rolname::text AS rolname
FROM
cte c,
pg_roles
WHERE
pg_roles.oid = c.oid;
$EOFCODE$ LANGUAGE sql IMMUTABLE;
CREATE FUNCTION verify_constraint(
_table text,
_name text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
c.conname,
pg_get_constraintdef(c.oid)
FROM
pg_constraint c
WHERE
conname = _name
AND c.conrelid = _table::regclass) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent constraint --> %', _name
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_domain(
_type text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
pg_type.typname,
n.nspname
FROM
pg_type,
pg_catalog.pg_namespace n
WHERE
typtype = 'd'
AND typname = get_entity_from_str (_type)
AND nspname = get_schema_from_str (_type)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent type --> %', _type
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_extension(
_extname text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
pg_available_extensions
WHERE
name = _extname) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent extension --> %', _extname
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_function(
_name text,
_user text DEFAULT NULL
) RETURNS boolean AS $EOFCODE$
DECLARE
check_user text;
func_oid oid;
BEGIN
IF (_user IS NOT NULL) THEN
check_user = _user;
ELSE
check_user = CURRENT_USER;
END IF;
IF position('(' IN _name) > 0 THEN
func_oid = to_regprocedure(_name);
IF func_oid IS NULL THEN
RAISE EXCEPTION 'Nonexistent function --> %', _name
USING HINT = 'Please check';
END IF;
IF has_function_privilege(check_user, func_oid, 'execute') THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent function --> %', _name
USING HINT = 'Please check';
END IF;
END IF;
IF EXISTS (
SELECT
has_function_privilege(check_user, p.oid, 'execute')
FROM
pg_catalog.pg_proc p
JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE
n.nspname = get_schema_from_str (_name)
AND p.proname = get_entity_from_str (_name)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent function --> %', _name
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_index(
_table text,
_index text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
list_indexes (_table, _index)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent index --> %', _index
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_membership(
_user text,
_role text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
list_memberships (_user)
WHERE
rolname = _role) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent member --> %', _user
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_policy(
_policy text,
_table text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
pg_class p
JOIN pg_catalog.pg_namespace n ON n.oid = p.relnamespace
JOIN pg_policy pol ON pol.polrelid = p.relfilenode
WHERE
pol.polname = _policy
AND relrowsecurity = 'true'
AND relname = get_entity_from_str (_table)
AND nspname = get_schema_from_str (_table)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent policy or missing relrowsecurity --> %', _policy
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_role(
_user text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
pg_roles
WHERE
rolname = _user) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent user --> %', _user
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_schema(
_schema text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
*
FROM
pg_catalog.pg_namespace
WHERE
nspname = _schema) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent schema --> %', _schema
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_security(
_table text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
n.oid,
relname,
n.nspname
FROM
pg_class p
JOIN pg_catalog.pg_namespace n ON n.oid = p.relnamespace
WHERE
relrowsecurity = 'true'
AND relname = get_entity_from_str (_table)
AND nspname = get_schema_from_str (_table)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent security --> %', _name
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_table_grant(
_table text,
_privilege text,
_role text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
grantee,
privilege_type
FROM
information_schema.role_table_grants
WHERE
table_schema = get_schema_from_str (_table)
AND table_name = get_entity_from_str (_table)
AND privilege_type = _privilege
AND grantee = _role) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent table grant --> %', _privilege
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_table(
_table text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
*
FROM
information_schema.tables
WHERE
table_schema = get_schema_from_str (_table)
AND table_name = get_entity_from_str (_table)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent table --> %', _table
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_trigger(
_trigger text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
pg_trigger.tgname,
n.nspname
FROM
pg_trigger,
pg_catalog.pg_namespace n
WHERE
tgname = get_entity_from_str (_trigger)
AND nspname = get_schema_from_str (_trigger)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent trigger --> %', _trigger
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_type(
_type text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
pg_type.typname,
n.nspname
FROM
pg_type,
pg_catalog.pg_namespace n
WHERE
typname = get_entity_from_str (_type)
AND nspname = get_schema_from_str (_type)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent type --> %', _type
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_view(
_view text
) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
*
FROM
information_schema.views
WHERE
table_schema = get_schema_from_str (_view)
AND table_name = get_entity_from_str (_view)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent view --> %', _view
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
+1
-1
EXTENSION = pgpm-verify
DATA = sql/pgpm-verify--0.15.3.sql
DATA = sql/pgpm-verify--0.15.5.sql

@@ -4,0 +4,0 @@ PG_CONFIG = pg_config

{
"name": "@pgpm/verify",
"version": "0.21.2",
"version": "0.22.0",
"description": "Verification utilities for PGPM deploy/verify/revert workflow",

@@ -24,3 +24,3 @@ "author": "Dan Lynch <pyramation@gmail.com>",

"devDependencies": {
"pgpm": "^4.16.6"
"pgpm": "^4.23.2"
},

@@ -35,3 +35,3 @@ "repository": {

},
"gitHead": "c7d836c99c7ce519e9bb79e6343bee3741781766"
"gitHead": "96ae0195a8b3a3dd056808c344f0e3c31a199e5e"
}