Change registry names

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-12-19 17:25:56 +01:00
parent dccd186eb7
commit cd13f9aa00
42 changed files with 5623 additions and 5610 deletions

View File

@@ -39,8 +39,8 @@ export const processingActivityNodeQuery = graphql`
transferSafeguards transferSafeguards
retentionPeriod retentionPeriod
securityMeasures securityMeasures
dataProtectionImpactAssessment dataProtectionImpactAssessmentNeeded
transferImpactAssessment transferImpactAssessmentNeeded
lastReviewDate lastReviewDate
nextReviewDate nextReviewDate
role role
@@ -58,7 +58,7 @@ export const processingActivityNodeQuery = graphql`
} }
} }
} }
dpia { dataProtectionImpactAssessment {
id id
description description
necessityAndProportionality necessityAndProportionality
@@ -68,7 +68,7 @@ export const processingActivityNodeQuery = graphql`
createdAt createdAt
updatedAt updatedAt
} }
tia { transferImpactAssessment {
id id
dataSubjects dataSubjects
legalMechanism legalMechanism
@@ -111,8 +111,8 @@ export const createProcessingActivityMutation = graphql`
transferSafeguards transferSafeguards
retentionPeriod retentionPeriod
securityMeasures securityMeasures
dataProtectionImpactAssessment dataProtectionImpactAssessmentNeeded
transferImpactAssessment transferImpactAssessmentNeeded
lastReviewDate lastReviewDate
nextReviewDate nextReviewDate
role role
@@ -154,8 +154,8 @@ export const updateProcessingActivityMutation = graphql`
transferSafeguards transferSafeguards
retentionPeriod retentionPeriod
securityMeasures securityMeasures
dataProtectionImpactAssessment dataProtectionImpactAssessmentNeeded
transferImpactAssessment transferImpactAssessmentNeeded
lastReviewDate lastReviewDate
nextReviewDate nextReviewDate
role role
@@ -242,8 +242,8 @@ export const useCreateProcessingActivity = (connectionId?: string) => {
transferSafeguards?: string; transferSafeguards?: string;
retentionPeriod?: string; retentionPeriod?: string;
securityMeasures?: string; securityMeasures?: string;
dataProtectionImpactAssessment?: string; dataProtectionImpactAssessmentNeeded?: string;
transferImpactAssessment?: string; transferImpactAssessmentNeeded?: string;
lastReviewDate?: string; lastReviewDate?: string;
nextReviewDate?: string; nextReviewDate?: string;
role: string; role: string;
@@ -274,8 +274,8 @@ export const useCreateProcessingActivity = (connectionId?: string) => {
transferSafeguards: input.transferSafeguards, transferSafeguards: input.transferSafeguards,
retentionPeriod: input.retentionPeriod, retentionPeriod: input.retentionPeriod,
securityMeasures: input.securityMeasures, securityMeasures: input.securityMeasures,
dataProtectionImpactAssessment: input.dataProtectionImpactAssessment, dataProtectionImpactAssessmentNeeded: input.dataProtectionImpactAssessmentNeeded,
transferImpactAssessment: input.transferImpactAssessment, transferImpactAssessmentNeeded: input.transferImpactAssessmentNeeded,
lastReviewDate: input.lastReviewDate, lastReviewDate: input.lastReviewDate,
nextReviewDate: input.nextReviewDate, nextReviewDate: input.nextReviewDate,
role: input.role, role: input.role,
@@ -307,8 +307,8 @@ export const useUpdateProcessingActivity = () => {
transferSafeguards?: string; transferSafeguards?: string;
retentionPeriod?: string; retentionPeriod?: string;
securityMeasures?: string; securityMeasures?: string;
dataProtectionImpactAssessment?: string; dataProtectionImpactAssessmentNeeded?: string;
transferImpactAssessment?: string; transferImpactAssessmentNeeded?: string;
lastReviewDate?: string | null; lastReviewDate?: string | null;
nextReviewDate?: string | null; nextReviewDate?: string | null;
role?: string; role?: string;
@@ -327,12 +327,12 @@ export const useUpdateProcessingActivity = () => {
}; };
}; };
export const createProcessingActivityDPIAMutation = graphql` export const createDataProtectionImpactAssessmentMutation = graphql`
mutation ProcessingActivityGraphCreateDPIAMutation( mutation ProcessingActivityGraphCreateDPIAMutation(
$input: CreateProcessingActivityDPIAInput! $input: CreateDataProtectionImpactAssessmentInput!
) { ) {
createProcessingActivityDPIA(input: $input) { createDataProtectionImpactAssessment(input: $input) {
processingActivityDpia { dataProtectionImpactAssessment {
id id
description description
necessityAndProportionality necessityAndProportionality
@@ -346,12 +346,12 @@ export const createProcessingActivityDPIAMutation = graphql`
} }
`; `;
export const updateProcessingActivityDPIAMutation = graphql` export const updateDataProtectionImpactAssessmentMutation = graphql`
mutation ProcessingActivityGraphUpdateDPIAMutation( mutation ProcessingActivityGraphUpdateDPIAMutation(
$input: UpdateProcessingActivityDPIAInput! $input: UpdateDataProtectionImpactAssessmentInput!
) { ) {
updateProcessingActivityDPIA(input: $input) { updateDataProtectionImpactAssessment(input: $input) {
processingActivityDpia { dataProtectionImpactAssessment {
id id
description description
necessityAndProportionality necessityAndProportionality
@@ -365,18 +365,18 @@ export const updateProcessingActivityDPIAMutation = graphql`
} }
`; `;
export const deleteProcessingActivityDPIAMutation = graphql` export const deleteDataProtectionImpactAssessmentMutation = graphql`
mutation ProcessingActivityGraphDeleteDPIAMutation( mutation ProcessingActivityGraphDeleteDPIAMutation(
$input: DeleteProcessingActivityDPIAInput! $input: DeleteDataProtectionImpactAssessmentInput!
) { ) {
deleteProcessingActivityDPIA(input: $input) { deleteDataProtectionImpactAssessment(input: $input) {
deletedProcessingActivityDpiaId deletedDataProtectionImpactAssessmentId
} }
} }
`; `;
export const useCreateProcessingActivityDPIA = () => { export const useCreateDataProtectionImpactAssessment = () => {
const [mutate] = useMutation(createProcessingActivityDPIAMutation); const [mutate] = useMutation(createDataProtectionImpactAssessmentMutation);
const { __ } = useTranslate(); const { __ } = useTranslate();
return (input: { return (input: {
@@ -399,8 +399,8 @@ export const useCreateProcessingActivityDPIA = () => {
}; };
}; };
export const useUpdateProcessingActivityDPIA = () => { export const useUpdateDataProtectionImpactAssessment = () => {
const [mutate] = useMutation(updateProcessingActivityDPIAMutation); const [mutate] = useMutation(updateDataProtectionImpactAssessmentMutation);
const { __ } = useTranslate(); const { __ } = useTranslate();
return (input: { return (input: {
@@ -423,12 +423,12 @@ export const useUpdateProcessingActivityDPIA = () => {
}; };
}; };
export const useDeleteProcessingActivityDPIA = ( export const useDeleteDataProtectionImpactAssessment = (
dpia: { id: string }, dpia: { id: string },
options?: { onSuccess?: () => void } options?: { onSuccess?: () => void }
) => { ) => {
const { __ } = useTranslate(); const { __ } = useTranslate();
const [mutate] = useMutationWithToasts(deleteProcessingActivityDPIAMutation, { const [mutate] = useMutationWithToasts(deleteDataProtectionImpactAssessmentMutation, {
successMessage: __("DPIA deleted successfully"), successMessage: __("DPIA deleted successfully"),
errorMessage: __("Failed to delete DPIA"), errorMessage: __("Failed to delete DPIA"),
}); });
@@ -440,7 +440,7 @@ export const useDeleteProcessingActivityDPIA = (
mutate({ mutate({
variables: { variables: {
input: { input: {
processingActivityDpiaId: dpia.id, dataProtectionImpactAssessmentId: dpia.id,
}, },
}, },
onSuccess: options?.onSuccess, onSuccess: options?.onSuccess,
@@ -454,12 +454,12 @@ export const useDeleteProcessingActivityDPIA = (
}; };
}; };
export const createProcessingActivityTIAMutation = graphql` export const createTransferImpactAssessmentMutation = graphql`
mutation ProcessingActivityGraphCreateTIAMutation( mutation ProcessingActivityGraphCreateTIAMutation(
$input: CreateProcessingActivityTIAInput! $input: CreateTransferImpactAssessmentInput!
) { ) {
createProcessingActivityTIA(input: $input) { createTransferImpactAssessment(input: $input) {
processingActivityTia { transferImpactAssessment {
id id
dataSubjects dataSubjects
legalMechanism legalMechanism
@@ -473,12 +473,12 @@ export const createProcessingActivityTIAMutation = graphql`
} }
`; `;
export const updateProcessingActivityTIAMutation = graphql` export const updateTransferImpactAssessmentMutation = graphql`
mutation ProcessingActivityGraphUpdateTIAMutation( mutation ProcessingActivityGraphUpdateTIAMutation(
$input: UpdateProcessingActivityTIAInput! $input: UpdateTransferImpactAssessmentInput!
) { ) {
updateProcessingActivityTIA(input: $input) { updateTransferImpactAssessment(input: $input) {
processingActivityTia { transferImpactAssessment {
id id
dataSubjects dataSubjects
legalMechanism legalMechanism
@@ -492,18 +492,18 @@ export const updateProcessingActivityTIAMutation = graphql`
} }
`; `;
export const deleteProcessingActivityTIAMutation = graphql` export const deleteTransferImpactAssessmentMutation = graphql`
mutation ProcessingActivityGraphDeleteTIAMutation( mutation ProcessingActivityGraphDeleteTIAMutation(
$input: DeleteProcessingActivityTIAInput! $input: DeleteTransferImpactAssessmentInput!
) { ) {
deleteProcessingActivityTIA(input: $input) { deleteTransferImpactAssessment(input: $input) {
deletedProcessingActivityTiaId deletedTransferImpactAssessmentId
} }
} }
`; `;
export const useCreateProcessingActivityTIA = () => { export const useCreateTransferImpactAssessment = () => {
const [mutate] = useMutation(createProcessingActivityTIAMutation); const [mutate] = useMutation(createTransferImpactAssessmentMutation);
const { __ } = useTranslate(); const { __ } = useTranslate();
return (input: { return (input: {
@@ -526,8 +526,8 @@ export const useCreateProcessingActivityTIA = () => {
}; };
}; };
export const useUpdateProcessingActivityTIA = () => { export const useUpdateTransferImpactAssessment = () => {
const [mutate] = useMutation(updateProcessingActivityTIAMutation); const [mutate] = useMutation(updateTransferImpactAssessmentMutation);
const { __ } = useTranslate(); const { __ } = useTranslate();
return (input: { return (input: {
@@ -550,12 +550,12 @@ export const useUpdateProcessingActivityTIA = () => {
}; };
}; };
export const useDeleteProcessingActivityTIA = ( export const useDeleteTransferImpactAssessment = (
tia: { id: string }, tia: { id: string },
options?: { onSuccess?: () => void } options?: { onSuccess?: () => void }
) => { ) => {
const { __ } = useTranslate(); const { __ } = useTranslate();
const [mutate] = useMutationWithToasts(deleteProcessingActivityTIAMutation, { const [mutate] = useMutationWithToasts(deleteTransferImpactAssessmentMutation, {
successMessage: __("TIA deleted successfully"), successMessage: __("TIA deleted successfully"),
errorMessage: __("Failed to delete TIA"), errorMessage: __("Failed to delete TIA"),
}); });
@@ -567,7 +567,7 @@ export const useDeleteProcessingActivityTIA = (
mutate({ mutate({
variables: { variables: {
input: { input: {
processingActivityTiaId: tia.id, transferImpactAssessmentId: tia.id,
}, },
}, },
onSuccess: options?.onSuccess, onSuccess: options?.onSuccess,

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<e12a9622852c453daa5e8d763054fe9b>> * @generated SignedSource<<93963be550c1cf4d590c0e7186b5d10f>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -9,28 +9,28 @@
// @ts-nocheck // @ts-nocheck
import { ConcreteRequest } from 'relay-runtime'; import { ConcreteRequest } from 'relay-runtime';
export type ProcessingActivityDPIAResidualRisk = "HIGH" | "LOW" | "MEDIUM"; export type DataProtectionImpactAssessmentResidualRisk = "HIGH" | "LOW" | "MEDIUM";
export type CreateProcessingActivityDPIAInput = { export type CreateDataProtectionImpactAssessmentInput = {
description?: string | null | undefined; description?: string | null | undefined;
mitigations?: string | null | undefined; mitigations?: string | null | undefined;
necessityAndProportionality?: string | null | undefined; necessityAndProportionality?: string | null | undefined;
potentialRisk?: string | null | undefined; potentialRisk?: string | null | undefined;
processingActivityId: string; processingActivityId: string;
residualRisk?: ProcessingActivityDPIAResidualRisk | null | undefined; residualRisk?: DataProtectionImpactAssessmentResidualRisk | null | undefined;
}; };
export type ProcessingActivityGraphCreateDPIAMutation$variables = { export type ProcessingActivityGraphCreateDPIAMutation$variables = {
input: CreateProcessingActivityDPIAInput; input: CreateDataProtectionImpactAssessmentInput;
}; };
export type ProcessingActivityGraphCreateDPIAMutation$data = { export type ProcessingActivityGraphCreateDPIAMutation$data = {
readonly createProcessingActivityDPIA: { readonly createDataProtectionImpactAssessment: {
readonly processingActivityDpia: { readonly dataProtectionImpactAssessment: {
readonly createdAt: any; readonly createdAt: any;
readonly description: string | null | undefined; readonly description: string | null | undefined;
readonly id: string; readonly id: string;
readonly mitigations: string | null | undefined; readonly mitigations: string | null | undefined;
readonly necessityAndProportionality: string | null | undefined; readonly necessityAndProportionality: string | null | undefined;
readonly potentialRisk: string | null | undefined; readonly potentialRisk: string | null | undefined;
readonly residualRisk: ProcessingActivityDPIAResidualRisk | null | undefined; readonly residualRisk: DataProtectionImpactAssessmentResidualRisk | null | undefined;
readonly updatedAt: any; readonly updatedAt: any;
}; };
}; };
@@ -58,17 +58,17 @@ v1 = [
"variableName": "input" "variableName": "input"
} }
], ],
"concreteType": "CreateProcessingActivityDPIAPayload", "concreteType": "CreateDataProtectionImpactAssessmentPayload",
"kind": "LinkedField", "kind": "LinkedField",
"name": "createProcessingActivityDPIA", "name": "createDataProtectionImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityDPIA", "concreteType": "DataProtectionImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "processingActivityDpia", "name": "dataProtectionImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
{ {
@@ -152,16 +152,16 @@ return {
"selections": (v1/*: any*/) "selections": (v1/*: any*/)
}, },
"params": { "params": {
"cacheID": "5bdea885aa22aedfe71b19bf6781be61", "cacheID": "71220501284ee2a9761f87d8909fcd00",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "ProcessingActivityGraphCreateDPIAMutation", "name": "ProcessingActivityGraphCreateDPIAMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation ProcessingActivityGraphCreateDPIAMutation(\n $input: CreateProcessingActivityDPIAInput!\n) {\n createProcessingActivityDPIA(input: $input) {\n processingActivityDpia {\n id\n description\n necessityAndProportionality\n potentialRisk\n mitigations\n residualRisk\n createdAt\n updatedAt\n }\n }\n}\n" "text": "mutation ProcessingActivityGraphCreateDPIAMutation(\n $input: CreateDataProtectionImpactAssessmentInput!\n) {\n createDataProtectionImpactAssessment(input: $input) {\n dataProtectionImpactAssessment {\n id\n description\n necessityAndProportionality\n potentialRisk\n mitigations\n residualRisk\n createdAt\n updatedAt\n }\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "2b7346936fb433d268f816e687ddc2a6"; (node as any).hash = "e7c379b7972e44c5c854cb4fd486f557";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<8ff0215134a49d15ba4b9153461f2fd8>> * @generated SignedSource<<a6c5ecf296ecfda1ac7b2ec2f315af26>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -17,7 +17,7 @@ export type ProcessingActivityTransferImpactAssessment = "NEEDED" | "NOT_NEEDED"
export type ProcessingActivityTransferSafeguard = "ADEQUACY_DECISION" | "BINDING_CORPORATE_RULES" | "CERTIFICATION_MECHANISMS" | "CODES_OF_CONDUCT" | "DEROGATIONS" | "STANDARD_CONTRACTUAL_CLAUSES"; export type ProcessingActivityTransferSafeguard = "ADEQUACY_DECISION" | "BINDING_CORPORATE_RULES" | "CERTIFICATION_MECHANISMS" | "CODES_OF_CONDUCT" | "DEROGATIONS" | "STANDARD_CONTRACTUAL_CLAUSES";
export type CreateProcessingActivityInput = { export type CreateProcessingActivityInput = {
consentEvidenceLink?: string | null | undefined; consentEvidenceLink?: string | null | undefined;
dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment; dataProtectionImpactAssessmentNeeded: ProcessingActivityDataProtectionImpactAssessment;
dataProtectionOfficerId?: string | null | undefined; dataProtectionOfficerId?: string | null | undefined;
dataSubjectCategory?: string | null | undefined; dataSubjectCategory?: string | null | undefined;
internationalTransfers: boolean; internationalTransfers: boolean;
@@ -34,7 +34,7 @@ export type CreateProcessingActivityInput = {
role: ProcessingActivityRole; role: ProcessingActivityRole;
securityMeasures?: string | null | undefined; securityMeasures?: string | null | undefined;
specialOrCriminalData: ProcessingActivitySpecialOrCriminalDatum; specialOrCriminalData: ProcessingActivitySpecialOrCriminalDatum;
transferImpactAssessment: ProcessingActivityTransferImpactAssessment; transferImpactAssessmentNeeded: ProcessingActivityTransferImpactAssessment;
transferSafeguards?: ProcessingActivityTransferSafeguard | null | undefined; transferSafeguards?: ProcessingActivityTransferSafeguard | null | undefined;
vendorIds?: ReadonlyArray<string> | null | undefined; vendorIds?: ReadonlyArray<string> | null | undefined;
}; };
@@ -48,7 +48,7 @@ export type ProcessingActivityGraphCreateMutation$data = {
readonly node: { readonly node: {
readonly consentEvidenceLink: string | null | undefined; readonly consentEvidenceLink: string | null | undefined;
readonly createdAt: any; readonly createdAt: any;
readonly dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment; readonly dataProtectionImpactAssessmentNeeded: ProcessingActivityDataProtectionImpactAssessment;
readonly dataProtectionOfficer: { readonly dataProtectionOfficer: {
readonly fullName: string; readonly fullName: string;
readonly id: string; readonly id: string;
@@ -68,7 +68,7 @@ export type ProcessingActivityGraphCreateMutation$data = {
readonly role: ProcessingActivityRole; readonly role: ProcessingActivityRole;
readonly securityMeasures: string | null | undefined; readonly securityMeasures: string | null | undefined;
readonly specialOrCriminalData: ProcessingActivitySpecialOrCriminalDatum; readonly specialOrCriminalData: ProcessingActivitySpecialOrCriminalDatum;
readonly transferImpactAssessment: ProcessingActivityTransferImpactAssessment; readonly transferImpactAssessmentNeeded: ProcessingActivityTransferImpactAssessment;
readonly transferSafeguards: ProcessingActivityTransferSafeguard | null | undefined; readonly transferSafeguards: ProcessingActivityTransferSafeguard | null | undefined;
readonly vendors: { readonly vendors: {
readonly edges: ReadonlyArray<{ readonly edges: ReadonlyArray<{
@@ -226,14 +226,14 @@ v5 = {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "kind": "ScalarField",
"name": "dataProtectionImpactAssessment", "name": "dataProtectionImpactAssessmentNeeded",
"storageKey": null "storageKey": null
}, },
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "kind": "ScalarField",
"name": "transferImpactAssessment", "name": "transferImpactAssessmentNeeded",
"storageKey": null "storageKey": null
}, },
{ {
@@ -403,16 +403,16 @@ return {
] ]
}, },
"params": { "params": {
"cacheID": "dbc6953ae60bda370ed5d730e3499eec", "cacheID": "00d5d2374c8b6933fd01544e67518c14",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "ProcessingActivityGraphCreateMutation", "name": "ProcessingActivityGraphCreateMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation ProcessingActivityGraphCreateMutation(\n $input: CreateProcessingActivityInput!\n) {\n createProcessingActivity(input: $input) {\n processingActivityEdge {\n node {\n id\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessment\n transferImpactAssessment\n lastReviewDate\n nextReviewDate\n role\n dataProtectionOfficer {\n id\n fullName\n }\n vendors(first: 50) {\n edges {\n node {\n id\n name\n websiteUrl\n }\n }\n }\n createdAt\n }\n }\n }\n}\n" "text": "mutation ProcessingActivityGraphCreateMutation(\n $input: CreateProcessingActivityInput!\n) {\n createProcessingActivity(input: $input) {\n processingActivityEdge {\n node {\n id\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessmentNeeded\n transferImpactAssessmentNeeded\n lastReviewDate\n nextReviewDate\n role\n dataProtectionOfficer {\n id\n fullName\n }\n vendors(first: 50) {\n edges {\n node {\n id\n name\n websiteUrl\n }\n }\n }\n createdAt\n }\n }\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "5bfa8b212d24257297f668a19c230d56"; (node as any).hash = "63271cfac482a18f5754df0af220e45d";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<3da7aca4f891de8057947eda276a017f>> * @generated SignedSource<<d3c71290624f4f1394422723aba9d130>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -9,7 +9,7 @@
// @ts-nocheck // @ts-nocheck
import { ConcreteRequest } from 'relay-runtime'; import { ConcreteRequest } from 'relay-runtime';
export type CreateProcessingActivityTIAInput = { export type CreateTransferImpactAssessmentInput = {
dataSubjects?: string | null | undefined; dataSubjects?: string | null | undefined;
legalMechanism?: string | null | undefined; legalMechanism?: string | null | undefined;
localLawRisk?: string | null | undefined; localLawRisk?: string | null | undefined;
@@ -18,11 +18,11 @@ export type CreateProcessingActivityTIAInput = {
transfer?: string | null | undefined; transfer?: string | null | undefined;
}; };
export type ProcessingActivityGraphCreateTIAMutation$variables = { export type ProcessingActivityGraphCreateTIAMutation$variables = {
input: CreateProcessingActivityTIAInput; input: CreateTransferImpactAssessmentInput;
}; };
export type ProcessingActivityGraphCreateTIAMutation$data = { export type ProcessingActivityGraphCreateTIAMutation$data = {
readonly createProcessingActivityTIA: { readonly createTransferImpactAssessment: {
readonly processingActivityTia: { readonly transferImpactAssessment: {
readonly createdAt: any; readonly createdAt: any;
readonly dataSubjects: string | null | undefined; readonly dataSubjects: string | null | undefined;
readonly id: string; readonly id: string;
@@ -57,17 +57,17 @@ v1 = [
"variableName": "input" "variableName": "input"
} }
], ],
"concreteType": "CreateProcessingActivityTIAPayload", "concreteType": "CreateTransferImpactAssessmentPayload",
"kind": "LinkedField", "kind": "LinkedField",
"name": "createProcessingActivityTIA", "name": "createTransferImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityTIA", "concreteType": "TransferImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "processingActivityTia", "name": "transferImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
{ {
@@ -151,16 +151,16 @@ return {
"selections": (v1/*: any*/) "selections": (v1/*: any*/)
}, },
"params": { "params": {
"cacheID": "f04e4606a7ac8b57f6155cf5e2fa3eaa", "cacheID": "70e30255cf15b77fd95a57d6ddd50c97",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "ProcessingActivityGraphCreateTIAMutation", "name": "ProcessingActivityGraphCreateTIAMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation ProcessingActivityGraphCreateTIAMutation(\n $input: CreateProcessingActivityTIAInput!\n) {\n createProcessingActivityTIA(input: $input) {\n processingActivityTia {\n id\n dataSubjects\n legalMechanism\n transfer\n localLawRisk\n supplementaryMeasures\n createdAt\n updatedAt\n }\n }\n}\n" "text": "mutation ProcessingActivityGraphCreateTIAMutation(\n $input: CreateTransferImpactAssessmentInput!\n) {\n createTransferImpactAssessment(input: $input) {\n transferImpactAssessment {\n id\n dataSubjects\n legalMechanism\n transfer\n localLawRisk\n supplementaryMeasures\n createdAt\n updatedAt\n }\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "e6315a3ae7db66c15850cfdae5927c03"; (node as any).hash = "43e9f83c7abb5d6f4d2a394c05940fbd";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<be806f3431452b1a7a4d4945c8eda79b>> * @generated SignedSource<<2893f55249b2548256bf21cf2eb434c3>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -9,15 +9,15 @@
// @ts-nocheck // @ts-nocheck
import { ConcreteRequest } from 'relay-runtime'; import { ConcreteRequest } from 'relay-runtime';
export type DeleteProcessingActivityDPIAInput = { export type DeleteDataProtectionImpactAssessmentInput = {
processingActivityDpiaId: string; dataProtectionImpactAssessmentId: string;
}; };
export type ProcessingActivityGraphDeleteDPIAMutation$variables = { export type ProcessingActivityGraphDeleteDPIAMutation$variables = {
input: DeleteProcessingActivityDPIAInput; input: DeleteDataProtectionImpactAssessmentInput;
}; };
export type ProcessingActivityGraphDeleteDPIAMutation$data = { export type ProcessingActivityGraphDeleteDPIAMutation$data = {
readonly deleteProcessingActivityDPIA: { readonly deleteDataProtectionImpactAssessment: {
readonly deletedProcessingActivityDpiaId: string; readonly deletedDataProtectionImpactAssessmentId: string;
}; };
}; };
export type ProcessingActivityGraphDeleteDPIAMutation = { export type ProcessingActivityGraphDeleteDPIAMutation = {
@@ -43,16 +43,16 @@ v1 = [
"variableName": "input" "variableName": "input"
} }
], ],
"concreteType": "DeleteProcessingActivityDPIAPayload", "concreteType": "DeleteDataProtectionImpactAssessmentPayload",
"kind": "LinkedField", "kind": "LinkedField",
"name": "deleteProcessingActivityDPIA", "name": "deleteDataProtectionImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "kind": "ScalarField",
"name": "deletedProcessingActivityDpiaId", "name": "deletedDataProtectionImpactAssessmentId",
"storageKey": null "storageKey": null
} }
], ],
@@ -77,16 +77,16 @@ return {
"selections": (v1/*: any*/) "selections": (v1/*: any*/)
}, },
"params": { "params": {
"cacheID": "0c27b0098614053d1a252f87e75f8a24", "cacheID": "6124ea356c08b9d7290082252a58c924",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "ProcessingActivityGraphDeleteDPIAMutation", "name": "ProcessingActivityGraphDeleteDPIAMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation ProcessingActivityGraphDeleteDPIAMutation(\n $input: DeleteProcessingActivityDPIAInput!\n) {\n deleteProcessingActivityDPIA(input: $input) {\n deletedProcessingActivityDpiaId\n }\n}\n" "text": "mutation ProcessingActivityGraphDeleteDPIAMutation(\n $input: DeleteDataProtectionImpactAssessmentInput!\n) {\n deleteDataProtectionImpactAssessment(input: $input) {\n deletedDataProtectionImpactAssessmentId\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "9fc639df8d4ca6c8856acd9326c92997"; (node as any).hash = "d68710e18cf1c83f60e57e5c25808cf6";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<0fa59581ecefda2fad4570e8e8c2f667>> * @generated SignedSource<<a9005a9448ac4c0cd8a5011d0a5a9665>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -9,15 +9,15 @@
// @ts-nocheck // @ts-nocheck
import { ConcreteRequest } from 'relay-runtime'; import { ConcreteRequest } from 'relay-runtime';
export type DeleteProcessingActivityTIAInput = { export type DeleteTransferImpactAssessmentInput = {
processingActivityTiaId: string; transferImpactAssessmentId: string;
}; };
export type ProcessingActivityGraphDeleteTIAMutation$variables = { export type ProcessingActivityGraphDeleteTIAMutation$variables = {
input: DeleteProcessingActivityTIAInput; input: DeleteTransferImpactAssessmentInput;
}; };
export type ProcessingActivityGraphDeleteTIAMutation$data = { export type ProcessingActivityGraphDeleteTIAMutation$data = {
readonly deleteProcessingActivityTIA: { readonly deleteTransferImpactAssessment: {
readonly deletedProcessingActivityTiaId: string; readonly deletedTransferImpactAssessmentId: string;
}; };
}; };
export type ProcessingActivityGraphDeleteTIAMutation = { export type ProcessingActivityGraphDeleteTIAMutation = {
@@ -43,16 +43,16 @@ v1 = [
"variableName": "input" "variableName": "input"
} }
], ],
"concreteType": "DeleteProcessingActivityTIAPayload", "concreteType": "DeleteTransferImpactAssessmentPayload",
"kind": "LinkedField", "kind": "LinkedField",
"name": "deleteProcessingActivityTIA", "name": "deleteTransferImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "kind": "ScalarField",
"name": "deletedProcessingActivityTiaId", "name": "deletedTransferImpactAssessmentId",
"storageKey": null "storageKey": null
} }
], ],
@@ -77,16 +77,16 @@ return {
"selections": (v1/*: any*/) "selections": (v1/*: any*/)
}, },
"params": { "params": {
"cacheID": "59c2e5775439e71d1c3546f094810389", "cacheID": "0b0fec997f13e35c70d2be48f3672546",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "ProcessingActivityGraphDeleteTIAMutation", "name": "ProcessingActivityGraphDeleteTIAMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation ProcessingActivityGraphDeleteTIAMutation(\n $input: DeleteProcessingActivityTIAInput!\n) {\n deleteProcessingActivityTIA(input: $input) {\n deletedProcessingActivityTiaId\n }\n}\n" "text": "mutation ProcessingActivityGraphDeleteTIAMutation(\n $input: DeleteTransferImpactAssessmentInput!\n) {\n deleteTransferImpactAssessment(input: $input) {\n deletedTransferImpactAssessmentId\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "358c23b60d25478b3a217ae16938caed"; (node as any).hash = "66a5fd8da4d9b70da0b39ee335cb9b6f";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<7fccb352f5aa5b305542aad0fd9fe406>> * @generated SignedSource<<4f7512912c29e784f2cd2a52fd5f81b4>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -338,7 +338,7 @@ return {
{ {
"alias": null, "alias": null,
"args": (v5/*: any*/), "args": (v5/*: any*/),
"concreteType": "ProcessingActivityDPIAConnection", "concreteType": "DataProtectionImpactAssessmentConnection",
"kind": "LinkedField", "kind": "LinkedField",
"name": "dataProtectionImpactAssessments", "name": "dataProtectionImpactAssessments",
"plural": false, "plural": false,
@@ -347,7 +347,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityDPIAEdge", "concreteType": "DataProtectionImpactAssessmentEdge",
"kind": "LinkedField", "kind": "LinkedField",
"name": "edges", "name": "edges",
"plural": true, "plural": true,
@@ -355,7 +355,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityDPIA", "concreteType": "DataProtectionImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "node", "name": "node",
"plural": false, "plural": false,
@@ -410,7 +410,7 @@ return {
{ {
"alias": null, "alias": null,
"args": (v5/*: any*/), "args": (v5/*: any*/),
"concreteType": "ProcessingActivityTIAConnection", "concreteType": "TransferImpactAssessmentConnection",
"kind": "LinkedField", "kind": "LinkedField",
"name": "transferImpactAssessments", "name": "transferImpactAssessments",
"plural": false, "plural": false,
@@ -419,7 +419,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityTIAEdge", "concreteType": "TransferImpactAssessmentEdge",
"kind": "LinkedField", "kind": "LinkedField",
"name": "edges", "name": "edges",
"plural": true, "plural": true,
@@ -427,7 +427,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityTIA", "concreteType": "TransferImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "node", "name": "node",
"plural": false, "plural": false,

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<65e5159bb6afd503a3dc92a2a87845ea>> * @generated SignedSource<<b7fdcb56199f74956910a6f14dbc6340>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -9,7 +9,7 @@
// @ts-nocheck // @ts-nocheck
import { ConcreteRequest } from 'relay-runtime'; import { ConcreteRequest } from 'relay-runtime';
export type ProcessingActivityDPIAResidualRisk = "HIGH" | "LOW" | "MEDIUM"; export type DataProtectionImpactAssessmentResidualRisk = "HIGH" | "LOW" | "MEDIUM";
export type ProcessingActivityDataProtectionImpactAssessment = "NEEDED" | "NOT_NEEDED"; export type ProcessingActivityDataProtectionImpactAssessment = "NEEDED" | "NOT_NEEDED";
export type ProcessingActivityLawfulBasis = "CONSENT" | "CONTRACTUAL_NECESSITY" | "LEGAL_OBLIGATION" | "LEGITIMATE_INTEREST" | "PUBLIC_TASK" | "VITAL_INTERESTS"; export type ProcessingActivityLawfulBasis = "CONSENT" | "CONTRACTUAL_NECESSITY" | "LEGAL_OBLIGATION" | "LEGITIMATE_INTEREST" | "PUBLIC_TASK" | "VITAL_INTERESTS";
export type ProcessingActivityRole = "CONTROLLER" | "PROCESSOR"; export type ProcessingActivityRole = "CONTROLLER" | "PROCESSOR";
@@ -24,22 +24,22 @@ export type ProcessingActivityGraphNodeQuery$data = {
readonly node: { readonly node: {
readonly consentEvidenceLink?: string | null | undefined; readonly consentEvidenceLink?: string | null | undefined;
readonly createdAt?: any; readonly createdAt?: any;
readonly dataProtectionImpactAssessment?: ProcessingActivityDataProtectionImpactAssessment; readonly dataProtectionImpactAssessment?: {
readonly dataProtectionOfficer?: {
readonly fullName: string;
readonly id: string;
} | null | undefined;
readonly dataSubjectCategory?: string | null | undefined;
readonly dpia?: {
readonly createdAt: any; readonly createdAt: any;
readonly description: string | null | undefined; readonly description: string | null | undefined;
readonly id: string; readonly id: string;
readonly mitigations: string | null | undefined; readonly mitigations: string | null | undefined;
readonly necessityAndProportionality: string | null | undefined; readonly necessityAndProportionality: string | null | undefined;
readonly potentialRisk: string | null | undefined; readonly potentialRisk: string | null | undefined;
readonly residualRisk: ProcessingActivityDPIAResidualRisk | null | undefined; readonly residualRisk: DataProtectionImpactAssessmentResidualRisk | null | undefined;
readonly updatedAt: any; readonly updatedAt: any;
} | null | undefined; } | null | undefined;
readonly dataProtectionImpactAssessmentNeeded?: ProcessingActivityDataProtectionImpactAssessment;
readonly dataProtectionOfficer?: {
readonly fullName: string;
readonly id: string;
} | null | undefined;
readonly dataSubjectCategory?: string | null | undefined;
readonly id?: string; readonly id?: string;
readonly internationalTransfers?: boolean; readonly internationalTransfers?: boolean;
readonly lastReviewDate?: any | null | undefined; readonly lastReviewDate?: any | null | undefined;
@@ -59,7 +59,7 @@ export type ProcessingActivityGraphNodeQuery$data = {
readonly securityMeasures?: string | null | undefined; readonly securityMeasures?: string | null | undefined;
readonly snapshotId?: string | null | undefined; readonly snapshotId?: string | null | undefined;
readonly specialOrCriminalData?: ProcessingActivitySpecialOrCriminalDatum; readonly specialOrCriminalData?: ProcessingActivitySpecialOrCriminalDatum;
readonly tia?: { readonly transferImpactAssessment?: {
readonly createdAt: any; readonly createdAt: any;
readonly dataSubjects: string | null | undefined; readonly dataSubjects: string | null | undefined;
readonly id: string; readonly id: string;
@@ -69,7 +69,7 @@ export type ProcessingActivityGraphNodeQuery$data = {
readonly transfer: string | null | undefined; readonly transfer: string | null | undefined;
readonly updatedAt: any; readonly updatedAt: any;
} | null | undefined; } | null | undefined;
readonly transferImpactAssessment?: ProcessingActivityTransferImpactAssessment; readonly transferImpactAssessmentNeeded?: ProcessingActivityTransferImpactAssessment;
readonly transferSafeguards?: ProcessingActivityTransferSafeguard | null | undefined; readonly transferSafeguards?: ProcessingActivityTransferSafeguard | null | undefined;
readonly updatedAt?: any; readonly updatedAt?: any;
readonly vendors?: { readonly vendors?: {
@@ -213,14 +213,14 @@ v17 = {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "kind": "ScalarField",
"name": "dataProtectionImpactAssessment", "name": "dataProtectionImpactAssessmentNeeded",
"storageKey": null "storageKey": null
}, },
v18 = { v18 = {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "kind": "ScalarField",
"name": "transferImpactAssessment", "name": "transferImpactAssessmentNeeded",
"storageKey": null "storageKey": null
}, },
v19 = { v19 = {
@@ -335,9 +335,9 @@ v25 = {
v26 = { v26 = {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityDPIA", "concreteType": "DataProtectionImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "dpia", "name": "dataProtectionImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
(v2/*: any*/), (v2/*: any*/),
@@ -384,9 +384,9 @@ v26 = {
v27 = { v27 = {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityTIA", "concreteType": "TransferImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "tia", "name": "transferImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
(v2/*: any*/), (v2/*: any*/),
@@ -560,16 +560,16 @@ return {
] ]
}, },
"params": { "params": {
"cacheID": "8584062347b5ee761ed590f6019926be", "cacheID": "8a92ed21a8b24d93c81ceba4b62a0911",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "ProcessingActivityGraphNodeQuery", "name": "ProcessingActivityGraphNodeQuery",
"operationKind": "query", "operationKind": "query",
"text": "query ProcessingActivityGraphNodeQuery(\n $processingActivityId: ID!\n) {\n node(id: $processingActivityId) {\n __typename\n ... on ProcessingActivity {\n id\n snapshotId\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessment\n transferImpactAssessment\n lastReviewDate\n nextReviewDate\n role\n dataProtectionOfficer {\n id\n fullName\n }\n vendors(first: 50) {\n edges {\n node {\n id\n name\n websiteUrl\n category\n }\n }\n }\n dpia {\n id\n description\n necessityAndProportionality\n potentialRisk\n mitigations\n residualRisk\n createdAt\n updatedAt\n }\n tia {\n id\n dataSubjects\n legalMechanism\n transfer\n localLawRisk\n supplementaryMeasures\n createdAt\n updatedAt\n }\n organization {\n id\n name\n }\n createdAt\n updatedAt\n }\n id\n }\n}\n" "text": "query ProcessingActivityGraphNodeQuery(\n $processingActivityId: ID!\n) {\n node(id: $processingActivityId) {\n __typename\n ... on ProcessingActivity {\n id\n snapshotId\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessmentNeeded\n transferImpactAssessmentNeeded\n lastReviewDate\n nextReviewDate\n role\n dataProtectionOfficer {\n id\n fullName\n }\n vendors(first: 50) {\n edges {\n node {\n id\n name\n websiteUrl\n category\n }\n }\n }\n dataProtectionImpactAssessment {\n id\n description\n necessityAndProportionality\n potentialRisk\n mitigations\n residualRisk\n createdAt\n updatedAt\n }\n transferImpactAssessment {\n id\n dataSubjects\n legalMechanism\n transfer\n localLawRisk\n supplementaryMeasures\n createdAt\n updatedAt\n }\n organization {\n id\n name\n }\n createdAt\n updatedAt\n }\n id\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "317a9dae11ec982599b6efd6ef6e3187"; (node as any).hash = "3fe20997f675ea566fe083e672bc82a3";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<17c0715666a53d67a24e1c5c860c182d>> * @generated SignedSource<<19aee9e171835b912cf2e241f2d4c984>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -9,28 +9,28 @@
// @ts-nocheck // @ts-nocheck
import { ConcreteRequest } from 'relay-runtime'; import { ConcreteRequest } from 'relay-runtime';
export type ProcessingActivityDPIAResidualRisk = "HIGH" | "LOW" | "MEDIUM"; export type DataProtectionImpactAssessmentResidualRisk = "HIGH" | "LOW" | "MEDIUM";
export type UpdateProcessingActivityDPIAInput = { export type UpdateDataProtectionImpactAssessmentInput = {
description?: string | null | undefined; description?: string | null | undefined;
id: string; id: string;
mitigations?: string | null | undefined; mitigations?: string | null | undefined;
necessityAndProportionality?: string | null | undefined; necessityAndProportionality?: string | null | undefined;
potentialRisk?: string | null | undefined; potentialRisk?: string | null | undefined;
residualRisk?: ProcessingActivityDPIAResidualRisk | null | undefined; residualRisk?: DataProtectionImpactAssessmentResidualRisk | null | undefined;
}; };
export type ProcessingActivityGraphUpdateDPIAMutation$variables = { export type ProcessingActivityGraphUpdateDPIAMutation$variables = {
input: UpdateProcessingActivityDPIAInput; input: UpdateDataProtectionImpactAssessmentInput;
}; };
export type ProcessingActivityGraphUpdateDPIAMutation$data = { export type ProcessingActivityGraphUpdateDPIAMutation$data = {
readonly updateProcessingActivityDPIA: { readonly updateDataProtectionImpactAssessment: {
readonly processingActivityDpia: { readonly dataProtectionImpactAssessment: {
readonly createdAt: any; readonly createdAt: any;
readonly description: string | null | undefined; readonly description: string | null | undefined;
readonly id: string; readonly id: string;
readonly mitigations: string | null | undefined; readonly mitigations: string | null | undefined;
readonly necessityAndProportionality: string | null | undefined; readonly necessityAndProportionality: string | null | undefined;
readonly potentialRisk: string | null | undefined; readonly potentialRisk: string | null | undefined;
readonly residualRisk: ProcessingActivityDPIAResidualRisk | null | undefined; readonly residualRisk: DataProtectionImpactAssessmentResidualRisk | null | undefined;
readonly updatedAt: any; readonly updatedAt: any;
}; };
}; };
@@ -58,17 +58,17 @@ v1 = [
"variableName": "input" "variableName": "input"
} }
], ],
"concreteType": "UpdateProcessingActivityDPIAPayload", "concreteType": "UpdateDataProtectionImpactAssessmentPayload",
"kind": "LinkedField", "kind": "LinkedField",
"name": "updateProcessingActivityDPIA", "name": "updateDataProtectionImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityDPIA", "concreteType": "DataProtectionImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "processingActivityDpia", "name": "dataProtectionImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
{ {
@@ -152,16 +152,16 @@ return {
"selections": (v1/*: any*/) "selections": (v1/*: any*/)
}, },
"params": { "params": {
"cacheID": "7b73761c8025d6f30a2fe6b9fdafff49", "cacheID": "8209c5674c73064b76e46b67c017b5fa",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "ProcessingActivityGraphUpdateDPIAMutation", "name": "ProcessingActivityGraphUpdateDPIAMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation ProcessingActivityGraphUpdateDPIAMutation(\n $input: UpdateProcessingActivityDPIAInput!\n) {\n updateProcessingActivityDPIA(input: $input) {\n processingActivityDpia {\n id\n description\n necessityAndProportionality\n potentialRisk\n mitigations\n residualRisk\n createdAt\n updatedAt\n }\n }\n}\n" "text": "mutation ProcessingActivityGraphUpdateDPIAMutation(\n $input: UpdateDataProtectionImpactAssessmentInput!\n) {\n updateDataProtectionImpactAssessment(input: $input) {\n dataProtectionImpactAssessment {\n id\n description\n necessityAndProportionality\n potentialRisk\n mitigations\n residualRisk\n createdAt\n updatedAt\n }\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "2a4a592df6f98848a7191288ceec2f18"; (node as any).hash = "9b03511f95fd87aafd075b66fd82184c";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<b9ced8fbcfaaca6c125c105d90201bd5>> * @generated SignedSource<<6eabaaaf48f838135b6b55f35a591b60>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -17,7 +17,7 @@ export type ProcessingActivityTransferImpactAssessment = "NEEDED" | "NOT_NEEDED"
export type ProcessingActivityTransferSafeguard = "ADEQUACY_DECISION" | "BINDING_CORPORATE_RULES" | "CERTIFICATION_MECHANISMS" | "CODES_OF_CONDUCT" | "DEROGATIONS" | "STANDARD_CONTRACTUAL_CLAUSES"; export type ProcessingActivityTransferSafeguard = "ADEQUACY_DECISION" | "BINDING_CORPORATE_RULES" | "CERTIFICATION_MECHANISMS" | "CODES_OF_CONDUCT" | "DEROGATIONS" | "STANDARD_CONTRACTUAL_CLAUSES";
export type UpdateProcessingActivityInput = { export type UpdateProcessingActivityInput = {
consentEvidenceLink?: string | null | undefined; consentEvidenceLink?: string | null | undefined;
dataProtectionImpactAssessment?: ProcessingActivityDataProtectionImpactAssessment | null | undefined; dataProtectionImpactAssessmentNeeded?: ProcessingActivityDataProtectionImpactAssessment | null | undefined;
dataProtectionOfficerId?: string | null | undefined; dataProtectionOfficerId?: string | null | undefined;
dataSubjectCategory?: string | null | undefined; dataSubjectCategory?: string | null | undefined;
id: string; id: string;
@@ -34,7 +34,7 @@ export type UpdateProcessingActivityInput = {
role?: ProcessingActivityRole | null | undefined; role?: ProcessingActivityRole | null | undefined;
securityMeasures?: string | null | undefined; securityMeasures?: string | null | undefined;
specialOrCriminalData?: ProcessingActivitySpecialOrCriminalDatum | null | undefined; specialOrCriminalData?: ProcessingActivitySpecialOrCriminalDatum | null | undefined;
transferImpactAssessment?: ProcessingActivityTransferImpactAssessment | null | undefined; transferImpactAssessmentNeeded?: ProcessingActivityTransferImpactAssessment | null | undefined;
transferSafeguards?: ProcessingActivityTransferSafeguard | null | undefined; transferSafeguards?: ProcessingActivityTransferSafeguard | null | undefined;
vendorIds?: ReadonlyArray<string> | null | undefined; vendorIds?: ReadonlyArray<string> | null | undefined;
}; };
@@ -45,7 +45,7 @@ export type ProcessingActivityGraphUpdateMutation$data = {
readonly updateProcessingActivity: { readonly updateProcessingActivity: {
readonly processingActivity: { readonly processingActivity: {
readonly consentEvidenceLink: string | null | undefined; readonly consentEvidenceLink: string | null | undefined;
readonly dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment; readonly dataProtectionImpactAssessmentNeeded: ProcessingActivityDataProtectionImpactAssessment;
readonly dataProtectionOfficer: { readonly dataProtectionOfficer: {
readonly fullName: string; readonly fullName: string;
readonly id: string; readonly id: string;
@@ -65,7 +65,7 @@ export type ProcessingActivityGraphUpdateMutation$data = {
readonly role: ProcessingActivityRole; readonly role: ProcessingActivityRole;
readonly securityMeasures: string | null | undefined; readonly securityMeasures: string | null | undefined;
readonly specialOrCriminalData: ProcessingActivitySpecialOrCriminalDatum; readonly specialOrCriminalData: ProcessingActivitySpecialOrCriminalDatum;
readonly transferImpactAssessment: ProcessingActivityTransferImpactAssessment; readonly transferImpactAssessmentNeeded: ProcessingActivityTransferImpactAssessment;
readonly transferSafeguards: ProcessingActivityTransferSafeguard | null | undefined; readonly transferSafeguards: ProcessingActivityTransferSafeguard | null | undefined;
readonly updatedAt: any; readonly updatedAt: any;
readonly vendors: { readonly vendors: {
@@ -220,14 +220,14 @@ v3 = [
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "kind": "ScalarField",
"name": "dataProtectionImpactAssessment", "name": "dataProtectionImpactAssessmentNeeded",
"storageKey": null "storageKey": null
}, },
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "kind": "ScalarField",
"name": "transferImpactAssessment", "name": "transferImpactAssessmentNeeded",
"storageKey": null "storageKey": null
}, },
{ {
@@ -350,16 +350,16 @@ return {
"selections": (v3/*: any*/) "selections": (v3/*: any*/)
}, },
"params": { "params": {
"cacheID": "c67a2cee083821566c9379f74360c489", "cacheID": "9df89e1a1b2eb8ee2b031a21c42dbea5",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "ProcessingActivityGraphUpdateMutation", "name": "ProcessingActivityGraphUpdateMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation ProcessingActivityGraphUpdateMutation(\n $input: UpdateProcessingActivityInput!\n) {\n updateProcessingActivity(input: $input) {\n processingActivity {\n id\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessment\n transferImpactAssessment\n lastReviewDate\n nextReviewDate\n role\n dataProtectionOfficer {\n id\n fullName\n }\n vendors(first: 50) {\n edges {\n node {\n id\n name\n websiteUrl\n }\n }\n }\n updatedAt\n }\n }\n}\n" "text": "mutation ProcessingActivityGraphUpdateMutation(\n $input: UpdateProcessingActivityInput!\n) {\n updateProcessingActivity(input: $input) {\n processingActivity {\n id\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessmentNeeded\n transferImpactAssessmentNeeded\n lastReviewDate\n nextReviewDate\n role\n dataProtectionOfficer {\n id\n fullName\n }\n vendors(first: 50) {\n edges {\n node {\n id\n name\n websiteUrl\n }\n }\n }\n updatedAt\n }\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "31dcb6c411d7ffd7a63eb9941f4f2609"; (node as any).hash = "b290e0aeeb96b3ca94e0002b50830611";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<a4fc26df235ee47b3cf31c1dc4ffb2c3>> * @generated SignedSource<<65e2c220baf8f50b789a91479ff1c328>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -9,7 +9,7 @@
// @ts-nocheck // @ts-nocheck
import { ConcreteRequest } from 'relay-runtime'; import { ConcreteRequest } from 'relay-runtime';
export type UpdateProcessingActivityTIAInput = { export type UpdateTransferImpactAssessmentInput = {
dataSubjects?: string | null | undefined; dataSubjects?: string | null | undefined;
id: string; id: string;
legalMechanism?: string | null | undefined; legalMechanism?: string | null | undefined;
@@ -18,11 +18,11 @@ export type UpdateProcessingActivityTIAInput = {
transfer?: string | null | undefined; transfer?: string | null | undefined;
}; };
export type ProcessingActivityGraphUpdateTIAMutation$variables = { export type ProcessingActivityGraphUpdateTIAMutation$variables = {
input: UpdateProcessingActivityTIAInput; input: UpdateTransferImpactAssessmentInput;
}; };
export type ProcessingActivityGraphUpdateTIAMutation$data = { export type ProcessingActivityGraphUpdateTIAMutation$data = {
readonly updateProcessingActivityTIA: { readonly updateTransferImpactAssessment: {
readonly processingActivityTia: { readonly transferImpactAssessment: {
readonly createdAt: any; readonly createdAt: any;
readonly dataSubjects: string | null | undefined; readonly dataSubjects: string | null | undefined;
readonly id: string; readonly id: string;
@@ -57,17 +57,17 @@ v1 = [
"variableName": "input" "variableName": "input"
} }
], ],
"concreteType": "UpdateProcessingActivityTIAPayload", "concreteType": "UpdateTransferImpactAssessmentPayload",
"kind": "LinkedField", "kind": "LinkedField",
"name": "updateProcessingActivityTIA", "name": "updateTransferImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityTIA", "concreteType": "TransferImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "processingActivityTia", "name": "transferImpactAssessment",
"plural": false, "plural": false,
"selections": [ "selections": [
{ {
@@ -151,16 +151,16 @@ return {
"selections": (v1/*: any*/) "selections": (v1/*: any*/)
}, },
"params": { "params": {
"cacheID": "d596534ba9782fe47b15cd56e008db42", "cacheID": "bf5b4de5fd040e63ff654b41532ba6fb",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "ProcessingActivityGraphUpdateTIAMutation", "name": "ProcessingActivityGraphUpdateTIAMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation ProcessingActivityGraphUpdateTIAMutation(\n $input: UpdateProcessingActivityTIAInput!\n) {\n updateProcessingActivityTIA(input: $input) {\n processingActivityTia {\n id\n dataSubjects\n legalMechanism\n transfer\n localLawRisk\n supplementaryMeasures\n createdAt\n updatedAt\n }\n }\n}\n" "text": "mutation ProcessingActivityGraphUpdateTIAMutation(\n $input: UpdateTransferImpactAssessmentInput!\n) {\n updateTransferImpactAssessment(input: $input) {\n transferImpactAssessment {\n id\n dataSubjects\n legalMechanism\n transfer\n localLawRisk\n supplementaryMeasures\n createdAt\n updatedAt\n }\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "a669ab652dd3687dff4069814b3ea0e8"; (node as any).hash = "2a94ca65e0c62ac9947027dfb60cc916";
export default node; export default node;

View File

@@ -7,12 +7,12 @@ import {
processingActivityNodeQuery, processingActivityNodeQuery,
useDeleteProcessingActivity, useDeleteProcessingActivity,
useUpdateProcessingActivity, useUpdateProcessingActivity,
useCreateProcessingActivityDPIA, useCreateDataProtectionImpactAssessment,
useUpdateProcessingActivityDPIA, useUpdateDataProtectionImpactAssessment,
useDeleteProcessingActivityDPIA, useDeleteDataProtectionImpactAssessment,
useCreateProcessingActivityTIA, useCreateTransferImpactAssessment,
useUpdateProcessingActivityTIA, useUpdateTransferImpactAssessment,
useDeleteProcessingActivityTIA, useDeleteTransferImpactAssessment,
ProcessingActivitiesConnectionKey, ProcessingActivitiesConnectionKey,
type ProcessingActivityDPIAResidualRisk, type ProcessingActivityDPIAResidualRisk,
} from "../../../hooks/graph/ProcessingActivityGraph"; } from "../../../hooks/graph/ProcessingActivityGraph";
@@ -71,8 +71,8 @@ const updateProcessingActivitySchema = z.object({
transferSafeguards: z.string(), transferSafeguards: z.string(),
retentionPeriod: z.string().optional(), retentionPeriod: z.string().optional(),
securityMeasures: z.string().optional(), securityMeasures: z.string().optional(),
dataProtectionImpactAssessment: z.enum(["NEEDED", "NOT_NEEDED"] as const), dataProtectionImpactAssessmentNeeded: z.enum(["NEEDED", "NOT_NEEDED"] as const),
transferImpactAssessment: z.enum(["NEEDED", "NOT_NEEDED"] as const), transferImpactAssessmentNeeded: z.enum(["NEEDED", "NOT_NEEDED"] as const),
lastReviewDate: z.string().optional(), lastReviewDate: z.string().optional(),
nextReviewDate: z.string().optional(), nextReviewDate: z.string().optional(),
role: z.enum(["CONTROLLER", "PROCESSOR"] as const), role: z.enum(["CONTROLLER", "PROCESSOR"] as const),
@@ -104,12 +104,11 @@ export default function ProcessingActivityDetailsPage(props: Props) {
const [activeTab, setActiveTab] = useState<"overview" | "dpia" | "tia">(getInitialTab); const [activeTab, setActiveTab] = useState<"overview" | "dpia" | "tia">(getInitialTab);
const [dpiaSubmitting, setDpiaSubmitting] = useState(false); const [dpiaSubmitting, setDpiaSubmitting] = useState(false);
const [tiaSubmitting, setTiaSubmitting] = useState(false); const [tiaSubmitting, setTiaSubmitting] = useState(false);
const [showDpiaForm, setShowDpiaForm] = useState(Boolean(activity?.dpia?.id)); const [showDpiaForm, setShowDpiaForm] = useState(Boolean(activity?.dataProtectionImpactAssessment?.id));
const [showTiaForm, setShowTiaForm] = useState(Boolean(activity?.tia?.id)); const [showTiaForm, setShowTiaForm] = useState(Boolean(activity?.transferImpactAssessment?.id));
const [dpiaDeleted, setDpiaDeleted] = useState(false); const [dpiaDeleted, setDpiaDeleted] = useState(false);
const [tiaDeleted, setTiaDeleted] = useState(false); const [tiaDeleted, setTiaDeleted] = useState(false);
// Update URL hash when tab changes
useEffect(() => { useEffect(() => {
window.location.hash = activeTab === "overview" ? "" : activeTab; window.location.hash = activeTab === "overview" ? "" : activeTab;
}, [activeTab]); }, [activeTab]);
@@ -117,10 +116,10 @@ export default function ProcessingActivityDetailsPage(props: Props) {
validateSnapshotConsistency(activity, snapshotId); validateSnapshotConsistency(activity, snapshotId);
const updateActivity = useUpdateProcessingActivity(); const updateActivity = useUpdateProcessingActivity();
const createDPIA = useCreateProcessingActivityDPIA(); const createDPIA = useCreateDataProtectionImpactAssessment();
const updateDPIA = useUpdateProcessingActivityDPIA(); const updateDPIA = useUpdateDataProtectionImpactAssessment();
const deleteDPIA = useDeleteProcessingActivityDPIA( const deleteDPIA = useDeleteDataProtectionImpactAssessment(
{ id: activity?.dpia?.id || "" }, { id: activity?.dataProtectionImpactAssessment?.id || "" },
{ {
onSuccess: () => { onSuccess: () => {
setDpiaDeleted(true); setDpiaDeleted(true);
@@ -135,10 +134,10 @@ export default function ProcessingActivityDetailsPage(props: Props) {
}, },
} }
); );
const createTIA = useCreateProcessingActivityTIA(); const createTIA = useCreateTransferImpactAssessment();
const updateTIA = useUpdateProcessingActivityTIA(); const updateTIA = useUpdateTransferImpactAssessment();
const deleteTIA = useDeleteProcessingActivityTIA( const deleteTIA = useDeleteTransferImpactAssessment(
{ id: activity?.tia?.id || "" }, { id: activity?.transferImpactAssessment?.id || "" },
{ {
onSuccess: () => { onSuccess: () => {
setTiaDeleted(true); setTiaDeleted(true);
@@ -182,8 +181,8 @@ export default function ProcessingActivityDetailsPage(props: Props) {
transferSafeguards: activity.transferSafeguards || "__NONE__", transferSafeguards: activity.transferSafeguards || "__NONE__",
retentionPeriod: activity.retentionPeriod || "", retentionPeriod: activity.retentionPeriod || "",
securityMeasures: activity.securityMeasures || "", securityMeasures: activity.securityMeasures || "",
dataProtectionImpactAssessment: activity.dataProtectionImpactAssessment || "NOT_NEEDED" as const, dataProtectionImpactAssessmentNeeded: activity.dataProtectionImpactAssessmentNeeded || "NOT_NEEDED" as const,
transferImpactAssessment: activity.transferImpactAssessment || "NOT_NEEDED" as const, transferImpactAssessmentNeeded: activity.transferImpactAssessmentNeeded || "NOT_NEEDED" as const,
lastReviewDate: toDateInput(activity.lastReviewDate), lastReviewDate: toDateInput(activity.lastReviewDate),
nextReviewDate: toDateInput(activity.nextReviewDate), nextReviewDate: toDateInput(activity.nextReviewDate),
role: activity.role || "CONTROLLER" as const, role: activity.role || "CONTROLLER" as const,
@@ -195,21 +194,21 @@ export default function ProcessingActivityDetailsPage(props: Props) {
const dpiaForm = useForm({ const dpiaForm = useForm({
defaultValues: { defaultValues: {
description: activity?.dpia?.description || "", description: activity?.dataProtectionImpactAssessment?.description || "",
necessityAndProportionality: activity?.dpia?.necessityAndProportionality || "", necessityAndProportionality: activity?.dataProtectionImpactAssessment?.necessityAndProportionality || "",
potentialRisk: activity?.dpia?.potentialRisk || "", potentialRisk: activity?.dataProtectionImpactAssessment?.potentialRisk || "",
mitigations: activity?.dpia?.mitigations || "", mitigations: activity?.dataProtectionImpactAssessment?.mitigations || "",
residualRisk: (activity?.dpia?.residualRisk || "") as ProcessingActivityDPIAResidualRisk | "", residualRisk: (activity?.dataProtectionImpactAssessment?.residualRisk || "") as ProcessingActivityDPIAResidualRisk | "",
}, },
}); });
const tiaForm = useForm({ const tiaForm = useForm({
defaultValues: { defaultValues: {
dataSubjects: activity?.tia?.dataSubjects || "", dataSubjects: activity?.transferImpactAssessment?.dataSubjects || "",
legalMechanism: activity?.tia?.legalMechanism || "", legalMechanism: activity?.transferImpactAssessment?.legalMechanism || "",
transfer: activity?.tia?.transfer || "", transfer: activity?.transferImpactAssessment?.transfer || "",
localLawRisk: activity?.tia?.localLawRisk || "", localLawRisk: activity?.transferImpactAssessment?.localLawRisk || "",
supplementaryMeasures: activity?.tia?.supplementaryMeasures || "", supplementaryMeasures: activity?.transferImpactAssessment?.supplementaryMeasures || "",
}, },
}); });
@@ -230,8 +229,8 @@ export default function ProcessingActivityDetailsPage(props: Props) {
transferSafeguards: formData.transferSafeguards === "__NONE__" ? undefined : formData.transferSafeguards || undefined, transferSafeguards: formData.transferSafeguards === "__NONE__" ? undefined : formData.transferSafeguards || undefined,
retentionPeriod: formData.retentionPeriod || undefined, retentionPeriod: formData.retentionPeriod || undefined,
securityMeasures: formData.securityMeasures || undefined, securityMeasures: formData.securityMeasures || undefined,
dataProtectionImpactAssessment: formData.dataProtectionImpactAssessment || undefined, dataProtectionImpactAssessmentNeeded: formData.dataProtectionImpactAssessmentNeeded || undefined,
transferImpactAssessment: formData.transferImpactAssessment || undefined, transferImpactAssessmentNeeded: formData.transferImpactAssessmentNeeded || undefined,
lastReviewDate: formatDatetime(formData.lastReviewDate) ?? null, lastReviewDate: formatDatetime(formData.lastReviewDate) ?? null,
nextReviewDate: formatDatetime(formData.nextReviewDate) ?? null, nextReviewDate: formatDatetime(formData.nextReviewDate) ?? null,
role: formData.role, role: formData.role,
@@ -256,11 +255,11 @@ export default function ProcessingActivityDetailsPage(props: Props) {
const onDPIASubmit = dpiaForm.handleSubmit(async (formData) => { const onDPIASubmit = dpiaForm.handleSubmit(async (formData) => {
setDpiaSubmitting(true); setDpiaSubmitting(true);
try { try {
const isCreating = !activity?.dpia?.id || dpiaDeleted; const isCreating = !activity?.dataProtectionImpactAssessment?.id || dpiaDeleted;
if (!isCreating) { if (!isCreating) {
// Update existing DPIA // Update existing DPIA
await updateDPIA({ await updateDPIA({
id: activity.dpia!.id, id: activity.dataProtectionImpactAssessment!.id,
description: formData.description || undefined, description: formData.description || undefined,
necessityAndProportionality: formData.necessityAndProportionality || undefined, necessityAndProportionality: formData.necessityAndProportionality || undefined,
potentialRisk: formData.potentialRisk || undefined, potentialRisk: formData.potentialRisk || undefined,
@@ -303,11 +302,11 @@ export default function ProcessingActivityDetailsPage(props: Props) {
const onTIASubmit = tiaForm.handleSubmit(async (formData) => { const onTIASubmit = tiaForm.handleSubmit(async (formData) => {
setTiaSubmitting(true); setTiaSubmitting(true);
try { try {
const isCreating = !activity?.tia?.id || tiaDeleted; const isCreating = !activity?.transferImpactAssessment?.id || tiaDeleted;
if (!isCreating) { if (!isCreating) {
// Update existing TIA // Update existing TIA
await updateTIA({ await updateTIA({
id: activity.tia!.id, id: activity.transferImpactAssessment!.id,
dataSubjects: formData.dataSubjects || undefined, dataSubjects: formData.dataSubjects || undefined,
legalMechanism: formData.legalMechanism || undefined, legalMechanism: formData.legalMechanism || undefined,
transfer: formData.transfer || undefined, transfer: formData.transfer || undefined,
@@ -607,13 +606,13 @@ export default function ProcessingActivityDetailsPage(props: Props) {
</div> </div>
<div> <div>
<Label htmlFor="dataProtectionImpactAssessment">{__("Data Protection Impact Assessment")} *</Label> <Label htmlFor="dataProtectionImpactAssessmentNeeded">{__("Data Protection Impact Assessment")} *</Label>
<Controller <Controller
control={control} control={control}
name="dataProtectionImpactAssessment" name="dataProtectionImpactAssessmentNeeded"
render={({ field }) => ( render={({ field }) => (
<Select <Select
id="dataProtectionImpactAssessment" id="dataProtectionImpactAssessmentNeeded"
placeholder={__("Is DPIA needed?")} placeholder={__("Is DPIA needed?")}
onValueChange={field.onChange} onValueChange={field.onChange}
value={field.value} value={field.value}
@@ -624,19 +623,19 @@ export default function ProcessingActivityDetailsPage(props: Props) {
</Select> </Select>
)} )}
/> />
{formState.errors.dataProtectionImpactAssessment && ( {formState.errors.dataProtectionImpactAssessmentNeeded && (
<p className="text-sm text-txt-danger mt-1">{formState.errors.dataProtectionImpactAssessment.message}</p> <p className="text-sm text-txt-danger mt-1">{formState.errors.dataProtectionImpactAssessmentNeeded.message}</p>
)} )}
</div> </div>
<div> <div>
<Label htmlFor="transferImpactAssessment">{__("Transfer Impact Assessment")} *</Label> <Label htmlFor="transferImpactAssessmentNeeded">{__("Transfer Impact Assessment")} *</Label>
<Controller <Controller
control={control} control={control}
name="transferImpactAssessment" name="transferImpactAssessmentNeeded"
render={({ field }) => ( render={({ field }) => (
<Select <Select
id="transferImpactAssessment" id="transferImpactAssessmentNeeded"
placeholder={__("Is TIA needed?")} placeholder={__("Is TIA needed?")}
onValueChange={field.onChange} onValueChange={field.onChange}
value={field.value} value={field.value}
@@ -647,8 +646,8 @@ export default function ProcessingActivityDetailsPage(props: Props) {
</Select> </Select>
)} )}
/> />
{formState.errors.transferImpactAssessment && ( {formState.errors.transferImpactAssessmentNeeded && (
<p className="text-sm text-txt-danger mt-1">{formState.errors.transferImpactAssessment.message}</p> <p className="text-sm text-txt-danger mt-1">{formState.errors.transferImpactAssessmentNeeded.message}</p>
)} )}
</div> </div>
</div> </div>
@@ -684,10 +683,10 @@ export default function ProcessingActivityDetailsPage(props: Props) {
{activeTab === "dpia" && ( {activeTab === "dpia" && (
<Card> <Card>
<div className="p-6"> <div className="p-6">
{!showDpiaForm && (!activity?.dpia?.id || dpiaDeleted) ? ( {!showDpiaForm && (!activity?.dataProtectionImpactAssessment?.id || dpiaDeleted) ? (
<div className="flex flex-col items-center justify-center py-16 w-full"> <div className="flex flex-col items-center justify-center py-16 w-full">
<h2 className="text-xl font-semibold mb-6 text-center">{__("Data Protection Impact Assessment")}</h2> <h2 className="text-xl font-semibold mb-6 text-center">{__("Data Protection Impact Assessment")}</h2>
{!isSnapshotMode && isAuthorized("ProcessingActivity", "createProcessingActivityDPIA") && ( {!isSnapshotMode && isAuthorized("ProcessingActivity", "createDataProtectionImpactAssessment") && (
<Button <Button
variant="primary" variant="primary"
onClick={() => setShowDpiaForm(true)} onClick={() => setShowDpiaForm(true)}
@@ -700,7 +699,7 @@ export default function ProcessingActivityDetailsPage(props: Props) {
<> <>
<div className="flex items-center justify-between mb-6"> <div className="flex items-center justify-between mb-6">
<h2 className="text-xl font-semibold">{__("Data Protection Impact Assessment")}</h2> <h2 className="text-xl font-semibold">{__("Data Protection Impact Assessment")}</h2>
{!isSnapshotMode && activity?.dpia?.id && !dpiaDeleted && isAuthorized("ProcessingActivity", "deleteProcessingActivityDPIA") && ( {!isSnapshotMode && activity?.dataProtectionImpactAssessment?.id && !dpiaDeleted && isAuthorized("DataProtectionImpactAssessment", "deleteDataProtectionImpactAssessment") && (
<Button <Button
variant="danger" variant="danger"
onClick={deleteDPIA} onClick={deleteDPIA}
@@ -779,7 +778,7 @@ export default function ProcessingActivityDetailsPage(props: Props) {
{!isSnapshotMode && ( {!isSnapshotMode && (
<div className="flex justify-end gap-3 pt-4"> <div className="flex justify-end gap-3 pt-4">
{(!activity?.dpia?.id || dpiaDeleted) && ( {(!activity?.dataProtectionImpactAssessment?.id || dpiaDeleted) && (
<Button <Button
type="button" type="button"
variant="secondary" variant="secondary"
@@ -788,9 +787,9 @@ export default function ProcessingActivityDetailsPage(props: Props) {
{__("Cancel")} {__("Cancel")}
</Button> </Button>
)} )}
{(activity?.dpia?.id && !dpiaDeleted {(activity?.dataProtectionImpactAssessment?.id && !dpiaDeleted
? isAuthorized("ProcessingActivity", "updateProcessingActivityDPIA") ? isAuthorized("DataProtectionImpactAssessment", "updateDataProtectionImpactAssessment")
: isAuthorized("ProcessingActivity", "createProcessingActivityDPIA")) && ( : isAuthorized("ProcessingActivity", "createDataProtectionImpactAssessment")) && (
<Button <Button
type="submit" type="submit"
variant="primary" variant="primary"
@@ -798,7 +797,7 @@ export default function ProcessingActivityDetailsPage(props: Props) {
> >
{dpiaSubmitting {dpiaSubmitting
? __("Saving...") ? __("Saving...")
: activity?.dpia?.id && !dpiaDeleted : activity?.dataProtectionImpactAssessment?.id && !dpiaDeleted
? __("Update DPIA") ? __("Update DPIA")
: __("Create DPIA")} : __("Create DPIA")}
</Button> </Button>
@@ -815,10 +814,10 @@ export default function ProcessingActivityDetailsPage(props: Props) {
{activeTab === "tia" && ( {activeTab === "tia" && (
<Card> <Card>
<div className="p-6"> <div className="p-6">
{!showTiaForm && (!activity?.tia?.id || tiaDeleted) ? ( {!showTiaForm && (!activity?.transferImpactAssessment?.id || tiaDeleted) ? (
<div className="flex flex-col items-center justify-center py-16 w-full"> <div className="flex flex-col items-center justify-center py-16 w-full">
<h2 className="text-xl font-semibold mb-6 text-center">{__("Transfer Impact Assessment")}</h2> <h2 className="text-xl font-semibold mb-6 text-center">{__("Transfer Impact Assessment")}</h2>
{!isSnapshotMode && isAuthorized("ProcessingActivity", "createProcessingActivityTIA") && ( {!isSnapshotMode && isAuthorized("ProcessingActivity", "createTransferImpactAssessment") && (
<Button <Button
variant="primary" variant="primary"
onClick={() => setShowTiaForm(true)} onClick={() => setShowTiaForm(true)}
@@ -831,7 +830,7 @@ export default function ProcessingActivityDetailsPage(props: Props) {
<> <>
<div className="flex items-center justify-between mb-6"> <div className="flex items-center justify-between mb-6">
<h2 className="text-xl font-semibold">{__("Transfer Impact Assessment")}</h2> <h2 className="text-xl font-semibold">{__("Transfer Impact Assessment")}</h2>
{!isSnapshotMode && activity?.tia?.id && !tiaDeleted && isAuthorized("ProcessingActivity", "deleteProcessingActivityTIA") && ( {!isSnapshotMode && activity?.transferImpactAssessment?.id && !tiaDeleted && isAuthorized("TransferImpactAssessment", "deleteTransferImpactAssessment") && (
<Button <Button
variant="danger" variant="danger"
onClick={deleteTIA} onClick={deleteTIA}
@@ -899,7 +898,7 @@ export default function ProcessingActivityDetailsPage(props: Props) {
{!isSnapshotMode && ( {!isSnapshotMode && (
<div className="flex justify-end gap-3 pt-4"> <div className="flex justify-end gap-3 pt-4">
{(!activity?.tia?.id || tiaDeleted) && ( {(!activity?.transferImpactAssessment?.id || tiaDeleted) && (
<Button <Button
type="button" type="button"
variant="secondary" variant="secondary"
@@ -908,9 +907,9 @@ export default function ProcessingActivityDetailsPage(props: Props) {
{__("Cancel")} {__("Cancel")}
</Button> </Button>
)} )}
{(activity?.tia?.id && !tiaDeleted {(activity?.transferImpactAssessment?.id && !tiaDeleted
? isAuthorized("ProcessingActivity", "updateProcessingActivityTIA") ? isAuthorized("TransferImpactAssessment", "updateTransferImpactAssessment")
: isAuthorized("ProcessingActivity", "createProcessingActivityTIA")) && ( : isAuthorized("ProcessingActivity", "createTransferImpactAssessment")) && (
<Button <Button
type="submit" type="submit"
variant="primary" variant="primary"
@@ -918,7 +917,7 @@ export default function ProcessingActivityDetailsPage(props: Props) {
> >
{tiaSubmitting {tiaSubmitting
? __("Saving...") ? __("Saving...")
: activity?.tia?.id && !tiaDeleted : activity?.transferImpactAssessment?.id && !tiaDeleted
? __("Update TIA") ? __("Update TIA")
: __("Create TIA")} : __("Create TIA")}
</Button> </Button>

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<50ed487333de3127b16c6bd5f1c051b1>> * @generated SignedSource<<5f8b1950dc00b28dac0ae08df590924e>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -9,7 +9,7 @@
// @ts-nocheck // @ts-nocheck
import { ReaderFragment } from 'relay-runtime'; import { ReaderFragment } from 'relay-runtime';
export type ProcessingActivityDPIAResidualRisk = "HIGH" | "LOW" | "MEDIUM"; export type DataProtectionImpactAssessmentResidualRisk = "HIGH" | "LOW" | "MEDIUM";
import { FragmentRefs } from "relay-runtime"; import { FragmentRefs } from "relay-runtime";
export type ProcessingActivitiesPageDPIAFragment$data = { export type ProcessingActivitiesPageDPIAFragment$data = {
readonly dataProtectionImpactAssessments: { readonly dataProtectionImpactAssessments: {
@@ -24,7 +24,7 @@ export type ProcessingActivitiesPageDPIAFragment$data = {
readonly id: string; readonly id: string;
readonly name: string; readonly name: string;
}; };
readonly residualRisk: ProcessingActivityDPIAResidualRisk | null | undefined; readonly residualRisk: DataProtectionImpactAssessmentResidualRisk | null | undefined;
readonly updatedAt: any; readonly updatedAt: any;
}; };
}>; }>;
@@ -120,7 +120,7 @@ return {
"name": "filter" "name": "filter"
} }
], ],
"concreteType": "ProcessingActivityDPIAConnection", "concreteType": "DataProtectionImpactAssessmentConnection",
"kind": "LinkedField", "kind": "LinkedField",
"name": "__ProcessingActivitiesPage_dataProtectionImpactAssessments_connection", "name": "__ProcessingActivitiesPage_dataProtectionImpactAssessments_connection",
"plural": false, "plural": false,
@@ -135,7 +135,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityDPIAEdge", "concreteType": "DataProtectionImpactAssessmentEdge",
"kind": "LinkedField", "kind": "LinkedField",
"name": "edges", "name": "edges",
"plural": true, "plural": true,
@@ -143,7 +143,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityDPIA", "concreteType": "DataProtectionImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "node", "name": "node",
"plural": false, "plural": false,

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<0ecca0ba0b410bf09fe2b0c62d003d0c>> * @generated SignedSource<<9bde8f385a0f31b1738122ca97cb02e9>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -157,7 +157,7 @@ return {
{ {
"alias": null, "alias": null,
"args": (v10/*: any*/), "args": (v10/*: any*/),
"concreteType": "ProcessingActivityDPIAConnection", "concreteType": "DataProtectionImpactAssessmentConnection",
"kind": "LinkedField", "kind": "LinkedField",
"name": "dataProtectionImpactAssessments", "name": "dataProtectionImpactAssessments",
"plural": false, "plural": false,
@@ -172,7 +172,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityDPIAEdge", "concreteType": "DataProtectionImpactAssessmentEdge",
"kind": "LinkedField", "kind": "LinkedField",
"name": "edges", "name": "edges",
"plural": true, "plural": true,
@@ -180,7 +180,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityDPIA", "concreteType": "DataProtectionImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "node", "name": "node",
"plural": false, "plural": false,

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<4674be4782e5b88c71dab59ab04105df>> * @generated SignedSource<<cf12e9f66e77db986c29774df1519063>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -119,7 +119,7 @@ return {
"name": "filter" "name": "filter"
} }
], ],
"concreteType": "ProcessingActivityTIAConnection", "concreteType": "TransferImpactAssessmentConnection",
"kind": "LinkedField", "kind": "LinkedField",
"name": "__ProcessingActivitiesPage_transferImpactAssessments_connection", "name": "__ProcessingActivitiesPage_transferImpactAssessments_connection",
"plural": false, "plural": false,
@@ -134,7 +134,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityTIAEdge", "concreteType": "TransferImpactAssessmentEdge",
"kind": "LinkedField", "kind": "LinkedField",
"name": "edges", "name": "edges",
"plural": true, "plural": true,
@@ -142,7 +142,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityTIA", "concreteType": "TransferImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "node", "name": "node",
"plural": false, "plural": false,

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<a36911a4454bc04e61b98657012277ca>> * @generated SignedSource<<c95623d4195e8eef1ad809e57535397d>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -157,7 +157,7 @@ return {
{ {
"alias": null, "alias": null,
"args": (v10/*: any*/), "args": (v10/*: any*/),
"concreteType": "ProcessingActivityTIAConnection", "concreteType": "TransferImpactAssessmentConnection",
"kind": "LinkedField", "kind": "LinkedField",
"name": "transferImpactAssessments", "name": "transferImpactAssessments",
"plural": false, "plural": false,
@@ -172,7 +172,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityTIAEdge", "concreteType": "TransferImpactAssessmentEdge",
"kind": "LinkedField", "kind": "LinkedField",
"name": "edges", "name": "edges",
"plural": true, "plural": true,
@@ -180,7 +180,7 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"concreteType": "ProcessingActivityTIA", "concreteType": "TransferImpactAssessment",
"kind": "LinkedField", "kind": "LinkedField",
"name": "node", "name": "node",
"plural": false, "plural": false,

View File

@@ -45,8 +45,8 @@ const schema = z.object({
transferSafeguards: z.string(), transferSafeguards: z.string(),
retentionPeriod: z.string().optional(), retentionPeriod: z.string().optional(),
securityMeasures: z.string().optional(), securityMeasures: z.string().optional(),
dataProtectionImpactAssessment: z.enum(["NEEDED", "NOT_NEEDED"] as const), dataProtectionImpactAssessmentNeeded: z.enum(["NEEDED", "NOT_NEEDED"] as const),
transferImpactAssessment: z.enum(["NEEDED", "NOT_NEEDED"] as const), transferImpactAssessmentNeeded: z.enum(["NEEDED", "NOT_NEEDED"] as const),
lastReviewDate: z.string().optional(), lastReviewDate: z.string().optional(),
nextReviewDate: z.string().optional(), nextReviewDate: z.string().optional(),
role: z.enum(["CONTROLLER", "PROCESSOR"] as const), role: z.enum(["CONTROLLER", "PROCESSOR"] as const),
@@ -88,8 +88,8 @@ export function CreateProcessingActivityDialog({
transferSafeguards: "__NONE__", transferSafeguards: "__NONE__",
retentionPeriod: "", retentionPeriod: "",
securityMeasures: "", securityMeasures: "",
dataProtectionImpactAssessment: "NOT_NEEDED" as const, dataProtectionImpactAssessmentNeeded: "NOT_NEEDED" as const,
transferImpactAssessment: "NOT_NEEDED" as const, transferImpactAssessmentNeeded: "NOT_NEEDED" as const,
lastReviewDate: "", lastReviewDate: "",
nextReviewDate: "", nextReviewDate: "",
role: "PROCESSOR" as const, role: "PROCESSOR" as const,
@@ -115,8 +115,8 @@ export function CreateProcessingActivityDialog({
transferSafeguards: formData.transferSafeguards === "__NONE__" ? undefined : formData.transferSafeguards || undefined, transferSafeguards: formData.transferSafeguards === "__NONE__" ? undefined : formData.transferSafeguards || undefined,
retentionPeriod: formData.retentionPeriod || undefined, retentionPeriod: formData.retentionPeriod || undefined,
securityMeasures: formData.securityMeasures || undefined, securityMeasures: formData.securityMeasures || undefined,
dataProtectionImpactAssessment: formData.dataProtectionImpactAssessment || undefined, dataProtectionImpactAssessmentNeeded: formData.dataProtectionImpactAssessmentNeeded || undefined,
transferImpactAssessment: formData.transferImpactAssessment || undefined, transferImpactAssessmentNeeded: formData.transferImpactAssessmentNeeded || undefined,
lastReviewDate: formatDatetime(formData.lastReviewDate), lastReviewDate: formatDatetime(formData.lastReviewDate),
nextReviewDate: formatDatetime(formData.nextReviewDate), nextReviewDate: formatDatetime(formData.nextReviewDate),
role: formData.role, role: formData.role,
@@ -353,13 +353,13 @@ export function CreateProcessingActivityDialog({
</div> </div>
<div> <div>
<Label htmlFor="dataProtectionImpactAssessment">{__("Data Protection Impact Assessment")} *</Label> <Label htmlFor="dataProtectionImpactAssessmentNeeded">{__("Data Protection Impact Assessment")} *</Label>
<Controller <Controller
control={control} control={control}
name="dataProtectionImpactAssessment" name="dataProtectionImpactAssessmentNeeded"
render={({ field }) => ( render={({ field }) => (
<Select <Select
id="dataProtectionImpactAssessment" id="dataProtectionImpactAssessmentNeeded"
placeholder={__("Is DPIA needed?")} placeholder={__("Is DPIA needed?")}
onValueChange={field.onChange} onValueChange={field.onChange}
value={field.value} value={field.value}
@@ -369,19 +369,19 @@ export function CreateProcessingActivityDialog({
</Select> </Select>
)} )}
/> />
{formState.errors.dataProtectionImpactAssessment && ( {formState.errors.dataProtectionImpactAssessmentNeeded && (
<p className="text-sm text-txt-danger mt-1">{formState.errors.dataProtectionImpactAssessment.message}</p> <p className="text-sm text-txt-danger mt-1">{formState.errors.dataProtectionImpactAssessmentNeeded.message}</p>
)} )}
</div> </div>
<div> <div>
<Label htmlFor="transferImpactAssessment">{__("Transfer Impact Assessment")} *</Label> <Label htmlFor="transferImpactAssessmentNeeded">{__("Transfer Impact Assessment")} *</Label>
<Controller <Controller
control={control} control={control}
name="transferImpactAssessment" name="transferImpactAssessmentNeeded"
render={({ field }) => ( render={({ field }) => (
<Select <Select
id="transferImpactAssessment" id="transferImpactAssessmentNeeded"
placeholder={__("Is TIA needed?")} placeholder={__("Is TIA needed?")}
onValueChange={field.onChange} onValueChange={field.onChange}
value={field.value} value={field.value}
@@ -391,8 +391,8 @@ export function CreateProcessingActivityDialog({
</Select> </Select>
)} )}
/> />
{formState.errors.transferImpactAssessment && ( {formState.errors.transferImpactAssessmentNeeded && (
<p className="text-sm text-txt-danger mt-1">{formState.errors.transferImpactAssessment.message}</p> <p className="text-sm text-txt-danger mt-1">{formState.errors.transferImpactAssessmentNeeded.message}</p>
)} )}
</div> </div>
</div> </div>

File diff suppressed because it is too large Load Diff

View File

@@ -912,14 +912,14 @@ func CreateProcessingActivity(c *testutil.Client, attrs ...Attrs) string {
` `
input := map[string]any{ input := map[string]any{
"organizationId": c.GetOrganizationID().String(), "organizationId": c.GetOrganizationID().String(),
"name": a.getString("name", SafeName("ProcessingActivity")), "name": a.getString("name", SafeName("ProcessingActivity")),
"specialOrCriminalData": a.getString("specialOrCriminalData", "NO"), "specialOrCriminalData": a.getString("specialOrCriminalData", "NO"),
"lawfulBasis": a.getString("lawfulBasis", "CONSENT"), "lawfulBasis": a.getString("lawfulBasis", "CONSENT"),
"internationalTransfers": a.getBool("internationalTransfers", false), "internationalTransfers": a.getBool("internationalTransfers", false),
"dataProtectionImpactAssessment": a.getString("dataProtectionImpactAssessment", "NOT_NEEDED"), "dataProtectionImpactAssessmentNeeded": a.getString("dataProtectionImpactAssessmentNeeded", "NOT_NEEDED"),
"transferImpactAssessment": a.getString("transferImpactAssessment", "NOT_NEEDED"), "transferImpactAssessmentNeeded": a.getString("transferImpactAssessmentNeeded", "NOT_NEEDED"),
"role": a.getString("role", "CONTROLLER"), "role": a.getString("role", "CONTROLLER"),
} }
if purpose := a.getStringPtr("purpose"); purpose != nil { if purpose := a.getStringPtr("purpose"); purpose != nil {
input["purpose"] = *purpose input["purpose"] = *purpose

View File

@@ -38,36 +38,36 @@ const (
const ( const (
ActionGet Action = "get" ActionGet Action = "get"
ActionGetAssetType Action = "getAssetType" ActionGetAssetType Action = "getAssetType"
ActionGetAssignedTo Action = "getAssignedTo" ActionGetAssignedTo Action = "getAssignedTo"
ActionGetAuthMethod Action = "getAuthMethod" ActionGetAuthMethod Action = "getAuthMethod"
ActionGetBusinessAssociateAgreement Action = "getBusinessAssociateAgreement" ActionGetBusinessAssociateAgreement Action = "getBusinessAssociateAgreement"
ActionGetBusinessOwner Action = "getBusinessOwner" ActionGetBusinessOwner Action = "getBusinessOwner"
ActionGetCustomDomain Action = "getCustomDomain" ActionGetCustomDomain Action = "getCustomDomain"
ActionGetDataPrivacyAgreement Action = "getDataPrivacyAgreement" ActionGetDataPrivacyAgreement Action = "getDataPrivacyAgreement"
ActionGetDataProtectionOfficer Action = "getDataProtectionOfficer" ActionGetDataProtectionOfficer Action = "getDataProtectionOfficer"
ActionGetDPIA Action = "getDPIA" ActionGetDataProtectionImpactAssessment Action = "getDataProtectionImpactAssessment"
ActionGetTIA Action = "getTIA" ActionGetTransferImpactAssessment Action = "getTransferImpactAssessment"
ActionGetDocument Action = "getDocument" ActionGetDocument Action = "getDocument"
ActionGetReport Action = "getReport" ActionGetReport Action = "getReport"
ActionGetFile Action = "getFile" ActionGetFile Action = "getFile"
ActionGetAudit Action = "getAudit" ActionGetAudit Action = "getAudit"
ActionGetFileUrl Action = "getFileUrl" ActionGetFileUrl Action = "getFileUrl"
ActionGetFramework Action = "getFramework" ActionGetFramework Action = "getFramework"
ActionGetHorizontalLogoUrl Action = "getHorizontalLogoUrl" ActionGetHorizontalLogoUrl Action = "getHorizontalLogoUrl"
ActionGetLogoUrl Action = "getLogoUrl" ActionGetLogoUrl Action = "getLogoUrl"
ActionGetMeasure Action = "getMeasure" ActionGetMeasure Action = "getMeasure"
ActionGetNdaFileUrl Action = "getNdaFileUrl" ActionGetNdaFileUrl Action = "getNdaFileUrl"
ActionGetOrganization Action = "getOrganization" ActionGetOrganization Action = "getOrganization"
ActionGetOwner Action = "getOwner" ActionGetOwner Action = "getOwner"
ActionGetSecurityOwner Action = "getSecurityOwner" ActionGetSecurityOwner Action = "getSecurityOwner"
ActionGetSigned Action = "getSigned" ActionGetSigned Action = "getSigned"
ActionGetSignableDocument Action = "getSignableDocument" ActionGetSignableDocument Action = "getSignableDocument"
ActionGetSnapshot Action = "getSnapshot" ActionGetSnapshot Action = "getSnapshot"
ActionGetTask Action = "getTask" ActionGetTask Action = "getTask"
ActionGetTrustCenter Action = "getTrustCenter" ActionGetTrustCenter Action = "getTrustCenter"
ActionGetTrustCenterFile Action = "getTrustCenterFile" ActionGetTrustCenterFile Action = "getTrustCenterFile"
ActionGetVendor Action = "getVendor" ActionGetVendor Action = "getVendor"
ActionActiveCount Action = "activeCount" ActionActiveCount Action = "activeCount"
ActionAudit Action = "audit" ActionAudit Action = "audit"
@@ -119,42 +119,42 @@ const (
ActionListSignableDocuments Action = "listSignableDocuments" ActionListSignableDocuments Action = "listSignableDocuments"
ActionListSignableDocumentVersion Action = "listSignableDocumentVersion" ActionListSignableDocumentVersion Action = "listSignableDocumentVersion"
ActionCreateAsset Action = "createAsset" ActionCreateAsset Action = "createAsset"
ActionCreateAudit Action = "createAudit" ActionCreateAudit Action = "createAudit"
ActionCreateContinualImprovement Action = "createContinualImprovement" ActionCreateContinualImprovement Action = "createContinualImprovement"
ActionCreateControl Action = "createControl" ActionCreateControl Action = "createControl"
ActionCreateControlAuditMapping Action = "createControlAuditMapping" ActionCreateControlAuditMapping Action = "createControlAuditMapping"
ActionCreateControlDocumentMapping Action = "createControlDocumentMapping" ActionCreateControlDocumentMapping Action = "createControlDocumentMapping"
ActionCreateControlMeasureMapping Action = "createControlMeasureMapping" ActionCreateControlMeasureMapping Action = "createControlMeasureMapping"
ActionCreateControlSnapshotMapping Action = "createControlSnapshotMapping" ActionCreateControlSnapshotMapping Action = "createControlSnapshotMapping"
ActionCreateCustomDomain Action = "createCustomDomain" ActionCreateCustomDomain Action = "createCustomDomain"
ActionCreateDatum Action = "createDatum" ActionCreateDatum Action = "createDatum"
ActionCreateDocument Action = "createDocument" ActionCreateDocument Action = "createDocument"
ActionCreateDraftDocumentVersion Action = "createDraftDocumentVersion" ActionCreateDraftDocumentVersion Action = "createDraftDocumentVersion"
ActionCreateFramework Action = "createFramework" ActionCreateFramework Action = "createFramework"
ActionCreateMeasure Action = "createMeasure" ActionCreateMeasure Action = "createMeasure"
ActionCreateMeeting Action = "createMeeting" ActionCreateMeeting Action = "createMeeting"
ActionCreateNonconformity Action = "createNonconformity" ActionCreateNonconformity Action = "createNonconformity"
ActionCreateObligation Action = "createObligation" ActionCreateObligation Action = "createObligation"
ActionCreatePeople Action = "createPeople" ActionCreatePeople Action = "createPeople"
ActionCreateProcessingActivity Action = "createProcessingActivity" ActionCreateProcessingActivity Action = "createProcessingActivity"
ActionCreateProcessingActivityDPIA Action = "createProcessingActivityDPIA" ActionCreateDataProtectionImpactAssessment Action = "createDataProtectionImpactAssessment"
ActionCreateProcessingActivityTIA Action = "createProcessingActivityTIA" ActionCreateTransferImpactAssessment Action = "createTransferImpactAssessment"
ActionCreateRisk Action = "createRisk" ActionCreateRisk Action = "createRisk"
ActionCreateRiskDocumentMapping Action = "createRiskDocumentMapping" ActionCreateRiskDocumentMapping Action = "createRiskDocumentMapping"
ActionCreateRiskMeasureMapping Action = "createRiskMeasureMapping" ActionCreateRiskMeasureMapping Action = "createRiskMeasureMapping"
ActionCreateRiskObligationMapping Action = "createRiskObligationMapping" ActionCreateRiskObligationMapping Action = "createRiskObligationMapping"
ActionCreateSAMLConfiguration Action = "createSAMLConfiguration" ActionCreateSAMLConfiguration Action = "createSAMLConfiguration"
ActionCreateSnapshot Action = "createSnapshot" ActionCreateSnapshot Action = "createSnapshot"
ActionCreateTask Action = "createTask" ActionCreateTask Action = "createTask"
ActionCreateTrustCenter Action = "createTrustCenter" ActionCreateTrustCenter Action = "createTrustCenter"
ActionCreateTrustCenterAccess Action = "createTrustCenterAccess" ActionCreateTrustCenterAccess Action = "createTrustCenterAccess"
ActionCreateTrustCenterFile Action = "createTrustCenterFile" ActionCreateTrustCenterFile Action = "createTrustCenterFile"
ActionCreateTrustCenterReference Action = "createTrustCenterReference" ActionCreateTrustCenterReference Action = "createTrustCenterReference"
ActionCreateVendor Action = "createVendor" ActionCreateVendor Action = "createVendor"
ActionCreateVendorContact Action = "createVendorContact" ActionCreateVendorContact Action = "createVendorContact"
ActionCreateVendorRiskAssessment Action = "createVendorRiskAssessment" ActionCreateVendorRiskAssessment Action = "createVendorRiskAssessment"
ActionCreateVendorService Action = "createVendorService" ActionCreateVendorService Action = "createVendorService"
ActionUpdateAsset Action = "updateAsset" ActionUpdateAsset Action = "updateAsset"
ActionUpdateAudit Action = "updateAudit" ActionUpdateAudit Action = "updateAudit"
@@ -172,8 +172,8 @@ const (
ActionUpdateOrganization Action = "updateOrganization" ActionUpdateOrganization Action = "updateOrganization"
ActionUpdatePeople Action = "updatePeople" ActionUpdatePeople Action = "updatePeople"
ActionUpdateProcessingActivity Action = "updateProcessingActivity" ActionUpdateProcessingActivity Action = "updateProcessingActivity"
ActionUpdateProcessingActivityDPIA Action = "updateProcessingActivityDPIA" ActionUpdateDataProtectionImpactAssessment Action = "updateDataProtectionImpactAssessment"
ActionUpdateProcessingActivityTIA Action = "updateProcessingActivityTIA" ActionUpdateTransferImpactAssessment Action = "updateTransferImpactAssessment"
ActionUpdateRisk Action = "updateRisk" ActionUpdateRisk Action = "updateRisk"
ActionUpdateSAMLConfiguration Action = "updateSAMLConfiguration" ActionUpdateSAMLConfiguration Action = "updateSAMLConfiguration"
ActionUpdateTask Action = "updateTask" ActionUpdateTask Action = "updateTask"
@@ -211,8 +211,8 @@ const (
ActionDeleteOrganizationHorizontalLogo Action = "deleteOrganizationHorizontalLogo" ActionDeleteOrganizationHorizontalLogo Action = "deleteOrganizationHorizontalLogo"
ActionDeletePeople Action = "deletePeople" ActionDeletePeople Action = "deletePeople"
ActionDeleteProcessingActivity Action = "deleteProcessingActivity" ActionDeleteProcessingActivity Action = "deleteProcessingActivity"
ActionDeleteProcessingActivityDPIA Action = "deleteProcessingActivityDPIA" ActionDeleteDataProtectionImpactAssessment Action = "deleteDataProtectionImpactAssessment"
ActionDeleteProcessingActivityTIA Action = "deleteProcessingActivityTIA" ActionDeleteTransferImpactAssessment Action = "deleteTransferImpactAssessment"
ActionDeleteRisk Action = "deleteRisk" ActionDeleteRisk Action = "deleteRisk"
ActionDeleteRiskDocumentMapping Action = "deleteRiskDocumentMapping" ActionDeleteRiskDocumentMapping Action = "deleteRiskDocumentMapping"
ActionDeleteRiskMeasureMapping Action = "deleteRiskMeasureMapping" ActionDeleteRiskMeasureMapping Action = "deleteRiskMeasureMapping"
@@ -674,33 +674,33 @@ var Permissions = map[uint16]map[Action][]Role{
ActionDeleteContinualImprovement: EditRoles, ActionDeleteContinualImprovement: EditRoles,
}, },
coredata.ProcessingActivityEntityType: { coredata.ProcessingActivityEntityType: {
ActionGet: NonEmployeeRoles, ActionGet: NonEmployeeRoles,
ActionGetOrganization: NonEmployeeRoles, ActionGetOrganization: NonEmployeeRoles,
ActionListVendors: NonEmployeeRoles, ActionListVendors: NonEmployeeRoles,
ActionGetDataProtectionOfficer: NonEmployeeRoles, ActionGetDataProtectionOfficer: NonEmployeeRoles,
ActionGetDPIA: NonEmployeeRoles, ActionGetDataProtectionImpactAssessment: NonEmployeeRoles,
ActionGetTIA: NonEmployeeRoles, ActionGetTransferImpactAssessment: NonEmployeeRoles,
ActionUpdateProcessingActivity: EditRoles, ActionUpdateProcessingActivity: EditRoles,
ActionDeleteProcessingActivity: EditRoles, ActionDeleteProcessingActivity: EditRoles,
ActionCreateProcessingActivityDPIA: EditRoles, ActionCreateDataProtectionImpactAssessment: EditRoles,
ActionCreateProcessingActivityTIA: EditRoles, ActionCreateTransferImpactAssessment: EditRoles,
}, },
coredata.ProcessingActivityDPIAEntityType: { coredata.DataProtectionImpactAssessmentEntityType: {
ActionGet: NonEmployeeRoles, ActionGet: NonEmployeeRoles,
ActionGetOrganization: NonEmployeeRoles, ActionGetOrganization: NonEmployeeRoles,
ActionCreateProcessingActivityDPIA: EditRoles, ActionCreateDataProtectionImpactAssessment: EditRoles,
ActionUpdateProcessingActivityDPIA: EditRoles, ActionUpdateDataProtectionImpactAssessment: EditRoles,
ActionDeleteProcessingActivityDPIA: EditRoles, ActionDeleteDataProtectionImpactAssessment: EditRoles,
}, },
coredata.ProcessingActivityTIAEntityType: { coredata.TransferImpactAssessmentEntityType: {
ActionGet: NonEmployeeRoles, ActionGet: NonEmployeeRoles,
ActionGetOrganization: NonEmployeeRoles, ActionGetOrganization: NonEmployeeRoles,
ActionCreateProcessingActivityTIA: EditRoles, ActionCreateTransferImpactAssessment: EditRoles,
ActionUpdateProcessingActivityTIA: EditRoles, ActionUpdateTransferImpactAssessment: EditRoles,
ActionDeleteProcessingActivityTIA: EditRoles, ActionDeleteTransferImpactAssessment: EditRoles,
}, },
coredata.SnapshotEntityType: { coredata.SnapshotEntityType: {
ActionGet: NonEmployeeRoles, ActionGet: NonEmployeeRoles,

View File

@@ -27,48 +27,48 @@ import (
"go.probo.inc/probo/pkg/page" "go.probo.inc/probo/pkg/page"
) )
type ErrProcessingActivityDPIANotFound struct { type ErrDataProtectionImpactAssessmentNotFound struct {
Identifier string Identifier string
} }
func (e ErrProcessingActivityDPIANotFound) Error() string { func (e ErrDataProtectionImpactAssessmentNotFound) Error() string {
return fmt.Sprintf("processing activity dpia not found: %q", e.Identifier) return fmt.Sprintf("data protection impact assessment not found: %q", e.Identifier)
} }
type ( type (
ProcessingActivityDPIA struct { DataProtectionImpactAssessment struct {
ID gid.GID `db:"id"` ID gid.GID `db:"id"`
SnapshotID *gid.GID `db:"snapshot_id"` SnapshotID *gid.GID `db:"snapshot_id"`
SourceID *gid.GID `db:"source_id"` SourceID *gid.GID `db:"source_id"`
OrganizationID gid.GID `db:"organization_id"` OrganizationID gid.GID `db:"organization_id"`
ProcessingActivityID gid.GID `db:"processing_activity_id"` ProcessingActivityID gid.GID `db:"processing_activity_id"`
Description *string `db:"description"` Description *string `db:"description"`
NecessityAndProportionality *string `db:"necessity_and_proportionality"` NecessityAndProportionality *string `db:"necessity_and_proportionality"`
PotentialRisk *string `db:"potential_risk"` PotentialRisk *string `db:"potential_risk"`
Mitigations *string `db:"mitigations"` Mitigations *string `db:"mitigations"`
ResidualRisk *ProcessingActivityDPIAResidualRisk `db:"residual_risk"` ResidualRisk *DataProtectionImpactAssessmentResidualRisk `db:"residual_risk"`
CreatedAt time.Time `db:"created_at"` CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"` UpdatedAt time.Time `db:"updated_at"`
} }
ProcessingActivityDPIAs []*ProcessingActivityDPIA DataProtectionImpactAssessments []*DataProtectionImpactAssessment
) )
func (dpia *ProcessingActivityDPIA) CursorKey(field ProcessingActivityDPIAOrderField) page.CursorKey { func (dpia *DataProtectionImpactAssessment) CursorKey(field DataProtectionImpactAssessmentOrderField) page.CursorKey {
switch field { switch field {
case ProcessingActivityDPIAOrderFieldCreatedAt: case DataProtectionImpactAssessmentOrderFieldCreatedAt:
return page.NewCursorKey(dpia.ID, dpia.CreatedAt) return page.NewCursorKey(dpia.ID, dpia.CreatedAt)
} }
panic(fmt.Sprintf("unsupported order by: %s", field)) panic(fmt.Sprintf("unsupported order by: %s", field))
} }
func (dpias *ProcessingActivityDPIAs) CountByOrganizationID( func (dpias *DataProtectionImpactAssessments) CountByOrganizationID(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
organizationID gid.GID, organizationID gid.GID,
filter *ProcessingActivityDPIAFilter, filter *DataProtectionImpactAssessmentFilter,
) (int, error) { ) (int, error) {
q := ` q := `
SELECT SELECT
@@ -92,19 +92,19 @@ WHERE
var count int var count int
err := row.Scan(&count) err := row.Scan(&count)
if err != nil { if err != nil {
return 0, fmt.Errorf("cannot count processing activity dpias: %w", err) return 0, fmt.Errorf("cannot count data protection impact assessments: %w", err)
} }
return count, nil return count, nil
} }
func (dpias *ProcessingActivityDPIAs) LoadByOrganizationID( func (dpias *DataProtectionImpactAssessments) LoadByOrganizationID(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
organizationID gid.GID, organizationID gid.GID,
cursor *page.Cursor[ProcessingActivityDPIAOrderField], cursor *page.Cursor[DataProtectionImpactAssessmentOrderField],
filter *ProcessingActivityDPIAFilter, filter *DataProtectionImpactAssessmentFilter,
) error { ) error {
q := ` q := `
SELECT SELECT
@@ -138,12 +138,12 @@ WHERE
rows, err := conn.Query(ctx, q, args) rows, err := conn.Query(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot query processing activity dpias: %w", err) return fmt.Errorf("cannot query data protection impact assessments: %w", err)
} }
results, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[ProcessingActivityDPIA]) results, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[DataProtectionImpactAssessment])
if err != nil { if err != nil {
return fmt.Errorf("cannot collect processing activity dpias: %w", err) return fmt.Errorf("cannot collect data protection impact assessments: %w", err)
} }
*dpias = results *dpias = results
@@ -151,7 +151,7 @@ WHERE
return nil return nil
} }
func (dpia *ProcessingActivityDPIA) LoadByID( func (dpia *DataProtectionImpactAssessment) LoadByID(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -186,15 +186,15 @@ LIMIT 1;
rows, err := conn.Query(ctx, q, args) rows, err := conn.Query(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot query processing activity dpia: %w", err) return fmt.Errorf("cannot query data protection impact assessment: %w", err)
} }
result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[ProcessingActivityDPIA]) result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[DataProtectionImpactAssessment])
if err != nil { if err != nil {
if errors.Is(err, pgx.ErrNoRows) { if errors.Is(err, pgx.ErrNoRows) {
return &ErrProcessingActivityDPIANotFound{Identifier: dpiaID.String()} return &ErrDataProtectionImpactAssessmentNotFound{Identifier: dpiaID.String()}
} }
return fmt.Errorf("cannot collect processing activity dpia: %w", err) return fmt.Errorf("cannot collect data protection impact assessment: %w", err)
} }
*dpia = result *dpia = result
@@ -202,7 +202,7 @@ LIMIT 1;
return nil return nil
} }
func (dpia *ProcessingActivityDPIA) LoadByProcessingActivityID( func (dpia *DataProtectionImpactAssessment) LoadByProcessingActivityID(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -237,15 +237,15 @@ LIMIT 1;
rows, err := conn.Query(ctx, q, args) rows, err := conn.Query(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot query processing activity dpia: %w", err) return fmt.Errorf("cannot query data protection impact assessment: %w", err)
} }
result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[ProcessingActivityDPIA]) result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[DataProtectionImpactAssessment])
if err != nil { if err != nil {
if errors.Is(err, pgx.ErrNoRows) { if errors.Is(err, pgx.ErrNoRows) {
return &ErrProcessingActivityDPIANotFound{Identifier: processingActivityID.String()} return &ErrDataProtectionImpactAssessmentNotFound{Identifier: processingActivityID.String()}
} }
return fmt.Errorf("cannot collect processing activity dpia: %w", err) return fmt.Errorf("cannot collect data protection impact assessment: %w", err)
} }
*dpia = result *dpia = result
@@ -253,7 +253,7 @@ LIMIT 1;
return nil return nil
} }
func (dpia *ProcessingActivityDPIA) Insert( func (dpia *DataProtectionImpactAssessment) Insert(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -302,13 +302,13 @@ INSERT INTO processing_activity_data_protection_impact_assessments (
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot insert processing activity dpia: %w", err) return fmt.Errorf("cannot insert data protection impact assessment: %w", err)
} }
return nil return nil
} }
func (dpia *ProcessingActivityDPIA) Update( func (dpia *DataProtectionImpactAssessment) Update(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -341,13 +341,13 @@ WHERE
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot update processing activity dpia: %w", err) return fmt.Errorf("cannot update data protection impact assessment: %w", err)
} }
return nil return nil
} }
func (dpia *ProcessingActivityDPIA) Delete( func (dpia *DataProtectionImpactAssessment) Delete(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -366,13 +366,13 @@ WHERE
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot delete processing activity dpia: %w", err) return fmt.Errorf("cannot delete data protection impact assessment: %w", err)
} }
return nil return nil
} }
func (dpias ProcessingActivityDPIAs) InsertProcessingActivitySnapshots( func (dpias DataProtectionImpactAssessments) InsertProcessingActivitySnapshots(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -419,13 +419,14 @@ WHERE dpia.tenant_id = @tenant_id AND dpia.organization_id = @organization_id AN
"tenant_id": scope.GetTenantID(), "tenant_id": scope.GetTenantID(),
"snapshot_id": snapshotID, "snapshot_id": snapshotID,
"organization_id": organizationID, "organization_id": organizationID,
"dpia_entity_type": ProcessingActivityDPIAEntityType, "dpia_entity_type": DataProtectionImpactAssessmentEntityType,
} }
_, err := conn.Exec(ctx, query, args) _, err := conn.Exec(ctx, query, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot insert processing activity dpia snapshots: %w", err) return fmt.Errorf("cannot insert data protection impact assessment snapshots: %w", err)
} }
return nil return nil
} }

