mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-17 04:24:35 +03:00
47dcae1614
When using self referential relationships in boolean expressions, the exists clause incorrectly uses the table names to qualify columns which will be the same for parent table and the child table. This is now fixed by generating unique aliases as we traverse down the relationships.
212 lines
3.7 KiB
YAML
212 lines
3.7 KiB
YAML
type: bulk
|
|
args:
|
|
|
|
#Author table
|
|
- type: run_sql
|
|
args:
|
|
sql: |
|
|
create table author(
|
|
id serial primary key,
|
|
name text unique,
|
|
is_registered boolean not null default false
|
|
);
|
|
- type: track_table
|
|
args:
|
|
schema: public
|
|
name: author
|
|
|
|
#Article table
|
|
- type: run_sql
|
|
args:
|
|
sql: |
|
|
CREATE TABLE article (
|
|
id SERIAL PRIMARY KEY,
|
|
title TEXT,
|
|
content TEXT,
|
|
author_id INTEGER REFERENCES author(id),
|
|
is_published BOOLEAN,
|
|
published_on TIMESTAMP
|
|
)
|
|
- type: track_table
|
|
args:
|
|
schema: public
|
|
name: article
|
|
|
|
|
|
#Article table
|
|
- type: run_sql
|
|
args:
|
|
sql: |
|
|
CREATE TABLE city (
|
|
id SERIAL PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
country TEXT NOT NULL
|
|
)
|
|
- type: track_table
|
|
args:
|
|
schema: public
|
|
name: city
|
|
|
|
#Set timezone
|
|
- type: run_sql
|
|
args:
|
|
sql: |
|
|
SET TIME ZONE 'UTC';
|
|
|
|
#Article order
|
|
- type: run_sql
|
|
args:
|
|
sql: |
|
|
CREATE TABLE orders (
|
|
id SERIAL PRIMARY KEY,
|
|
received_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
delivered_at TIMESTAMP WITH TIME ZONE
|
|
)
|
|
- type: track_table
|
|
args:
|
|
schema: public
|
|
name: orders
|
|
|
|
#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
|
|
|
|
|
|
#Message table
|
|
- type: run_sql
|
|
args:
|
|
sql: |
|
|
CREATE TABLE message (
|
|
id int PRIMARY KEY,
|
|
content TEXT NOT NULL,
|
|
parent_id INT NULL
|
|
);
|
|
alter table message
|
|
add constraint parent_fk foreign key (parent_id)
|
|
references message(id)
|
|
|
|
- type: track_table
|
|
args:
|
|
schema: public
|
|
name: message
|
|
|
|
# parent obj rel
|
|
- type: create_object_relationship
|
|
args:
|
|
table: message
|
|
name: parent
|
|
using:
|
|
foreign_key_constraint_on: parent_id
|
|
|
|
# children array rel
|
|
- type: create_array_relationship
|
|
args:
|
|
table: message
|
|
name: children
|
|
using:
|
|
foreign_key_constraint_on:
|
|
table: message
|
|
column: parent_id
|
|
|
|
#Insert messages
|
|
- type: insert
|
|
args:
|
|
table: message
|
|
objects:
|
|
- id: 1
|
|
content: "hello world"
|
|
parent_id: null
|
|
- id: 2
|
|
content: "content 2"
|
|
parent_id: 1
|
|
- id: 3
|
|
content: "content 3"
|
|
parent_id: 1
|
|
- id: 4
|
|
content: "ahoy"
|
|
parent_id: null
|
|
- id: 5
|
|
content: "content 5"
|
|
parent_id: 4
|
|
- id: 6
|
|
content: "hello there"
|
|
parent_id: 4
|
|
|
|
#Insert Authors
|
|
- type: insert
|
|
args:
|
|
table: author
|
|
objects:
|
|
- name: Author 1
|
|
is_registered: true
|
|
- name: Author 2
|
|
is_registered: true
|
|
- name: Author 3
|
|
is_registered: false
|
|
|
|
|
|
- type: run_sql
|
|
args:
|
|
sql: |
|
|
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,
|
|
false
|
|
),
|
|
(
|
|
'Article 4',
|
|
'Sample article content 4',
|
|
3,
|
|
true
|
|
)
|
|
|
|
- type: insert
|
|
args:
|
|
table: city
|
|
objects:
|
|
- name: Durham
|
|
country: USA
|
|
- name: New York
|
|
country: USA
|
|
- name: Framlingham
|
|
country: UK
|
|
- name: New Orleans
|
|
country: USA
|
|
|
|
- type: insert
|
|
args:
|
|
table: orders
|
|
objects:
|
|
- received_at: '2018-09-21T09:39:44Z'
|
|
- received_at: '2018-09-21T09:40:44Z'
|
|
delivered_at: '2018-09-21T09:50:44Z'
|