Fix unique foreign key in view (#1395)
This commit is contained in:
@@ -1112,3 +1112,12 @@ spec actualPgVersion = do
|
||||
|
||||
it "cannot use ltree(in public schema) extension operators if no extra search path added" $
|
||||
get "/ltree_sample?path=cd.Top.Science.Astronomy" `shouldRespondWith` 400
|
||||
|
||||
context "VIEW that has a source FK based on a UNIQUE key" $
|
||||
it "can be embedded" $
|
||||
get "/referrals?select=site,link:pages(url)" `shouldRespondWith`
|
||||
[json| [
|
||||
{"site":"github.com", "link":{"url":"http://postgrest.org/en/v6.0/api.html"}},
|
||||
{"site":"hub.docker.com", "link":{"url":"http://postgrest.org/en/v6.0/admin.html"}}
|
||||
]|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
@@ -231,6 +231,23 @@ spec = do
|
||||
]
|
||||
|]
|
||||
|
||||
describe "VIEW that has a source FK based on a UNIQUE key" $
|
||||
|
||||
it "includes fk description" $ do
|
||||
r <- simpleBody <$> get "/"
|
||||
|
||||
let referralLink = r ^? key "definitions" . key "referrals" . key "properties" . key "link"
|
||||
|
||||
liftIO $
|
||||
referralLink `shouldBe` Just
|
||||
[aesonQQ|
|
||||
{
|
||||
"format": "integer",
|
||||
"type": "integer",
|
||||
"description": "Note:\nThis is a Foreign Key to `pages.link`.<fk table='pages' column='link'/>"
|
||||
}
|
||||
|]
|
||||
|
||||
describe "PostgreSQL to Swagger Type Mapping" $ do
|
||||
|
||||
it "character varying to string" $ do
|
||||
|
||||
Vendored
+8
@@ -512,3 +512,11 @@ TRUNCATE TABLE app_users CASCADE;
|
||||
INSERT INTO app_users (id, email, "password") VALUES (1, 'test@123.com','pass');
|
||||
INSERT INTO app_users (id, email, "password") VALUES (2, 'abc@123.com','pass');
|
||||
INSERT INTO app_users (id, email, "password") VALUES (3, 'def@123.com','pass');
|
||||
|
||||
TRUNCATE TABLE private.pages CASCADE;
|
||||
INSERT INTO private.pages VALUES (1, 'http://postgrest.org/en/v6.0/api.html');
|
||||
INSERT INTO private.pages VALUES (2, 'http://postgrest.org/en/v6.0/admin.html');
|
||||
|
||||
TRUNCATE TABLE private.referrals CASCADE;
|
||||
INSERT INTO private.referrals VALUES ('github.com', 1);
|
||||
INSERT INTO private.referrals VALUES ('hub.docker.com', 2);
|
||||
|
||||
Vendored
+2
@@ -104,6 +104,8 @@ GRANT ALL ON TABLE
|
||||
, getallprojects_view
|
||||
, get_projects_above_view
|
||||
, web_content
|
||||
, pages
|
||||
, referrals
|
||||
TO postgrest_test_anonymous;
|
||||
|
||||
GRANT INSERT ON TABLE insertonly TO postgrest_test_anonymous;
|
||||
|
||||
Vendored
+14
@@ -1759,3 +1759,17 @@ create table app_users (
|
||||
email text unique not null,
|
||||
password text not null
|
||||
);
|
||||
|
||||
create table private.pages (
|
||||
link int not null unique
|
||||
, url text
|
||||
);
|
||||
|
||||
create table private.referrals (
|
||||
site text
|
||||
, link int references private.pages(link) not null
|
||||
);
|
||||
|
||||
create view test.pages as select * from private.pages;
|
||||
|
||||
create view test.referrals as select * from private.referrals;
|
||||
|
||||
Reference in New Issue
Block a user