View File

@@ -20,18 +20,18 @@ import (
) )
type ( type (
ProcessingActivityDPIAFilter struct { DataProtectionImpactAssessmentFilter struct {
snapshotID **gid.GID snapshotID **gid.GID
} }
) )
func NewProcessingActivityDPIAFilter(snapshotID **gid.GID) *ProcessingActivityDPIAFilter { func NewDataProtectionImpactAssessmentFilter(snapshotID **gid.GID) *DataProtectionImpactAssessmentFilter {
return &ProcessingActivityDPIAFilter{ return &DataProtectionImpactAssessmentFilter{
snapshotID: snapshotID, snapshotID: snapshotID,
} }
} }
func (f *ProcessingActivityDPIAFilter) SQLArguments() pgx.NamedArgs { func (f *DataProtectionImpactAssessmentFilter) SQLArguments() pgx.NamedArgs {
args := pgx.NamedArgs{} args := pgx.NamedArgs{}
if f.snapshotID != nil && *f.snapshotID != nil { if f.snapshotID != nil && *f.snapshotID != nil {
@@ -41,7 +41,7 @@ func (f *ProcessingActivityDPIAFilter) SQLArguments() pgx.NamedArgs {
return args return args
} }
func (f *ProcessingActivityDPIAFilter) SQLFragment() string { func (f *DataProtectionImpactAssessmentFilter) SQLFragment() string {
if f.snapshotID == nil { if f.snapshotID == nil {
return "TRUE" return "TRUE"
} }
@@ -52,3 +52,4 @@ func (f *ProcessingActivityDPIAFilter) SQLFragment() string {
return "snapshot_id = @filter_snapshot_id" return "snapshot_id = @filter_snapshot_id"
} }
} }

View File

@@ -16,30 +16,31 @@ package coredata
import "fmt" import "fmt"
type ProcessingActivityTIAOrderField string type DataProtectionImpactAssessmentOrderField string
const ( const (
ProcessingActivityTIAOrderFieldCreatedAt ProcessingActivityTIAOrderField = "CREATED_AT" DataProtectionImpactAssessmentOrderFieldCreatedAt DataProtectionImpactAssessmentOrderField = "CREATED_AT"
) )
func (p ProcessingActivityTIAOrderField) Column() string { func (p DataProtectionImpactAssessmentOrderField) Column() string {
return string(p) return string(p)
} }
func (p ProcessingActivityTIAOrderField) String() string { func (p DataProtectionImpactAssessmentOrderField) String() string {
return string(p) return string(p)
} }
func (p ProcessingActivityTIAOrderField) MarshalText() ([]byte, error) { func (p DataProtectionImpactAssessmentOrderField) MarshalText() ([]byte, error) {
return []byte(p.String()), nil return []byte(p.String()), nil
} }
func (p *ProcessingActivityTIAOrderField) UnmarshalText(text []byte) error { func (p *DataProtectionImpactAssessmentOrderField) UnmarshalText(text []byte) error {
val := string(text) val := string(text)
switch val { switch val {
case string(ProcessingActivityTIAOrderFieldCreatedAt): case string(DataProtectionImpactAssessmentOrderFieldCreatedAt):
*p = ProcessingActivityTIAOrderFieldCreatedAt *p = DataProtectionImpactAssessmentOrderFieldCreatedAt
return nil return nil
} }
return fmt.Errorf("invalid ProcessingActivityTIAOrderField value: %q", val) return fmt.Errorf("invalid DataProtectionImpactAssessmentOrderField value: %q", val)
} }

View File

@@ -0,0 +1,69 @@
// Copyright (c) 2025 Probo Inc <hello@getprobo.com>.
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
package coredata
import (
"database/sql/driver"
"fmt"
)
type DataProtectionImpactAssessmentResidualRisk string
const (
DataProtectionImpactAssessmentResidualRiskLow DataProtectionImpactAssessmentResidualRisk = "LOW"
DataProtectionImpactAssessmentResidualRiskMedium DataProtectionImpactAssessmentResidualRisk = "MEDIUM"
DataProtectionImpactAssessmentResidualRiskHigh DataProtectionImpactAssessmentResidualRisk = "HIGH"
)
func DataProtectionImpactAssessmentResidualRisks() []DataProtectionImpactAssessmentResidualRisk {
return []DataProtectionImpactAssessmentResidualRisk{
DataProtectionImpactAssessmentResidualRiskLow,
DataProtectionImpactAssessmentResidualRiskMedium,
DataProtectionImpactAssessmentResidualRiskHigh,
}
}
func (p DataProtectionImpactAssessmentResidualRisk) String() string {
return string(p)
}
func (p *DataProtectionImpactAssessmentResidualRisk) Scan(value any) error {
var s string
switch v := value.(type) {
case string:
s = v
case []byte:
s = string(v)
default:
return fmt.Errorf("unsupported type for DataProtectionImpactAssessmentResidualRisk: %T", value)
}
switch s {
case "LOW":
*p = DataProtectionImpactAssessmentResidualRiskLow
case "MEDIUM":
*p = DataProtectionImpactAssessmentResidualRiskMedium
case "HIGH":
*p = DataProtectionImpactAssessmentResidualRiskHigh
default:
return fmt.Errorf("invalid DataProtectionImpactAssessmentResidualRisk value: %q", s)
}
return nil
}
func (p DataProtectionImpactAssessmentResidualRisk) Value() (driver.Value, error) {
return p.String(), nil
}

View File

@@ -67,8 +67,8 @@ const (
UserAPIKeyEntityType uint16 = 43 UserAPIKeyEntityType uint16 = 43
UserAPIKeyMembershipEntityType uint16 = 44 UserAPIKeyMembershipEntityType uint16 = 44
MeetingEntityType uint16 = 45 MeetingEntityType uint16 = 45
ProcessingActivityDPIAEntityType uint16 = 46 DataProtectionImpactAssessmentEntityType uint16 = 46
ProcessingActivityTIAEntityType uint16 = 47 TransferImpactAssessmentEntityType uint16 = 47
) )
type EntityInfo struct { type EntityInfo struct {
@@ -261,12 +261,12 @@ var entityRegistry = map[uint16]EntityInfo{
Model: "Meeting", Model: "Meeting",
Table: "meetings", Table: "meetings",
}, },
ProcessingActivityDPIAEntityType: { DataProtectionImpactAssessmentEntityType: {
Model: "ProcessingActivityDPIA", Model: "DataProtectionImpactAssessment",
Table: "processing_activity_data_protection_impact_assessments", Table: "processing_activity_data_protection_impact_assessments",
}, },
ProcessingActivityTIAEntityType: { TransferImpactAssessmentEntityType: {
Model: "ProcessingActivityTIA", Model: "TransferImpactAssessment",
Table: "processing_activity_transfer_impact_assessments", Table: "processing_activity_transfer_impact_assessments",
}, },
} }

