Change registry names
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
|
||||||
@@ -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",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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
@@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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"`
|
||||||
|
|||||||
@@ -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 }
|
||||||
|
|||||||
Reference in New Issue
Block a user