graphql-engine/server/tests-py/queries/graphql_query/functions/permissions/setup.yaml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

139 lines
3.3 KiB
YAML
Raw Normal View History

type: bulk
args:
- type: run_sql
args:
sql: |
create table author(
id serial primary key,
name text unique,
is_registered boolean not null default false,
remarks_internal text
);
INSERT INTO author (name, remarks_internal)
VALUES
('Author 1', 'remark 1'),
('Author 2', 'remark 2'),
('Author 3', 'remark 3');
CREATE TABLE article (
id SERIAL PRIMARY KEY,
title TEXT,
content TEXT,
author_id INTEGER NOT NULL REFERENCES author(id),
is_published BOOLEAN NOT NULL default FALSE,
published_on TIMESTAMP
);
INSERT INTO article (title, content, author_id, is_published)
VALUES
('Article 1', 'Sample article content 1', 1, false),
('Article 2', 'Sample article content 2', 1, true),
('Article 3', 'Sample article content 3', 2, true),
('Article 4', 'Sample article content 4', 3, false);
CREATE FUNCTION get_articles(search text)
RETURNS SETOF article AS $$
SELECT *
FROM article
WHERE
title ilike ('%' || search || '%')
OR content ilike ('%' || search || '%')
$$ LANGUAGE sql STABLE;
- type: track_table
args:
table: author
- type: track_table
args:
table: article
- type: track_function
args:
name: get_articles
schema: public
- type: create_select_permission
args:
table: article
role: user
permission:
columns:
- title
- content
- is_published
filter:
_or:
- id: X-HASURA-USER-ID
- is_published:
_eq: true
# for table permissions over functions
# See https://github.com/hasura/graphql-engine/issues/7617
- type: run_sql
args:
sql: |
create table message (
id serial primary key,
content text not null,
channel_id integer not null,
user_id integer not null,
post_date timestamptz not null
);
create table channel_member (
channel_id integer not null,
user_id integer not null,
join_date timestamptz not null
);
create function get_messages()
returns setof message as $$
select *
from message
$$ language sql stable;
INSERT INTO message (id, content, channel_id, user_id, post_date)
VALUES
(1, 'content 1', 1, 1, '02-02-2001'),
(2, 'content 2', 1, 2, '04-04-2001'),
(3, 'content 3', 1, 2, '05-04-2001');
INSERT INTO channel_member (channel_id, user_id, join_date)
VALUES
(1, 1, '01-01-2001'),
(1, 2, '03-03-2001'),
(1, 3, '05-05-2001');
- type: track_table
args:
table: message
- type: track_table
args:
table: channel_member
- type: track_function
args:
name: get_messages
- type: create_array_relationship
args:
table: message
name: members
using:
manual_configuration:
column_mapping:
channel_id: channel_id
remote_table:
name: channel_member
schema: public
- type: create_select_permission
args:
table: message
role: user
permission:
columns: "*"
filter: {"members":{"_and":[{"user_id":{"_eq":"X-Hasura-User-Id"}},{"join_date":{"_clt":["$","post_date"]}}]}}