View File

@@ -2,13 +2,16 @@ ALTER TABLE processing_activities ADD COLUMN last_review_date DATE;
ALTER TABLE processing_activities ADD COLUMN next_review_date DATE; ALTER TABLE processing_activities ADD COLUMN next_review_date DATE;
CREATE TYPE processing_activity_role AS ENUM ('CONTROLLER', 'PROCESSOR'); CREATE TYPE processing_activity_role AS ENUM ('CONTROLLER', 'PROCESSOR');
ALTER TABLE processing_activities ADD COLUMN IF NOT EXISTS role processing_activity_role NOT NULL DEFAULT 'PROCESSOR'; ALTER TABLE processing_activities ADD COLUMN role processing_activity_role NOT NULL DEFAULT 'PROCESSOR';
ALTER TABLE processing_activities ALTER COLUMN role DROP DEFAULT; ALTER TABLE processing_activities ALTER COLUMN role DROP DEFAULT;
ALTER TABLE processing_activities ADD COLUMN IF NOT EXISTS data_protection_officer_id TEXT REFERENCES peoples(id) ON DELETE RESTRICT; ALTER TABLE processing_activities ADD COLUMN data_protection_officer_id TEXT REFERENCES peoples(id) ON DELETE RESTRICT;
CREATE TYPE processing_activity_dpia_residual_risk AS ENUM ('LOW', 'MEDIUM', 'HIGH'); CREATE TYPE processing_activity_dpia_residual_risk AS ENUM ('LOW', 'MEDIUM', 'HIGH');
ALTER TABLE processing_activities RENAME COLUMN data_protection_impact_assessment TO data_protection_impact_assessment_needed;
ALTER TABLE processing_activities RENAME COLUMN transfer_impact_assessment TO transfer_impact_assessment_needed;
CREATE TABLE processing_activity_data_protection_impact_assessments ( CREATE TABLE processing_activity_data_protection_impact_assessments (
id TEXT PRIMARY KEY, id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL, tenant_id TEXT NOT NULL,

View File

@@ -28,31 +28,31 @@ import (
type ( type (
ProcessingActivity struct { ProcessingActivity struct {
ID gid.GID `db:"id"` ID gid.GID `db:"id"`
SnapshotID *gid.GID `db:"snapshot_id"` SnapshotID *gid.GID `db:"snapshot_id"`
SourceID *gid.GID `db:"source_id"` SourceID *gid.GID `db:"source_id"`
OrganizationID gid.GID `db:"organization_id"` OrganizationID gid.GID `db:"organization_id"`
Name string `db:"name"` Name string `db:"name"`
Purpose *string `db:"purpose"` Purpose *string `db:"purpose"`
DataSubjectCategory *string `db:"data_subject_category"` DataSubjectCategory *string `db:"data_subject_category"`
PersonalDataCategory *string `db:"personal_data_category"` PersonalDataCategory *string `db:"personal_data_category"`
SpecialOrCriminalData ProcessingActivitySpecialOrCriminalDatum `db:"special_or_criminal_data"` SpecialOrCriminalData ProcessingActivitySpecialOrCriminalDatum `db:"special_or_criminal_data"`
ConsentEvidenceLink *string `db:"consent_evidence_link"` ConsentEvidenceLink *string `db:"consent_evidence_link"`
LawfulBasis ProcessingActivityLawfulBasis `db:"lawful_basis"` LawfulBasis ProcessingActivityLawfulBasis `db:"lawful_basis"`
Recipients *string `db:"recipients"` Recipients *string `db:"recipients"`
Location *string `db:"location"` Location *string `db:"location"`
InternationalTransfers bool `db:"international_transfers"` InternationalTransfers bool `db:"international_transfers"`
TransferSafeguard *ProcessingActivityTransferSafeguard `db:"transfer_safeguards"` TransferSafeguard *ProcessingActivityTransferSafeguard `db:"transfer_safeguards"`
RetentionPeriod *string `db:"retention_period"` RetentionPeriod *string `db:"retention_period"`
SecurityMeasures *string `db:"security_measures"` SecurityMeasures *string `db:"security_measures"`
DataProtectionImpactAssessment ProcessingActivityDataProtectionImpactAssessment `db:"data_protection_impact_assessment"` DataProtectionImpactAssessmentNeeded ProcessingActivityDataProtectionImpactAssessment `db:"data_protection_impact_assessment_needed"`
TransferImpactAssessment ProcessingActivityTransferImpactAssessment `db:"transfer_impact_assessment"` TransferImpactAssessmentNeeded ProcessingActivityTransferImpactAssessment `db:"transfer_impact_assessment_needed"`
LastReviewDate *time.Time `db:"last_review_date"` LastReviewDate *time.Time `db:"last_review_date"`
NextReviewDate *time.Time `db:"next_review_date"` NextReviewDate *time.Time `db:"next_review_date"`
Role ProcessingActivityRole `db:"role"` Role ProcessingActivityRole `db:"role"`
DataProtectionOfficerID *gid.GID `db:"data_protection_officer_id"` DataProtectionOfficerID *gid.GID `db:"data_protection_officer_id"`
CreatedAt time.Time `db:"created_at"` CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"` UpdatedAt time.Time `db:"updated_at"`
} }
ProcessingActivities []*ProcessingActivity ProcessingActivities []*ProcessingActivity
@@ -94,8 +94,8 @@ SELECT
transfer_safeguards, transfer_safeguards,
retention_period, retention_period,
security_measures, security_measures,
data_protection_impact_assessment, data_protection_impact_assessment_needed,
transfer_impact_assessment, transfer_impact_assessment_needed,
last_review_date, last_review_date,
next_review_date, next_review_date,
role, role,
@@ -192,8 +192,8 @@ SELECT
transfer_safeguards, transfer_safeguards,
retention_period, retention_period,
security_measures, security_measures,
data_protection_impact_assessment, data_protection_impact_assessment_needed,
transfer_impact_assessment, transfer_impact_assessment_needed,
last_review_date, last_review_date,
next_review_date, next_review_date,
role, role,
@@ -256,8 +256,8 @@ INSERT INTO processing_activities (
transfer_safeguards, transfer_safeguards,
retention_period, retention_period,
security_measures, security_measures,
data_protection_impact_assessment, data_protection_impact_assessment_needed,
transfer_impact_assessment, transfer_impact_assessment_needed,
last_review_date, last_review_date,
next_review_date, next_review_date,
role, role,
@@ -283,8 +283,8 @@ INSERT INTO processing_activities (
@transfer_safeguards, @transfer_safeguards,
@retention_period, @retention_period,
@security_measures, @security_measures,
@data_protection_impact_assessment, @data_protection_impact_assessment_needed,
@transfer_impact_assessment, @transfer_impact_assessment_needed,
@last_review_date, @last_review_date,
@next_review_date, @next_review_date,
@role, @role,
@@ -295,32 +295,32 @@ INSERT INTO processing_activities (
` `
args := pgx.StrictNamedArgs{ args := pgx.StrictNamedArgs{
"id": p.ID, "id": p.ID,
"tenant_id": scope.GetTenantID(), "tenant_id": scope.GetTenantID(),
"snapshot_id": p.SnapshotID, "snapshot_id": p.SnapshotID,
"source_id": p.SourceID, "source_id": p.SourceID,
"organization_id": p.OrganizationID, "organization_id": p.OrganizationID,
"name": p.Name, "name": p.Name,
"purpose": p.Purpose, "purpose": p.Purpose,
"data_subject_category": p.DataSubjectCategory, "data_subject_category": p.DataSubjectCategory,
"personal_data_category": p.PersonalDataCategory, "personal_data_category": p.PersonalDataCategory,
"special_or_criminal_data": p.SpecialOrCriminalData, "special_or_criminal_data": p.SpecialOrCriminalData,
"consent_evidence_link": p.ConsentEvidenceLink, "consent_evidence_link": p.ConsentEvidenceLink,
"lawful_basis": p.LawfulBasis, "lawful_basis": p.LawfulBasis,
"recipients": p.Recipients, "recipients": p.Recipients,
"location": p.Location, "location": p.Location,
"international_transfers": p.InternationalTransfers, "international_transfers": p.InternationalTransfers,
"transfer_safeguards": p.TransferSafeguard, "transfer_safeguards": p.TransferSafeguard,
"retention_period": p.RetentionPeriod, "retention_period": p.RetentionPeriod,
"security_measures": p.SecurityMeasures, "security_measures": p.SecurityMeasures,
"data_protection_impact_assessment": p.DataProtectionImpactAssessment, "data_protection_impact_assessment_needed": p.DataProtectionImpactAssessmentNeeded,
"transfer_impact_assessment": p.TransferImpactAssessment, "transfer_impact_assessment_needed": p.TransferImpactAssessmentNeeded,
"last_review_date": p.LastReviewDate, "last_review_date": p.LastReviewDate,
"next_review_date": p.NextReviewDate, "next_review_date": p.NextReviewDate,
"role": p.Role, "role": p.Role,
"data_protection_officer_id": p.DataProtectionOfficerID, "data_protection_officer_id": p.DataProtectionOfficerID,
"created_at": p.CreatedAt, "created_at": p.CreatedAt,
"updated_at": p.UpdatedAt, "updated_at": p.UpdatedAt,
} }
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
@@ -352,8 +352,8 @@ SET
transfer_safeguards = @transfer_safeguards, transfer_safeguards = @transfer_safeguards,
retention_period = @retention_period, retention_period = @retention_period,
security_measures = @security_measures, security_measures = @security_measures,
data_protection_impact_assessment = @data_protection_impact_assessment, data_protection_impact_assessment_needed = @data_protection_impact_assessment_needed,
transfer_impact_assessment = @transfer_impact_assessment, transfer_impact_assessment_needed = @transfer_impact_assessment_needed,
last_review_date = @last_review_date, last_review_date = @last_review_date,
next_review_date = @next_review_date, next_review_date = @next_review_date,
role = @role, role = @role,
@@ -368,27 +368,27 @@ WHERE
q = fmt.Sprintf(q, scope.SQLFragment()) q = fmt.Sprintf(q, scope.SQLFragment())
args := pgx.StrictNamedArgs{ args := pgx.StrictNamedArgs{
"id": p.ID, "id": p.ID,
"name": p.Name, "name": p.Name,
"purpose": p.Purpose, "purpose": p.Purpose,
"data_subject_category": p.DataSubjectCategory, "data_subject_category": p.DataSubjectCategory,
"personal_data_category": p.PersonalDataCategory, "personal_data_category": p.PersonalDataCategory,
"special_or_criminal_data": p.SpecialOrCriminalData, "special_or_criminal_data": p.SpecialOrCriminalData,
"consent_evidence_link": p.ConsentEvidenceLink, "consent_evidence_link": p.ConsentEvidenceLink,
"lawful_basis": p.LawfulBasis, "lawful_basis": p.LawfulBasis,
"recipients": p.Recipients, "recipients": p.Recipients,
"location": p.Location, "location": p.Location,
"international_transfers": p.InternationalTransfers, "international_transfers": p.InternationalTransfers,
"transfer_safeguards": p.TransferSafeguard, "transfer_safeguards": p.TransferSafeguard,
"retention_period": p.RetentionPeriod, "retention_period": p.RetentionPeriod,
"security_measures": p.SecurityMeasures, "security_measures": p.SecurityMeasures,
"data_protection_impact_assessment": p.DataProtectionImpactAssessment, "data_protection_impact_assessment_needed": p.DataProtectionImpactAssessmentNeeded,
"transfer_impact_assessment": p.TransferImpactAssessment, "transfer_impact_assessment_needed": p.TransferImpactAssessmentNeeded,
"last_review_date": p.LastReviewDate, "last_review_date": p.LastReviewDate,
"next_review_date": p.NextReviewDate, "next_review_date": p.NextReviewDate,
"role": p.Role, "role": p.Role,
"data_protection_officer_id": p.DataProtectionOfficerID, "data_protection_officer_id": p.DataProtectionOfficerID,
"updated_at": p.UpdatedAt, "updated_at": p.UpdatedAt,
} }
maps.Copy(args, scope.SQLArguments()) maps.Copy(args, scope.SQLArguments())
@@ -427,7 +427,7 @@ WHERE
} }
func (pas ProcessingActivities) Snapshot(ctx context.Context, conn pg.Conn, scope Scoper, organizationID, snapshotID gid.GID) error { func (pas ProcessingActivities) Snapshot(ctx context.Context, conn pg.Conn, scope Scoper, organizationID, snapshotID gid.GID) error {
snapshotters := []ProcessingActivitySnapshotter{ProcessingActivities{}, Vendors{}, ProcessingActivityVendors{}, ProcessingActivityDPIAs{}, ProcessingActivityTIAs{}} snapshotters := []ProcessingActivitySnapshotter{ProcessingActivities{}, Vendors{}, ProcessingActivityVendors{}, DataProtectionImpactAssessments{}, TransferImpactAssessments{}}
for _, snapshotter := range snapshotters { for _, snapshotter := range snapshotters {
if err := snapshotter.InsertProcessingActivitySnapshots(ctx, conn, scope, organizationID, snapshotID); err != nil { if err := snapshotter.InsertProcessingActivitySnapshots(ctx, conn, scope, organizationID, snapshotID); err != nil {
@@ -465,8 +465,8 @@ INSERT INTO processing_activities (
transfer_safeguards, transfer_safeguards,
retention_period, retention_period,
security_measures, security_measures,
data_protection_impact_assessment, data_protection_impact_assessment_needed,
transfer_impact_assessment, transfer_impact_assessment_needed,
last_review_date, last_review_date,
next_review_date, next_review_date,
role, role,
@@ -493,8 +493,8 @@ SELECT
par.transfer_safeguards, par.transfer_safeguards,
par.retention_period, par.retention_period,
par.security_measures, par.security_measures,
par.data_protection_impact_assessment, par.data_protection_impact_assessment_needed,
par.transfer_impact_assessment, par.transfer_impact_assessment_needed,
par.last_review_date, par.last_review_date,
par.next_review_date, par.next_review_date,
par.role, par.role,

View File

@@ -1,68 +0,0 @@
// Copyright (c) 2025 Probo Inc <hello@getprobo.com>.
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
package coredata
import (
"database/sql/driver"
"fmt"
)
type ProcessingActivityDPIAResidualRisk string
const (
ProcessingActivityDPIAResidualRiskLow ProcessingActivityDPIAResidualRisk = "LOW"
ProcessingActivityDPIAResidualRiskMedium ProcessingActivityDPIAResidualRisk = "MEDIUM"
ProcessingActivityDPIAResidualRiskHigh ProcessingActivityDPIAResidualRisk = "HIGH"
)
func ProcessingActivityDPIAResidualRisks() []ProcessingActivityDPIAResidualRisk {
return []ProcessingActivityDPIAResidualRisk{
ProcessingActivityDPIAResidualRiskLow,
ProcessingActivityDPIAResidualRiskMedium,
ProcessingActivityDPIAResidualRiskHigh,
}
}
func (p ProcessingActivityDPIAResidualRisk) String() string {
return string(p)
}
func (p *ProcessingActivityDPIAResidualRisk) Scan(value any) error {
var s string
switch v := value.(type) {
case string:
s = v
case []byte:
s = string(v)
default:
return fmt.Errorf("unsupported type for ProcessingActivityDPIAResidualRisk: %T", value)
}
switch s {
case "LOW":
*p = ProcessingActivityDPIAResidualRiskLow
case "MEDIUM":
*p = ProcessingActivityDPIAResidualRiskMedium
case "HIGH":
*p = ProcessingActivityDPIAResidualRiskHigh
default:
return fmt.Errorf("invalid ProcessingActivityDPIAResidualRisk value: %q", s)
}
return nil
}
func (p ProcessingActivityDPIAResidualRisk) Value() (driver.Value, error) {
return p.String(), nil
}

View File

@@ -27,16 +27,16 @@ import (
"go.probo.inc/probo/pkg/page" "go.probo.inc/probo/pkg/page"
) )
type ErrProcessingActivityTIANotFound struct { type ErrTransferImpactAssessmentNotFound struct {
Identifier string Identifier string
} }
func (e ErrProcessingActivityTIANotFound) Error() string { func (e ErrTransferImpactAssessmentNotFound) Error() string {
return fmt.Sprintf("processing activity tia not found: %q", e.Identifier) return fmt.Sprintf("transfer impact assessment not found: %q", e.Identifier)
} }
type ( type (
ProcessingActivityTIA struct { TransferImpactAssessment struct {
ID gid.GID `db:"id"` ID gid.GID `db:"id"`
SnapshotID *gid.GID `db:"snapshot_id"` SnapshotID *gid.GID `db:"snapshot_id"`
SourceID *gid.GID `db:"source_id"` SourceID *gid.GID `db:"source_id"`
@@ -51,24 +51,24 @@ type (
UpdatedAt time.Time `db:"updated_at"` UpdatedAt time.Time `db:"updated_at"`
} }
ProcessingActivityTIAs []*ProcessingActivityTIA TransferImpactAssessments []*TransferImpactAssessment
) )
func (tia *ProcessingActivityTIA) CursorKey(field ProcessingActivityTIAOrderField) page.CursorKey { func (tia *TransferImpactAssessment) CursorKey(field TransferImpactAssessmentOrderField) page.CursorKey {
switch field { switch field {
case ProcessingActivityTIAOrderFieldCreatedAt: case TransferImpactAssessmentOrderFieldCreatedAt:
return page.NewCursorKey(tia.ID, tia.CreatedAt) return page.NewCursorKey(tia.ID, tia.CreatedAt)
} }
panic(fmt.Sprintf("unsupported order by: %s", field)) panic(fmt.Sprintf("unsupported order by: %s", field))
} }
func (tias *ProcessingActivityTIAs) CountByOrganizationID( func (tias *TransferImpactAssessments) CountByOrganizationID(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
organizationID gid.GID, organizationID gid.GID,
filter *ProcessingActivityTIAFilter, filter *TransferImpactAssessmentFilter,
) (int, error) { ) (int, error) {
q := ` q := `
SELECT SELECT
@@ -92,19 +92,19 @@ WHERE
var count int var count int
err := row.Scan(&count) err := row.Scan(&count)
if err != nil { if err != nil {
return 0, fmt.Errorf("cannot count processing activity tias: %w", err) return 0, fmt.Errorf("cannot count transfer impact assessments: %w", err)
} }
return count, nil return count, nil
} }
func (tias *ProcessingActivityTIAs) LoadByOrganizationID( func (tias *TransferImpactAssessments) LoadByOrganizationID(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
organizationID gid.GID, organizationID gid.GID,
cursor *page.Cursor[ProcessingActivityTIAOrderField], cursor *page.Cursor[TransferImpactAssessmentOrderField],
filter *ProcessingActivityTIAFilter, filter *TransferImpactAssessmentFilter,
) error { ) error {
q := ` q := `
SELECT SELECT
@@ -138,12 +138,12 @@ WHERE
rows, err := conn.Query(ctx, q, args) rows, err := conn.Query(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot query processing activity tias: %w", err) return fmt.Errorf("cannot query transfer impact assessments: %w", err)
} }
results, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[ProcessingActivityTIA]) results, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[TransferImpactAssessment])
if err != nil { if err != nil {
return fmt.Errorf("cannot collect processing activity tias: %w", err) return fmt.Errorf("cannot collect transfer impact assessments: %w", err)
} }
*tias = results *tias = results
@@ -151,7 +151,7 @@ WHERE
return nil return nil
} }
func (tia *ProcessingActivityTIA) LoadByID( func (tia *TransferImpactAssessment) LoadByID(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -186,15 +186,15 @@ LIMIT 1;
rows, err := conn.Query(ctx, q, args) rows, err := conn.Query(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot query processing activity tia: %w", err) return fmt.Errorf("cannot query transfer impact assessment: %w", err)
} }
result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[ProcessingActivityTIA]) result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[TransferImpactAssessment])
if err != nil { if err != nil {
if errors.Is(err, pgx.ErrNoRows) { if errors.Is(err, pgx.ErrNoRows) {
return &ErrProcessingActivityTIANotFound{Identifier: tiaID.String()} return &ErrTransferImpactAssessmentNotFound{Identifier: tiaID.String()}
} }
return fmt.Errorf("cannot collect processing activity tia: %w", err) return fmt.Errorf("cannot collect transfer impact assessment: %w", err)
} }
*tia = result *tia = result
@@ -202,7 +202,7 @@ LIMIT 1;
return nil return nil
} }
func (tia *ProcessingActivityTIA) LoadByProcessingActivityID( func (tia *TransferImpactAssessment) LoadByProcessingActivityID(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -237,15 +237,15 @@ LIMIT 1;
rows, err := conn.Query(ctx, q, args) rows, err := conn.Query(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot query processing activity tia: %w", err) return fmt.Errorf("cannot query transfer impact assessment: %w", err)
} }
result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[ProcessingActivityTIA]) result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[TransferImpactAssessment])
if err != nil { if err != nil {
if errors.Is(err, pgx.ErrNoRows) { if errors.Is(err, pgx.ErrNoRows) {
return &ErrProcessingActivityTIANotFound{Identifier: processingActivityID.String()} return &ErrTransferImpactAssessmentNotFound{Identifier: processingActivityID.String()}
} }
return fmt.Errorf("cannot collect processing activity tia: %w", err) return fmt.Errorf("cannot collect transfer impact assessment: %w", err)
} }
*tia = result *tia = result
@@ -253,7 +253,7 @@ LIMIT 1;
return nil return nil
} }
func (tia *ProcessingActivityTIA) Insert( func (tia *TransferImpactAssessment) Insert(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -302,13 +302,13 @@ INSERT INTO processing_activity_transfer_impact_assessments (
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot insert processing activity tia: %w", err) return fmt.Errorf("cannot insert transfer impact assessment: %w", err)
} }
return nil return nil
} }
func (tia *ProcessingActivityTIA) Update( func (tia *TransferImpactAssessment) Update(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -341,13 +341,13 @@ WHERE
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot update processing activity tia: %w", err) return fmt.Errorf("cannot update transfer impact assessment: %w", err)
} }
return nil return nil
} }
func (tia *ProcessingActivityTIA) Delete( func (tia *TransferImpactAssessment) Delete(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -366,13 +366,13 @@ WHERE
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot delete processing activity tia: %w", err) return fmt.Errorf("cannot delete transfer impact assessment: %w", err)
} }
return nil return nil
} }
func (tias ProcessingActivityTIAs) InsertProcessingActivitySnapshots( func (tias TransferImpactAssessments) InsertProcessingActivitySnapshots(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -419,13 +419,14 @@ WHERE tia.tenant_id = @tenant_id AND tia.organization_id = @organization_id AND
"tenant_id": scope.GetTenantID(), "tenant_id": scope.GetTenantID(),
"snapshot_id": snapshotID, "snapshot_id": snapshotID,
"organization_id": organizationID, "organization_id": organizationID,
"tia_entity_type": ProcessingActivityTIAEntityType, "tia_entity_type": TransferImpactAssessmentEntityType,
} }
_, err := conn.Exec(ctx, query, args) _, err := conn.Exec(ctx, query, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot insert processing activity tia snapshots: %w", err) return fmt.Errorf("cannot insert transfer impact assessment snapshots: %w", err)
} }
return nil return nil
} }

