mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-22 23:11:41 +03:00
73e5c6ce47
https://github.com/hasura/graphql-engine-mono/pull/1591 GitOrigin-RevId: 42332798160a3a3b18404345390b235db1dd81a1
134 lines
3.0 KiB
YAML
134 lines
3.0 KiB
YAML
type: bulk
|
|
args:
|
|
|
|
#Author table
|
|
|
|
- type: run_sql
|
|
args:
|
|
sql: |
|
|
create table author(
|
|
id serial primary key,
|
|
name text unique
|
|
);
|
|
INSERT INTO author (name)
|
|
VALUES ('Author 1'), ('Author 2');
|
|
CREATE TABLE article (
|
|
id SERIAL PRIMARY KEY,
|
|
title TEXT,
|
|
content TEXT,
|
|
author_id INTEGER REFERENCES author(id),
|
|
is_published BOOLEAN,
|
|
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
|
|
);
|
|
create function search_articles(search text)
|
|
returns setof article as $$
|
|
select *
|
|
from article
|
|
where
|
|
title ilike ('%' || search || '%') or
|
|
content ilike ('%' || search || '%')
|
|
$$ language sql stable;
|
|
CREATE FUNCTION fetch_articles(search text, author_row author)
|
|
RETURNS SETOF article AS $$
|
|
SELECT *
|
|
FROM article
|
|
WHERE
|
|
( title ilike ('%' || search || '%')
|
|
OR content ilike ('%' || search || '%')
|
|
) AND author_id = author_row.id
|
|
$$ LANGUAGE sql STABLE;
|
|
CREATE FUNCTION test_session(author_row author, key text, session json)
|
|
RETURNS TEXT AS $$
|
|
SELECT $3->>$2
|
|
$$ LANGUAGE sql STABLE;
|
|
CREATE TABLE text_result(
|
|
result text
|
|
);
|
|
|
|
CREATE FUNCTION get_session_var(hasura_session json, session_var text)
|
|
RETURNS SETOF text_result AS $$
|
|
SELECT q.* FROM (VALUES (hasura_session ->> session_var)) q
|
|
$$ LANGUAGE sql STABLE;
|
|
|
|
CREATE TABLE table_to_customize (
|
|
column_to_customize SERIAL PRIMARY KEY
|
|
);
|
|
|
|
- type: track_table
|
|
args:
|
|
schema: public
|
|
name: author
|
|
|
|
#Article table
|
|
- type: track_table
|
|
args:
|
|
schema: public
|
|
name: article
|
|
|
|
- type: track_table
|
|
args:
|
|
schema: public
|
|
name: table_to_customize
|
|
|
|
#Object relationship
|
|
- type: create_object_relationship
|
|
args:
|
|
table: article
|
|
name: author
|
|
using:
|
|
foreign_key_constraint_on: author_id
|
|
|
|
#Array relationship
|
|
- type: create_array_relationship
|
|
args:
|
|
table: author
|
|
name: articles
|
|
using:
|
|
foreign_key_constraint_on:
|
|
table: article
|
|
column: author_id
|
|
comment: List all articles of the author
|
|
|
|
- type: track_function
|
|
args:
|
|
name: search_articles
|
|
schema: public
|
|
|
|
#Create get_articles computed field
|
|
- type: add_computed_field
|
|
args:
|
|
table: author
|
|
name: get_articles
|
|
definition:
|
|
function: fetch_articles
|
|
table_argument: author_row
|
|
|
|
#Computed field with session argument
|
|
- type: add_computed_field
|
|
args:
|
|
table: author
|
|
name: test_session
|
|
definition:
|
|
function: test_session
|
|
session_argument: session
|