Implement Merge for trusct center document accesses
Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
@@ -64,7 +64,7 @@ export function TrustCenterAccessEditForm(props: TrustCenterAccessEditFormProps)
|
|||||||
queryRef,
|
queryRef,
|
||||||
)
|
)
|
||||||
|
|
||||||
const initialDocumentAccesses = (data.node.availableDocumentAccesses?.edges.map(edge => edge.node) ?? []).map(da => getTrustCenterDocumentAccessInfo(da, __))
|
const initialDocumentAccesses = data.node.availableDocumentAccesses?.edges.map(edge => getTrustCenterDocumentAccessInfo(edge.node, __)) ?? []
|
||||||
const initialStatusByID = initialDocumentAccesses.reduce<Record<string, TrustCenterDocumentAccessStatus>>((acc, docAccess) => {
|
const initialStatusByID = initialDocumentAccesses.reduce<Record<string, TrustCenterDocumentAccessStatus>>((acc, docAccess) => {
|
||||||
acc[docAccess.id] = docAccess.status;
|
acc[docAccess.id] = docAccess.status;
|
||||||
return acc
|
return acc
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ FROM
|
|||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND deleted_at IS NULL
|
AND deleted_at IS NULL
|
||||||
AND id IN (SELECT id FROM UNNEST(@document_ids::text[]) AS t(id));;
|
AND id = ANY(@document_ids)
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ FROM
|
|||||||
files
|
files
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND id (SELECT id FROM UNNEST(@file_ids::text[]) AS t(id))
|
AND id = ANY(@file_ids)
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
`
|
`
|
||||||
|
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ FROM
|
|||||||
reports
|
reports
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND id IN (SELECT id FROM UNNEST(@report_ids::text[]) AS t(id))
|
AND id = ANY(@report_ids)
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
`
|
`
|
||||||
|
|
||||||
|
|||||||
@@ -79,22 +79,22 @@ func (tcda *TrustCenterDocumentAccess) LoadByID(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
id,
|
||||||
organization_id,
|
organization_id,
|
||||||
trust_center_access_id,
|
trust_center_access_id,
|
||||||
document_id,
|
document_id,
|
||||||
report_id,
|
report_id,
|
||||||
trust_center_file_id,
|
trust_center_file_id,
|
||||||
active,
|
active,
|
||||||
status,
|
status,
|
||||||
requested,
|
requested,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
FROM
|
FROM
|
||||||
trust_center_document_accesses
|
trust_center_document_accesses
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND id = @access_id
|
AND id = @access_id
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
`
|
`
|
||||||
|
|
||||||
@@ -130,23 +130,23 @@ func (tcda *TrustCenterDocumentAccess) LoadByTrustCenterAccessIDAndDocumentID(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
id,
|
||||||
organization_id,
|
organization_id,
|
||||||
trust_center_access_id,
|
trust_center_access_id,
|
||||||
document_id,
|
document_id,
|
||||||
report_id,
|
report_id,
|
||||||
trust_center_file_id,
|
trust_center_file_id,
|
||||||
active,
|
active,
|
||||||
status,
|
status,
|
||||||
requested,
|
requested,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
FROM
|
FROM
|
||||||
trust_center_document_accesses
|
trust_center_document_accesses
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND document_id = @document_id
|
AND document_id = @document_id
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
`
|
`
|
||||||
|
|
||||||
@@ -182,23 +182,23 @@ func (tcda *TrustCenterDocumentAccess) LoadByTrustCenterAccessIDAndReportID(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
id,
|
||||||
organization_id,
|
organization_id,
|
||||||
trust_center_access_id,
|
trust_center_access_id,
|
||||||
document_id,
|
document_id,
|
||||||
report_id,
|
report_id,
|
||||||
trust_center_file_id,
|
trust_center_file_id,
|
||||||
active,
|
active,
|
||||||
status,
|
status,
|
||||||
requested,
|
requested,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
FROM
|
FROM
|
||||||
trust_center_document_accesses
|
trust_center_document_accesses
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND report_id = @report_id
|
AND report_id = @report_id
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
`
|
`
|
||||||
|
|
||||||
@@ -232,31 +232,31 @@ func (tcda *TrustCenterDocumentAccess) Insert(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
INSERT INTO trust_center_document_accesses (
|
INSERT INTO trust_center_document_accesses (
|
||||||
id,
|
id,
|
||||||
tenant_id,
|
tenant_id,
|
||||||
organization_id,
|
organization_id,
|
||||||
trust_center_access_id,
|
trust_center_access_id,
|
||||||
document_id,
|
document_id,
|
||||||
report_id,
|
report_id,
|
||||||
trust_center_file_id,
|
trust_center_file_id,
|
||||||
active,
|
active,
|
||||||
status,
|
status,
|
||||||
requested,
|
requested,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
) VALUES (
|
) VALUES (
|
||||||
@id,
|
@id,
|
||||||
@tenant_id,
|
@tenant_id,
|
||||||
@organization_id,
|
@organization_id,
|
||||||
@trust_center_access_id,
|
@trust_center_access_id,
|
||||||
@document_id,
|
@document_id,
|
||||||
@report_id,
|
@report_id,
|
||||||
@trust_center_file_id,
|
@trust_center_file_id,
|
||||||
@active,
|
@active,
|
||||||
@status::trust_center_document_access_status,
|
@status::trust_center_document_access_status,
|
||||||
@requested,
|
@requested,
|
||||||
@created_at,
|
@created_at,
|
||||||
@updated_at
|
@updated_at
|
||||||
)
|
)
|
||||||
`
|
`
|
||||||
|
|
||||||
@@ -309,11 +309,11 @@ func (tcda *TrustCenterDocumentAccess) Update(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
UPDATE trust_center_document_accesses SET
|
UPDATE trust_center_document_accesses SET
|
||||||
status = @status::trust_center_document_access_status,
|
status = @status::trust_center_document_access_status,
|
||||||
updated_at = @updated_at
|
updated_at = @updated_at
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND id = @id
|
AND id = @id
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -341,8 +341,8 @@ func (tcda *TrustCenterDocumentAccess) Delete(
|
|||||||
q := `
|
q := `
|
||||||
DELETE FROM trust_center_document_accesses
|
DELETE FROM trust_center_document_accesses
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND id = @id
|
AND id = @id
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -368,12 +368,12 @@ func (tcdas *TrustCenterDocumentAccesses) CountByTrustCenterAccessID(
|
|||||||
) (int, error) {
|
) (int, error) {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
COUNT(id)
|
COUNT(id)
|
||||||
FROM
|
FROM
|
||||||
trust_center_document_accesses
|
trust_center_document_accesses
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -401,14 +401,14 @@ func (tcdas *TrustCenterDocumentAccesses) CountPendingRequestByTrustCenterAccess
|
|||||||
) (int, error) {
|
) (int, error) {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
COUNT(id)
|
COUNT(id)
|
||||||
FROM
|
FROM
|
||||||
trust_center_document_accesses
|
trust_center_document_accesses
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND requested = true
|
AND requested = true
|
||||||
AND status = 'REQUESTED'::trust_center_document_access_status
|
AND status = 'REQUESTED'::trust_center_document_access_status
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -436,13 +436,13 @@ func (tcdas *TrustCenterDocumentAccesses) CountActiveByTrustCenterAccessID(
|
|||||||
) (int, error) {
|
) (int, error) {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
COUNT(id)
|
COUNT(id)
|
||||||
FROM
|
FROM
|
||||||
trust_center_document_accesses
|
trust_center_document_accesses
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND status = 'GRANTED'::trust_center_document_access_status
|
AND status = 'GRANTED'::trust_center_document_access_status
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -471,93 +471,93 @@ func (tcdas *TrustCenterDocumentAccesses) LoadAvailableByTrustCenterAccessID(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
WITH organization AS (
|
WITH organization AS (
|
||||||
SELECT tc.organization_id
|
SELECT tc.organization_id
|
||||||
FROM trust_center_accesses tca
|
FROM trust_center_accesses tca
|
||||||
INNER JOIN trust_centers tc ON tca.trust_center_id = tc.id
|
INNER JOIN trust_centers tc ON tca.trust_center_id = tc.id
|
||||||
WHERE tca.tenant_id = @tenant_id
|
WHERE tca.tenant_id = @tenant_id
|
||||||
AND tca.id = @trust_center_access_id
|
AND tca.id = @trust_center_access_id
|
||||||
),
|
),
|
||||||
tenant_organization AS (
|
tenant_organization AS (
|
||||||
SELECT o.id AS organization_id
|
SELECT o.id AS organization_id
|
||||||
FROM organizations o
|
FROM organizations o
|
||||||
WHERE %s
|
WHERE %s
|
||||||
),
|
),
|
||||||
all_items AS (
|
all_items AS (
|
||||||
SELECT
|
SELECT
|
||||||
d.id AS item_id,
|
d.id AS item_id,
|
||||||
d.id AS document_id,
|
d.id AS document_id,
|
||||||
NULL::text AS report_id,
|
NULL::text AS report_id,
|
||||||
NULL::text AS trust_center_file_id,
|
NULL::text AS trust_center_file_id,
|
||||||
d.created_at AS item_created_at,
|
d.created_at AS item_created_at,
|
||||||
d.updated_at AS item_updated_at
|
d.updated_at AS item_updated_at
|
||||||
FROM documents d, tenant_organization o
|
FROM documents d, tenant_organization o
|
||||||
WHERE d.organization_id = o.organization_id
|
WHERE d.organization_id = o.organization_id
|
||||||
AND d.deleted_at IS NULL
|
AND d.deleted_at IS NULL
|
||||||
AND d.trust_center_visibility = 'PRIVATE'::trust_center_visibility
|
AND d.trust_center_visibility = 'PRIVATE'::trust_center_visibility
|
||||||
|
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
r.report_id AS item_id,
|
r.report_id AS item_id,
|
||||||
NULL::text AS document_id,
|
NULL::text AS document_id,
|
||||||
r.report_id AS report_id,
|
r.report_id AS report_id,
|
||||||
NULL::text AS trust_center_file_id,
|
NULL::text AS trust_center_file_id,
|
||||||
r.created_at AS item_created_at,
|
r.created_at AS item_created_at,
|
||||||
r.updated_at AS item_updated_at
|
r.updated_at AS item_updated_at
|
||||||
FROM audits r, tenant_organization o
|
FROM audits r, tenant_organization o
|
||||||
WHERE r.organization_id = o.organization_id
|
WHERE r.organization_id = o.organization_id
|
||||||
AND r.trust_center_visibility = 'PRIVATE'::trust_center_visibility
|
AND r.trust_center_visibility = 'PRIVATE'::trust_center_visibility
|
||||||
AND r.report_id IS NOT NULL
|
AND r.report_id IS NOT NULL
|
||||||
|
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
tcf.id AS item_id,
|
tcf.id AS item_id,
|
||||||
NULL::text AS document_id,
|
NULL::text AS document_id,
|
||||||
NULL::text AS report_id,
|
NULL::text AS report_id,
|
||||||
tcf.id AS trust_center_file_id,
|
tcf.id AS trust_center_file_id,
|
||||||
tcf.created_at AS item_created_at,
|
tcf.created_at AS item_created_at,
|
||||||
tcf.updated_at AS item_updated_at
|
tcf.updated_at AS item_updated_at
|
||||||
FROM trust_center_files tcf, tenant_organization o
|
FROM trust_center_files tcf, tenant_organization o
|
||||||
WHERE tcf.organization_id = o.organization_id
|
WHERE tcf.organization_id = o.organization_id
|
||||||
AND tcf.trust_center_visibility = 'PRIVATE'::trust_center_visibility
|
AND tcf.trust_center_visibility = 'PRIVATE'::trust_center_visibility
|
||||||
),
|
),
|
||||||
final_items AS (
|
final_items AS (
|
||||||
SELECT
|
SELECT
|
||||||
COALESCE(tcda.id, ai.item_id) AS id,
|
COALESCE(tcda.id, ai.item_id) AS id,
|
||||||
tcda.tenant_id,
|
tcda.tenant_id,
|
||||||
(SELECT organization_id FROM organization) AS organization_id,
|
(SELECT organization_id FROM organization) AS organization_id,
|
||||||
@trust_center_access_id AS trust_center_access_id,
|
@trust_center_access_id AS trust_center_access_id,
|
||||||
ai.document_id,
|
ai.document_id,
|
||||||
ai.report_id,
|
ai.report_id,
|
||||||
ai.trust_center_file_id,
|
ai.trust_center_file_id,
|
||||||
COALESCE(tcda.active, false) AS active,
|
COALESCE(tcda.active, false) AS active,
|
||||||
COALESCE(tcda.status, 'REQUESTED'::trust_center_document_access_status) AS status,
|
COALESCE(tcda.status, 'REQUESTED'::trust_center_document_access_status) AS status,
|
||||||
COALESCE(tcda.requested, false) AS requested,
|
COALESCE(tcda.requested, false) AS requested,
|
||||||
COALESCE(tcda.created_at, ai.item_created_at) AS created_at,
|
COALESCE(tcda.created_at, ai.item_created_at) AS created_at,
|
||||||
COALESCE(tcda.updated_at, ai.item_updated_at) AS updated_at
|
COALESCE(tcda.updated_at, ai.item_updated_at) AS updated_at
|
||||||
FROM all_items ai
|
FROM all_items ai
|
||||||
LEFT JOIN trust_center_document_accesses tcda ON (
|
LEFT JOIN trust_center_document_accesses tcda ON (
|
||||||
tcda.trust_center_access_id = @trust_center_access_id
|
tcda.trust_center_access_id = @trust_center_access_id
|
||||||
AND (
|
AND (
|
||||||
(tcda.document_id = ai.document_id AND ai.document_id IS NOT NULL)
|
(tcda.document_id = ai.document_id AND ai.document_id IS NOT NULL)
|
||||||
OR (tcda.report_id = ai.report_id AND ai.report_id IS NOT NULL)
|
OR (tcda.report_id = ai.report_id AND ai.report_id IS NOT NULL)
|
||||||
OR (tcda.trust_center_file_id = ai.trust_center_file_id AND ai.trust_center_file_id IS NOT NULL)
|
OR (tcda.trust_center_file_id = ai.trust_center_file_id AND ai.trust_center_file_id IS NOT NULL)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
id,
|
||||||
organization_id,
|
organization_id,
|
||||||
trust_center_access_id,
|
trust_center_access_id,
|
||||||
document_id,
|
document_id,
|
||||||
report_id,
|
report_id,
|
||||||
trust_center_file_id,
|
trust_center_file_id,
|
||||||
active,
|
active,
|
||||||
status,
|
status,
|
||||||
requested,
|
requested,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
FROM final_items
|
FROM final_items
|
||||||
WHERE %s
|
WHERE %s
|
||||||
`
|
`
|
||||||
@@ -593,22 +593,22 @@ func (tcdas *TrustCenterDocumentAccesses) LoadAllByTrustCenterAccessID(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
id,
|
||||||
organization_id,
|
organization_id,
|
||||||
trust_center_access_id,
|
trust_center_access_id,
|
||||||
document_id,
|
document_id,
|
||||||
report_id,
|
report_id,
|
||||||
trust_center_file_id,
|
trust_center_file_id,
|
||||||
active,
|
active,
|
||||||
status,
|
status,
|
||||||
requested,
|
requested,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
FROM
|
FROM
|
||||||
trust_center_document_accesses
|
trust_center_document_accesses
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -633,34 +633,6 @@ WHERE
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeleteByTrustCenterAccessID(
|
|
||||||
ctx context.Context,
|
|
||||||
conn pg.Conn,
|
|
||||||
scope Scoper,
|
|
||||||
trustCenterAccessID gid.GID,
|
|
||||||
) error {
|
|
||||||
q := `
|
|
||||||
DELETE FROM trust_center_document_accesses
|
|
||||||
WHERE
|
|
||||||
%s
|
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
|
||||||
`
|
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
|
||||||
|
|
||||||
args := pgx.StrictNamedArgs{
|
|
||||||
"trust_center_access_id": trustCenterAccessID,
|
|
||||||
}
|
|
||||||
maps.Copy(args, scope.SQLArguments())
|
|
||||||
|
|
||||||
_, err := conn.Exec(ctx, q, args)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot delete trust center document accesses: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func GrantByDocumentIDs(
|
func GrantByDocumentIDs(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
@@ -673,9 +645,9 @@ func GrantByDocumentIDs(
|
|||||||
UPDATE trust_center_document_accesses
|
UPDATE trust_center_document_accesses
|
||||||
SET status = 'GRANTED'::trust_center_document_access_status, updated_at = @updated_at
|
SET status = 'GRANTED'::trust_center_document_access_status, updated_at = @updated_at
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND document_id = ANY(@document_ids)
|
AND document_id = ANY(@document_ids)
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -706,9 +678,9 @@ func RejectByDocumentIDs(
|
|||||||
UPDATE trust_center_document_accesses
|
UPDATE trust_center_document_accesses
|
||||||
SET status = 'REJECTED'::trust_center_document_access_status
|
SET status = 'REJECTED'::trust_center_document_access_status
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND document_id = ANY(@document_ids)
|
AND document_id = ANY(@document_ids)
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -739,9 +711,9 @@ func GrantByReportIDs(
|
|||||||
UPDATE trust_center_document_accesses
|
UPDATE trust_center_document_accesses
|
||||||
SET status = 'GRANTED'::trust_center_document_access_status, updated_at = @updated_at
|
SET status = 'GRANTED'::trust_center_document_access_status, updated_at = @updated_at
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND report_id = ANY(@report_ids)
|
AND report_id = ANY(@report_ids)
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -772,9 +744,9 @@ func RejectByReportIDs(
|
|||||||
UPDATE trust_center_document_accesses
|
UPDATE trust_center_document_accesses
|
||||||
SET status = 'REJECTED'::trust_center_document_access_status
|
SET status = 'REJECTED'::trust_center_document_access_status
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND report_id = ANY(@report_ids)
|
AND report_id = ANY(@report_ids)
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -793,6 +765,230 @@ WHERE
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MergeTrustCenterDocumentAccessesData struct {
|
||||||
|
ID gid.GID
|
||||||
|
Status TrustCenterDocumentAccessStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
func (tcdas TrustCenterDocumentAccesses) MergeDocumentAccesses(
|
||||||
|
ctx context.Context,
|
||||||
|
conn pg.Conn,
|
||||||
|
scope Scoper,
|
||||||
|
organizationID gid.GID,
|
||||||
|
trustCenterAccessID gid.GID,
|
||||||
|
data []MergeTrustCenterDocumentAccessesData,
|
||||||
|
) error {
|
||||||
|
q := `
|
||||||
|
WITH data AS (
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
FROM
|
||||||
|
json_to_recordset(@data) AS t(id text, status trust_center_document_access_status)
|
||||||
|
)
|
||||||
|
MERGE INTO trust_center_document_accesses tcda
|
||||||
|
USING data
|
||||||
|
ON data.id = tcda.document_id
|
||||||
|
WHEN MATCHED
|
||||||
|
THEN UPDATE SET tcda.status = data.status, tcda.updated_at = @now
|
||||||
|
WHEN NOT MATCHED BY SOURCE
|
||||||
|
AND tcda.tenant_id = @tenant_id
|
||||||
|
AND tcda.trust_center_access_id = @trust_center_access_id
|
||||||
|
AND tcda.document_id IS NOT NULL
|
||||||
|
THEN DELETE
|
||||||
|
WHEN NOT MATCHED
|
||||||
|
THEN INSERT (
|
||||||
|
id,
|
||||||
|
tenant_id,
|
||||||
|
organization_id,
|
||||||
|
trust_center_access_id,
|
||||||
|
document_id,
|
||||||
|
report_id,
|
||||||
|
trust_center_file_id,
|
||||||
|
active,
|
||||||
|
status,
|
||||||
|
requested,
|
||||||
|
created_at,
|
||||||
|
updated_at
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
generate_gid(decode_base64_unpadded(@tenant_id), @trust_center_document_access_entity_type) AS id,
|
||||||
|
@tenant_id AS tenant_id,
|
||||||
|
@organization_id AS organization_id,
|
||||||
|
@trust_center_access_id AS trust_center_access_id,
|
||||||
|
data.id AS document_id,
|
||||||
|
NULL AS report_id,
|
||||||
|
NULL AS trust_center_file_id,
|
||||||
|
false AS active,
|
||||||
|
data.status AS status,
|
||||||
|
false AS requested,
|
||||||
|
@now AS created_at,
|
||||||
|
@now AS updated_at
|
||||||
|
)
|
||||||
|
`
|
||||||
|
|
||||||
|
args := pgx.StrictNamedArgs{
|
||||||
|
"trust_center_document_access_entity_type": TrustCenterDocumentAccessEntityType,
|
||||||
|
"tenant_id": scope.GetTenantID(),
|
||||||
|
"trust_center_access_id": trustCenterAccessID,
|
||||||
|
"organization_id": organizationID,
|
||||||
|
"now": time.Now(),
|
||||||
|
"data": data,
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := conn.Exec(ctx, q, args); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (tcdas TrustCenterDocumentAccesses) MergeReportAccesses(
|
||||||
|
ctx context.Context,
|
||||||
|
conn pg.Conn,
|
||||||
|
scope Scoper,
|
||||||
|
organizationID gid.GID,
|
||||||
|
trustCenterAccessID gid.GID,
|
||||||
|
data []MergeTrustCenterDocumentAccessesData,
|
||||||
|
) error {
|
||||||
|
q := `
|
||||||
|
WITH data AS (
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
FROM
|
||||||
|
json_to_recordset(@data) AS t(id text, status trust_center_document_access_status)
|
||||||
|
)
|
||||||
|
MERGE INTO trust_center_document_accesses tcda
|
||||||
|
USING data
|
||||||
|
ON data.id = tcda.report_id
|
||||||
|
WHEN MATCHED
|
||||||
|
THEN UPDATE SET tcda.status = data.status, tcda.updated_at = @now
|
||||||
|
WHEN NOT MATCHED BY SOURCE
|
||||||
|
AND tcda.tenant_id = @tenant_id
|
||||||
|
AND tcda.trust_center_access_id = @trust_center_access_id
|
||||||
|
AND tcda.report_id IS NOT NULL
|
||||||
|
THEN DELETE
|
||||||
|
WHEN NOT MATCHED
|
||||||
|
THEN INSERT (
|
||||||
|
id,
|
||||||
|
tenant_id,
|
||||||
|
organization_id,
|
||||||
|
trust_center_access_id,
|
||||||
|
document_id,
|
||||||
|
report_id,
|
||||||
|
trust_center_file_id,
|
||||||
|
active,
|
||||||
|
status,
|
||||||
|
requested,
|
||||||
|
created_at,
|
||||||
|
updated_at
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
generate_gid(decode_base64_unpadded(@tenant_id), @trust_center_document_access_entity_type) AS id,
|
||||||
|
@tenant_id AS tenant_id,
|
||||||
|
@organization_id AS organization_id,
|
||||||
|
@trust_center_access_id AS trust_center_access_id,
|
||||||
|
NULL AS document_id,
|
||||||
|
data.id AS report_id,
|
||||||
|
NULL AS trust_center_file_id,
|
||||||
|
false AS active,
|
||||||
|
data.status AS status,
|
||||||
|
false AS requested,
|
||||||
|
@now AS created_at,
|
||||||
|
@now AS updated_at
|
||||||
|
)
|
||||||
|
`
|
||||||
|
|
||||||
|
args := pgx.StrictNamedArgs{
|
||||||
|
"trust_center_document_access_entity_type": TrustCenterDocumentAccessEntityType,
|
||||||
|
"tenant_id": scope.GetTenantID(),
|
||||||
|
"trust_center_access_id": trustCenterAccessID,
|
||||||
|
"organization_id": organizationID,
|
||||||
|
"now": time.Now(),
|
||||||
|
"data": data,
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := conn.Exec(ctx, q, args); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (tcdas TrustCenterDocumentAccesses) MergeTrustCenterFileAccesses(
|
||||||
|
ctx context.Context,
|
||||||
|
conn pg.Conn,
|
||||||
|
scope Scoper,
|
||||||
|
organizationID gid.GID,
|
||||||
|
trustCenterAccessID gid.GID,
|
||||||
|
data []MergeTrustCenterDocumentAccessesData,
|
||||||
|
) error {
|
||||||
|
q := `
|
||||||
|
WITH data AS (
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
FROM
|
||||||
|
json_to_recordset(@data) AS t(id text, status trust_center_document_access_status)
|
||||||
|
)
|
||||||
|
MERGE INTO trust_center_document_accesses tcda
|
||||||
|
USING data
|
||||||
|
ON data.id = tcda.trust_center_file_id
|
||||||
|
WHEN MATCHED
|
||||||
|
THEN UPDATE SET tcda.status = data.status, tcda.updated_at = @now
|
||||||
|
WHEN NOT MATCHED BY SOURCE
|
||||||
|
AND tcda.tenant_id = @tenant_id
|
||||||
|
AND tcda.trust_center_access_id = @trust_center_access_id
|
||||||
|
AND tcda.trust_center_file_id IS NOT NULL
|
||||||
|
THEN DELETE
|
||||||
|
WHEN NOT MATCHED
|
||||||
|
THEN INSERT (
|
||||||
|
id,
|
||||||
|
tenant_id,
|
||||||
|
organization_id,
|
||||||
|
trust_center_access_id,
|
||||||
|
document_id,
|
||||||
|
report_id,
|
||||||
|
trust_center_file_id,
|
||||||
|
active,
|
||||||
|
status,
|
||||||
|
requested,
|
||||||
|
created_at,
|
||||||
|
updated_at
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
generate_gid(decode_base64_unpadded(@tenant_id), @trust_center_document_access_entity_type) AS id,
|
||||||
|
@tenant_id AS tenant_id,
|
||||||
|
@organization_id AS organization_id,
|
||||||
|
@trust_center_access_id AS trust_center_access_id,
|
||||||
|
NULL AS document_id,
|
||||||
|
NULL AS report_id,
|
||||||
|
data.id AS trust_center_file_id,
|
||||||
|
false AS active,
|
||||||
|
data.status AS status,
|
||||||
|
false AS requested,
|
||||||
|
@now AS created_at,
|
||||||
|
@now AS updated_at
|
||||||
|
)
|
||||||
|
`
|
||||||
|
|
||||||
|
args := pgx.StrictNamedArgs{
|
||||||
|
"trust_center_document_access_entity_type": TrustCenterDocumentAccessEntityType,
|
||||||
|
"tenant_id": scope.GetTenantID(),
|
||||||
|
"trust_center_access_id": trustCenterAccessID,
|
||||||
|
"organization_id": organizationID,
|
||||||
|
"now": time.Now(),
|
||||||
|
"data": data,
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := conn.Exec(ctx, q, args); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (tcdas TrustCenterDocumentAccesses) BulkInsertDocumentAccesses(
|
func (tcdas TrustCenterDocumentAccesses) BulkInsertDocumentAccesses(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
@@ -809,33 +1005,33 @@ func (tcdas TrustCenterDocumentAccesses) BulkInsertDocumentAccesses(
|
|||||||
|
|
||||||
q := `
|
q := `
|
||||||
WITH document_access_data AS (
|
WITH document_access_data AS (
|
||||||
SELECT
|
SELECT
|
||||||
generate_gid(decode_base64_unpadded(@tenant_id), @trust_center_document_access_entity_type) AS id,
|
generate_gid(decode_base64_unpadded(@tenant_id), @trust_center_document_access_entity_type) AS id,
|
||||||
@tenant_id AS tenant_id,
|
@tenant_id AS tenant_id,
|
||||||
@organization_id AS organization_id,
|
@organization_id AS organization_id,
|
||||||
@trust_center_access_id AS trust_center_access_id,
|
@trust_center_access_id AS trust_center_access_id,
|
||||||
unnest(@document_ids::text[]) AS document_id,
|
unnest(@document_ids::text[]) AS document_id,
|
||||||
null::text AS report_id,
|
null::text AS report_id,
|
||||||
null::text AS trust_center_file_id,
|
null::text AS trust_center_file_id,
|
||||||
false AS active,
|
false AS active,
|
||||||
@status::trust_center_document_access_status AS status,
|
@status::trust_center_document_access_status AS status,
|
||||||
false AS requested,
|
false AS requested,
|
||||||
@created_at::timestamptz AS created_at,
|
@created_at::timestamptz AS created_at,
|
||||||
@updated_at::timestamptz AS updated_at
|
@updated_at::timestamptz AS updated_at
|
||||||
)
|
)
|
||||||
INSERT INTO trust_center_document_accesses (
|
INSERT INTO trust_center_document_accesses (
|
||||||
id,
|
id,
|
||||||
tenant_id,
|
tenant_id,
|
||||||
organization_id,
|
organization_id,
|
||||||
trust_center_access_id,
|
trust_center_access_id,
|
||||||
document_id,
|
document_id,
|
||||||
report_id,
|
report_id,
|
||||||
trust_center_file_id,
|
trust_center_file_id,
|
||||||
active,
|
active,
|
||||||
status,
|
status,
|
||||||
requested,
|
requested,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
)
|
)
|
||||||
SELECT * FROM document_access_data
|
SELECT * FROM document_access_data
|
||||||
ON CONFLICT DO NOTHING
|
ON CONFLICT DO NOTHING
|
||||||
@@ -875,33 +1071,33 @@ func (tcdas TrustCenterDocumentAccesses) BulkInsertReportAccesses(
|
|||||||
|
|
||||||
q := `
|
q := `
|
||||||
WITH report_access_data AS (
|
WITH report_access_data AS (
|
||||||
SELECT
|
SELECT
|
||||||
generate_gid(decode_base64_unpadded(@tenant_id), @trust_center_document_access_entity_type) AS id,
|
generate_gid(decode_base64_unpadded(@tenant_id), @trust_center_document_access_entity_type) AS id,
|
||||||
@tenant_id AS tenant_id,
|
@tenant_id AS tenant_id,
|
||||||
@organization_id AS organization_id,
|
@organization_id AS organization_id,
|
||||||
@trust_center_access_id AS trust_center_access_id,
|
@trust_center_access_id AS trust_center_access_id,
|
||||||
null::text AS document_id,
|
null::text AS document_id,
|
||||||
unnest(@report_ids::text[]) AS report_id,
|
unnest(@report_ids::text[]) AS report_id,
|
||||||
null::text AS trust_center_file_id,
|
null::text AS trust_center_file_id,
|
||||||
false AS active,
|
false AS active,
|
||||||
@status::trust_center_document_access_status AS status,
|
@status::trust_center_document_access_status AS status,
|
||||||
false AS requested,
|
false AS requested,
|
||||||
@created_at::timestamptz AS created_at,
|
@created_at::timestamptz AS created_at,
|
||||||
@updated_at::timestamptz AS updated_at
|
@updated_at::timestamptz AS updated_at
|
||||||
)
|
)
|
||||||
INSERT INTO trust_center_document_accesses (
|
INSERT INTO trust_center_document_accesses (
|
||||||
id,
|
id,
|
||||||
tenant_id,
|
tenant_id,
|
||||||
organization_id,
|
organization_id,
|
||||||
trust_center_access_id,
|
trust_center_access_id,
|
||||||
document_id,
|
document_id,
|
||||||
report_id,
|
report_id,
|
||||||
trust_center_file_id,
|
trust_center_file_id,
|
||||||
active,
|
active,
|
||||||
status,
|
status,
|
||||||
requested,
|
requested,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
)
|
)
|
||||||
SELECT * FROM report_access_data
|
SELECT * FROM report_access_data
|
||||||
ON CONFLICT DO NOTHING
|
ON CONFLICT DO NOTHING
|
||||||
@@ -934,22 +1130,22 @@ func (tcda *TrustCenterDocumentAccess) LoadByTrustCenterAccessIDAndTrustCenterFi
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
id,
|
||||||
trust_center_access_id,
|
trust_center_access_id,
|
||||||
document_id,
|
document_id,
|
||||||
report_id,
|
report_id,
|
||||||
trust_center_file_id,
|
trust_center_file_id,
|
||||||
active,
|
active,
|
||||||
status,
|
status,
|
||||||
requested,
|
requested,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
FROM
|
FROM
|
||||||
trust_center_document_accesses
|
trust_center_document_accesses
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND trust_center_file_id = @trust_center_file_id
|
AND trust_center_file_id = @trust_center_file_id
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
`
|
`
|
||||||
|
|
||||||
@@ -988,9 +1184,9 @@ func GrantByTrustCenterFileIDs(
|
|||||||
UPDATE trust_center_document_accesses
|
UPDATE trust_center_document_accesses
|
||||||
SET status = 'GRANTED'::trust_center_document_access_status, updated_at = @updated_at
|
SET status = 'GRANTED'::trust_center_document_access_status, updated_at = @updated_at
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND trust_center_file_id = ANY(@trust_center_file_ids)
|
AND trust_center_file_id = ANY(@trust_center_file_ids)
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -1021,9 +1217,9 @@ func RejectByTrustCenterFileIDs(
|
|||||||
UPDATE trust_center_document_accesses
|
UPDATE trust_center_document_accesses
|
||||||
SET status = 'REJECTED'::trust_center_document_access_status
|
SET status = 'REJECTED'::trust_center_document_access_status
|
||||||
WHERE
|
WHERE
|
||||||
%s
|
%s
|
||||||
AND trust_center_access_id = @trust_center_access_id
|
AND trust_center_access_id = @trust_center_access_id
|
||||||
AND trust_center_file_id = ANY(@trust_center_file_ids)
|
AND trust_center_file_id = ANY(@trust_center_file_ids)
|
||||||
`
|
`
|
||||||
|
|
||||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||||
@@ -1054,33 +1250,33 @@ func (tcdas TrustCenterDocumentAccesses) BulkInsertTrustCenterFileAccesses(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
WITH trust_center_file_access_data AS (
|
WITH trust_center_file_access_data AS (
|
||||||
SELECT
|
SELECT
|
||||||
generate_gid(decode_base64_unpadded(@tenant_id), @trust_center_document_access_entity_type) AS id,
|
generate_gid(decode_base64_unpadded(@tenant_id), @trust_center_document_access_entity_type) AS id,
|
||||||
@tenant_id AS tenant_id,
|
@tenant_id AS tenant_id,
|
||||||
@organization_id AS organization_id,
|
@organization_id AS organization_id,
|
||||||
@trust_center_access_id AS trust_center_access_id,
|
@trust_center_access_id AS trust_center_access_id,
|
||||||
null::text AS document_id,
|
null::text AS document_id,
|
||||||
null::text AS report_id,
|
null::text AS report_id,
|
||||||
unnest(@trust_center_file_ids::text[]) AS trust_center_file_id,
|
unnest(@trust_center_file_ids::text[]) AS trust_center_file_id,
|
||||||
false AS active,
|
false AS active,
|
||||||
@status::trust_center_document_access_status AS status,
|
@status::trust_center_document_access_status AS status,
|
||||||
false AS requested,
|
false AS requested,
|
||||||
@created_at::timestamptz AS created_at,
|
@created_at::timestamptz AS created_at,
|
||||||
@updated_at::timestamptz AS updated_at
|
@updated_at::timestamptz AS updated_at
|
||||||
)
|
)
|
||||||
INSERT INTO trust_center_document_accesses (
|
INSERT INTO trust_center_document_accesses (
|
||||||
id,
|
id,
|
||||||
tenant_id,
|
tenant_id,
|
||||||
organization_id,
|
organization_id,
|
||||||
trust_center_access_id,
|
trust_center_access_id,
|
||||||
document_id,
|
document_id,
|
||||||
report_id,
|
report_id,
|
||||||
trust_center_file_id,
|
trust_center_file_id,
|
||||||
active,
|
active,
|
||||||
status,
|
status,
|
||||||
requested,
|
requested,
|
||||||
created_at,
|
created_at,
|
||||||
updated_at
|
updated_at
|
||||||
)
|
)
|
||||||
SELECT * FROM trust_center_file_access_data
|
SELECT * FROM trust_center_file_access_data
|
||||||
ON CONFLICT DO NOTHING
|
ON CONFLICT DO NOTHING
|
||||||
|
|||||||
@@ -295,8 +295,42 @@ func (s TrustCenterAccessService) Update(
|
|||||||
return fmt.Errorf("cannot update trust center access: %w", err)
|
return fmt.Errorf("cannot update trust center access: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := s.upsertDocumentAccesses(ctx, tx, access.ID, access.OrganizationID, req.DocumentIDs, req.ReportIDs, req.TrustCenterFileIDs, now); err != nil {
|
var tcdas coredata.TrustCenterDocumentAccesses
|
||||||
return fmt.Errorf("cannot upsert document accesses: %w", err)
|
|
||||||
|
var documentData []coredata.MergeTrustCenterDocumentAccessesData
|
||||||
|
for _, d := range req.DocumentAccesses {
|
||||||
|
documentData = append(documentData, coredata.MergeTrustCenterDocumentAccessesData{
|
||||||
|
ID: d.ID,
|
||||||
|
Status: d.Status,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := tcdas.MergeDocumentAccesses(ctx, tx, s.svc.scope, access.OrganizationID, access.ID, documentData); err != nil {
|
||||||
|
return fmt.Errorf("cannot merge document accesses: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var reportData []coredata.MergeTrustCenterDocumentAccessesData
|
||||||
|
for _, d := range req.ReportAccesses {
|
||||||
|
reportData = append(reportData, coredata.MergeTrustCenterDocumentAccessesData{
|
||||||
|
ID: d.ID,
|
||||||
|
Status: d.Status,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := tcdas.MergeReportAccesses(ctx, tx, s.svc.scope, access.OrganizationID, access.ID, reportData); err != nil {
|
||||||
|
return fmt.Errorf("cannot merge report accesses: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var fileData []coredata.MergeTrustCenterDocumentAccessesData
|
||||||
|
for _, d := range req.TrustCenterFileAccesses {
|
||||||
|
fileData = append(fileData, coredata.MergeTrustCenterDocumentAccessesData{
|
||||||
|
ID: d.ID,
|
||||||
|
Status: d.Status,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := tcdas.MergeTrustCenterFileAccesses(ctx, tx, s.svc.scope, access.OrganizationID, access.ID, fileData); err != nil {
|
||||||
|
return fmt.Errorf("cannot merge trust center file accesses: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if shouldSendEmail {
|
if shouldSendEmail {
|
||||||
@@ -340,84 +374,6 @@ func (s TrustCenterAccessService) Delete(
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s TrustCenterAccessService) upsertDocumentAccesses(
|
|
||||||
ctx context.Context,
|
|
||||||
tx pg.Conn,
|
|
||||||
accessID gid.GID,
|
|
||||||
organizationID gid.GID,
|
|
||||||
documentIDs []gid.GID,
|
|
||||||
reportIDs []gid.GID,
|
|
||||||
trustCenterFileIDs []gid.GID,
|
|
||||||
now time.Time,
|
|
||||||
) error {
|
|
||||||
if documentIDs == nil && reportIDs == nil && trustCenterFileIDs == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := coredata.DeleteByTrustCenterAccessID(ctx, tx, s.svc.scope, accessID); err != nil {
|
|
||||||
return fmt.Errorf("cannot delete existing document accesses: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if documentIDs != nil {
|
|
||||||
var documentAccesses coredata.TrustCenterDocumentAccesses
|
|
||||||
if err := documentAccesses.BulkInsertDocumentAccesses(
|
|
||||||
ctx,
|
|
||||||
tx,
|
|
||||||
s.svc.scope,
|
|
||||||
accessID,
|
|
||||||
organizationID,
|
|
||||||
documentIDs,
|
|
||||||
coredata.TrustCenterDocumentAccessStatusGranted,
|
|
||||||
now,
|
|
||||||
); err != nil {
|
|
||||||
return fmt.Errorf("cannot create document accesses: %w", err)
|
|
||||||
}
|
|
||||||
if err := coredata.GrantByDocumentIDs(ctx, tx, s.svc.scope, accessID, documentIDs, now); err != nil {
|
|
||||||
return fmt.Errorf("cannot grant document accesses: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if reportIDs != nil {
|
|
||||||
var documentAccesses coredata.TrustCenterDocumentAccesses
|
|
||||||
if err := documentAccesses.BulkInsertReportAccesses(
|
|
||||||
ctx,
|
|
||||||
tx,
|
|
||||||
s.svc.scope,
|
|
||||||
accessID,
|
|
||||||
organizationID,
|
|
||||||
reportIDs,
|
|
||||||
coredata.TrustCenterDocumentAccessStatusGranted,
|
|
||||||
now,
|
|
||||||
); err != nil {
|
|
||||||
return fmt.Errorf("cannot create report accesses: %w", err)
|
|
||||||
}
|
|
||||||
if err := coredata.GrantByReportIDs(ctx, tx, s.svc.scope, accessID, reportIDs, now); err != nil {
|
|
||||||
return fmt.Errorf("cannot grant report accesses: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if trustCenterFileIDs != nil {
|
|
||||||
var documentAccesses coredata.TrustCenterDocumentAccesses
|
|
||||||
if err := documentAccesses.BulkInsertTrustCenterFileAccesses(
|
|
||||||
ctx,
|
|
||||||
tx,
|
|
||||||
s.svc.scope,
|
|
||||||
accessID,
|
|
||||||
organizationID,
|
|
||||||
trustCenterFileIDs,
|
|
||||||
coredata.TrustCenterDocumentAccessStatusGranted,
|
|
||||||
now,
|
|
||||||
); err != nil {
|
|
||||||
return fmt.Errorf("cannot create trust center file accesses: %w", err)
|
|
||||||
}
|
|
||||||
if err := coredata.GrantByTrustCenterFileIDs(ctx, tx, s.svc.scope, accessID, trustCenterFileIDs, now); err != nil {
|
|
||||||
return fmt.Errorf("cannot grant trust center file accesses: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s TrustCenterAccessService) sendAccessEmail(ctx context.Context, tx pg.Conn, access *coredata.TrustCenterAccess) error {
|
func (s TrustCenterAccessService) sendAccessEmail(ctx context.Context, tx pg.Conn, access *coredata.TrustCenterAccess) error {
|
||||||
accessToken, err := statelesstoken.NewToken(
|
accessToken, err := statelesstoken.NewToken(
|
||||||
s.svc.trustConfig.TokenSecret,
|
s.svc.trustConfig.TokenSecret,
|
||||||
|
|||||||
@@ -1664,19 +1664,19 @@ func (r *mutationResolver) UpdateTrustCenterAccess(ctx context.Context, input ty
|
|||||||
var documentAccesses []probo.UpdateTrustCenterDocumentAccessRequest
|
var documentAccesses []probo.UpdateTrustCenterDocumentAccessRequest
|
||||||
var reportAccesses []probo.UpdateTrustCenterDocumentAccessRequest
|
var reportAccesses []probo.UpdateTrustCenterDocumentAccessRequest
|
||||||
var fileAccesses []probo.UpdateTrustCenterDocumentAccessRequest
|
var fileAccesses []probo.UpdateTrustCenterDocumentAccessRequest
|
||||||
for _, documentAccess := range documentAccesses {
|
for _, documentAccess := range input.Documents {
|
||||||
documentAccesses = append(documentAccesses, probo.UpdateTrustCenterDocumentAccessRequest{
|
documentAccesses = append(documentAccesses, probo.UpdateTrustCenterDocumentAccessRequest{
|
||||||
ID: documentAccess.ID,
|
ID: documentAccess.ID,
|
||||||
Status: documentAccess.Status,
|
Status: documentAccess.Status,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
for _, reportAccess := range reportAccesses {
|
for _, reportAccess := range input.Reports {
|
||||||
reportAccesses = append(reportAccesses, probo.UpdateTrustCenterDocumentAccessRequest{
|
reportAccesses = append(reportAccesses, probo.UpdateTrustCenterDocumentAccessRequest{
|
||||||
ID: reportAccess.ID,
|
ID: reportAccess.ID,
|
||||||
Status: reportAccess.Status,
|
Status: reportAccess.Status,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
for _, fileAccess := range fileAccesses {
|
for _, fileAccess := range input.TrustCenterFiles {
|
||||||
fileAccesses = append(fileAccesses, probo.UpdateTrustCenterDocumentAccessRequest{
|
fileAccesses = append(fileAccesses, probo.UpdateTrustCenterDocumentAccessRequest{
|
||||||
ID: fileAccess.ID,
|
ID: fileAccess.ID,
|
||||||
Status: fileAccess.Status,
|
Status: fileAccess.Status,
|
||||||
|
|||||||
Reference in New Issue
Block a user