View File

@@ -20,18 +20,18 @@ import (
) )
type ( type (
ProcessingActivityTIAFilter struct { TransferImpactAssessmentFilter struct {
snapshotID **gid.GID snapshotID **gid.GID
} }
) )
func NewProcessingActivityTIAFilter(snapshotID **gid.GID) *ProcessingActivityTIAFilter { func NewTransferImpactAssessmentFilter(snapshotID **gid.GID) *TransferImpactAssessmentFilter {
return &ProcessingActivityTIAFilter{ return &TransferImpactAssessmentFilter{
snapshotID: snapshotID, snapshotID: snapshotID,
} }
} }
func (f *ProcessingActivityTIAFilter) SQLArguments() pgx.NamedArgs { func (f *TransferImpactAssessmentFilter) SQLArguments() pgx.NamedArgs {
args := pgx.NamedArgs{} args := pgx.NamedArgs{}
if f.snapshotID != nil && *f.snapshotID != nil { if f.snapshotID != nil && *f.snapshotID != nil {
@@ -41,7 +41,7 @@ func (f *ProcessingActivityTIAFilter) SQLArguments() pgx.NamedArgs {
return args return args
} }
func (f *ProcessingActivityTIAFilter) SQLFragment() string { func (f *TransferImpactAssessmentFilter) SQLFragment() string {
if f.snapshotID == nil { if f.snapshotID == nil {
return "TRUE" return "TRUE"
} }
@@ -52,3 +52,4 @@ func (f *ProcessingActivityTIAFilter) SQLFragment() string {
return "snapshot_id = @filter_snapshot_id" return "snapshot_id = @filter_snapshot_id"
} }
} }

View File

@@ -16,30 +16,31 @@ package coredata
import "fmt" import "fmt"
type ProcessingActivityDPIAOrderField string type TransferImpactAssessmentOrderField string
const ( const (
ProcessingActivityDPIAOrderFieldCreatedAt ProcessingActivityDPIAOrderField = "CREATED_AT" TransferImpactAssessmentOrderFieldCreatedAt TransferImpactAssessmentOrderField = "CREATED_AT"
) )
func (p ProcessingActivityDPIAOrderField) Column() string { func (p TransferImpactAssessmentOrderField) Column() string {
return string(p) return string(p)
} }
func (p ProcessingActivityDPIAOrderField) String() string { func (p TransferImpactAssessmentOrderField) String() string {
return string(p) return string(p)
} }
func (p ProcessingActivityDPIAOrderField) MarshalText() ([]byte, error) { func (p TransferImpactAssessmentOrderField) MarshalText() ([]byte, error) {
return []byte(p.String()), nil return []byte(p.String()), nil
} }
func (p *ProcessingActivityDPIAOrderField) UnmarshalText(text []byte) error { func (p *TransferImpactAssessmentOrderField) UnmarshalText(text []byte) error {
val := string(text) val := string(text)
switch val { switch val {
case string(ProcessingActivityDPIAOrderFieldCreatedAt): case string(TransferImpactAssessmentOrderFieldCreatedAt):
*p = ProcessingActivityDPIAOrderFieldCreatedAt *p = TransferImpactAssessmentOrderFieldCreatedAt
return nil return nil
} }
return fmt.Errorf("invalid ProcessingActivityDPIAOrderField value: %q", val) return fmt.Errorf("invalid TransferImpactAssessmentOrderField value: %q", val)
} }

View File

@@ -26,31 +26,31 @@ import (
"go.probo.inc/probo/pkg/validator" "go.probo.inc/probo/pkg/validator"
) )
type ProcessingActivityDPIAService struct { type DataProtectionImpactAssessmentService struct {
svc *TenantService svc *TenantService
} }
type ( type (
CreateProcessingActivityDPIARequest struct { CreateDataProtectionImpactAssessmentRequest struct {
ProcessingActivityID gid.GID ProcessingActivityID gid.GID
Description *string Description *string
NecessityAndProportionality *string NecessityAndProportionality *string
PotentialRisk *string PotentialRisk *string
Mitigations *string Mitigations *string
ResidualRisk *coredata.ProcessingActivityDPIAResidualRisk ResidualRisk *coredata.DataProtectionImpactAssessmentResidualRisk
} }
UpdateProcessingActivityDPIARequest struct { UpdateDataProtectionImpactAssessmentRequest struct {
ID gid.GID ID gid.GID
Description **string Description **string
NecessityAndProportionality **string NecessityAndProportionality **string
PotentialRisk **string PotentialRisk **string
Mitigations **string Mitigations **string
ResidualRisk *coredata.ProcessingActivityDPIAResidualRisk ResidualRisk *coredata.DataProtectionImpactAssessmentResidualRisk
} }
) )
func (req *CreateProcessingActivityDPIARequest) Validate() error { func (req *CreateDataProtectionImpactAssessmentRequest) Validate() error {
v := validator.New() v := validator.New()
v.Check(req.ProcessingActivityID, "processing_activity_id", validator.Required(), validator.GID(coredata.ProcessingActivityEntityType)) v.Check(req.ProcessingActivityID, "processing_activity_id", validator.Required(), validator.GID(coredata.ProcessingActivityEntityType))
@@ -58,35 +58,35 @@ func (req *CreateProcessingActivityDPIARequest) Validate() error {
v.Check(req.NecessityAndProportionality, "necessity_and_proportionality", validator.SafeText(ContentMaxLength)) v.Check(req.NecessityAndProportionality, "necessity_and_proportionality", validator.SafeText(ContentMaxLength))
v.Check(req.PotentialRisk, "potential_risk", validator.SafeText(ContentMaxLength)) v.Check(req.PotentialRisk, "potential_risk", validator.SafeText(ContentMaxLength))
v.Check(req.Mitigations, "mitigations", validator.SafeText(ContentMaxLength)) v.Check(req.Mitigations, "mitigations", validator.SafeText(ContentMaxLength))
v.Check(req.ResidualRisk, "residual_risk", validator.OneOfSlice(coredata.ProcessingActivityDPIAResidualRisks())) v.Check(req.ResidualRisk, "residual_risk", validator.OneOfSlice(coredata.DataProtectionImpactAssessmentResidualRisks()))
return v.Error() return v.Error()
} }
func (req *UpdateProcessingActivityDPIARequest) Validate() error { func (req *UpdateDataProtectionImpactAssessmentRequest) Validate() error {
v := validator.New() v := validator.New()
v.Check(req.ID, "id", validator.Required(), validator.GID(coredata.ProcessingActivityDPIAEntityType)) v.Check(req.ID, "id", validator.Required(), validator.GID(coredata.DataProtectionImpactAssessmentEntityType))
v.Check(req.Description, "description", validator.SafeText(ContentMaxLength)) v.Check(req.Description, "description", validator.SafeText(ContentMaxLength))
v.Check(req.NecessityAndProportionality, "necessity_and_proportionality", validator.SafeText(ContentMaxLength)) v.Check(req.NecessityAndProportionality, "necessity_and_proportionality", validator.SafeText(ContentMaxLength))
v.Check(req.PotentialRisk, "potential_risk", validator.SafeText(ContentMaxLength)) v.Check(req.PotentialRisk, "potential_risk", validator.SafeText(ContentMaxLength))
v.Check(req.Mitigations, "mitigations", validator.SafeText(ContentMaxLength)) v.Check(req.Mitigations, "mitigations", validator.SafeText(ContentMaxLength))
v.Check(req.ResidualRisk, "residual_risk", validator.OneOfSlice(coredata.ProcessingActivityDPIAResidualRisks())) v.Check(req.ResidualRisk, "residual_risk", validator.OneOfSlice(coredata.DataProtectionImpactAssessmentResidualRisks()))
return v.Error() return v.Error()
} }
func (s ProcessingActivityDPIAService) Get( func (s DataProtectionImpactAssessmentService) Get(
ctx context.Context, ctx context.Context,
dpiaID gid.GID, dpiaID gid.GID,
) (*coredata.ProcessingActivityDPIA, error) { ) (*coredata.DataProtectionImpactAssessment, error) {
dpia := &coredata.ProcessingActivityDPIA{} dpia := &coredata.DataProtectionImpactAssessment{}
err := s.svc.pg.WithConn( err := s.svc.pg.WithConn(
ctx, ctx,
func(conn pg.Conn) error { func(conn pg.Conn) error {
if err := dpia.LoadByID(ctx, conn, s.svc.scope, dpiaID); err != nil { if err := dpia.LoadByID(ctx, conn, s.svc.scope, dpiaID); err != nil {
return fmt.Errorf("cannot load processing activity dpia: %w", err) return fmt.Errorf("cannot load data protection impact assessment: %w", err)
} }
return nil return nil
@@ -100,17 +100,17 @@ func (s ProcessingActivityDPIAService) Get(
return dpia, nil return dpia, nil
} }
func (s ProcessingActivityDPIAService) GetByProcessingActivityID( func (s DataProtectionImpactAssessmentService) GetByProcessingActivityID(
ctx context.Context, ctx context.Context,
processingActivityID gid.GID, processingActivityID gid.GID,
) (*coredata.ProcessingActivityDPIA, error) { ) (*coredata.DataProtectionImpactAssessment, error) {
dpia := &coredata.ProcessingActivityDPIA{} dpia := &coredata.DataProtectionImpactAssessment{}
err := s.svc.pg.WithConn( err := s.svc.pg.WithConn(
ctx, ctx,
func(conn pg.Conn) error { func(conn pg.Conn) error {
if err := dpia.LoadByProcessingActivityID(ctx, conn, s.svc.scope, processingActivityID); err != nil { if err := dpia.LoadByProcessingActivityID(ctx, conn, s.svc.scope, processingActivityID); err != nil {
return fmt.Errorf("cannot load processing activity dpia: %w", err) return fmt.Errorf("cannot load data protection impact assessment: %w", err)
} }
return nil return nil
@@ -124,20 +124,20 @@ func (s ProcessingActivityDPIAService) GetByProcessingActivityID(
return dpia, nil return dpia, nil
} }
func (s ProcessingActivityDPIAService) ListForOrganizationID( func (s DataProtectionImpactAssessmentService) ListForOrganizationID(
ctx context.Context, ctx context.Context,
organizationID gid.GID, organizationID gid.GID,
cursor *page.Cursor[coredata.ProcessingActivityDPIAOrderField], cursor *page.Cursor[coredata.DataProtectionImpactAssessmentOrderField],
filter *coredata.ProcessingActivityDPIAFilter, filter *coredata.DataProtectionImpactAssessmentFilter,
) (*page.Page[*coredata.ProcessingActivityDPIA, coredata.ProcessingActivityDPIAOrderField], error) { ) (*page.Page[*coredata.DataProtectionImpactAssessment, coredata.DataProtectionImpactAssessmentOrderField], error) {
var dpias coredata.ProcessingActivityDPIAs var dpias coredata.DataProtectionImpactAssessments
err := s.svc.pg.WithConn( err := s.svc.pg.WithConn(
ctx, ctx,
func(conn pg.Conn) error { func(conn pg.Conn) error {
err := dpias.LoadByOrganizationID(ctx, conn, s.svc.scope, organizationID, cursor, filter) err := dpias.LoadByOrganizationID(ctx, conn, s.svc.scope, organizationID, cursor, filter)
if err != nil { if err != nil {
return fmt.Errorf("cannot load processing activity dpias: %w", err) return fmt.Errorf("cannot load data protection impact assessments: %w", err)
} }
return nil return nil
@@ -151,17 +151,17 @@ func (s ProcessingActivityDPIAService) ListForOrganizationID(
return page.NewPage(dpias, cursor), nil return page.NewPage(dpias, cursor), nil
} }
func (s ProcessingActivityDPIAService) CountForOrganizationID( func (s DataProtectionImpactAssessmentService) CountForOrganizationID(
ctx context.Context, ctx context.Context,
organizationID gid.GID, organizationID gid.GID,
filter *coredata.ProcessingActivityDPIAFilter, filter *coredata.DataProtectionImpactAssessmentFilter,
) (int, error) { ) (int, error) {
var count int var count int
err := s.svc.pg.WithConn( err := s.svc.pg.WithConn(
ctx, ctx,
func(conn pg.Conn) (err error) { func(conn pg.Conn) (err error) {
dpias := coredata.ProcessingActivityDPIAs{} dpias := coredata.DataProtectionImpactAssessments{}
count, err = dpias.CountByOrganizationID(ctx, conn, s.svc.scope, organizationID, filter) count, err = dpias.CountByOrganizationID(ctx, conn, s.svc.scope, organizationID, filter)
return err return err
}, },
@@ -174,18 +174,18 @@ func (s ProcessingActivityDPIAService) CountForOrganizationID(
return count, nil return count, nil
} }
func (s *ProcessingActivityDPIAService) Create( func (s *DataProtectionImpactAssessmentService) Create(
ctx context.Context, ctx context.Context,
req *CreateProcessingActivityDPIARequest, req *CreateDataProtectionImpactAssessmentRequest,
) (*coredata.ProcessingActivityDPIA, error) { ) (*coredata.DataProtectionImpactAssessment, error) {
if err := req.Validate(); err != nil { if err := req.Validate(); err != nil {
return nil, err return nil, err
} }
now := time.Now() now := time.Now()
dpia := &coredata.ProcessingActivityDPIA{ dpia := &coredata.DataProtectionImpactAssessment{
ID: gid.New(s.svc.scope.GetTenantID(), coredata.ProcessingActivityDPIAEntityType), ID: gid.New(s.svc.scope.GetTenantID(), coredata.DataProtectionImpactAssessmentEntityType),
ProcessingActivityID: req.ProcessingActivityID, ProcessingActivityID: req.ProcessingActivityID,
Description: req.Description, Description: req.Description,
NecessityAndProportionality: req.NecessityAndProportionality, NecessityAndProportionality: req.NecessityAndProportionality,
@@ -207,7 +207,7 @@ func (s *ProcessingActivityDPIAService) Create(
dpia.OrganizationID = processingActivity.OrganizationID dpia.OrganizationID = processingActivity.OrganizationID
if err := dpia.Insert(ctx, conn, s.svc.scope); err != nil { if err := dpia.Insert(ctx, conn, s.svc.scope); err != nil {
return fmt.Errorf("cannot insert processing activity dpia: %w", err) return fmt.Errorf("cannot insert data protection impact assessment: %w", err)
} }
return nil return nil
@@ -221,21 +221,21 @@ func (s *ProcessingActivityDPIAService) Create(
return dpia, nil return dpia, nil
} }
func (s *ProcessingActivityDPIAService) Update( func (s *DataProtectionImpactAssessmentService) Update(
ctx context.Context, ctx context.Context,
req *UpdateProcessingActivityDPIARequest, req *UpdateDataProtectionImpactAssessmentRequest,
) (*coredata.ProcessingActivityDPIA, error) { ) (*coredata.DataProtectionImpactAssessment, error) {
if err := req.Validate(); err != nil { if err := req.Validate(); err != nil {
return nil, err return nil, err
} }
dpia := &coredata.ProcessingActivityDPIA{} dpia := &coredata.DataProtectionImpactAssessment{}
err := s.svc.pg.WithTx( err := s.svc.pg.WithTx(
ctx, ctx,
func(conn pg.Conn) error { func(conn pg.Conn) error {
if err := dpia.LoadByID(ctx, conn, s.svc.scope, req.ID); err != nil { if err := dpia.LoadByID(ctx, conn, s.svc.scope, req.ID); err != nil {
return fmt.Errorf("cannot load processing activity dpia: %w", err) return fmt.Errorf("cannot load data protection impact assessment: %w", err)
} }
if req.Description != nil { if req.Description != nil {
@@ -261,7 +261,7 @@ func (s *ProcessingActivityDPIAService) Update(
dpia.UpdatedAt = time.Now() dpia.UpdatedAt = time.Now()
if err := dpia.Update(ctx, conn, s.svc.scope); err != nil { if err := dpia.Update(ctx, conn, s.svc.scope); err != nil {
return fmt.Errorf("cannot update processing activity dpia: %w", err) return fmt.Errorf("cannot update data protection impact assessment: %w", err)
} }
return nil return nil
@@ -275,20 +275,20 @@ func (s *ProcessingActivityDPIAService) Update(
return dpia, nil return dpia, nil
} }
func (s *ProcessingActivityDPIAService) Delete( func (s *DataProtectionImpactAssessmentService) Delete(
ctx context.Context, ctx context.Context,
dpiaID gid.GID, dpiaID gid.GID,
) error { ) error {
err := s.svc.pg.WithTx( err := s.svc.pg.WithTx(
ctx, ctx,
func(conn pg.Conn) error { func(conn pg.Conn) error {
dpia := &coredata.ProcessingActivityDPIA{} dpia := &coredata.DataProtectionImpactAssessment{}
if err := dpia.LoadByID(ctx, conn, s.svc.scope, dpiaID); err != nil { if err := dpia.LoadByID(ctx, conn, s.svc.scope, dpiaID); err != nil {
return fmt.Errorf("cannot load processing activity dpia: %w", err) return fmt.Errorf("cannot load data protection impact assessment: %w", err)
} }
if err := dpia.Delete(ctx, conn, s.svc.scope); err != nil { if err := dpia.Delete(ctx, conn, s.svc.scope); err != nil {
return fmt.Errorf("cannot delete processing activity dpia: %w", err) return fmt.Errorf("cannot delete data protection impact assessment: %w", err)
} }
return nil return nil
@@ -297,3 +297,4 @@ func (s *ProcessingActivityDPIAService) Delete(
return err return err
} }

View File

@@ -32,51 +32,51 @@ type ProcessingActivityService struct {
type ( type (
CreateProcessingActivityRequest struct { CreateProcessingActivityRequest struct {
OrganizationID gid.GID OrganizationID gid.GID
Name string Name string
Purpose *string Purpose *string
DataSubjectCategory *string DataSubjectCategory *string
PersonalDataCategory *string PersonalDataCategory *string
SpecialOrCriminalData coredata.ProcessingActivitySpecialOrCriminalDatum SpecialOrCriminalData coredata.ProcessingActivitySpecialOrCriminalDatum
ConsentEvidenceLink *string ConsentEvidenceLink *string
LawfulBasis coredata.ProcessingActivityLawfulBasis LawfulBasis coredata.ProcessingActivityLawfulBasis
Recipients *string Recipients *string
Location *string Location *string
InternationalTransfers bool InternationalTransfers bool
TransferSafeguard *coredata.ProcessingActivityTransferSafeguard TransferSafeguard *coredata.ProcessingActivityTransferSafeguard
RetentionPeriod *string RetentionPeriod *string
SecurityMeasures *string SecurityMeasures *string
DataProtectionImpactAssessment coredata.ProcessingActivityDataProtectionImpactAssessment DataProtectionImpactAssessmentNeeded coredata.ProcessingActivityDataProtectionImpactAssessment
TransferImpactAssessment coredata.ProcessingActivityTransferImpactAssessment TransferImpactAssessmentNeeded coredata.ProcessingActivityTransferImpactAssessment
LastReviewDate *time.Time LastReviewDate *time.Time
NextReviewDate *time.Time NextReviewDate *time.Time
Role coredata.ProcessingActivityRole Role coredata.ProcessingActivityRole
DataProtectionOfficerID *gid.GID DataProtectionOfficerID *gid.GID
VendorIDs []gid.GID VendorIDs []gid.GID
} }
UpdateProcessingActivityRequest struct { UpdateProcessingActivityRequest struct {
ID gid.GID ID gid.GID
Name *string Name *string
Purpose **string Purpose **string
DataSubjectCategory **string DataSubjectCategory **string
PersonalDataCategory **string PersonalDataCategory **string
SpecialOrCriminalData *coredata.ProcessingActivitySpecialOrCriminalDatum SpecialOrCriminalData *coredata.ProcessingActivitySpecialOrCriminalDatum
ConsentEvidenceLink **string ConsentEvidenceLink **string
LawfulBasis *coredata.ProcessingActivityLawfulBasis LawfulBasis *coredata.ProcessingActivityLawfulBasis
Recipients **string Recipients **string
Location **string Location **string
InternationalTransfers *bool InternationalTransfers *bool
TransferSafeguard **coredata.ProcessingActivityTransferSafeguard TransferSafeguard **coredata.ProcessingActivityTransferSafeguard
RetentionPeriod **string RetentionPeriod **string
SecurityMeasures **string SecurityMeasures **string
DataProtectionImpactAssessment *coredata.ProcessingActivityDataProtectionImpactAssessment DataProtectionImpactAssessmentNeeded *coredata.ProcessingActivityDataProtectionImpactAssessment
TransferImpactAssessment *coredata.ProcessingActivityTransferImpactAssessment TransferImpactAssessmentNeeded *coredata.ProcessingActivityTransferImpactAssessment
LastReviewDate **time.Time LastReviewDate **time.Time
NextReviewDate **time.Time NextReviewDate **time.Time
Role *coredata.ProcessingActivityRole Role *coredata.ProcessingActivityRole
DataProtectionOfficerID **gid.GID DataProtectionOfficerID **gid.GID
VendorIDs *[]gid.GID VendorIDs *[]gid.GID
} }
) )
@@ -97,8 +97,8 @@ func (cpar *CreateProcessingActivityRequest) Validate() error {
v.Check(cpar.TransferSafeguard, "transfer_safeguard", validator.OneOfSlice(coredata.ProcessingActivityTransferSafeguards())) v.Check(cpar.TransferSafeguard, "transfer_safeguard", validator.OneOfSlice(coredata.ProcessingActivityTransferSafeguards()))
v.Check(cpar.RetentionPeriod, "retention_period", validator.SafeText(TitleMaxLength)) v.Check(cpar.RetentionPeriod, "retention_period", validator.SafeText(TitleMaxLength))
v.Check(cpar.SecurityMeasures, "security_measures", validator.SafeText(TitleMaxLength)) v.Check(cpar.SecurityMeasures, "security_measures", validator.SafeText(TitleMaxLength))
v.Check(cpar.DataProtectionImpactAssessment, "data_protection_impact_assessment", validator.Required(), validator.OneOfSlice(coredata.ProcessingActivityDataProtectionImpactAssessments())) v.Check(cpar.DataProtectionImpactAssessmentNeeded, "data_protection_impact_assessment_needed", validator.Required(), validator.OneOfSlice(coredata.ProcessingActivityDataProtectionImpactAssessments()))
v.Check(cpar.TransferImpactAssessment, "transfer_impact_assessment", validator.Required(), validator.OneOfSlice(coredata.ProcessingActivityTransferImpactAssessments())) v.Check(cpar.TransferImpactAssessmentNeeded, "transfer_impact_assessment_needed", validator.Required(), validator.OneOfSlice(coredata.ProcessingActivityTransferImpactAssessments()))
v.Check(cpar.Role, "role", validator.Required(), validator.OneOfSlice(coredata.ProcessingActivityRoles())) v.Check(cpar.Role, "role", validator.Required(), validator.OneOfSlice(coredata.ProcessingActivityRoles()))
v.Check(cpar.DataProtectionOfficerID, "data_protection_officer_id", validator.GID(coredata.PeopleEntityType)) v.Check(cpar.DataProtectionOfficerID, "data_protection_officer_id", validator.GID(coredata.PeopleEntityType))
v.CheckEach(cpar.VendorIDs, "vendor_ids", func(index int, item any) { v.CheckEach(cpar.VendorIDs, "vendor_ids", func(index int, item any) {
@@ -124,8 +124,8 @@ func (upar *UpdateProcessingActivityRequest) Validate() error {
v.Check(upar.TransferSafeguard, "transfer_safeguards", validator.OneOfSlice(coredata.ProcessingActivityTransferSafeguards())) v.Check(upar.TransferSafeguard, "transfer_safeguards", validator.OneOfSlice(coredata.ProcessingActivityTransferSafeguards()))
v.Check(upar.RetentionPeriod, "retention_period", validator.SafeText(TitleMaxLength)) v.Check(upar.RetentionPeriod, "retention_period", validator.SafeText(TitleMaxLength))
v.Check(upar.SecurityMeasures, "security_measures", validator.SafeText(TitleMaxLength)) v.Check(upar.SecurityMeasures, "security_measures", validator.SafeText(TitleMaxLength))
v.Check(upar.DataProtectionImpactAssessment, "data_protection_impact_assessment", validator.OneOfSlice(coredata.ProcessingActivityDataProtectionImpactAssessments())) v.Check(upar.DataProtectionImpactAssessmentNeeded, "data_protection_impact_assessment_needed", validator.OneOfSlice(coredata.ProcessingActivityDataProtectionImpactAssessments()))
v.Check(upar.TransferImpactAssessment, "transfer_impact_assessment", validator.OneOfSlice(coredata.ProcessingActivityTransferImpactAssessments())) v.Check(upar.TransferImpactAssessmentNeeded, "transfer_impact_assessment_needed", validator.OneOfSlice(coredata.ProcessingActivityTransferImpactAssessments()))
v.Check(upar.Role, "role", validator.OneOfSlice(coredata.ProcessingActivityRoles())) v.Check(upar.Role, "role", validator.OneOfSlice(coredata.ProcessingActivityRoles()))
v.Check(upar.DataProtectionOfficerID, "data_protection_officer_id", validator.GID(coredata.PeopleEntityType)) v.Check(upar.DataProtectionOfficerID, "data_protection_officer_id", validator.GID(coredata.PeopleEntityType))
v.CheckEach(upar.VendorIDs, "vendor_ids", func(index int, item any) { v.CheckEach(upar.VendorIDs, "vendor_ids", func(index int, item any) {
@@ -163,29 +163,29 @@ func (s *ProcessingActivityService) Create(
processingActivityVendors := &coredata.ProcessingActivityVendors{} processingActivityVendors := &coredata.ProcessingActivityVendors{}
processingActivity := &coredata.ProcessingActivity{ processingActivity := &coredata.ProcessingActivity{
ID: gid.New(s.svc.scope.GetTenantID(), coredata.ProcessingActivityEntityType), ID: gid.New(s.svc.scope.GetTenantID(), coredata.ProcessingActivityEntityType),
OrganizationID: req.OrganizationID, OrganizationID: req.OrganizationID,
Name: req.Name, Name: req.Name,
Purpose: req.Purpose, Purpose: req.Purpose,
DataSubjectCategory: req.DataSubjectCategory, DataSubjectCategory: req.DataSubjectCategory,
PersonalDataCategory: req.PersonalDataCategory, PersonalDataCategory: req.PersonalDataCategory,
SpecialOrCriminalData: req.SpecialOrCriminalData, SpecialOrCriminalData: req.SpecialOrCriminalData,
ConsentEvidenceLink: req.ConsentEvidenceLink, ConsentEvidenceLink: req.ConsentEvidenceLink,
LawfulBasis: req.LawfulBasis, LawfulBasis: req.LawfulBasis,
Recipients: req.Recipients, Recipients: req.Recipients,
Location: req.Location, Location: req.Location,
InternationalTransfers: req.InternationalTransfers, InternationalTransfers: req.InternationalTransfers,
TransferSafeguard: req.TransferSafeguard, TransferSafeguard: req.TransferSafeguard,
RetentionPeriod: req.RetentionPeriod, RetentionPeriod: req.RetentionPeriod,
SecurityMeasures: req.SecurityMeasures, SecurityMeasures: req.SecurityMeasures,
DataProtectionImpactAssessment: req.DataProtectionImpactAssessment, DataProtectionImpactAssessmentNeeded: req.DataProtectionImpactAssessmentNeeded,
TransferImpactAssessment: req.TransferImpactAssessment, TransferImpactAssessmentNeeded: req.TransferImpactAssessmentNeeded,
LastReviewDate: req.LastReviewDate, LastReviewDate: req.LastReviewDate,
NextReviewDate: req.NextReviewDate, NextReviewDate: req.NextReviewDate,
Role: req.Role, Role: req.Role,
DataProtectionOfficerID: req.DataProtectionOfficerID, DataProtectionOfficerID: req.DataProtectionOfficerID,
CreatedAt: now, CreatedAt: now,
UpdatedAt: now, UpdatedAt: now,
} }
err := s.svc.pg.WithTx( err := s.svc.pg.WithTx(
@@ -270,11 +270,11 @@ func (s *ProcessingActivityService) Update(
if req.SecurityMeasures != nil { if req.SecurityMeasures != nil {
processingActivity.SecurityMeasures = *req.SecurityMeasures processingActivity.SecurityMeasures = *req.SecurityMeasures
} }
if req.DataProtectionImpactAssessment != nil { if req.DataProtectionImpactAssessmentNeeded != nil {
processingActivity.DataProtectionImpactAssessment = *req.DataProtectionImpactAssessment processingActivity.DataProtectionImpactAssessmentNeeded = *req.DataProtectionImpactAssessmentNeeded
} }
if req.TransferImpactAssessment != nil { if req.TransferImpactAssessmentNeeded != nil {
processingActivity.TransferImpactAssessment = *req.TransferImpactAssessment processingActivity.TransferImpactAssessmentNeeded = *req.TransferImpactAssessmentNeeded
} }
if req.LastReviewDate != nil { if req.LastReviewDate != nil {
processingActivity.LastReviewDate = *req.LastReviewDate processingActivity.LastReviewDate = *req.LastReviewDate

View File

@@ -114,8 +114,8 @@ type (
Snapshots *SnapshotService Snapshots *SnapshotService
ContinualImprovements *ContinualImprovementService ContinualImprovements *ContinualImprovementService
ProcessingActivities *ProcessingActivityService ProcessingActivities *ProcessingActivityService
ProcessingActivityDPIAs *ProcessingActivityDPIAService DataProtectionImpactAssessments *DataProtectionImpactAssessmentService
ProcessingActivityTIAs *ProcessingActivityTIAService TransferImpactAssessments *TransferImpactAssessmentService
Files *FileService Files *FileService
CustomDomains *CustomDomainService CustomDomains *CustomDomainService
SlackMessages *slack.SlackMessageService SlackMessages *slack.SlackMessageService
@@ -251,8 +251,8 @@ func (s *Service) WithTenant(tenantID gid.TenantID) *TenantService {
tenantService.Snapshots = &SnapshotService{svc: tenantService} tenantService.Snapshots = &SnapshotService{svc: tenantService}
tenantService.ContinualImprovements = &ContinualImprovementService{svc: tenantService} tenantService.ContinualImprovements = &ContinualImprovementService{svc: tenantService}
tenantService.ProcessingActivities = &ProcessingActivityService{svc: tenantService} tenantService.ProcessingActivities = &ProcessingActivityService{svc: tenantService}
tenantService.ProcessingActivityDPIAs = &ProcessingActivityDPIAService{svc: tenantService} tenantService.DataProtectionImpactAssessments = &DataProtectionImpactAssessmentService{svc: tenantService}
tenantService.ProcessingActivityTIAs = &ProcessingActivityTIAService{svc: tenantService} tenantService.TransferImpactAssessments = &TransferImpactAssessmentService{svc: tenantService}
tenantService.Files = &FileService{svc: tenantService} tenantService.Files = &FileService{svc: tenantService}
tenantService.CustomDomains = &CustomDomainService{ tenantService.CustomDomains = &CustomDomainService{
svc: tenantService, svc: tenantService,

View File

@@ -26,12 +26,12 @@ import (
"go.probo.inc/probo/pkg/validator" "go.probo.inc/probo/pkg/validator"
) )
type ProcessingActivityTIAService struct { type TransferImpactAssessmentService struct {
svc *TenantService svc *TenantService
} }
type ( type (
CreateProcessingActivityTIARequest struct { CreateTransferImpactAssessmentRequest struct {
ProcessingActivityID gid.GID ProcessingActivityID gid.GID
DataSubjects *string DataSubjects *string
LegalMechanism *string LegalMechanism *string
@@ -40,7 +40,7 @@ type (
SupplementaryMeasures *string SupplementaryMeasures *string
} }
UpdateProcessingActivityTIARequest struct { UpdateTransferImpactAssessmentRequest struct {
ID gid.GID ID gid.GID
DataSubjects **string DataSubjects **string
LegalMechanism **string LegalMechanism **string
@@ -50,7 +50,7 @@ type (
} }
) )
func (req *CreateProcessingActivityTIARequest) Validate() error { func (req *CreateTransferImpactAssessmentRequest) Validate() error {
v := validator.New() v := validator.New()
v.Check(req.ProcessingActivityID, "processing_activity_id", validator.Required(), validator.GID(coredata.ProcessingActivityEntityType)) v.Check(req.ProcessingActivityID, "processing_activity_id", validator.Required(), validator.GID(coredata.ProcessingActivityEntityType))
@@ -63,10 +63,10 @@ func (req *CreateProcessingActivityTIARequest) Validate() error {
return v.Error() return v.Error()
} }
func (req *UpdateProcessingActivityTIARequest) Validate() error { func (req *UpdateTransferImpactAssessmentRequest) Validate() error {
v := validator.New() v := validator.New()
v.Check(req.ID, "id", validator.Required(), validator.GID(coredata.ProcessingActivityTIAEntityType)) v.Check(req.ID, "id", validator.Required(), validator.GID(coredata.TransferImpactAssessmentEntityType))
v.Check(req.DataSubjects, "data_subjects", validator.SafeText(ContentMaxLength)) v.Check(req.DataSubjects, "data_subjects", validator.SafeText(ContentMaxLength))
v.Check(req.LegalMechanism, "legal_mechanism", validator.SafeText(ContentMaxLength)) v.Check(req.LegalMechanism, "legal_mechanism", validator.SafeText(ContentMaxLength))
v.Check(req.Transfer, "transfer", validator.SafeText(ContentMaxLength)) v.Check(req.Transfer, "transfer", validator.SafeText(ContentMaxLength))
@@ -76,17 +76,17 @@ func (req *UpdateProcessingActivityTIARequest) Validate() error {
return v.Error() return v.Error()
} }
func (s ProcessingActivityTIAService) Get( func (s TransferImpactAssessmentService) Get(
ctx context.Context, ctx context.Context,
tiaID gid.GID, tiaID gid.GID,
) (*coredata.ProcessingActivityTIA, error) { ) (*coredata.TransferImpactAssessment, error) {
tia := &coredata.ProcessingActivityTIA{} tia := &coredata.TransferImpactAssessment{}
err := s.svc.pg.WithConn( err := s.svc.pg.WithConn(
ctx, ctx,
func(conn pg.Conn) error { func(conn pg.Conn) error {
if err := tia.LoadByID(ctx, conn, s.svc.scope, tiaID); err != nil { if err := tia.LoadByID(ctx, conn, s.svc.scope, tiaID); err != nil {
return fmt.Errorf("cannot load processing activity tia: %w", err) return fmt.Errorf("cannot load transfer impact assessment: %w", err)
} }
return nil return nil
@@ -100,17 +100,17 @@ func (s ProcessingActivityTIAService) Get(
return tia, nil return tia, nil
} }
func (s ProcessingActivityTIAService) GetByProcessingActivityID( func (s TransferImpactAssessmentService) GetByProcessingActivityID(
ctx context.Context, ctx context.Context,
processingActivityID gid.GID, processingActivityID gid.GID,
) (*coredata.ProcessingActivityTIA, error) { ) (*coredata.TransferImpactAssessment, error) {
tia := &coredata.ProcessingActivityTIA{} tia := &coredata.TransferImpactAssessment{}
err := s.svc.pg.WithConn( err := s.svc.pg.WithConn(
ctx, ctx,
func(conn pg.Conn) error { func(conn pg.Conn) error {
if err := tia.LoadByProcessingActivityID(ctx, conn, s.svc.scope, processingActivityID); err != nil { if err := tia.LoadByProcessingActivityID(ctx, conn, s.svc.scope, processingActivityID); err != nil {
return fmt.Errorf("cannot load processing activity tia: %w", err) return fmt.Errorf("cannot load transfer impact assessment: %w", err)
} }
return nil return nil
@@ -124,20 +124,20 @@ func (s ProcessingActivityTIAService) GetByProcessingActivityID(
return tia, nil return tia, nil
} }
func (s ProcessingActivityTIAService) ListForOrganizationID( func (s TransferImpactAssessmentService) ListForOrganizationID(
ctx context.Context, ctx context.Context,
organizationID gid.GID, organizationID gid.GID,
cursor *page.Cursor[coredata.ProcessingActivityTIAOrderField], cursor *page.Cursor[coredata.TransferImpactAssessmentOrderField],
filter *coredata.ProcessingActivityTIAFilter, filter *coredata.TransferImpactAssessmentFilter,
) (*page.Page[*coredata.ProcessingActivityTIA, coredata.ProcessingActivityTIAOrderField], error) { ) (*page.Page[*coredata.TransferImpactAssessment, coredata.TransferImpactAssessmentOrderField], error) {
var tias coredata.ProcessingActivityTIAs var tias coredata.TransferImpactAssessments
err := s.svc.pg.WithConn( err := s.svc.pg.WithConn(
ctx, ctx,
func(conn pg.Conn) error { func(conn pg.Conn) error {
err := tias.LoadByOrganizationID(ctx, conn, s.svc.scope, organizationID, cursor, filter) err := tias.LoadByOrganizationID(ctx, conn, s.svc.scope, organizationID, cursor, filter)
if err != nil { if err != nil {
return fmt.Errorf("cannot load processing activity tias: %w", err) return fmt.Errorf("cannot load transfer impact assessments: %w", err)
} }
return nil return nil
@@ -151,17 +151,17 @@ func (s ProcessingActivityTIAService) ListForOrganizationID(
return page.NewPage(tias, cursor), nil return page.NewPage(tias, cursor), nil
} }
func (s ProcessingActivityTIAService) CountForOrganizationID( func (s TransferImpactAssessmentService) CountForOrganizationID(
ctx context.Context, ctx context.Context,
organizationID gid.GID, organizationID gid.GID,
filter *coredata.ProcessingActivityTIAFilter, filter *coredata.TransferImpactAssessmentFilter,
) (int, error) { ) (int, error) {
var count int var count int
err := s.svc.pg.WithConn( err := s.svc.pg.WithConn(
ctx, ctx,
func(conn pg.Conn) (err error) { func(conn pg.Conn) (err error) {
tias := coredata.ProcessingActivityTIAs{} tias := coredata.TransferImpactAssessments{}
count, err = tias.CountByOrganizationID(ctx, conn, s.svc.scope, organizationID, filter) count, err = tias.CountByOrganizationID(ctx, conn, s.svc.scope, organizationID, filter)
return err return err
}, },
@@ -174,18 +174,18 @@ func (s ProcessingActivityTIAService) CountForOrganizationID(
return count, nil return count, nil
} }
func (s *ProcessingActivityTIAService) Create( func (s *TransferImpactAssessmentService) Create(
ctx context.Context, ctx context.Context,
req *CreateProcessingActivityTIARequest, req *CreateTransferImpactAssessmentRequest,
) (*coredata.ProcessingActivityTIA, error) { ) (*coredata.TransferImpactAssessment, error) {
if err := req.Validate(); err != nil { if err := req.Validate(); err != nil {
return nil, err return nil, err
} }
now := time.Now() now := time.Now()
tia := &coredata.ProcessingActivityTIA{ tia := &coredata.TransferImpactAssessment{
ID: gid.New(s.svc.scope.GetTenantID(), coredata.ProcessingActivityTIAEntityType), ID: gid.New(s.svc.scope.GetTenantID(), coredata.TransferImpactAssessmentEntityType),
ProcessingActivityID: req.ProcessingActivityID, ProcessingActivityID: req.ProcessingActivityID,
DataSubjects: req.DataSubjects, DataSubjects: req.DataSubjects,
LegalMechanism: req.LegalMechanism, LegalMechanism: req.LegalMechanism,
@@ -207,7 +207,7 @@ func (s *ProcessingActivityTIAService) Create(
tia.OrganizationID = processingActivity.OrganizationID tia.OrganizationID = processingActivity.OrganizationID
if err := tia.Insert(ctx, conn, s.svc.scope); err != nil { if err := tia.Insert(ctx, conn, s.svc.scope); err != nil {
return fmt.Errorf("cannot insert processing activity tia: %w", err) return fmt.Errorf("cannot insert transfer impact assessment: %w", err)
} }
return nil return nil
@@ -221,21 +221,21 @@ func (s *ProcessingActivityTIAService) Create(
return tia, nil return tia, nil
} }
func (s *ProcessingActivityTIAService) Update( func (s *TransferImpactAssessmentService) Update(
ctx context.Context, ctx context.Context,
req *UpdateProcessingActivityTIARequest, req *UpdateTransferImpactAssessmentRequest,
) (*coredata.ProcessingActivityTIA, error) { ) (*coredata.TransferImpactAssessment, error) {
if err := req.Validate(); err != nil { if err := req.Validate(); err != nil {
return nil, err return nil, err
} }
tia := &coredata.ProcessingActivityTIA{} tia := &coredata.TransferImpactAssessment{}
err := s.svc.pg.WithTx( err := s.svc.pg.WithTx(
ctx, ctx,
func(conn pg.Conn) error { func(conn pg.Conn) error {
if err := tia.LoadByID(ctx, conn, s.svc.scope, req.ID); err != nil { if err := tia.LoadByID(ctx, conn, s.svc.scope, req.ID); err != nil {
return fmt.Errorf("cannot load processing activity tia: %w", err) return fmt.Errorf("cannot load transfer impact assessment: %w", err)
} }
if req.DataSubjects != nil { if req.DataSubjects != nil {
@@ -261,7 +261,7 @@ func (s *ProcessingActivityTIAService) Update(
tia.UpdatedAt = time.Now() tia.UpdatedAt = time.Now()
if err := tia.Update(ctx, conn, s.svc.scope); err != nil { if err := tia.Update(ctx, conn, s.svc.scope); err != nil {
return fmt.Errorf("cannot update processing activity tia: %w", err) return fmt.Errorf("cannot update transfer impact assessment: %w", err)
} }
return nil return nil
@@ -275,20 +275,20 @@ func (s *ProcessingActivityTIAService) Update(
return tia, nil return tia, nil
} }
func (s *ProcessingActivityTIAService) Delete( func (s *TransferImpactAssessmentService) Delete(
ctx context.Context, ctx context.Context,
tiaID gid.GID, tiaID gid.GID,
) error { ) error {
err := s.svc.pg.WithTx( err := s.svc.pg.WithTx(
ctx, ctx,
func(conn pg.Conn) error { func(conn pg.Conn) error {
tia := &coredata.ProcessingActivityTIA{} tia := &coredata.TransferImpactAssessment{}
if err := tia.LoadByID(ctx, conn, s.svc.scope, tiaID); err != nil { if err := tia.LoadByID(ctx, conn, s.svc.scope, tiaID); err != nil {
return fmt.Errorf("cannot load processing activity tia: %w", err) return fmt.Errorf("cannot load transfer impact assessment: %w", err)
} }
if err := tia.Delete(ctx, conn, s.svc.scope); err != nil { if err := tia.Delete(ctx, conn, s.svc.scope); err != nil {
return fmt.Errorf("cannot delete processing activity tia: %w", err) return fmt.Errorf("cannot delete transfer impact assessment: %w", err)
} }
return nil return nil
@@ -297,3 +297,4 @@ func (s *ProcessingActivityTIAService) Delete(
return err return err
} }

View File

@@ -366,21 +366,21 @@ enum ProcessingActivityTransferImpactAssessment
) )
} }
enum ProcessingActivityDPIAResidualRisk enum DataProtectionImpactAssessmentResidualRisk
@goModel( @goModel(
model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRisk" model: "go.probo.inc/probo/pkg/coredata.DataProtectionImpactAssessmentResidualRisk"
) { ) {
LOW LOW
@goEnum( @goEnum(
value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRiskLow" value: "go.probo.inc/probo/pkg/coredata.DataProtectionImpactAssessmentResidualRiskLow"
) )
MEDIUM MEDIUM
@goEnum( @goEnum(
value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRiskMedium" value: "go.probo.inc/probo/pkg/coredata.DataProtectionImpactAssessmentResidualRiskMedium"
) )
HIGH HIGH
@goEnum( @goEnum(
value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRiskHigh" value: "go.probo.inc/probo/pkg/coredata.DataProtectionImpactAssessmentResidualRiskHigh"
) )
} }
@@ -1079,23 +1079,23 @@ enum ProcessingActivityOrderField
) )
} }
enum ProcessingActivityDPIAOrderField enum DataProtectionImpactAssessmentOrderField
@goModel( @goModel(
model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAOrderField" model: "go.probo.inc/probo/pkg/coredata.DataProtectionImpactAssessmentOrderField"
) { ) {
CREATED_AT CREATED_AT
@goEnum( @goEnum(
value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAOrderFieldCreatedAt" value: "go.probo.inc/probo/pkg/coredata.DataProtectionImpactAssessmentOrderFieldCreatedAt"
) )
} }
enum ProcessingActivityTIAOrderField enum TransferImpactAssessmentOrderField
@goModel( @goModel(
model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityTIAOrderField" model: "go.probo.inc/probo/pkg/coredata.TransferImpactAssessmentOrderField"
) { ) {
CREATED_AT CREATED_AT
@goEnum( @goEnum(
value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityTIAOrderFieldCreatedAt" value: "go.probo.inc/probo/pkg/coredata.TransferImpactAssessmentOrderFieldCreatedAt"
) )
} }
@@ -1352,20 +1352,20 @@ input ProcessingActivityOrder
field: ProcessingActivityOrderField! field: ProcessingActivityOrderField!
} }
input ProcessingActivityDPIAOrder input DataProtectionImpactAssessmentOrder
@goModel( @goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityDPIAOrderBy" model: "go.probo.inc/probo/pkg/server/api/console/v1/types.DataProtectionImpactAssessmentOrderBy"
) { ) {
direction: OrderDirection! direction: OrderDirection!
field: ProcessingActivityDPIAOrderField! field: DataProtectionImpactAssessmentOrderField!
} }
input ProcessingActivityTIAOrder input TransferImpactAssessmentOrder
@goModel( @goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityTIAOrderBy" model: "go.probo.inc/probo/pkg/server/api/console/v1/types.TransferImpactAssessmentOrderBy"
) { ) {
direction: OrderDirection! direction: OrderDirection!
field: ProcessingActivityTIAOrderField! field: TransferImpactAssessmentOrderField!
} }
input TrustCenterAccessOrder input TrustCenterAccessOrder
@@ -1517,11 +1517,11 @@ input ProcessingActivityFilter {
snapshotId: ID snapshotId: ID
} }
input ProcessingActivityDPIAFilter { input DataProtectionImpactAssessmentFilter {
snapshotId: ID snapshotId: ID
} }
input ProcessingActivityTIAFilter { input TransferImpactAssessmentFilter {
snapshotId: ID snapshotId: ID
} }
@@ -1741,18 +1741,18 @@ type Organization implements Node {
after: CursorKey after: CursorKey
last: Int last: Int
before: CursorKey before: CursorKey
orderBy: ProcessingActivityDPIAOrder orderBy: DataProtectionImpactAssessmentOrder
filter: ProcessingActivityDPIAFilter = { snapshotId: null } filter: DataProtectionImpactAssessmentFilter = { snapshotId: null }
): ProcessingActivityDPIAConnection! @goField(forceResolver: true) ): DataProtectionImpactAssessmentConnection! @goField(forceResolver: true)
transferImpactAssessments( transferImpactAssessments(
first: Int first: Int
after: CursorKey after: CursorKey
last: Int last: Int
before: CursorKey before: CursorKey
orderBy: ProcessingActivityTIAOrder orderBy: TransferImpactAssessmentOrder
filter: ProcessingActivityTIAFilter = { snapshotId: null } filter: TransferImpactAssessmentFilter = { snapshotId: null }
): ProcessingActivityTIAConnection! @goField(forceResolver: true) ): TransferImpactAssessmentConnection! @goField(forceResolver: true)
snapshots( snapshots(
first: Int first: Int
@@ -2344,8 +2344,8 @@ type ProcessingActivity implements Node {
transferSafeguards: ProcessingActivityTransferSafeguard transferSafeguards: ProcessingActivityTransferSafeguard
retentionPeriod: String retentionPeriod: String
securityMeasures: String securityMeasures: String
dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment! dataProtectionImpactAssessmentNeeded: ProcessingActivityDataProtectionImpactAssessment!
transferImpactAssessment: ProcessingActivityTransferImpactAssessment! transferImpactAssessmentNeeded: ProcessingActivityTransferImpactAssessment!
lastReviewDate: Datetime lastReviewDate: Datetime
nextReviewDate: Datetime nextReviewDate: Datetime
role: ProcessingActivityRole! role: ProcessingActivityRole!
@@ -2357,13 +2357,13 @@ type ProcessingActivity implements Node {
before: CursorKey before: CursorKey
orderBy: VendorOrder orderBy: VendorOrder
): VendorConnection! @goField(forceResolver: true) ): VendorConnection! @goField(forceResolver: true)
dpia: ProcessingActivityDPIA @goField(forceResolver: true) dataProtectionImpactAssessment: DataProtectionImpactAssessment @goField(forceResolver: true)
tia: ProcessingActivityTIA @goField(forceResolver: true) transferImpactAssessment: TransferImpactAssessment @goField(forceResolver: true)
createdAt: Datetime! createdAt: Datetime!
updatedAt: Datetime! updatedAt: Datetime!
} }
type ProcessingActivityDPIA implements Node { type DataProtectionImpactAssessment implements Node {
id: ID! id: ID!
processingActivity: ProcessingActivity! @goField(forceResolver: true) processingActivity: ProcessingActivity! @goField(forceResolver: true)
organization: Organization! @goField(forceResolver: true) organization: Organization! @goField(forceResolver: true)
@@ -2371,12 +2371,12 @@ type ProcessingActivityDPIA implements Node {
necessityAndProportionality: String necessityAndProportionality: String
potentialRisk: String potentialRisk: String
mitigations: String mitigations: String
residualRisk: ProcessingActivityDPIAResidualRisk residualRisk: DataProtectionImpactAssessmentResidualRisk
createdAt: Datetime! createdAt: Datetime!
updatedAt: Datetime! updatedAt: Datetime!
} }
type ProcessingActivityTIA implements Node { type TransferImpactAssessment implements Node {
id: ID! id: ID!
processingActivity: ProcessingActivity! @goField(forceResolver: true) processingActivity: ProcessingActivity! @goField(forceResolver: true)
organization: Organization! @goField(forceResolver: true) organization: Organization! @goField(forceResolver: true)
@@ -2893,32 +2893,32 @@ type ProcessingActivityEdge {
node: ProcessingActivity! node: ProcessingActivity!
} }
type ProcessingActivityDPIAConnection type DataProtectionImpactAssessmentConnection
@goModel( @goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityDPIAConnection" model: "go.probo.inc/probo/pkg/server/api/console/v1/types.DataProtectionImpactAssessmentConnection"
) { ) {
totalCount: Int! @goField(forceResolver: true) totalCount: Int! @goField(forceResolver: true)
edges: [ProcessingActivityDPIAEdge!]! edges: [DataProtectionImpactAssessmentEdge!]!
pageInfo: PageInfo! pageInfo: PageInfo!
} }
type ProcessingActivityDPIAEdge { type DataProtectionImpactAssessmentEdge {
cursor: CursorKey! cursor: CursorKey!
node: ProcessingActivityDPIA! node: DataProtectionImpactAssessment!
} }
type ProcessingActivityTIAConnection type TransferImpactAssessmentConnection
@goModel( @goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityTIAConnection" model: "go.probo.inc/probo/pkg/server/api/console/v1/types.TransferImpactAssessmentConnection"
) { ) {
totalCount: Int! @goField(forceResolver: true) totalCount: Int! @goField(forceResolver: true)
edges: [ProcessingActivityTIAEdge!]! edges: [TransferImpactAssessmentEdge!]!
pageInfo: PageInfo! pageInfo: PageInfo!
} }
type ProcessingActivityTIAEdge { type TransferImpactAssessmentEdge {
cursor: CursorKey! cursor: CursorKey!
node: ProcessingActivityTIA! node: TransferImpactAssessment!
} }
type SnapshotConnection type SnapshotConnection
@@ -3258,26 +3258,26 @@ type Mutation {
deleteProcessingActivity( deleteProcessingActivity(
input: DeleteProcessingActivityInput! input: DeleteProcessingActivityInput!
): DeleteProcessingActivityPayload! ): DeleteProcessingActivityPayload!
# Processing Activity DPIA mutations # Data Protection Impact Assessment mutations
createProcessingActivityDPIA( createDataProtectionImpactAssessment(
input: CreateProcessingActivityDPIAInput! input: CreateDataProtectionImpactAssessmentInput!
): CreateProcessingActivityDPIAPayload! ): CreateDataProtectionImpactAssessmentPayload!
updateProcessingActivityDPIA( updateDataProtectionImpactAssessment(
input: UpdateProcessingActivityDPIAInput! input: UpdateDataProtectionImpactAssessmentInput!
): UpdateProcessingActivityDPIAPayload! ): UpdateDataProtectionImpactAssessmentPayload!
deleteProcessingActivityDPIA( deleteDataProtectionImpactAssessment(
input: DeleteProcessingActivityDPIAInput! input: DeleteDataProtectionImpactAssessmentInput!
): DeleteProcessingActivityDPIAPayload! ): DeleteDataProtectionImpactAssessmentPayload!
# Processing Activity TIA mutations # Transfer Impact Assessment mutations
createProcessingActivityTIA( createTransferImpactAssessment(
input: CreateProcessingActivityTIAInput! input: CreateTransferImpactAssessmentInput!
): CreateProcessingActivityTIAPayload! ): CreateTransferImpactAssessmentPayload!
updateProcessingActivityTIA( updateTransferImpactAssessment(
input: UpdateProcessingActivityTIAInput! input: UpdateTransferImpactAssessmentInput!
): UpdateProcessingActivityTIAPayload! ): UpdateTransferImpactAssessmentPayload!
deleteProcessingActivityTIA( deleteTransferImpactAssessment(
input: DeleteProcessingActivityTIAInput! input: DeleteTransferImpactAssessmentInput!
): DeleteProcessingActivityTIAPayload! ): DeleteTransferImpactAssessmentPayload!
# Snapshot mutations # Snapshot mutations
createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload! createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload!
deleteSnapshot(input: DeleteSnapshotInput!): DeleteSnapshotPayload! deleteSnapshot(input: DeleteSnapshotInput!): DeleteSnapshotPayload!
@@ -4046,8 +4046,8 @@ input CreateProcessingActivityInput {
transferSafeguards: ProcessingActivityTransferSafeguard transferSafeguards: ProcessingActivityTransferSafeguard
retentionPeriod: String retentionPeriod: String
securityMeasures: String securityMeasures: String
dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment! dataProtectionImpactAssessmentNeeded: ProcessingActivityDataProtectionImpactAssessment!
transferImpactAssessment: ProcessingActivityTransferImpactAssessment! transferImpactAssessmentNeeded: ProcessingActivityTransferImpactAssessment!
lastReviewDate: Datetime lastReviewDate: Datetime
nextReviewDate: Datetime nextReviewDate: Datetime
role: ProcessingActivityRole! role: ProcessingActivityRole!
@@ -4071,8 +4071,8 @@ input UpdateProcessingActivityInput {
@goField(omittable: true) @goField(omittable: true)
retentionPeriod: String @goField(omittable: true) retentionPeriod: String @goField(omittable: true)
securityMeasures: String @goField(omittable: true) securityMeasures: String @goField(omittable: true)
dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment dataProtectionImpactAssessmentNeeded: ProcessingActivityDataProtectionImpactAssessment
transferImpactAssessment: ProcessingActivityTransferImpactAssessment transferImpactAssessmentNeeded: ProcessingActivityTransferImpactAssessment
lastReviewDate: Datetime @goField(omittable: true) lastReviewDate: Datetime @goField(omittable: true)
nextReviewDate: Datetime @goField(omittable: true) nextReviewDate: Datetime @goField(omittable: true)
role: ProcessingActivityRole role: ProcessingActivityRole
@@ -4084,29 +4084,29 @@ input DeleteProcessingActivityInput {
processingActivityId: ID! processingActivityId: ID!
} }
input CreateProcessingActivityDPIAInput { input CreateDataProtectionImpactAssessmentInput {
processingActivityId: ID! processingActivityId: ID!
description: String description: String
necessityAndProportionality: String necessityAndProportionality: String
potentialRisk: String potentialRisk: String
mitigations: String mitigations: String
residualRisk: ProcessingActivityDPIAResidualRisk residualRisk: DataProtectionImpactAssessmentResidualRisk
} }
input UpdateProcessingActivityDPIAInput { input UpdateDataProtectionImpactAssessmentInput {
id: ID! id: ID!
description: String @goField(omittable: true) description: String @goField(omittable: true)
necessityAndProportionality: String @goField(omittable: true) necessityAndProportionality: String @goField(omittable: true)
potentialRisk: String @goField(omittable: true) potentialRisk: String @goField(omittable: true)
mitigations: String @goField(omittable: true) mitigations: String @goField(omittable: true)
residualRisk: ProcessingActivityDPIAResidualRisk residualRisk: DataProtectionImpactAssessmentResidualRisk
} }
input DeleteProcessingActivityDPIAInput { input DeleteDataProtectionImpactAssessmentInput {
processingActivityDpiaId: ID! dataProtectionImpactAssessmentId: ID!
} }
input CreateProcessingActivityTIAInput { input CreateTransferImpactAssessmentInput {
processingActivityId: ID! processingActivityId: ID!
dataSubjects: String dataSubjects: String
legalMechanism: String legalMechanism: String
@@ -4115,7 +4115,7 @@ input CreateProcessingActivityTIAInput {
supplementaryMeasures: String supplementaryMeasures: String
} }
input UpdateProcessingActivityTIAInput { input UpdateTransferImpactAssessmentInput {
id: ID! id: ID!
dataSubjects: String @goField(omittable: true) dataSubjects: String @goField(omittable: true)
legalMechanism: String @goField(omittable: true) legalMechanism: String @goField(omittable: true)
@@ -4124,8 +4124,8 @@ input UpdateProcessingActivityTIAInput {
supplementaryMeasures: String @goField(omittable: true) supplementaryMeasures: String @goField(omittable: true)
} }
input DeleteProcessingActivityTIAInput { input DeleteTransferImpactAssessmentInput {
processingActivityTiaId: ID! transferImpactAssessmentId: ID!
} }
input CreateSnapshotInput { input CreateSnapshotInput {
@@ -4992,28 +4992,28 @@ type DeleteProcessingActivityPayload {
deletedProcessingActivityId: ID! deletedProcessingActivityId: ID!
} }
type CreateProcessingActivityDPIAPayload { type CreateDataProtectionImpactAssessmentPayload {
processingActivityDpia: ProcessingActivityDPIA! dataProtectionImpactAssessment: DataProtectionImpactAssessment!
} }
type UpdateProcessingActivityDPIAPayload { type UpdateDataProtectionImpactAssessmentPayload {
processingActivityDpia: ProcessingActivityDPIA! dataProtectionImpactAssessment: DataProtectionImpactAssessment!
} }
type DeleteProcessingActivityDPIAPayload { type DeleteDataProtectionImpactAssessmentPayload {
deletedProcessingActivityDpiaId: ID! deletedDataProtectionImpactAssessmentId: ID!
} }
type CreateProcessingActivityTIAPayload { type CreateTransferImpactAssessmentPayload {
processingActivityTia: ProcessingActivityTIA! transferImpactAssessment: TransferImpactAssessment!
} }
type UpdateProcessingActivityTIAPayload { type UpdateTransferImpactAssessmentPayload {
processingActivityTia: ProcessingActivityTIA! transferImpactAssessment: TransferImpactAssessment!
} }
type DeleteProcessingActivityTIAPayload { type DeleteTransferImpactAssessmentPayload {
deletedProcessingActivityTiaId: ID! deletedTransferImpactAssessmentId: ID!
} }
type CreateSnapshotPayload { type CreateSnapshotPayload {

File diff suppressed because it is too large Load Diff

View File

@@ -21,31 +21,31 @@ import (
) )
type ( type (
ProcessingActivityDPIAOrderBy OrderBy[coredata.ProcessingActivityDPIAOrderField] DataProtectionImpactAssessmentOrderBy OrderBy[coredata.DataProtectionImpactAssessmentOrderField]
ProcessingActivityDPIAConnection struct { DataProtectionImpactAssessmentConnection struct {
TotalCount int TotalCount int
Edges []*ProcessingActivityDPIAEdge Edges []*DataProtectionImpactAssessmentEdge
PageInfo PageInfo PageInfo PageInfo
Resolver any Resolver any
ParentID gid.GID ParentID gid.GID
Filter *coredata.ProcessingActivityDPIAFilter Filter *coredata.DataProtectionImpactAssessmentFilter
} }
) )
func NewProcessingActivityDPIAConnection( func NewDataProtectionImpactAssessmentConnection(
p *page.Page[*coredata.ProcessingActivityDPIA, coredata.ProcessingActivityDPIAOrderField], p *page.Page[*coredata.DataProtectionImpactAssessment, coredata.DataProtectionImpactAssessmentOrderField],
parentType any, parentType any,
parentID gid.GID, parentID gid.GID,
filter *coredata.ProcessingActivityDPIAFilter, filter *coredata.DataProtectionImpactAssessmentFilter,
) *ProcessingActivityDPIAConnection { ) *DataProtectionImpactAssessmentConnection {
edges := make([]*ProcessingActivityDPIAEdge, len(p.Data)) edges := make([]*DataProtectionImpactAssessmentEdge, len(p.Data))
for i, dpia := range p.Data { for i, dpia := range p.Data {
edges[i] = NewProcessingActivityDPIAEdge(dpia, p.Cursor.OrderBy.Field) edges[i] = NewDataProtectionImpactAssessmentEdge(dpia, p.Cursor.OrderBy.Field)
} }
return &ProcessingActivityDPIAConnection{ return &DataProtectionImpactAssessmentConnection{
Edges: edges, Edges: edges,
PageInfo: *NewPageInfo(p), PageInfo: *NewPageInfo(p),
@@ -55,15 +55,15 @@ func NewProcessingActivityDPIAConnection(
} }
} }
func NewProcessingActivityDPIAEdge(dpia *coredata.ProcessingActivityDPIA, orderField coredata.ProcessingActivityDPIAOrderField) *ProcessingActivityDPIAEdge { func NewDataProtectionImpactAssessmentEdge(dpia *coredata.DataProtectionImpactAssessment, orderField coredata.DataProtectionImpactAssessmentOrderField) *DataProtectionImpactAssessmentEdge {
return &ProcessingActivityDPIAEdge{ return &DataProtectionImpactAssessmentEdge{
Node: NewProcessingActivityDpia(dpia), Node: NewDataProtectionImpactAssessment(dpia),
Cursor: dpia.CursorKey(orderField), Cursor: dpia.CursorKey(orderField),
} }
} }
func NewProcessingActivityDpia(dpia *coredata.ProcessingActivityDPIA) *ProcessingActivityDpia { func NewDataProtectionImpactAssessment(dpia *coredata.DataProtectionImpactAssessment) *DataProtectionImpactAssessment {
return &ProcessingActivityDpia{ return &DataProtectionImpactAssessment{
ID: dpia.ID, ID: dpia.ID,
Description: dpia.Description, Description: dpia.Description,
NecessityAndProportionality: dpia.NecessityAndProportionality, NecessityAndProportionality: dpia.NecessityAndProportionality,
@@ -74,3 +74,4 @@ func NewProcessingActivityDpia(dpia *coredata.ProcessingActivityDPIA) *Processin
UpdatedAt: dpia.UpdatedAt, UpdatedAt: dpia.UpdatedAt,
} }
} }

View File

@@ -57,29 +57,29 @@ func NewProcessingActivityConnection(
func NewProcessingActivity(par *coredata.ProcessingActivity) *ProcessingActivity { func NewProcessingActivity(par *coredata.ProcessingActivity) *ProcessingActivity {
return &ProcessingActivity{ return &ProcessingActivity{
ID: par.ID, ID: par.ID,
SnapshotID: par.SnapshotID, SnapshotID: par.SnapshotID,
SourceID: par.SourceID, SourceID: par.SourceID,
Name: par.Name, Name: par.Name,
Purpose: par.Purpose, Purpose: par.Purpose,
DataSubjectCategory: par.DataSubjectCategory, DataSubjectCategory: par.DataSubjectCategory,
PersonalDataCategory: par.PersonalDataCategory, PersonalDataCategory: par.PersonalDataCategory,
SpecialOrCriminalData: par.SpecialOrCriminalData, SpecialOrCriminalData: par.SpecialOrCriminalData,
ConsentEvidenceLink: par.ConsentEvidenceLink, ConsentEvidenceLink: par.ConsentEvidenceLink,
LawfulBasis: par.LawfulBasis, LawfulBasis: par.LawfulBasis,
Recipients: par.Recipients, Recipients: par.Recipients,
Location: par.Location, Location: par.Location,
InternationalTransfers: par.InternationalTransfers, InternationalTransfers: par.InternationalTransfers,
TransferSafeguards: par.TransferSafeguard, TransferSafeguards: par.TransferSafeguard,
RetentionPeriod: par.RetentionPeriod, RetentionPeriod: par.RetentionPeriod,
SecurityMeasures: par.SecurityMeasures, SecurityMeasures: par.SecurityMeasures,
DataProtectionImpactAssessment: par.DataProtectionImpactAssessment, DataProtectionImpactAssessmentNeeded: par.DataProtectionImpactAssessmentNeeded,
TransferImpactAssessment: par.TransferImpactAssessment, TransferImpactAssessmentNeeded: par.TransferImpactAssessmentNeeded,
LastReviewDate: par.LastReviewDate, LastReviewDate: par.LastReviewDate,
NextReviewDate: par.NextReviewDate, NextReviewDate: par.NextReviewDate,
Role: par.Role, Role: par.Role,
CreatedAt: par.CreatedAt, CreatedAt: par.CreatedAt,
UpdatedAt: par.UpdatedAt, UpdatedAt: par.UpdatedAt,
} }
} }

View File

@@ -21,31 +21,31 @@ import (
) )
type ( type (
ProcessingActivityTIAOrderBy OrderBy[coredata.ProcessingActivityTIAOrderField] TransferImpactAssessmentOrderBy OrderBy[coredata.TransferImpactAssessmentOrderField]
ProcessingActivityTIAConnection struct { TransferImpactAssessmentConnection struct {
TotalCount int TotalCount int
Edges []*ProcessingActivityTIAEdge Edges []*TransferImpactAssessmentEdge
PageInfo PageInfo PageInfo PageInfo
Resolver any Resolver any
ParentID gid.GID ParentID gid.GID
Filter *coredata.ProcessingActivityTIAFilter Filter *coredata.TransferImpactAssessmentFilter
} }
) )
func NewProcessingActivityTIAConnection( func NewTransferImpactAssessmentConnection(
p *page.Page[*coredata.ProcessingActivityTIA, coredata.ProcessingActivityTIAOrderField], p *page.Page[*coredata.TransferImpactAssessment, coredata.TransferImpactAssessmentOrderField],
parentType any, parentType any,
parentID gid.GID, parentID gid.GID,
filter *coredata.ProcessingActivityTIAFilter, filter *coredata.TransferImpactAssessmentFilter,
) *ProcessingActivityTIAConnection { ) *TransferImpactAssessmentConnection {
edges := make([]*ProcessingActivityTIAEdge, len(p.Data)) edges := make([]*TransferImpactAssessmentEdge, len(p.Data))
for i, tia := range p.Data { for i, tia := range p.Data {
edges[i] = NewProcessingActivityTIAEdge(tia, p.Cursor.OrderBy.Field) edges[i] = NewTransferImpactAssessmentEdge(tia, p.Cursor.OrderBy.Field)
} }
return &ProcessingActivityTIAConnection{ return &TransferImpactAssessmentConnection{
Edges: edges, Edges: edges,
PageInfo: *NewPageInfo(p), PageInfo: *NewPageInfo(p),
@@ -55,15 +55,15 @@ func NewProcessingActivityTIAConnection(
} }
} }
func NewProcessingActivityTIAEdge(tia *coredata.ProcessingActivityTIA, orderField coredata.ProcessingActivityTIAOrderField) *ProcessingActivityTIAEdge { func NewTransferImpactAssessmentEdge(tia *coredata.TransferImpactAssessment, orderField coredata.TransferImpactAssessmentOrderField) *TransferImpactAssessmentEdge {
return &ProcessingActivityTIAEdge{ return &TransferImpactAssessmentEdge{
Node: NewProcessingActivityTia(tia), Node: NewTransferImpactAssessment(tia),
Cursor: tia.CursorKey(orderField), Cursor: tia.CursorKey(orderField),
} }
} }
func NewProcessingActivityTia(tia *coredata.ProcessingActivityTIA) *ProcessingActivityTia { func NewTransferImpactAssessment(tia *coredata.TransferImpactAssessment) *TransferImpactAssessment {
return &ProcessingActivityTia{ return &TransferImpactAssessment{
ID: tia.ID, ID: tia.ID,
DataSubjects: tia.DataSubjects, DataSubjects: tia.DataSubjects,
LegalMechanism: tia.LegalMechanism, LegalMechanism: tia.LegalMechanism,
@@ -74,3 +74,4 @@ func NewProcessingActivityTia(tia *coredata.ProcessingActivityTIA) *ProcessingAc
UpdatedAt: tia.UpdatedAt, UpdatedAt: tia.UpdatedAt,
} }
} }

View File

@@ -293,6 +293,19 @@ type CreateCustomDomainPayload struct {
CustomDomain *CustomDomain `json:"customDomain"` CustomDomain *CustomDomain `json:"customDomain"`
} }
type CreateDataProtectionImpactAssessmentInput struct {
ProcessingActivityID gid.GID `json:"processingActivityId"`
Description *string `json:"description,omitempty"`
NecessityAndProportionality *string `json:"necessityAndProportionality,omitempty"`
PotentialRisk *string `json:"potentialRisk,omitempty"`
Mitigations *string `json:"mitigations,omitempty"`
ResidualRisk *coredata.DataProtectionImpactAssessmentResidualRisk `json:"residualRisk,omitempty"`
}
type CreateDataProtectionImpactAssessmentPayload struct {
DataProtectionImpactAssessment *DataProtectionImpactAssessment `json:"dataProtectionImpactAssessment"`
}
type CreateDatumInput struct { type CreateDatumInput struct {
OrganizationID gid.GID `json:"organizationId"` OrganizationID gid.GID `json:"organizationId"`
Name string `json:"name"` Name string `json:"name"`
@@ -432,60 +445,34 @@ type CreatePeoplePayload struct {
PeopleEdge *PeopleEdge `json:"peopleEdge"` PeopleEdge *PeopleEdge `json:"peopleEdge"`
} }
type CreateProcessingActivityDPIAInput struct {
ProcessingActivityID gid.GID `json:"processingActivityId"`
Description *string `json:"description,omitempty"`
NecessityAndProportionality *string `json:"necessityAndProportionality,omitempty"`
PotentialRisk *string `json:"potentialRisk,omitempty"`
Mitigations *string `json:"mitigations,omitempty"`
ResidualRisk *coredata.ProcessingActivityDPIAResidualRisk `json:"residualRisk,omitempty"`
}
type CreateProcessingActivityDPIAPayload struct {
ProcessingActivityDpia *ProcessingActivityDpia `json:"processingActivityDpia"`
}
type CreateProcessingActivityInput struct { type CreateProcessingActivityInput struct {
OrganizationID gid.GID `json:"organizationId"` OrganizationID gid.GID `json:"organizationId"`
Name string `json:"name"` Name string `json:"name"`
Purpose *string `json:"purpose,omitempty"` Purpose *string `json:"purpose,omitempty"`
DataSubjectCategory *string `json:"dataSubjectCategory,omitempty"` DataSubjectCategory *string `json:"dataSubjectCategory,omitempty"`
PersonalDataCategory *string `json:"personalDataCategory,omitempty"` PersonalDataCategory *string `json:"personalDataCategory,omitempty"`
SpecialOrCriminalData coredata.ProcessingActivitySpecialOrCriminalDatum `json:"specialOrCriminalData"` SpecialOrCriminalData coredata.ProcessingActivitySpecialOrCriminalDatum `json:"specialOrCriminalData"`
ConsentEvidenceLink *string `json:"consentEvidenceLink,omitempty"` ConsentEvidenceLink *string `json:"consentEvidenceLink,omitempty"`
LawfulBasis coredata.ProcessingActivityLawfulBasis `json:"lawfulBasis"` LawfulBasis coredata.ProcessingActivityLawfulBasis `json:"lawfulBasis"`
Recipients *string `json:"recipients,omitempty"` Recipients *string `json:"recipients,omitempty"`
Location *string `json:"location,omitempty"` Location *string `json:"location,omitempty"`
InternationalTransfers bool `json:"internationalTransfers"` InternationalTransfers bool `json:"internationalTransfers"`
TransferSafeguards *coredata.ProcessingActivityTransferSafeguard `json:"transferSafeguards,omitempty"` TransferSafeguards *coredata.ProcessingActivityTransferSafeguard `json:"transferSafeguards,omitempty"`
RetentionPeriod *string `json:"retentionPeriod,omitempty"` RetentionPeriod *string `json:"retentionPeriod,omitempty"`
SecurityMeasures *string `json:"securityMeasures,omitempty"` SecurityMeasures *string `json:"securityMeasures,omitempty"`
DataProtectionImpactAssessment coredata.ProcessingActivityDataProtectionImpactAssessment `json:"dataProtectionImpactAssessment"` DataProtectionImpactAssessmentNeeded coredata.ProcessingActivityDataProtectionImpactAssessment `json:"dataProtectionImpactAssessmentNeeded"`
TransferImpactAssessment coredata.ProcessingActivityTransferImpactAssessment `json:"transferImpactAssessment"` TransferImpactAssessmentNeeded coredata.ProcessingActivityTransferImpactAssessment `json:"transferImpactAssessmentNeeded"`
LastReviewDate *time.Time `json:"lastReviewDate,omitempty"` LastReviewDate *time.Time `json:"lastReviewDate,omitempty"`
NextReviewDate *time.Time `json:"nextReviewDate,omitempty"` NextReviewDate *time.Time `json:"nextReviewDate,omitempty"`
Role coredata.ProcessingActivityRole `json:"role"` Role coredata.ProcessingActivityRole `json:"role"`
DataProtectionOfficerID *gid.GID `json:"dataProtectionOfficerId,omitempty"` DataProtectionOfficerID *gid.GID `json:"dataProtectionOfficerId,omitempty"`
VendorIds []gid.GID `json:"vendorIds,omitempty"` VendorIds []gid.GID `json:"vendorIds,omitempty"`
} }
type CreateProcessingActivityPayload struct { type CreateProcessingActivityPayload struct {
ProcessingActivityEdge *ProcessingActivityEdge `json:"processingActivityEdge"` ProcessingActivityEdge *ProcessingActivityEdge `json:"processingActivityEdge"`
} }
type CreateProcessingActivityTIAInput struct {
ProcessingActivityID gid.GID `json:"processingActivityId"`
DataSubjects *string `json:"dataSubjects,omitempty"`
LegalMechanism *string `json:"legalMechanism,omitempty"`
Transfer *string `json:"transfer,omitempty"`
LocalLawRisk *string `json:"localLawRisk,omitempty"`
SupplementaryMeasures *string `json:"supplementaryMeasures,omitempty"`
}
type CreateProcessingActivityTIAPayload struct {
ProcessingActivityTia *ProcessingActivityTia `json:"processingActivityTia"`
}
type CreateRiskDocumentMappingInput struct { type CreateRiskDocumentMappingInput struct {
RiskID gid.GID `json:"riskId"` RiskID gid.GID `json:"riskId"`
DocumentID gid.GID `json:"documentId"` DocumentID gid.GID `json:"documentId"`
@@ -581,6 +568,19 @@ type CreateTaskPayload struct {
TaskEdge *TaskEdge `json:"taskEdge"` TaskEdge *TaskEdge `json:"taskEdge"`
} }
type CreateTransferImpactAssessmentInput struct {
ProcessingActivityID gid.GID `json:"processingActivityId"`
DataSubjects *string `json:"dataSubjects,omitempty"`
LegalMechanism *string `json:"legalMechanism,omitempty"`
Transfer *string `json:"transfer,omitempty"`
LocalLawRisk *string `json:"localLawRisk,omitempty"`
SupplementaryMeasures *string `json:"supplementaryMeasures,omitempty"`
}
type CreateTransferImpactAssessmentPayload struct {
TransferImpactAssessment *TransferImpactAssessment `json:"transferImpactAssessment"`
}
type CreateTrustCenterAccessInput struct { type CreateTrustCenterAccessInput struct {
TrustCenterID gid.GID `json:"trustCenterId"` TrustCenterID gid.GID `json:"trustCenterId"`
Email mail.Addr `json:"email"` Email mail.Addr `json:"email"`
@@ -701,6 +701,31 @@ type DNSRecordInstruction struct {
Purpose string `json:"purpose"` Purpose string `json:"purpose"`
} }
type DataProtectionImpactAssessment struct {
ID gid.GID `json:"id"`
ProcessingActivity *ProcessingActivity `json:"processingActivity"`
Organization *Organization `json:"organization"`
Description *string `json:"description,omitempty"`
NecessityAndProportionality *string `json:"necessityAndProportionality,omitempty"`
PotentialRisk *string `json:"potentialRisk,omitempty"`
Mitigations *string `json:"mitigations,omitempty"`
ResidualRisk *coredata.DataProtectionImpactAssessmentResidualRisk `json:"residualRisk,omitempty"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
func (DataProtectionImpactAssessment) IsNode() {}
func (this DataProtectionImpactAssessment) GetID() gid.GID { return this.ID }
type DataProtectionImpactAssessmentEdge struct {
Cursor page.CursorKey `json:"cursor"`
Node *DataProtectionImpactAssessment `json:"node"`
}
type DataProtectionImpactAssessmentFilter struct {
SnapshotID *gid.GID `json:"snapshotId,omitempty"`
}
type DatumEdge struct { type DatumEdge struct {
Cursor page.CursorKey `json:"cursor"` Cursor page.CursorKey `json:"cursor"`
Node *Datum `json:"node"` Node *Datum `json:"node"`
@@ -798,6 +823,14 @@ type DeleteCustomDomainPayload struct {
DeletedCustomDomainID gid.GID `json:"deletedCustomDomainId"` DeletedCustomDomainID gid.GID `json:"deletedCustomDomainId"`
} }
type DeleteDataProtectionImpactAssessmentInput struct {
DataProtectionImpactAssessmentID gid.GID `json:"dataProtectionImpactAssessmentId"`
}
type DeleteDataProtectionImpactAssessmentPayload struct {
DeletedDataProtectionImpactAssessmentID gid.GID `json:"deletedDataProtectionImpactAssessmentId"`
}
type DeleteDatumInput struct { type DeleteDatumInput struct {
DatumID gid.GID `json:"datumId"` DatumID gid.GID `json:"datumId"`
} }
@@ -902,14 +935,6 @@ type DeletePeoplePayload struct {
DeletedPeopleID gid.GID `json:"deletedPeopleId"` DeletedPeopleID gid.GID `json:"deletedPeopleId"`
} }
type DeleteProcessingActivityDPIAInput struct {
ProcessingActivityDpiaID gid.GID `json:"processingActivityDpiaId"`
}
type DeleteProcessingActivityDPIAPayload struct {
DeletedProcessingActivityDpiaID gid.GID `json:"deletedProcessingActivityDpiaId"`
}
type DeleteProcessingActivityInput struct { type DeleteProcessingActivityInput struct {
ProcessingActivityID gid.GID `json:"processingActivityId"` ProcessingActivityID gid.GID `json:"processingActivityId"`
} }
@@ -918,14 +943,6 @@ type DeleteProcessingActivityPayload struct {
DeletedProcessingActivityID gid.GID `json:"deletedProcessingActivityId"` DeletedProcessingActivityID gid.GID `json:"deletedProcessingActivityId"`
} }
type DeleteProcessingActivityTIAInput struct {
ProcessingActivityTiaID gid.GID `json:"processingActivityTiaId"`
}
type DeleteProcessingActivityTIAPayload struct {
DeletedProcessingActivityTiaID gid.GID `json:"deletedProcessingActivityTiaId"`
}
type DeleteRiskDocumentMappingInput struct { type DeleteRiskDocumentMappingInput struct {
RiskID gid.GID `json:"riskId"` RiskID gid.GID `json:"riskId"`
DocumentID gid.GID `json:"documentId"` DocumentID gid.GID `json:"documentId"`
@@ -988,6 +1005,14 @@ type DeleteTaskPayload struct {
DeletedTaskID gid.GID `json:"deletedTaskId"` DeletedTaskID gid.GID `json:"deletedTaskId"`
} }
type DeleteTransferImpactAssessmentInput struct {
TransferImpactAssessmentID gid.GID `json:"transferImpactAssessmentId"`
}
type DeleteTransferImpactAssessmentPayload struct {
DeletedTransferImpactAssessmentID gid.GID `json:"deletedTransferImpactAssessmentId"`
}
type DeleteTrustCenterAccessInput struct { type DeleteTrustCenterAccessInput struct {
ID gid.GID `json:"id"` ID gid.GID `json:"id"`
} }
@@ -1472,43 +1497,43 @@ type ObligationFilter struct {
} }
type Organization struct { type Organization struct {
ID gid.GID `json:"id"` ID gid.GID `json:"id"`
Name string `json:"name"` Name string `json:"name"`
LogoURL *string `json:"logoUrl,omitempty"` LogoURL *string `json:"logoUrl,omitempty"`
HorizontalLogoURL *string `json:"horizontalLogoUrl,omitempty"` HorizontalLogoURL *string `json:"horizontalLogoUrl,omitempty"`
Description *string `json:"description,omitempty"` Description *string `json:"description,omitempty"`
WebsiteURL *string `json:"websiteUrl,omitempty"` WebsiteURL *string `json:"websiteUrl,omitempty"`
Email *string `json:"email,omitempty"` Email *string `json:"email,omitempty"`
HeadquarterAddress *string `json:"headquarterAddress,omitempty"` HeadquarterAddress *string `json:"headquarterAddress,omitempty"`
Context *OrganizationContext `json:"context,omitempty"` Context *OrganizationContext `json:"context,omitempty"`
Memberships *MembershipConnection `json:"memberships"` Memberships *MembershipConnection `json:"memberships"`
Invitations *InvitationConnection `json:"invitations"` Invitations *InvitationConnection `json:"invitations"`
SlackConnections *SlackConnectionConnection `json:"slackConnections"` SlackConnections *SlackConnectionConnection `json:"slackConnections"`
Frameworks *FrameworkConnection `json:"frameworks"` Frameworks *FrameworkConnection `json:"frameworks"`
Controls *ControlConnection `json:"controls"` Controls *ControlConnection `json:"controls"`
Vendors *VendorConnection `json:"vendors"` Vendors *VendorConnection `json:"vendors"`
Peoples *PeopleConnection `json:"peoples"` Peoples *PeopleConnection `json:"peoples"`
Documents *DocumentConnection `json:"documents"` Documents *DocumentConnection `json:"documents"`
Meetings *MeetingConnection `json:"meetings"` Meetings *MeetingConnection `json:"meetings"`
Measures *MeasureConnection `json:"measures"` Measures *MeasureConnection `json:"measures"`
Risks *RiskConnection `json:"risks"` Risks *RiskConnection `json:"risks"`
Tasks *TaskConnection `json:"tasks"` Tasks *TaskConnection `json:"tasks"`
Assets *AssetConnection `json:"assets"` Assets *AssetConnection `json:"assets"`
Data *DatumConnection `json:"data"` Data *DatumConnection `json:"data"`
Audits *AuditConnection `json:"audits"` Audits *AuditConnection `json:"audits"`
Nonconformities *NonconformityConnection `json:"nonconformities"` Nonconformities *NonconformityConnection `json:"nonconformities"`
Obligations *ObligationConnection `json:"obligations"` Obligations *ObligationConnection `json:"obligations"`
ContinualImprovements *ContinualImprovementConnection `json:"continualImprovements"` ContinualImprovements *ContinualImprovementConnection `json:"continualImprovements"`
ProcessingActivities *ProcessingActivityConnection `json:"processingActivities"` ProcessingActivities *ProcessingActivityConnection `json:"processingActivities"`
DataProtectionImpactAssessments *ProcessingActivityDPIAConnection `json:"dataProtectionImpactAssessments"` DataProtectionImpactAssessments *DataProtectionImpactAssessmentConnection `json:"dataProtectionImpactAssessments"`
TransferImpactAssessments *ProcessingActivityTIAConnection `json:"transferImpactAssessments"` TransferImpactAssessments *TransferImpactAssessmentConnection `json:"transferImpactAssessments"`
Snapshots *SnapshotConnection `json:"snapshots"` Snapshots *SnapshotConnection `json:"snapshots"`
TrustCenterFiles *TrustCenterFileConnection `json:"trustCenterFiles"` TrustCenterFiles *TrustCenterFileConnection `json:"trustCenterFiles"`
TrustCenter *TrustCenter `json:"trustCenter,omitempty"` TrustCenter *TrustCenter `json:"trustCenter,omitempty"`
CustomDomain *CustomDomain `json:"customDomain,omitempty"` CustomDomain *CustomDomain `json:"customDomain,omitempty"`
SamlConfigurations []*SAMLConfiguration `json:"samlConfigurations"` SamlConfigurations []*SAMLConfiguration `json:"samlConfigurations"`
CreatedAt time.Time `json:"createdAt"` CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"` UpdatedAt time.Time `json:"updatedAt"`
} }
func (Organization) IsNode() {} func (Organization) IsNode() {}
@@ -1567,64 +1592,39 @@ type PeopleFilter struct {
} }
type ProcessingActivity struct { type ProcessingActivity struct {
ID gid.GID `json:"id"` ID gid.GID `json:"id"`
SnapshotID *gid.GID `json:"snapshotId,omitempty"` SnapshotID *gid.GID `json:"snapshotId,omitempty"`
SourceID *gid.GID `json:"sourceId,omitempty"` SourceID *gid.GID `json:"sourceId,omitempty"`
Organization *Organization `json:"organization"` Organization *Organization `json:"organization"`
Name string `json:"name"` Name string `json:"name"`
Purpose *string `json:"purpose,omitempty"` Purpose *string `json:"purpose,omitempty"`
DataSubjectCategory *string `json:"dataSubjectCategory,omitempty"` DataSubjectCategory *string `json:"dataSubjectCategory,omitempty"`
PersonalDataCategory *string `json:"personalDataCategory,omitempty"` PersonalDataCategory *string `json:"personalDataCategory,omitempty"`
SpecialOrCriminalData coredata.ProcessingActivitySpecialOrCriminalDatum `json:"specialOrCriminalData"` SpecialOrCriminalData coredata.ProcessingActivitySpecialOrCriminalDatum `json:"specialOrCriminalData"`
ConsentEvidenceLink *string `json:"consentEvidenceLink,omitempty"` ConsentEvidenceLink *string `json:"consentEvidenceLink,omitempty"`
LawfulBasis coredata.ProcessingActivityLawfulBasis `json:"lawfulBasis"` LawfulBasis coredata.ProcessingActivityLawfulBasis `json:"lawfulBasis"`
Recipients *string `json:"recipients,omitempty"` Recipients *string `json:"recipients,omitempty"`
Location *string `json:"location,omitempty"` Location *string `json:"location,omitempty"`
InternationalTransfers bool `json:"internationalTransfers"` InternationalTransfers bool `json:"internationalTransfers"`
TransferSafeguards *coredata.ProcessingActivityTransferSafeguard `json:"transferSafeguards,omitempty"` TransferSafeguards *coredata.ProcessingActivityTransferSafeguard `json:"transferSafeguards,omitempty"`
RetentionPeriod *string `json:"retentionPeriod,omitempty"` RetentionPeriod *string `json:"retentionPeriod,omitempty"`
SecurityMeasures *string `json:"securityMeasures,omitempty"` SecurityMeasures *string `json:"securityMeasures,omitempty"`
DataProtectionImpactAssessment coredata.ProcessingActivityDataProtectionImpactAssessment `json:"dataProtectionImpactAssessment"` DataProtectionImpactAssessmentNeeded coredata.ProcessingActivityDataProtectionImpactAssessment `json:"dataProtectionImpactAssessmentNeeded"`
TransferImpactAssessment coredata.ProcessingActivityTransferImpactAssessment `json:"transferImpactAssessment"` TransferImpactAssessmentNeeded coredata.ProcessingActivityTransferImpactAssessment `json:"transferImpactAssessmentNeeded"`
LastReviewDate *time.Time `json:"lastReviewDate,omitempty"` LastReviewDate *time.Time `json:"lastReviewDate,omitempty"`
NextReviewDate *time.Time `json:"nextReviewDate,omitempty"` NextReviewDate *time.Time `json:"nextReviewDate,omitempty"`
Role coredata.ProcessingActivityRole `json:"role"` Role coredata.ProcessingActivityRole `json:"role"`
DataProtectionOfficer *People `json:"dataProtectionOfficer,omitempty"` DataProtectionOfficer *People `json:"dataProtectionOfficer,omitempty"`
Vendors *VendorConnection `json:"vendors"` Vendors *VendorConnection `json:"vendors"`
Dpia *ProcessingActivityDpia `json:"dpia,omitempty"` DataProtectionImpactAssessment *DataProtectionImpactAssessment `json:"dataProtectionImpactAssessment,omitempty"`
Tia *ProcessingActivityTia `json:"tia,omitempty"` TransferImpactAssessment *TransferImpactAssessment `json:"transferImpactAssessment,omitempty"`
CreatedAt time.Time `json:"createdAt"` CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"` UpdatedAt time.Time `json:"updatedAt"`
} }
func (ProcessingActivity) IsNode() {} func (ProcessingActivity) IsNode() {}
func (this ProcessingActivity) GetID() gid.GID { return this.ID } func (this ProcessingActivity) GetID() gid.GID { return this.ID }
type ProcessingActivityDpia struct {
ID gid.GID `json:"id"`
ProcessingActivity *ProcessingActivity `json:"processingActivity"`
Organization *Organization `json:"organization"`
Description *string `json:"description,omitempty"`
NecessityAndProportionality *string `json:"necessityAndProportionality,omitempty"`
PotentialRisk *string `json:"potentialRisk,omitempty"`
Mitigations *string `json:"mitigations,omitempty"`
ResidualRisk *coredata.ProcessingActivityDPIAResidualRisk `json:"residualRisk,omitempty"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
func (ProcessingActivityDpia) IsNode() {}
func (this ProcessingActivityDpia) GetID() gid.GID { return this.ID }
type ProcessingActivityDPIAEdge struct {
Cursor page.CursorKey `json:"cursor"`
Node *ProcessingActivityDpia `json:"node"`
}
type ProcessingActivityDPIAFilter struct {
SnapshotID *gid.GID `json:"snapshotId,omitempty"`
}
type ProcessingActivityEdge struct { type ProcessingActivityEdge struct {
Cursor page.CursorKey `json:"cursor"` Cursor page.CursorKey `json:"cursor"`
Node *ProcessingActivity `json:"node"` Node *ProcessingActivity `json:"node"`
@@ -1634,31 +1634,6 @@ type ProcessingActivityFilter struct {
SnapshotID *gid.GID `json:"snapshotId,omitempty"` SnapshotID *gid.GID `json:"snapshotId,omitempty"`
} }
type ProcessingActivityTia struct {
ID gid.GID `json:"id"`
ProcessingActivity *ProcessingActivity `json:"processingActivity"`
Organization *Organization `json:"organization"`
DataSubjects *string `json:"dataSubjects,omitempty"`
LegalMechanism *string `json:"legalMechanism,omitempty"`
Transfer *string `json:"transfer,omitempty"`
LocalLawRisk *string `json:"localLawRisk,omitempty"`
SupplementaryMeasures *string `json:"supplementaryMeasures,omitempty"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
func (ProcessingActivityTia) IsNode() {}
func (this ProcessingActivityTia) GetID() gid.GID { return this.ID }
type ProcessingActivityTIAEdge struct {
Cursor page.CursorKey `json:"cursor"`
Node *ProcessingActivityTia `json:"node"`
}
type ProcessingActivityTIAFilter struct {
SnapshotID *gid.GID `json:"snapshotId,omitempty"`
}
type PublishDocumentVersionInput struct { type PublishDocumentVersionInput struct {
DocumentID gid.GID `json:"documentId"` DocumentID gid.GID `json:"documentId"`
Changelog *string `json:"changelog,omitempty"` Changelog *string `json:"changelog,omitempty"`
@@ -1862,6 +1837,31 @@ type TaskEdge struct {
Node *Task `json:"node"` Node *Task `json:"node"`
} }
type TransferImpactAssessment struct {
ID gid.GID `json:"id"`
ProcessingActivity *ProcessingActivity `json:"processingActivity"`
Organization *Organization `json:"organization"`
DataSubjects *string `json:"dataSubjects,omitempty"`
LegalMechanism *string `json:"legalMechanism,omitempty"`
Transfer *string `json:"transfer,omitempty"`
LocalLawRisk *string `json:"localLawRisk,omitempty"`
SupplementaryMeasures *string `json:"supplementaryMeasures,omitempty"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
func (TransferImpactAssessment) IsNode() {}
func (this TransferImpactAssessment) GetID() gid.GID { return this.ID }
type TransferImpactAssessmentEdge struct {
Cursor page.CursorKey `json:"cursor"`
Node *TransferImpactAssessment `json:"node"`
}
type TransferImpactAssessmentFilter struct {
SnapshotID *gid.GID `json:"snapshotId,omitempty"`
}
type TrustCenter struct { type TrustCenter struct {
ID gid.GID `json:"id"` ID gid.GID `json:"id"`
Active bool `json:"active"` Active bool `json:"active"`
@@ -2022,6 +2022,19 @@ type UpdateControlPayload struct {
Control *Control `json:"control"` Control *Control `json:"control"`
} }
type UpdateDataProtectionImpactAssessmentInput struct {
ID gid.GID `json:"id"`
Description graphql.Omittable[*string] `json:"description,omitempty"`
NecessityAndProportionality graphql.Omittable[*string] `json:"necessityAndProportionality,omitempty"`
PotentialRisk graphql.Omittable[*string] `json:"potentialRisk,omitempty"`
Mitigations graphql.Omittable[*string] `json:"mitigations,omitempty"`
ResidualRisk *coredata.DataProtectionImpactAssessmentResidualRisk `json:"residualRisk,omitempty"`
}
type UpdateDataProtectionImpactAssessmentPayload struct {
DataProtectionImpactAssessment *DataProtectionImpactAssessment `json:"dataProtectionImpactAssessment"`
}
type UpdateDatumInput struct { type UpdateDatumInput struct {
ID gid.GID `json:"id"` ID gid.GID `json:"id"`
Name *string `json:"name,omitempty"` Name *string `json:"name,omitempty"`
@@ -2175,60 +2188,34 @@ type UpdatePeoplePayload struct {
People *People `json:"people"` People *People `json:"people"`
} }
type UpdateProcessingActivityDPIAInput struct {
ID gid.GID `json:"id"`
Description graphql.Omittable[*string] `json:"description,omitempty"`
NecessityAndProportionality graphql.Omittable[*string] `json:"necessityAndProportionality,omitempty"`
PotentialRisk graphql.Omittable[*string] `json:"potentialRisk,omitempty"`
Mitigations graphql.Omittable[*string] `json:"mitigations,omitempty"`
ResidualRisk *coredata.ProcessingActivityDPIAResidualRisk `json:"residualRisk,omitempty"`
}
type UpdateProcessingActivityDPIAPayload struct {
ProcessingActivityDpia *ProcessingActivityDpia `json:"processingActivityDpia"`
}
type UpdateProcessingActivityInput struct { type UpdateProcessingActivityInput struct {
ID gid.GID `json:"id"` ID gid.GID `json:"id"`
Name *string `json:"name,omitempty"` Name *string `json:"name,omitempty"`
Purpose graphql.Omittable[*string] `json:"purpose,omitempty"` Purpose graphql.Omittable[*string] `json:"purpose,omitempty"`
DataSubjectCategory graphql.Omittable[*string] `json:"dataSubjectCategory,omitempty"` DataSubjectCategory graphql.Omittable[*string] `json:"dataSubjectCategory,omitempty"`
PersonalDataCategory graphql.Omittable[*string] `json:"personalDataCategory,omitempty"` PersonalDataCategory graphql.Omittable[*string] `json:"personalDataCategory,omitempty"`
SpecialOrCriminalData *coredata.ProcessingActivitySpecialOrCriminalDatum `json:"specialOrCriminalData,omitempty"` SpecialOrCriminalData *coredata.ProcessingActivitySpecialOrCriminalDatum `json:"specialOrCriminalData,omitempty"`
ConsentEvidenceLink *string `json:"consentEvidenceLink,omitempty"` ConsentEvidenceLink *string `json:"consentEvidenceLink,omitempty"`
LawfulBasis *coredata.ProcessingActivityLawfulBasis `json:"lawfulBasis,omitempty"` LawfulBasis *coredata.ProcessingActivityLawfulBasis `json:"lawfulBasis,omitempty"`
Recipients graphql.Omittable[*string] `json:"recipients,omitempty"` Recipients graphql.Omittable[*string] `json:"recipients,omitempty"`
Location graphql.Omittable[*string] `json:"location,omitempty"` Location graphql.Omittable[*string] `json:"location,omitempty"`
InternationalTransfers *bool `json:"internationalTransfers,omitempty"` InternationalTransfers *bool `json:"internationalTransfers,omitempty"`
TransferSafeguards graphql.Omittable[*coredata.ProcessingActivityTransferSafeguard] `json:"transferSafeguards,omitempty"` TransferSafeguards graphql.Omittable[*coredata.ProcessingActivityTransferSafeguard] `json:"transferSafeguards,omitempty"`
RetentionPeriod graphql.Omittable[*string] `json:"retentionPeriod,omitempty"` RetentionPeriod graphql.Omittable[*string] `json:"retentionPeriod,omitempty"`
SecurityMeasures graphql.Omittable[*string] `json:"securityMeasures,omitempty"` SecurityMeasures graphql.Omittable[*string] `json:"securityMeasures,omitempty"`
DataProtectionImpactAssessment *coredata.ProcessingActivityDataProtectionImpactAssessment `json:"dataProtectionImpactAssessment,omitempty"` DataProtectionImpactAssessmentNeeded *coredata.ProcessingActivityDataProtectionImpactAssessment `json:"dataProtectionImpactAssessmentNeeded,omitempty"`
TransferImpactAssessment *coredata.ProcessingActivityTransferImpactAssessment `json:"transferImpactAssessment,omitempty"` TransferImpactAssessmentNeeded *coredata.ProcessingActivityTransferImpactAssessment `json:"transferImpactAssessmentNeeded,omitempty"`
LastReviewDate graphql.Omittable[*time.Time] `json:"lastReviewDate,omitempty"` LastReviewDate graphql.Omittable[*time.Time] `json:"lastReviewDate,omitempty"`
NextReviewDate graphql.Omittable[*time.Time] `json:"nextReviewDate,omitempty"` NextReviewDate graphql.Omittable[*time.Time] `json:"nextReviewDate,omitempty"`
Role *coredata.ProcessingActivityRole `json:"role,omitempty"` Role *coredata.ProcessingActivityRole `json:"role,omitempty"`
DataProtectionOfficerID graphql.Omittable[*gid.GID] `json:"dataProtectionOfficerId,omitempty"` DataProtectionOfficerID graphql.Omittable[*gid.GID] `json:"dataProtectionOfficerId,omitempty"`
VendorIds []gid.GID `json:"vendorIds,omitempty"` VendorIds []gid.GID `json:"vendorIds,omitempty"`
} }
type UpdateProcessingActivityPayload struct { type UpdateProcessingActivityPayload struct {
ProcessingActivity *ProcessingActivity `json:"processingActivity"` ProcessingActivity *ProcessingActivity `json:"processingActivity"`
} }
type UpdateProcessingActivityTIAInput struct {
ID gid.GID `json:"id"`
DataSubjects graphql.Omittable[*string] `json:"dataSubjects,omitempty"`
LegalMechanism graphql.Omittable[*string] `json:"legalMechanism,omitempty"`
Transfer graphql.Omittable[*string] `json:"transfer,omitempty"`
LocalLawRisk graphql.Omittable[*string] `json:"localLawRisk,omitempty"`
SupplementaryMeasures graphql.Omittable[*string] `json:"supplementaryMeasures,omitempty"`
}
type UpdateProcessingActivityTIAPayload struct {
ProcessingActivityTia *ProcessingActivityTia `json:"processingActivityTia"`
}
type UpdateRiskInput struct { type UpdateRiskInput struct {
ID gid.GID `json:"id"` ID gid.GID `json:"id"`
Name *string `json:"name,omitempty"` Name *string `json:"name,omitempty"`
@@ -2281,6 +2268,19 @@ type UpdateTaskPayload struct {
Task *Task `json:"task"` Task *Task `json:"task"`
} }
type UpdateTransferImpactAssessmentInput struct {
ID gid.GID `json:"id"`
DataSubjects graphql.Omittable[*string] `json:"dataSubjects,omitempty"`
LegalMechanism graphql.Omittable[*string] `json:"legalMechanism,omitempty"`
Transfer graphql.Omittable[*string] `json:"transfer,omitempty"`
LocalLawRisk graphql.Omittable[*string] `json:"localLawRisk,omitempty"`
SupplementaryMeasures graphql.Omittable[*string] `json:"supplementaryMeasures,omitempty"`
}
type UpdateTransferImpactAssessmentPayload struct {
TransferImpactAssessment *TransferImpactAssessment `json:"transferImpactAssessment"`
}
type UpdateTrustCenterAccessInput struct { type UpdateTrustCenterAccessInput struct {
ID gid.GID `json:"id"` ID gid.GID `json:"id"`
Name *string `json:"name,omitempty"` Name *string `json:"name,omitempty"`

View File

@@ -551,6 +551,66 @@ func (r *controlConnectionResolver) TotalCount(ctx context.Context, obj *types.C
panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver)) panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver))
} }
// ProcessingActivity is the resolver for the processingActivity field.
func (r *dataProtectionImpactAssessmentResolver) ProcessingActivity(ctx context.Context, obj *types.DataProtectionImpactAssessment) (*types.ProcessingActivity, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGet)
prb := r.ProboService(ctx, obj.ID.TenantID())
dpia, err := prb.DataProtectionImpactAssessments.Get(ctx, obj.ID)
if err != nil {
panic(fmt.Errorf("cannot get processing activity dpia: %w", err))
}
processingActivity, err := prb.ProcessingActivities.Get(ctx, dpia.ProcessingActivityID)
if err != nil {
panic(fmt.Errorf("cannot get processing activity: %w", err))
}
return types.NewProcessingActivity(processingActivity), nil
}
// Organization is the resolver for the organization field.
func (r *dataProtectionImpactAssessmentResolver) Organization(ctx context.Context, obj *types.DataProtectionImpactAssessment) (*types.Organization, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetOrganization)
prb := r.ProboService(ctx, obj.ID.TenantID())
dpia, err := prb.DataProtectionImpactAssessments.Get(ctx, obj.ID)
if err != nil {
panic(fmt.Errorf("cannot get processing activity dpia: %w", err))
}
organization, err := prb.Organizations.Get(ctx, dpia.OrganizationID)
if err != nil {
var errNotFound *coredata.ErrOrganizationNotFound
if errors.As(err, &errNotFound) {
return nil, gqlutils.NotFound(errNotFound)
}
panic(fmt.Errorf("cannot get organization: %w", err))
}
return types.NewOrganization(organization), nil
}
// TotalCount is the resolver for the totalCount field.
func (r *dataProtectionImpactAssessmentConnectionResolver) TotalCount(ctx context.Context, obj *types.DataProtectionImpactAssessmentConnection) (int, error) {
r.MustBeAuthorized(ctx, obj.ParentID, authz.ActionTotalCount)
prb := r.ProboService(ctx, obj.ParentID.TenantID())
switch obj.Resolver.(type) {
case *organizationResolver:
count, err := prb.DataProtectionImpactAssessments.CountForOrganizationID(ctx, obj.ParentID, obj.Filter)
if err != nil {
panic(fmt.Errorf("cannot count organization data protection impact assessments: %w", err))
}
return count, nil
}
panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver))
}
// Owner is the resolver for the owner field. // Owner is the resolver for the owner field.
func (r *datumResolver) Owner(ctx context.Context, obj *types.Datum) (*types.People, error) { func (r *datumResolver) Owner(ctx context.Context, obj *types.Datum) (*types.People, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetOwner) r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetOwner)
@@ -4212,26 +4272,26 @@ func (r *mutationResolver) CreateProcessingActivity(ctx context.Context, input t
prb := r.ProboService(ctx, input.OrganizationID.TenantID()) prb := r.ProboService(ctx, input.OrganizationID.TenantID())
req := probo.CreateProcessingActivityRequest{ req := probo.CreateProcessingActivityRequest{
OrganizationID: input.OrganizationID, OrganizationID: input.OrganizationID,
Name: input.Name, Name: input.Name,
Purpose: input.Purpose, Purpose: input.Purpose,
DataSubjectCategory: input.DataSubjectCategory, DataSubjectCategory: input.DataSubjectCategory,
PersonalDataCategory: input.PersonalDataCategory, PersonalDataCategory: input.PersonalDataCategory,
SpecialOrCriminalData: input.SpecialOrCriminalData, SpecialOrCriminalData: input.SpecialOrCriminalData,
LawfulBasis: input.LawfulBasis, LawfulBasis: input.LawfulBasis,
Recipients: input.Recipients, Recipients: input.Recipients,
Location: input.Location, Location: input.Location,
InternationalTransfers: input.InternationalTransfers, InternationalTransfers: input.InternationalTransfers,
TransferSafeguard: input.TransferSafeguards, TransferSafeguard: input.TransferSafeguards,
RetentionPeriod: input.RetentionPeriod, RetentionPeriod: input.RetentionPeriod,
SecurityMeasures: input.SecurityMeasures, SecurityMeasures: input.SecurityMeasures,
DataProtectionImpactAssessment: input.DataProtectionImpactAssessment, DataProtectionImpactAssessmentNeeded: input.DataProtectionImpactAssessmentNeeded,
TransferImpactAssessment: input.TransferImpactAssessment, TransferImpactAssessmentNeeded: input.TransferImpactAssessmentNeeded,
LastReviewDate: input.LastReviewDate, LastReviewDate: input.LastReviewDate,
NextReviewDate: input.NextReviewDate, NextReviewDate: input.NextReviewDate,
Role: input.Role, Role: input.Role,
DataProtectionOfficerID: input.DataProtectionOfficerID, DataProtectionOfficerID: input.DataProtectionOfficerID,
VendorIDs: input.VendorIds, VendorIDs: input.VendorIds,
} }
activity, err := prb.ProcessingActivities.Create(ctx, &req) activity, err := prb.ProcessingActivities.Create(ctx, &req)
@@ -4251,26 +4311,26 @@ func (r *mutationResolver) UpdateProcessingActivity(ctx context.Context, input t
prb := r.ProboService(ctx, input.ID.TenantID()) prb := r.ProboService(ctx, input.ID.TenantID())
req := probo.UpdateProcessingActivityRequest{ req := probo.UpdateProcessingActivityRequest{
ID: input.ID, ID: input.ID,
Name: input.Name, Name: input.Name,
Purpose: UnwrapOmittable(input.Purpose), Purpose: UnwrapOmittable(input.Purpose),
DataSubjectCategory: UnwrapOmittable(input.DataSubjectCategory), DataSubjectCategory: UnwrapOmittable(input.DataSubjectCategory),
PersonalDataCategory: UnwrapOmittable(input.PersonalDataCategory), PersonalDataCategory: UnwrapOmittable(input.PersonalDataCategory),
SpecialOrCriminalData: input.SpecialOrCriminalData, SpecialOrCriminalData: input.SpecialOrCriminalData,
LawfulBasis: input.LawfulBasis, LawfulBasis: input.LawfulBasis,
Recipients: UnwrapOmittable(input.Recipients), Recipients: UnwrapOmittable(input.Recipients),
Location: UnwrapOmittable(input.Location), Location: UnwrapOmittable(input.Location),
InternationalTransfers: input.InternationalTransfers, InternationalTransfers: input.InternationalTransfers,
TransferSafeguard: UnwrapOmittable(input.TransferSafeguards), TransferSafeguard: UnwrapOmittable(input.TransferSafeguards),
RetentionPeriod: UnwrapOmittable(input.RetentionPeriod), RetentionPeriod: UnwrapOmittable(input.RetentionPeriod),
SecurityMeasures: UnwrapOmittable(input.SecurityMeasures), SecurityMeasures: UnwrapOmittable(input.SecurityMeasures),
DataProtectionImpactAssessment: input.DataProtectionImpactAssessment, DataProtectionImpactAssessmentNeeded: input.DataProtectionImpactAssessmentNeeded,
TransferImpactAssessment: input.TransferImpactAssessment, TransferImpactAssessmentNeeded: input.TransferImpactAssessmentNeeded,
LastReviewDate: UnwrapOmittable(input.LastReviewDate), LastReviewDate: UnwrapOmittable(input.LastReviewDate),
NextReviewDate: UnwrapOmittable(input.NextReviewDate), NextReviewDate: UnwrapOmittable(input.NextReviewDate),
Role: input.Role, Role: input.Role,
DataProtectionOfficerID: UnwrapOmittable(input.DataProtectionOfficerID), DataProtectionOfficerID: UnwrapOmittable(input.DataProtectionOfficerID),
VendorIDs: &input.VendorIds, VendorIDs: &input.VendorIds,
} }
activity, err := prb.ProcessingActivities.Update(ctx, &req) activity, err := prb.ProcessingActivities.Update(ctx, &req)
@@ -4299,13 +4359,13 @@ func (r *mutationResolver) DeleteProcessingActivity(ctx context.Context, input t
}, nil }, nil
} }
// CreateProcessingActivityDpia is the resolver for the createProcessingActivityDPIA field. // CreateDataProtectionImpactAssessment is the resolver for the createDataProtectionImpactAssessment field.
func (r *mutationResolver) CreateProcessingActivityDpia(ctx context.Context, input types.CreateProcessingActivityDPIAInput) (*types.CreateProcessingActivityDPIAPayload, error) { func (r *mutationResolver) CreateDataProtectionImpactAssessment(ctx context.Context, input types.CreateDataProtectionImpactAssessmentInput) (*types.CreateDataProtectionImpactAssessmentPayload, error) {
r.MustBeAuthorized(ctx, input.ProcessingActivityID, authz.ActionCreateProcessingActivityDPIA) r.MustBeAuthorized(ctx, input.ProcessingActivityID, authz.ActionCreateDataProtectionImpactAssessment)
prb := r.ProboService(ctx, input.ProcessingActivityID.TenantID()) prb := r.ProboService(ctx, input.ProcessingActivityID.TenantID())
req := probo.CreateProcessingActivityDPIARequest{ req := probo.CreateDataProtectionImpactAssessmentRequest{
ProcessingActivityID: input.ProcessingActivityID, ProcessingActivityID: input.ProcessingActivityID,
Description: input.Description, Description: input.Description,
NecessityAndProportionality: input.NecessityAndProportionality, NecessityAndProportionality: input.NecessityAndProportionality,
@@ -4314,23 +4374,23 @@ func (r *mutationResolver) CreateProcessingActivityDpia(ctx context.Context, inp
ResidualRisk: input.ResidualRisk, ResidualRisk: input.ResidualRisk,
} }
dpia, err := prb.ProcessingActivityDPIAs.Create(ctx, &req) dpia, err := prb.DataProtectionImpactAssessments.Create(ctx, &req)
if err != nil { if err != nil {
panic(fmt.Errorf("cannot create processing activity dpia: %w", err)) panic(fmt.Errorf("cannot create data protection impact assessment: %w", err))
} }
return &types.CreateProcessingActivityDPIAPayload{ return &types.CreateDataProtectionImpactAssessmentPayload{
ProcessingActivityDpia: types.NewProcessingActivityDpia(dpia), DataProtectionImpactAssessment: types.NewDataProtectionImpactAssessment(dpia),
}, nil }, nil
} }
// UpdateProcessingActivityDpia is the resolver for the updateProcessingActivityDPIA field. // UpdateDataProtectionImpactAssessment is the resolver for the updateDataProtectionImpactAssessment field.
func (r *mutationResolver) UpdateProcessingActivityDpia(ctx context.Context, input types.UpdateProcessingActivityDPIAInput) (*types.UpdateProcessingActivityDPIAPayload, error) { func (r *mutationResolver) UpdateDataProtectionImpactAssessment(ctx context.Context, input types.UpdateDataProtectionImpactAssessmentInput) (*types.UpdateDataProtectionImpactAssessmentPayload, error) {
r.MustBeAuthorized(ctx, input.ID, authz.ActionUpdateProcessingActivityDPIA) r.MustBeAuthorized(ctx, input.ID, authz.ActionUpdateDataProtectionImpactAssessment)
prb := r.ProboService(ctx, input.ID.TenantID()) prb := r.ProboService(ctx, input.ID.TenantID())
req := probo.UpdateProcessingActivityDPIARequest{ req := probo.UpdateDataProtectionImpactAssessmentRequest{
ID: input.ID, ID: input.ID,
Description: UnwrapOmittable(input.Description), Description: UnwrapOmittable(input.Description),
NecessityAndProportionality: UnwrapOmittable(input.NecessityAndProportionality), NecessityAndProportionality: UnwrapOmittable(input.NecessityAndProportionality),
@@ -4339,39 +4399,39 @@ func (r *mutationResolver) UpdateProcessingActivityDpia(ctx context.Context, inp
ResidualRisk: input.ResidualRisk, ResidualRisk: input.ResidualRisk,
} }
dpia, err := prb.ProcessingActivityDPIAs.Update(ctx, &req) dpia, err := prb.DataProtectionImpactAssessments.Update(ctx, &req)
if err != nil { if err != nil {
panic(fmt.Errorf("cannot update processing activity dpia: %w", err)) panic(fmt.Errorf("cannot update data protection impact assessment: %w", err))
} }
return &types.UpdateProcessingActivityDPIAPayload{ return &types.UpdateDataProtectionImpactAssessmentPayload{
ProcessingActivityDpia: types.NewProcessingActivityDpia(dpia), DataProtectionImpactAssessment: types.NewDataProtectionImpactAssessment(dpia),
}, nil }, nil
} }
// DeleteProcessingActivityDpia is the resolver for the deleteProcessingActivityDPIA field. // DeleteDataProtectionImpactAssessment is the resolver for the deleteDataProtectionImpactAssessment field.
func (r *mutationResolver) DeleteProcessingActivityDpia(ctx context.Context, input types.DeleteProcessingActivityDPIAInput) (*types.DeleteProcessingActivityDPIAPayload, error) { func (r *mutationResolver) DeleteDataProtectionImpactAssessment(ctx context.Context, input types.DeleteDataProtectionImpactAssessmentInput) (*types.DeleteDataProtectionImpactAssessmentPayload, error) {
r.MustBeAuthorized(ctx, input.ProcessingActivityDpiaID, authz.ActionDeleteProcessingActivityDPIA) r.MustBeAuthorized(ctx, input.DataProtectionImpactAssessmentID, authz.ActionDeleteDataProtectionImpactAssessment)
prb := r.ProboService(ctx, input.ProcessingActivityDpiaID.TenantID()) prb := r.ProboService(ctx, input.DataProtectionImpactAssessmentID.TenantID())
err := prb.ProcessingActivityDPIAs.Delete(ctx, input.ProcessingActivityDpiaID) err := prb.DataProtectionImpactAssessments.Delete(ctx, input.DataProtectionImpactAssessmentID)
if err != nil { if err != nil {
panic(fmt.Errorf("cannot delete processing activity dpia: %w", err)) panic(fmt.Errorf("cannot delete data protection impact assessment: %w", err))
} }
return &types.DeleteProcessingActivityDPIAPayload{ return &types.DeleteDataProtectionImpactAssessmentPayload{
DeletedProcessingActivityDpiaID: input.ProcessingActivityDpiaID, DeletedDataProtectionImpactAssessmentID: input.DataProtectionImpactAssessmentID,
}, nil }, nil
} }
// CreateProcessingActivityTia is the resolver for the createProcessingActivityTIA field. // CreateTransferImpactAssessment is the resolver for the createTransferImpactAssessment field.
func (r *mutationResolver) CreateProcessingActivityTia(ctx context.Context, input types.CreateProcessingActivityTIAInput) (*types.CreateProcessingActivityTIAPayload, error) { func (r *mutationResolver) CreateTransferImpactAssessment(ctx context.Context, input types.CreateTransferImpactAssessmentInput) (*types.CreateTransferImpactAssessmentPayload, error) {
r.MustBeAuthorized(ctx, input.ProcessingActivityID, authz.ActionCreateProcessingActivityTIA) r.MustBeAuthorized(ctx, input.ProcessingActivityID, authz.ActionCreateTransferImpactAssessment)
prb := r.ProboService(ctx, input.ProcessingActivityID.TenantID()) prb := r.ProboService(ctx, input.ProcessingActivityID.TenantID())
req := probo.CreateProcessingActivityTIARequest{ req := probo.CreateTransferImpactAssessmentRequest{
ProcessingActivityID: input.ProcessingActivityID, ProcessingActivityID: input.ProcessingActivityID,
DataSubjects: input.DataSubjects, DataSubjects: input.DataSubjects,
LegalMechanism: input.LegalMechanism, LegalMechanism: input.LegalMechanism,
@@ -4380,23 +4440,23 @@ func (r *mutationResolver) CreateProcessingActivityTia(ctx context.Context, inpu
SupplementaryMeasures: input.SupplementaryMeasures, SupplementaryMeasures: input.SupplementaryMeasures,
} }
tia, err := prb.ProcessingActivityTIAs.Create(ctx, &req) tia, err := prb.TransferImpactAssessments.Create(ctx, &req)
if err != nil { if err != nil {
panic(fmt.Errorf("cannot create processing activity tia: %w", err)) panic(fmt.Errorf("cannot create transfer impact assessment: %w", err))
} }
return &types.CreateProcessingActivityTIAPayload{ return &types.CreateTransferImpactAssessmentPayload{
ProcessingActivityTia: types.NewProcessingActivityTia(tia), TransferImpactAssessment: types.NewTransferImpactAssessment(tia),
}, nil }, nil
} }
// UpdateProcessingActivityTia is the resolver for the updateProcessingActivityTIA field. // UpdateTransferImpactAssessment is the resolver for the updateTransferImpactAssessment field.
func (r *mutationResolver) UpdateProcessingActivityTia(ctx context.Context, input types.UpdateProcessingActivityTIAInput) (*types.UpdateProcessingActivityTIAPayload, error) { func (r *mutationResolver) UpdateTransferImpactAssessment(ctx context.Context, input types.UpdateTransferImpactAssessmentInput) (*types.UpdateTransferImpactAssessmentPayload, error) {
r.MustBeAuthorized(ctx, input.ID, authz.ActionUpdateProcessingActivityTIA) r.MustBeAuthorized(ctx, input.ID, authz.ActionUpdateTransferImpactAssessment)
prb := r.ProboService(ctx, input.ID.TenantID()) prb := r.ProboService(ctx, input.ID.TenantID())
req := probo.UpdateProcessingActivityTIARequest{ req := probo.UpdateTransferImpactAssessmentRequest{
ID: input.ID, ID: input.ID,
DataSubjects: UnwrapOmittable(input.DataSubjects), DataSubjects: UnwrapOmittable(input.DataSubjects),
LegalMechanism: UnwrapOmittable(input.LegalMechanism), LegalMechanism: UnwrapOmittable(input.LegalMechanism),
@@ -4405,29 +4465,29 @@ func (r *mutationResolver) UpdateProcessingActivityTia(ctx context.Context, inpu
SupplementaryMeasures: UnwrapOmittable(input.SupplementaryMeasures), SupplementaryMeasures: UnwrapOmittable(input.SupplementaryMeasures),
} }
tia, err := prb.ProcessingActivityTIAs.Update(ctx, &req) tia, err := prb.TransferImpactAssessments.Update(ctx, &req)
if err != nil { if err != nil {
panic(fmt.Errorf("cannot update processing activity tia: %w", err)) panic(fmt.Errorf("cannot update transfer impact assessment: %w", err))
} }
return &types.UpdateProcessingActivityTIAPayload{ return &types.UpdateTransferImpactAssessmentPayload{
ProcessingActivityTia: types.NewProcessingActivityTia(tia), TransferImpactAssessment: types.NewTransferImpactAssessment(tia),
}, nil }, nil
} }
// DeleteProcessingActivityTia is the resolver for the deleteProcessingActivityTIA field. // DeleteTransferImpactAssessment is the resolver for the deleteTransferImpactAssessment field.
func (r *mutationResolver) DeleteProcessingActivityTia(ctx context.Context, input types.DeleteProcessingActivityTIAInput) (*types.DeleteProcessingActivityTIAPayload, error) { func (r *mutationResolver) DeleteTransferImpactAssessment(ctx context.Context, input types.DeleteTransferImpactAssessmentInput) (*types.DeleteTransferImpactAssessmentPayload, error) {
r.MustBeAuthorized(ctx, input.ProcessingActivityTiaID, authz.ActionDeleteProcessingActivityTIA) r.MustBeAuthorized(ctx, input.TransferImpactAssessmentID, authz.ActionDeleteTransferImpactAssessment)
prb := r.ProboService(ctx, input.ProcessingActivityTiaID.TenantID()) prb := r.ProboService(ctx, input.TransferImpactAssessmentID.TenantID())
err := prb.ProcessingActivityTIAs.Delete(ctx, input.ProcessingActivityTiaID) err := prb.TransferImpactAssessments.Delete(ctx, input.TransferImpactAssessmentID)
if err != nil { if err != nil {
panic(fmt.Errorf("cannot delete processing activity tia: %w", err)) panic(fmt.Errorf("cannot delete transfer impact assessment: %w", err))
} }
return &types.DeleteProcessingActivityTIAPayload{ return &types.DeleteTransferImpactAssessmentPayload{
DeletedProcessingActivityTiaID: input.ProcessingActivityTiaID, DeletedTransferImpactAssessmentID: input.TransferImpactAssessmentID,
}, nil }, nil
} }
@@ -5531,18 +5591,18 @@ func (r *organizationResolver) ProcessingActivities(ctx context.Context, obj *ty
} }
// DataProtectionImpactAssessments is the resolver for the dataProtectionImpactAssessments field. // DataProtectionImpactAssessments is the resolver for the dataProtectionImpactAssessments field.
func (r *organizationResolver) DataProtectionImpactAssessments(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProcessingActivityDPIAOrderBy, filter *types.ProcessingActivityDPIAFilter) (*types.ProcessingActivityDPIAConnection, error) { func (r *organizationResolver) DataProtectionImpactAssessments(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.DataProtectionImpactAssessmentOrderBy, filter *types.DataProtectionImpactAssessmentFilter) (*types.DataProtectionImpactAssessmentConnection, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionListProcessingActivities) r.MustBeAuthorized(ctx, obj.ID, authz.ActionListProcessingActivities)
prb := r.ProboService(ctx, obj.ID.TenantID()) prb := r.ProboService(ctx, obj.ID.TenantID())
pageOrderBy := page.OrderBy[coredata.ProcessingActivityDPIAOrderField]{ pageOrderBy := page.OrderBy[coredata.DataProtectionImpactAssessmentOrderField]{
Field: coredata.ProcessingActivityDPIAOrderFieldCreatedAt, Field: coredata.DataProtectionImpactAssessmentOrderFieldCreatedAt,
Direction: page.OrderDirectionDesc, Direction: page.OrderDirectionDesc,
} }
if orderBy != nil { if orderBy != nil {
pageOrderBy = page.OrderBy[coredata.ProcessingActivityDPIAOrderField]{ pageOrderBy = page.OrderBy[coredata.DataProtectionImpactAssessmentOrderField]{
Field: orderBy.Field, Field: orderBy.Field,
Direction: orderBy.Direction, Direction: orderBy.Direction,
} }
@@ -5550,32 +5610,32 @@ func (r *organizationResolver) DataProtectionImpactAssessments(ctx context.Conte
cursor := types.NewCursor(first, after, last, before, pageOrderBy) cursor := types.NewCursor(first, after, last, before, pageOrderBy)
dpiaFilter := coredata.NewProcessingActivityDPIAFilter(nil) dpiaFilter := coredata.NewDataProtectionImpactAssessmentFilter(nil)
if filter != nil { if filter != nil {
dpiaFilter = coredata.NewProcessingActivityDPIAFilter(&filter.SnapshotID) dpiaFilter = coredata.NewDataProtectionImpactAssessmentFilter(&filter.SnapshotID)
} }
page, err := prb.ProcessingActivityDPIAs.ListForOrganizationID(ctx, obj.ID, cursor, dpiaFilter) page, err := prb.DataProtectionImpactAssessments.ListForOrganizationID(ctx, obj.ID, cursor, dpiaFilter)
if err != nil { if err != nil {
panic(fmt.Errorf("cannot list organization data protection impact assessments: %w", err)) panic(fmt.Errorf("cannot list organization data protection impact assessments: %w", err))
} }
return types.NewProcessingActivityDPIAConnection(page, r, obj.ID, dpiaFilter), nil return types.NewDataProtectionImpactAssessmentConnection(page, r, obj.ID, dpiaFilter), nil
} }
// TransferImpactAssessments is the resolver for the transferImpactAssessments field. // TransferImpactAssessments is the resolver for the transferImpactAssessments field.
func (r *organizationResolver) TransferImpactAssessments(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProcessingActivityTIAOrderBy, filter *types.ProcessingActivityTIAFilter) (*types.ProcessingActivityTIAConnection, error) { func (r *organizationResolver) TransferImpactAssessments(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.TransferImpactAssessmentOrderBy, filter *types.TransferImpactAssessmentFilter) (*types.TransferImpactAssessmentConnection, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionListProcessingActivities) r.MustBeAuthorized(ctx, obj.ID, authz.ActionListProcessingActivities)
prb := r.ProboService(ctx, obj.ID.TenantID()) prb := r.ProboService(ctx, obj.ID.TenantID())
pageOrderBy := page.OrderBy[coredata.ProcessingActivityTIAOrderField]{ pageOrderBy := page.OrderBy[coredata.TransferImpactAssessmentOrderField]{
Field: coredata.ProcessingActivityTIAOrderFieldCreatedAt, Field: coredata.TransferImpactAssessmentOrderFieldCreatedAt,
Direction: page.OrderDirectionDesc, Direction: page.OrderDirectionDesc,
} }
if orderBy != nil { if orderBy != nil {
pageOrderBy = page.OrderBy[coredata.ProcessingActivityTIAOrderField]{ pageOrderBy = page.OrderBy[coredata.TransferImpactAssessmentOrderField]{
Field: orderBy.Field, Field: orderBy.Field,
Direction: orderBy.Direction, Direction: orderBy.Direction,
} }
@@ -5583,17 +5643,17 @@ func (r *organizationResolver) TransferImpactAssessments(ctx context.Context, ob
cursor := types.NewCursor(first, after, last, before, pageOrderBy) cursor := types.NewCursor(first, after, last, before, pageOrderBy)
tiaFilter := coredata.NewProcessingActivityTIAFilter(nil) tiaFilter := coredata.NewTransferImpactAssessmentFilter(nil)
if filter != nil { if filter != nil {
tiaFilter = coredata.NewProcessingActivityTIAFilter(&filter.SnapshotID) tiaFilter = coredata.NewTransferImpactAssessmentFilter(&filter.SnapshotID)
} }
page, err := prb.ProcessingActivityTIAs.ListForOrganizationID(ctx, obj.ID, cursor, tiaFilter) page, err := prb.TransferImpactAssessments.ListForOrganizationID(ctx, obj.ID, cursor, tiaFilter)
if err != nil { if err != nil {
panic(fmt.Errorf("cannot list organization transfer impact assessments: %w", err)) panic(fmt.Errorf("cannot list organization transfer impact assessments: %w", err))
} }
return types.NewProcessingActivityTIAConnection(page, r, obj.ID, tiaFilter), nil return types.NewTransferImpactAssessmentConnection(page, r, obj.ID, tiaFilter), nil
} }
// Snapshots is the resolver for the snapshots field. // Snapshots is the resolver for the snapshots field.
@@ -5797,40 +5857,40 @@ func (r *processingActivityResolver) Vendors(ctx context.Context, obj *types.Pro
return types.NewVendorConnection(page, r, obj.ID), nil return types.NewVendorConnection(page, r, obj.ID), nil
} }
// Dpia is the resolver for the dpia field. // DataProtectionImpactAssessment is the resolver for the dataProtectionImpactAssessment field.
func (r *processingActivityResolver) Dpia(ctx context.Context, obj *types.ProcessingActivity) (*types.ProcessingActivityDpia, error) { func (r *processingActivityResolver) DataProtectionImpactAssessment(ctx context.Context, obj *types.ProcessingActivity) (*types.DataProtectionImpactAssessment, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetDPIA) r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetDataProtectionImpactAssessment)
prb := r.ProboService(ctx, obj.ID.TenantID()) prb := r.ProboService(ctx, obj.ID.TenantID())
dpia, err := prb.ProcessingActivityDPIAs.GetByProcessingActivityID(ctx, obj.ID) dpia, err := prb.DataProtectionImpactAssessments.GetByProcessingActivityID(ctx, obj.ID)
if err != nil { if err != nil {
var errNotFound *coredata.ErrProcessingActivityDPIANotFound var errNotFound *coredata.ErrDataProtectionImpactAssessmentNotFound
if errors.As(err, &errNotFound) { if errors.As(err, &errNotFound) {
return nil, nil return nil, nil
} }
panic(fmt.Errorf("cannot get processing activity dpia: %w", err)) panic(fmt.Errorf("cannot get processing activity dpia: %w", err))
} }
return types.NewProcessingActivityDpia(dpia), nil return types.NewDataProtectionImpactAssessment(dpia), nil
} }
// Tia is the resolver for the tia field. // TransferImpactAssessment is the resolver for the transferImpactAssessment field.
func (r *processingActivityResolver) Tia(ctx context.Context, obj *types.ProcessingActivity) (*types.ProcessingActivityTia, error) { func (r *processingActivityResolver) TransferImpactAssessment(ctx context.Context, obj *types.ProcessingActivity) (*types.TransferImpactAssessment, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetTIA) r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetTransferImpactAssessment)
prb := r.ProboService(ctx, obj.ID.TenantID()) prb := r.ProboService(ctx, obj.ID.TenantID())
tia, err := prb.ProcessingActivityTIAs.GetByProcessingActivityID(ctx, obj.ID) tia, err := prb.TransferImpactAssessments.GetByProcessingActivityID(ctx, obj.ID)
if err != nil { if err != nil {
var errNotFound *coredata.ErrProcessingActivityTIANotFound var errNotFound *coredata.ErrTransferImpactAssessmentNotFound
if errors.As(err, &errNotFound) { if errors.As(err, &errNotFound) {
return nil, nil return nil, nil
} }
panic(fmt.Errorf("cannot get processing activity tia: %w", err)) panic(fmt.Errorf("cannot get processing activity tia: %w", err))
} }
return types.NewProcessingActivityTia(tia), nil return types.NewTransferImpactAssessment(tia), nil
} }
// TotalCount is the resolver for the totalCount field. // TotalCount is the resolver for the totalCount field.
@@ -5856,126 +5916,6 @@ func (r *processingActivityConnectionResolver) TotalCount(ctx context.Context, o
panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver)) panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver))
} }
// ProcessingActivity is the resolver for the processingActivity field.
func (r *processingActivityDPIAResolver) ProcessingActivity(ctx context.Context, obj *types.ProcessingActivityDpia) (*types.ProcessingActivity, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGet)
prb := r.ProboService(ctx, obj.ID.TenantID())
dpia, err := prb.ProcessingActivityDPIAs.Get(ctx, obj.ID)
if err != nil {
panic(fmt.Errorf("cannot get processing activity dpia: %w", err))
}
processingActivity, err := prb.ProcessingActivities.Get(ctx, dpia.ProcessingActivityID)
if err != nil {
panic(fmt.Errorf("cannot get processing activity: %w", err))
}
return types.NewProcessingActivity(processingActivity), nil
}
// Organization is the resolver for the organization field.
func (r *processingActivityDPIAResolver) Organization(ctx context.Context, obj *types.ProcessingActivityDpia) (*types.Organization, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetOrganization)
prb := r.ProboService(ctx, obj.ID.TenantID())
dpia, err := prb.ProcessingActivityDPIAs.Get(ctx, obj.ID)
if err != nil {
panic(fmt.Errorf("cannot get processing activity dpia: %w", err))
}
organization, err := prb.Organizations.Get(ctx, dpia.OrganizationID)
if err != nil {
var errNotFound *coredata.ErrOrganizationNotFound
if errors.As(err, &errNotFound) {
return nil, gqlutils.NotFound(errNotFound)
}
panic(fmt.Errorf("cannot get organization: %w", err))
}
return types.NewOrganization(organization), nil
}
// TotalCount is the resolver for the totalCount field.
func (r *processingActivityDPIAConnectionResolver) TotalCount(ctx context.Context, obj *types.ProcessingActivityDPIAConnection) (int, error) {
r.MustBeAuthorized(ctx, obj.ParentID, authz.ActionTotalCount)
prb := r.ProboService(ctx, obj.ParentID.TenantID())
switch obj.Resolver.(type) {
case *organizationResolver:
count, err := prb.ProcessingActivityDPIAs.CountForOrganizationID(ctx, obj.ParentID, obj.Filter)
if err != nil {
panic(fmt.Errorf("cannot count organization data protection impact assessments: %w", err))
}
return count, nil
}
panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver))
}
// ProcessingActivity is the resolver for the processingActivity field.
func (r *processingActivityTIAResolver) ProcessingActivity(ctx context.Context, obj *types.ProcessingActivityTia) (*types.ProcessingActivity, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGet)
prb := r.ProboService(ctx, obj.ID.TenantID())
tia, err := prb.ProcessingActivityTIAs.Get(ctx, obj.ID)
if err != nil {
panic(fmt.Errorf("cannot get processing activity tia: %w", err))
}
processingActivity, err := prb.ProcessingActivities.Get(ctx, tia.ProcessingActivityID)
if err != nil {
panic(fmt.Errorf("cannot get processing activity: %w", err))
}
return types.NewProcessingActivity(processingActivity), nil
}
// Organization is the resolver for the organization field.
func (r *processingActivityTIAResolver) Organization(ctx context.Context, obj *types.ProcessingActivityTia) (*types.Organization, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetOrganization)
prb := r.ProboService(ctx, obj.ID.TenantID())
tia, err := prb.ProcessingActivityTIAs.Get(ctx, obj.ID)
if err != nil {
panic(fmt.Errorf("cannot get processing activity tia: %w", err))
}
organization, err := prb.Organizations.Get(ctx, tia.OrganizationID)
if err != nil {
var errNotFound *coredata.ErrOrganizationNotFound
if errors.As(err, &errNotFound) {
return nil, gqlutils.NotFound(errNotFound)
}
panic(fmt.Errorf("cannot get organization: %w", err))
}
return types.NewOrganization(organization), nil
}
// TotalCount is the resolver for the totalCount field.
func (r *processingActivityTIAConnectionResolver) TotalCount(ctx context.Context, obj *types.ProcessingActivityTIAConnection) (int, error) {
r.MustBeAuthorized(ctx, obj.ParentID, authz.ActionTotalCount)
prb := r.ProboService(ctx, obj.ParentID.TenantID())
switch obj.Resolver.(type) {
case *organizationResolver:
count, err := prb.ProcessingActivityTIAs.CountForOrganizationID(ctx, obj.ParentID, obj.Filter)
if err != nil {
panic(fmt.Errorf("cannot count organization transfer impact assessments: %w", err))
}
return count, nil
}
panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver))
}
// Node is the resolver for the node field. // Node is the resolver for the node field.
func (r *queryResolver) Node(ctx context.Context, id gid.GID) (types.Node, error) { func (r *queryResolver) Node(ctx context.Context, id gid.GID) (types.Node, error) {
r.MustBeAuthorized(ctx, id, authz.ActionGet) r.MustBeAuthorized(ctx, id, authz.ActionGet)
@@ -6182,20 +6122,20 @@ func (r *queryResolver) Node(ctx context.Context, id gid.GID) (types.Node, error
} }
return types.NewProcessingActivity(processingActivity), nil return types.NewProcessingActivity(processingActivity), nil
case coredata.ProcessingActivityDPIAEntityType: case coredata.DataProtectionImpactAssessmentEntityType:
dpia, err := prb.ProcessingActivityDPIAs.Get(ctx, id) dpia, err := prb.DataProtectionImpactAssessments.Get(ctx, id)
if err != nil { if err != nil {
panic(fmt.Errorf("cannot get processing activity dpia: %w", err)) panic(fmt.Errorf("cannot get processing activity dpia: %w", err))
} }
return types.NewProcessingActivityDpia(dpia), nil return types.NewDataProtectionImpactAssessment(dpia), nil
case coredata.ProcessingActivityTIAEntityType: case coredata.TransferImpactAssessmentEntityType:
tia, err := prb.ProcessingActivityTIAs.Get(ctx, id) tia, err := prb.TransferImpactAssessments.Get(ctx, id)
if err != nil { if err != nil {
panic(fmt.Errorf("cannot get processing activity tia: %w", err)) panic(fmt.Errorf("cannot get processing activity tia: %w", err))
} }
return types.NewProcessingActivityTia(tia), nil return types.NewTransferImpactAssessment(tia), nil
case coredata.SnapshotEntityType: case coredata.SnapshotEntityType:
snapshot, err := prb.Snapshots.Get(ctx, id) snapshot, err := prb.Snapshots.Get(ctx, id)
if err != nil { if err != nil {
@@ -6791,6 +6731,66 @@ func (r *taskConnectionResolver) TotalCount(ctx context.Context, obj *types.Task
panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver)) panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver))
} }
// ProcessingActivity is the resolver for the processingActivity field.
func (r *transferImpactAssessmentResolver) ProcessingActivity(ctx context.Context, obj *types.TransferImpactAssessment) (*types.ProcessingActivity, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGet)
prb := r.ProboService(ctx, obj.ID.TenantID())
tia, err := prb.TransferImpactAssessments.Get(ctx, obj.ID)
if err != nil {
panic(fmt.Errorf("cannot get transfer impact assessment: %w", err))
}
processingActivity, err := prb.ProcessingActivities.Get(ctx, tia.ProcessingActivityID)
if err != nil {
panic(fmt.Errorf("cannot get processing activity: %w", err))
}
return types.NewProcessingActivity(processingActivity), nil
}
// Organization is the resolver for the organization field.
func (r *transferImpactAssessmentResolver) Organization(ctx context.Context, obj *types.TransferImpactAssessment) (*types.Organization, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetOrganization)
prb := r.ProboService(ctx, obj.ID.TenantID())
tia, err := prb.TransferImpactAssessments.Get(ctx, obj.ID)
if err != nil {
panic(fmt.Errorf("cannot get transfer impact assessment: %w", err))
}
organization, err := prb.Organizations.Get(ctx, tia.OrganizationID)
if err != nil {
var errNotFound *coredata.ErrOrganizationNotFound
if errors.As(err, &errNotFound) {
return nil, gqlutils.NotFound(errNotFound)
}
panic(fmt.Errorf("cannot get organization: %w", err))
}
return types.NewOrganization(organization), nil
}
// TotalCount is the resolver for the totalCount field.
func (r *transferImpactAssessmentConnectionResolver) TotalCount(ctx context.Context, obj *types.TransferImpactAssessmentConnection) (int, error) {
r.MustBeAuthorized(ctx, obj.ParentID, authz.ActionTotalCount)
prb := r.ProboService(ctx, obj.ParentID.TenantID())
switch obj.Resolver.(type) {
case *organizationResolver:
count, err := prb.TransferImpactAssessments.CountForOrganizationID(ctx, obj.ParentID, obj.Filter)
if err != nil {
panic(fmt.Errorf("cannot count organization transfer impact assessments: %w", err))
}
return count, nil
}
panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver))
}
// NdaFileURL is the resolver for the ndaFileUrl field. // NdaFileURL is the resolver for the ndaFileUrl field.
func (r *trustCenterResolver) NdaFileURL(ctx context.Context, obj *types.TrustCenter) (*string, error) { func (r *trustCenterResolver) NdaFileURL(ctx context.Context, obj *types.TrustCenter) (*string, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetNdaFileUrl) r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetNdaFileUrl)
@@ -7681,6 +7681,16 @@ func (r *Resolver) ControlConnection() schema.ControlConnectionResolver {
return &controlConnectionResolver{r} return &controlConnectionResolver{r}
} }
// DataProtectionImpactAssessment returns schema.DataProtectionImpactAssessmentResolver implementation.
func (r *Resolver) DataProtectionImpactAssessment() schema.DataProtectionImpactAssessmentResolver {
return &dataProtectionImpactAssessmentResolver{r}
}
// DataProtectionImpactAssessmentConnection returns schema.DataProtectionImpactAssessmentConnectionResolver implementation.
func (r *Resolver) DataProtectionImpactAssessmentConnection() schema.DataProtectionImpactAssessmentConnectionResolver {
return &dataProtectionImpactAssessmentConnectionResolver{r}
}
// Datum returns schema.DatumResolver implementation. // Datum returns schema.DatumResolver implementation.
func (r *Resolver) Datum() schema.DatumResolver { return &datumResolver{r} } func (r *Resolver) Datum() schema.DatumResolver { return &datumResolver{r} }
@@ -7795,26 +7805,6 @@ func (r *Resolver) ProcessingActivityConnection() schema.ProcessingActivityConne
return &processingActivityConnectionResolver{r} return &processingActivityConnectionResolver{r}
} }
// ProcessingActivityDPIA returns schema.ProcessingActivityDPIAResolver implementation.
func (r *Resolver) ProcessingActivityDPIA() schema.ProcessingActivityDPIAResolver {
return &processingActivityDPIAResolver{r}
}
// ProcessingActivityDPIAConnection returns schema.ProcessingActivityDPIAConnectionResolver implementation.
func (r *Resolver) ProcessingActivityDPIAConnection() schema.ProcessingActivityDPIAConnectionResolver {
return &processingActivityDPIAConnectionResolver{r}
}
// ProcessingActivityTIA returns schema.ProcessingActivityTIAResolver implementation.
func (r *Resolver) ProcessingActivityTIA() schema.ProcessingActivityTIAResolver {
return &processingActivityTIAResolver{r}
}
// ProcessingActivityTIAConnection returns schema.ProcessingActivityTIAConnectionResolver implementation.
func (r *Resolver) ProcessingActivityTIAConnection() schema.ProcessingActivityTIAConnectionResolver {
return &processingActivityTIAConnectionResolver{r}
}
// Query returns schema.QueryResolver implementation. // Query returns schema.QueryResolver implementation.
func (r *Resolver) Query() schema.QueryResolver { return &queryResolver{r} } func (r *Resolver) Query() schema.QueryResolver { return &queryResolver{r} }
@@ -7851,6 +7841,16 @@ func (r *Resolver) Task() schema.TaskResolver { return &taskResolver{r} }
// TaskConnection returns schema.TaskConnectionResolver implementation. // TaskConnection returns schema.TaskConnectionResolver implementation.
func (r *Resolver) TaskConnection() schema.TaskConnectionResolver { return &taskConnectionResolver{r} } func (r *Resolver) TaskConnection() schema.TaskConnectionResolver { return &taskConnectionResolver{r} }
// TransferImpactAssessment returns schema.TransferImpactAssessmentResolver implementation.
func (r *Resolver) TransferImpactAssessment() schema.TransferImpactAssessmentResolver {
return &transferImpactAssessmentResolver{r}
}
// TransferImpactAssessmentConnection returns schema.TransferImpactAssessmentConnectionResolver implementation.
func (r *Resolver) TransferImpactAssessmentConnection() schema.TransferImpactAssessmentConnectionResolver {
return &transferImpactAssessmentConnectionResolver{r}
}
// TrustCenter returns schema.TrustCenterResolver implementation. // TrustCenter returns schema.TrustCenterResolver implementation.
func (r *Resolver) TrustCenter() schema.TrustCenterResolver { return &trustCenterResolver{r} } func (r *Resolver) TrustCenter() schema.TrustCenterResolver { return &trustCenterResolver{r} }
@@ -7937,6 +7937,8 @@ type continualImprovementResolver struct{ *Resolver }
type continualImprovementConnectionResolver struct{ *Resolver } type continualImprovementConnectionResolver struct{ *Resolver }
type controlResolver struct{ *Resolver } type controlResolver struct{ *Resolver }
type controlConnectionResolver struct{ *Resolver } type controlConnectionResolver struct{ *Resolver }
type dataProtectionImpactAssessmentResolver struct{ *Resolver }
type dataProtectionImpactAssessmentConnectionResolver struct{ *Resolver }
type datumResolver struct{ *Resolver } type datumResolver struct{ *Resolver }
type datumConnectionResolver struct{ *Resolver } type datumConnectionResolver struct{ *Resolver }
type documentResolver struct{ *Resolver } type documentResolver struct{ *Resolver }
@@ -7965,10 +7967,6 @@ type organizationResolver struct{ *Resolver }
type peopleConnectionResolver struct{ *Resolver } type peopleConnectionResolver struct{ *Resolver }
type processingActivityResolver struct{ *Resolver } type processingActivityResolver struct{ *Resolver }
type processingActivityConnectionResolver struct{ *Resolver } type processingActivityConnectionResolver struct{ *Resolver }
type processingActivityDPIAResolver struct{ *Resolver }
type processingActivityDPIAConnectionResolver struct{ *Resolver }
type processingActivityTIAResolver struct{ *Resolver }
type processingActivityTIAConnectionResolver struct{ *Resolver }
type queryResolver struct{ *Resolver } type queryResolver struct{ *Resolver }
type reportResolver struct{ *Resolver } type reportResolver struct{ *Resolver }
type riskResolver struct{ *Resolver } type riskResolver struct{ *Resolver }
@@ -7979,6 +7977,8 @@ type snapshotResolver struct{ *Resolver }
type snapshotConnectionResolver struct{ *Resolver } type snapshotConnectionResolver struct{ *Resolver }
type taskResolver struct{ *Resolver } type taskResolver struct{ *Resolver }
type taskConnectionResolver struct{ *Resolver } type taskConnectionResolver struct{ *Resolver }
type transferImpactAssessmentResolver struct{ *Resolver }
type transferImpactAssessmentConnectionResolver struct{ *Resolver }
type trustCenterResolver struct{ *Resolver } type trustCenterResolver struct{ *Resolver }
type trustCenterAccessResolver struct{ *Resolver } type trustCenterAccessResolver struct{ *Resolver }
type trustCenterDocumentAccessResolver struct{ *Resolver } type trustCenterDocumentAccessResolver struct{ *Resolver }