Fix #1221, embedding when having a self join
This commit is contained in:
committed by
Steve Chávez
parent
1037313e77
commit
673aa25082
@@ -589,6 +589,42 @@ spec = do
|
||||
]
|
||||
}]|] { matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
it "embeds other relations(manager) besides the self reference" $ do
|
||||
get "/organizations?select=name,manager(name),referee(name,manager(name),auditor(name,manager(name))),auditor(name,manager(name),referee(name,manager(name)))&id=eq.5" `shouldRespondWith`
|
||||
[json|[{
|
||||
"name":"Cyberdyne",
|
||||
"manager":{"name":"Cyberdyne Manager"},
|
||||
"referee":{
|
||||
"name":"Acme",
|
||||
"manager":{"name":"Acme Manager"},
|
||||
"auditor":{
|
||||
"name":"Auditor Org",
|
||||
"manager":{"name":"Auditor Manager"}}},
|
||||
"auditor":{
|
||||
"name":"Umbrella",
|
||||
"manager":{"name":"Umbrella Manager"},
|
||||
"referee":{
|
||||
"name":"Referee Org",
|
||||
"manager":{"name":"Referee Manager"}}}
|
||||
}]|] { matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
get "/organizations?select=name,manager(name),auditees:organizations.auditor(name,manager(name),refereeds:organizations.referee(name,manager(name)))&id=eq.2" `shouldRespondWith`
|
||||
[json|[{
|
||||
"name":"Auditor Org",
|
||||
"manager":{"name":"Auditor Manager"},
|
||||
"auditees":[
|
||||
{"name":"Acme",
|
||||
"manager":{"name":"Acme Manager"},
|
||||
"refereeds":[
|
||||
{"name":"Cyberdyne",
|
||||
"manager":{"name":"Cyberdyne Manager"}},
|
||||
{"name":"Oscorp",
|
||||
"manager":{"name":"Oscorp Manager"}}]},
|
||||
{"name":"Umbrella",
|
||||
"manager":{"name":"Umbrella Manager"},
|
||||
"refereeds":[]}]
|
||||
}]|] { matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
describe "ordering response" $ do
|
||||
it "by a column asc" $
|
||||
get "/items?id=lte.2&order=id.asc"
|
||||
|
||||
Vendored
+14
-4
@@ -354,11 +354,21 @@ INSERT INTO family_tree VALUES ('3', 'Kid Two', '1');
|
||||
INSERT INTO family_tree VALUES ('4', 'Grandkid One', '2');
|
||||
INSERT INTO family_tree VALUES ('5', 'Grandkid Two', '3');
|
||||
|
||||
TRUNCATE TABLE managers CASCADE;
|
||||
INSERT INTO managers VALUES (1, 'Referee Manager');
|
||||
INSERT INTO managers VALUES (2, 'Auditor Manager');
|
||||
INSERT INTO managers VALUES (3, 'Acme Manager');
|
||||
INSERT INTO managers VALUES (4, 'Umbrella Manager');
|
||||
INSERT INTO managers VALUES (5, 'Cyberdyne Manager');
|
||||
INSERT INTO managers VALUES (6, 'Oscorp Manager');
|
||||
|
||||
TRUNCATE TABLE organizations CASCADE;
|
||||
INSERT INTO organizations VALUES (1, 'Referee Org', null, null);
|
||||
INSERT INTO organizations VALUES (2, 'Auditor Org', null, null);
|
||||
INSERT INTO organizations VALUES (3, 'Acme', 1, 2);
|
||||
INSERT INTO organizations VALUES (4, 'Umbrella', 1, 2);
|
||||
INSERT INTO organizations VALUES (1, 'Referee Org', null, null, 1);
|
||||
INSERT INTO organizations VALUES (2, 'Auditor Org', null, null, 2);
|
||||
INSERT INTO organizations VALUES (3, 'Acme', 1, 2, 3);
|
||||
INSERT INTO organizations VALUES (4, 'Umbrella', 1, 2, 4);
|
||||
INSERT INTO organizations VALUES (5, 'Cyberdyne', 3, 4, 5);
|
||||
INSERT INTO organizations VALUES (6, 'Oscorp', 3, 4, 6);
|
||||
|
||||
SET search_path = private, pg_catalog;
|
||||
|
||||
|
||||
Vendored
+1
@@ -68,6 +68,7 @@ GRANT ALL ON TABLE
|
||||
, tiobe_pls
|
||||
, only_pk
|
||||
, family_tree
|
||||
, managers
|
||||
, organizations
|
||||
, authors
|
||||
, books
|
||||
|
||||
Vendored
+9
-3
@@ -1115,8 +1115,8 @@ CREATE FUNCTION setprojects(id_l int, id_h int, name text) RETURNS SETOF project
|
||||
$_$;
|
||||
|
||||
create table images (
|
||||
name text not null,
|
||||
img bytea not null
|
||||
name text not null,
|
||||
img bytea not null
|
||||
);
|
||||
|
||||
create view images_base64 as (
|
||||
@@ -1386,11 +1386,17 @@ create table test.family_tree (
|
||||
);
|
||||
alter table only test.family_tree add constraint pptr foreign key (parent) references test.family_tree(id);
|
||||
|
||||
create table test.managers (
|
||||
id integer primary key,
|
||||
name text
|
||||
);
|
||||
|
||||
create table test.organizations (
|
||||
id integer primary key,
|
||||
name text,
|
||||
referee integer,
|
||||
auditor integer
|
||||
auditor integer,
|
||||
manager_id integer references managers(id)
|
||||
);
|
||||
alter table only test.organizations add constraint pptr1 foreign key (referee) references test.organizations(id);
|
||||
alter table only test.organizations add constraint pptr2 foreign key (auditor) references test.organizations(id);
|
||||
|
||||
Reference in New Issue
Block a user