Removing single column limit from join table M2M mapping detection. (#1593)
This commit is contained in:
@@ -351,6 +351,21 @@ spec actualPgVersion = do
|
||||
[json|[{"id":1,"tasks":[{"id":1},{"id":2},{"id":3},{"id":4}]},{"id":2,"tasks":[{"id":5},{"id":6},{"id":7}]},{"id":3,"tasks":[{"id":1},{"id":5}]}]|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
it "requesting many<->many relation using composite key" $
|
||||
get "/files?filename=eq.autoexec.bat&project_id=eq.1&select=filename,users_tasks(user_id,task_id)" `shouldRespondWith`
|
||||
[json|[{"filename":"autoexec.bat","users_tasks":[{"user_id":1,"task_id":1},{"user_id":3,"task_id":1}]}]|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
it "requesting data using many<->many relation defined by composite keys" $
|
||||
get "/users_tasks?user_id=eq.1&task_id=eq.1&select=user_id,files(filename,content)" `shouldRespondWith`
|
||||
[json|[{"user_id":1,"files":[{"filename":"command.com","content":"#include <unix.h>"},{"filename":"autoexec.bat","content":"@ECHO OFF"},{"filename":"README.md","content":"# make $$$!"}]}]|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
it "requesting data using many<->many (composite keys) relation using hint" $
|
||||
get "/users_tasks?user_id=eq.1&task_id=eq.1&select=user_id,files!touched_files(filename,content)" `shouldRespondWith`
|
||||
[json|[{"user_id":1,"files":[{"filename":"command.com","content":"#include <unix.h>"},{"filename":"autoexec.bat","content":"@ECHO OFF"},{"filename":"README.md","content":"# make $$$!"}]}]|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
it "requesting children with composite key" $
|
||||
get "/users_tasks?user_id=eq.2&task_id=eq.6&select=*, comments(content)" `shouldRespondWith`
|
||||
[json|[{"user_id":2,"task_id":6,"comments":[{"content":"Needs to be delivered ASAP"}]}]|]
|
||||
|
||||
Vendored
+20
@@ -140,6 +140,26 @@ INSERT INTO users_tasks VALUES (3, 5);
|
||||
TRUNCATE TABLE comments CASCADE;
|
||||
INSERT INTO comments VALUES (1, 1, 2, 6, 'Needs to be delivered ASAP');
|
||||
|
||||
--
|
||||
-- Data for Name: files; Type: TABLE DATA; Schema: test; Owner: -
|
||||
--
|
||||
|
||||
TRUNCATE TABLE files CASCADE;
|
||||
INSERT INTO files VALUES
|
||||
(1, 'command.com', '#include <unix.h>')
|
||||
,(1, 'autoexec.bat', '@ECHO OFF')
|
||||
,(1, 'io.sys', 'TODO')
|
||||
,(2, 'README.md', '# make $$$!')
|
||||
,(2, 'marketing.key', '$-$')
|
||||
;
|
||||
|
||||
TRUNCATE TABLE touched_files CASCADE;
|
||||
INSERT INTO touched_files VALUES
|
||||
(1, 1, 1, 'command.com')
|
||||
,(1, 1, 1, 'autoexec.bat')
|
||||
,(1, 1, 2, 'README.md')
|
||||
,(3, 1, 1, 'autoexec.bat')
|
||||
;
|
||||
|
||||
--
|
||||
-- Data for Name: complex_items; Type: TABLE DATA; Schema: test; Owner: -
|
||||
|
||||
Vendored
+2
@@ -43,6 +43,8 @@ GRANT ALL ON TABLE
|
||||
, users
|
||||
, users_projects
|
||||
, users_tasks
|
||||
, files
|
||||
, touched_files
|
||||
, "Escap3e;"
|
||||
, "ghostBusters"
|
||||
, "withUnique"
|
||||
|
||||
Vendored
+22
@@ -697,6 +697,28 @@ alter table only comments
|
||||
add constraint "user" foreign key (commenter_id) references users(id),
|
||||
add constraint comments_task_id_fkey foreign key (task_id, user_id) references users_tasks(task_id, user_id);
|
||||
|
||||
CREATE TABLE files (
|
||||
project_id integer NOT NULL,
|
||||
filename text NOT NULL,
|
||||
content text NOT NULL,
|
||||
PRIMARY KEY (project_id, filename)
|
||||
);
|
||||
|
||||
CREATE TABLE touched_files (
|
||||
user_id integer NOT NULL,
|
||||
task_id integer NOT NULL,
|
||||
project_id integer NOT NULL,
|
||||
filename text NOT NULL,
|
||||
CONSTRAINT fk_users_tasks
|
||||
FOREIGN KEY (user_id, task_id)
|
||||
REFERENCES users_tasks (user_id, task_id)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_upload
|
||||
FOREIGN KEY (project_id, filename)
|
||||
REFERENCES files (project_id,filename)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
create table private.articles (
|
||||
id integer primary key,
|
||||
body text,
|
||||
|
||||
Reference in New Issue
Block a user