mirror of
https://github.com/penpot/penpot.git
synced 2025-02-15 03:28:25 -05:00
Simplify projects and pages related queries on backend.
This commit is contained in:
parent
6ee9d668cd
commit
475de58bc2
2 changed files with 6 additions and 22 deletions
|
@ -32,7 +32,8 @@ update pages
|
||||||
and deleted_at is null;
|
and deleted_at is null;
|
||||||
|
|
||||||
-- :name get-pages :? :*
|
-- :name get-pages :? :*
|
||||||
select pg.* from pages as pg
|
select pg.*
|
||||||
|
from pages as pg
|
||||||
where pg.user = :user
|
where pg.user = :user
|
||||||
and pg.deleted_at is null
|
and pg.deleted_at is null
|
||||||
order by created_at asc;
|
order by created_at asc;
|
||||||
|
@ -43,8 +44,7 @@ select pg.* from pages as pg
|
||||||
and pg.deleted_at is null;
|
and pg.deleted_at is null;
|
||||||
|
|
||||||
-- :name get-pages-for-user-and-project :? :*
|
-- :name get-pages-for-user-and-project :? :*
|
||||||
select pg.*,
|
select pg.*
|
||||||
(row_number() OVER (order by created_at asc) -1) as index
|
|
||||||
from pages as pg
|
from pages as pg
|
||||||
where pg.user = :user
|
where pg.user = :user
|
||||||
and pg.project = :project
|
and pg.project = :project
|
||||||
|
@ -52,8 +52,7 @@ select pg.*,
|
||||||
order by pg.created_at asc;
|
order by pg.created_at asc;
|
||||||
|
|
||||||
-- :name get-pages-for-project :? :*
|
-- :name get-pages-for-project :? :*
|
||||||
select pg.*,
|
select pg.*
|
||||||
(row_number() OVER (order by created_at asc) -1) as index
|
|
||||||
from pages as pg
|
from pages as pg
|
||||||
where pg.project = :project
|
where pg.project = :project
|
||||||
and pg.deleted_at is null
|
and pg.deleted_at is null
|
||||||
|
|
|
@ -26,28 +26,13 @@ select p.*
|
||||||
and p.deleted_at is null;
|
and p.deleted_at is null;
|
||||||
|
|
||||||
-- :name get-projects :? :*
|
-- :name get-projects :? :*
|
||||||
select distinct
|
select pr.*,
|
||||||
pr.*,
|
ps.token as share_token
|
||||||
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
|
|
||||||
from projects as pr
|
from projects as pr
|
||||||
inner join project_shares as ps
|
inner join project_shares as ps
|
||||||
on (ps.project = pr.id)
|
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
|
where pr.deleted_at is null
|
||||||
and pr."user" = :user
|
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;
|
order by pr.created_at asc;
|
||||||
|
|
||||||
-- :name get-project-by-share-token :? :*
|
-- :name get-project-by-share-token :? :*
|
||||||
|
|
Loading…
Add table
Reference in a new issue