mirror of
https://github.com/penpot/penpot.git
synced 2025-12-12 06:24:17 +01:00
- makes the profile access more efficient (replace in-app joins to a simple select query on profile table - add partial support for access-tokens (still missing some RPC methods) - move router definitions to specific modules and simplify the main http module definitions to simple includes - simplifiy authentication code related to access-tokens and sessions - normalize db parameters with proper namespaced props - more work on convert all modules initialization to use proper specs with fully-qualified keyword config props
35 lines
1.1 KiB
SQL
35 lines
1.1 KiB
SQL
DROP INDEX profile__email__idx;
|
|
CREATE INDEX profile__email__idx ON profile(email);
|
|
|
|
ALTER TABLE profile
|
|
ADD COLUMN default_project_id uuid NULL REFERENCES project(id) ON DELETE SET NULL DEFERRABLE,
|
|
ADD COLUMN default_team_id uuid NULL REFERENCES team(id) ON DELETE SET NULL DEFERRABLE;
|
|
|
|
CREATE INDEX profile__default_project__idx ON profile(default_project_id);
|
|
CREATE INDEX profile__default_team__idx ON profile(default_team_id);
|
|
|
|
with profiles as (
|
|
select p.id,
|
|
tpr.team_id as default_team_id,
|
|
ppr.project_id as default_project_id
|
|
from profile as p
|
|
join team_profile_rel as tpr
|
|
on (tpr.profile_id = p.id and
|
|
tpr.is_owner is true)
|
|
join project_profile_rel as ppr
|
|
on (ppr.profile_id = p.id and
|
|
ppr.is_owner is true)
|
|
join project as pj
|
|
on (pj.id = ppr.project_id)
|
|
join team as tm
|
|
on (tm.id = tpr.team_id)
|
|
where pj.is_default is true
|
|
and tm.is_default is true
|
|
and pj.team_id = tm.id
|
|
)
|
|
update profile
|
|
set default_team_id = p.default_team_id,
|
|
default_project_id = p.default_project_id
|
|
from profiles as p
|
|
where profile.id = p.id;
|