split PersonEntity/Repo into Rbac and Real Entity/Repo and use in Relation for faster lazy loading #130

Merged
hsh-michaelhoennig merged 15 commits from feature/split-PersonEntity-and-Repo-into-Rbac-and-Real into master 2024-12-05 10:39:26 +01:00
Showing only changes of commit b16c9f053a - Show all commits

View File

@ -5,10 +5,11 @@
--changeset timotheus.pokorra:hs-global-integration-znuny endDelimiter:--// --changeset timotheus.pokorra:hs-global-integration-znuny endDelimiter:--//
-- TODO.impl: also select column debitorNumber and do not filter anymore for '00' -- TODO.impl: also select column debitorNumber and do not filter anymore for '00'
CREATE OR REPLACE VIEW hs_integration.contact AS CREATE OR REPLACE VIEW hs_integration.contact AS
SELECT DISTINCT ON (uuid) SELECT DISTINCT ON (contact_uuid)
partner.partnernumber as partnernumber, partner.partnernumber as partnernumber,
debitor.defaultprefix as defaultprefix, debitor.defaultprefix as defaultprefix,
c.uuid as uuid, partner.uuid as partner_uuid,
c.uuid as contact_uuid,
(CASE WHEN per.salutation <> '' THEN per.salutation ELSE NULL END) as salutation, (CASE WHEN per.salutation <> '' THEN per.salutation ELSE NULL END) as salutation,
(CASE WHEN per.givenname <> '' THEN per.givenname ELSE NULL END) as givenname, (CASE WHEN per.givenname <> '' THEN per.givenname ELSE NULL END) as givenname,
(CASE WHEN per.familyname <> '' THEN per.familyname ELSE NULL END) as familyname, (CASE WHEN per.familyname <> '' THEN per.familyname ELSE NULL END) as familyname,
@ -38,10 +39,11 @@ CREATE OR REPLACE VIEW hs_integration.contact AS
JOIN hs_office.contact AS c ON c.uuid = pRel.contactuuid JOIN hs_office.contact AS c ON c.uuid = pRel.contactuuid
JOIN hs_office.person AS per ON per.uuid = pRel.holderuuid JOIN hs_office.person AS per ON per.uuid = pRel.holderuuid
UNION UNION
SELECT DISTINCT ON (uuid) SELECT DISTINCT ON (contact_uuid)
partner.partnernumber as partnernumber, partner.partnernumber as partnernumber,
debitor.defaultprefix as defaultprefix, debitor.defaultprefix as defaultprefix,
c.uuid as uuid, partner.uuid as partner_uuid,
c.uuid as contact_uuid,
(CASE WHEN per.salutation <> '' THEN per.salutation ELSE NULL END) as salutation, (CASE WHEN per.salutation <> '' THEN per.salutation ELSE NULL END) as salutation,
(CASE WHEN per.givenname <> '' THEN per.givenname ELSE NULL END) as givenname, (CASE WHEN per.givenname <> '' THEN per.givenname ELSE NULL END) as givenname,
(CASE WHEN per.familyname <> '' THEN per.familyname ELSE NULL END) as familyname, (CASE WHEN per.familyname <> '' THEN per.familyname ELSE NULL END) as familyname,
@ -73,7 +75,7 @@ CREATE OR REPLACE VIEW hs_integration.contact AS
JOIN hs_office.person AS per ON per.uuid = relation.holderuuid; JOIN hs_office.person AS per ON per.uuid = relation.holderuuid;
CREATE OR REPLACE VIEW hs_integration.ticket_customer_user AS CREATE OR REPLACE VIEW hs_integration.ticket_customer_user AS
SELECT c.uuid, SELECT c.contact_uuid,
max(c.partnernumber)::text as number, max(c.partnernumber)::text as number,
max(c.defaultprefix) as code, max(c.defaultprefix) as code,
max(c.email) as login, max(c.email) as login,
@ -96,7 +98,27 @@ CREATE OR REPLACE VIEW hs_integration.ticket_customer_user AS
string_agg(CASE WHEN relation.mark IS NULL THEN relation.type::text ELSE CONCAT(relation.type::text, ':', relation.mark::text) END, '/'::text) AS comment, string_agg(CASE WHEN relation.mark IS NULL THEN relation.type::text ELSE CONCAT(relation.type::text, ':', relation.mark::text) END, '/'::text) AS comment,
1 AS valid 1 AS valid
FROM hs_integration.contact AS c FROM hs_integration.contact AS c
JOIN hs_office.relation AS relation ON c.uuid = relation.contactuuid JOIN hs_office.relation AS relation ON c.contact_uuid = relation.contactuuid
WHERE (c.defaultprefix != 'hsh' OR (c.partnernumber = 10000 AND c.email = 'hostmaster@hostsharing.net')) WHERE (c.defaultprefix != 'hsh' OR (c.partnernumber = 10000 AND c.email = 'hostmaster@hostsharing.net'))
GROUP BY c.uuid; GROUP BY c.contact_uuid;
CREATE OR REPLACE VIEW hs_integration.ticket_customer_company AS
SELECT
partner.partnernumber::text as number,
debitor.defaultprefix as code,
concat_ws('/'::text, to_char(lower(membership.validity), 'YYYY-MM-DD'::text), to_char(upper(membership.validity) - INTERVAL '1 days', 'YYYY-MM-DD'::text)) AS comment,
1 AS valid
FROM hs_office.partner AS partner
JOIN hs_office.relation AS pRel
ON pRel.type = 'PARTNER'
AND pRel.uuid = partner.partnerRelUuid
JOIN hs_office.relation AS dRel
ON dRel.type = 'DEBITOR'
AND dRel.anchorUuid = pRel.holderUuid
JOIN hs_office.debitor AS debitor
ON debitor.debitorreluuid = dRel.uuid
AND debitor.debitornumbersuffix = '00'
LEFT OUTER JOIN hs_office.membership AS membership ON membership.partneruuid = partner.uuid
ORDER BY number;
--// --//