From 475de58bc2b7cc57f5175c0cc3459ff90b8c94c4 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 21 Mar 2017 09:24:54 +0100 Subject: [PATCH] Simplify projects and pages related queries on backend. --- backend/resources/sql/pages.sql | 9 ++++----- backend/resources/sql/projects.sql | 19 ++----------------- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/backend/resources/sql/pages.sql b/backend/resources/sql/pages.sql index 78b4e6097..a342cadcb 100644 --- a/backend/resources/sql/pages.sql +++ b/backend/resources/sql/pages.sql @@ -32,7 +32,8 @@ update pages and deleted_at is null; -- :name get-pages :? :* -select pg.* from pages as pg +select pg.* + from pages as pg where pg.user = :user and pg.deleted_at is null order by created_at asc; @@ -43,8 +44,7 @@ select pg.* from pages as pg and pg.deleted_at is null; -- :name get-pages-for-user-and-project :? :* -select pg.*, - (row_number() OVER (order by created_at asc) -1) as index +select pg.* from pages as pg where pg.user = :user and pg.project = :project @@ -52,8 +52,7 @@ select pg.*, order by pg.created_at asc; -- :name get-pages-for-project :? :* -select pg.*, - (row_number() OVER (order by created_at asc) -1) as index +select pg.* from pages as pg where pg.project = :project and pg.deleted_at is null diff --git a/backend/resources/sql/projects.sql b/backend/resources/sql/projects.sql index 6424e3049..ab7562e45 100644 --- a/backend/resources/sql/projects.sql +++ b/backend/resources/sql/projects.sql @@ -26,28 +26,13 @@ select p.* and p.deleted_at is null; -- :name get-projects :? :* -select distinct - pr.*, - ps.token as share_token, - count(pg.id) over win as total_pages, - first_value(pg.id) over win as page_id, - first_value(pg.data) over win as page_data, - first_value(pg.name) over win as page_name, - first_value(pg.version) over win as page_version, - first_value(pg.created_at) over win as page_created_at, - first_value(pg.metadata) over win as page_metadata, - first_value(pg.modified_at) over win as page_modified_at +select pr.*, + ps.token as share_token from projects as pr inner join project_shares as ps on (ps.project = pr.id) - left join pages as pg - on (pg.project = pr.id and pg.deleted_at is null) where pr.deleted_at is null and pr."user" = :user -window win as (partition by pr.id - order by pg.created_at - range between unbounded preceding - and unbounded following) order by pr.created_at asc; -- :name get-project-by-share-token :? :*