-
-
+
+
{activity.name}
+
-
diff --git a/e2e/console/processing_activity_test.go b/e2e/console/processing_activity_test.go
index b1e53e654..30b43c65d 100644
--- a/e2e/console/processing_activity_test.go
+++ b/e2e/console/processing_activity_test.go
@@ -45,6 +45,7 @@ func TestProcessingActivity_Create(t *testing.T) {
"specialOrCriminalData": "NO",
"dataProtectionImpactAssessment": "NOT_NEEDED",
"transferImpactAssessment": "NOT_NEEDED",
+ "role": "CONTROLLER",
},
assertField: "name",
assertValue: "Customer Data Processing",
@@ -58,6 +59,7 @@ func TestProcessingActivity_Create(t *testing.T) {
"internationalTransfers": false,
"dataProtectionImpactAssessment": "NOT_NEEDED",
"transferImpactAssessment": "NOT_NEEDED",
+ "role": "CONTROLLER",
},
assertField: "lawfulBasis",
assertValue: "CONSENT",
@@ -71,6 +73,7 @@ func TestProcessingActivity_Create(t *testing.T) {
"internationalTransfers": false,
"dataProtectionImpactAssessment": "NOT_NEEDED",
"transferImpactAssessment": "NOT_NEEDED",
+ "role": "CONTROLLER",
},
assertField: "lawfulBasis",
assertValue: "LEGITIMATE_INTEREST",
@@ -84,6 +87,7 @@ func TestProcessingActivity_Create(t *testing.T) {
"specialOrCriminalData": "NO",
"dataProtectionImpactAssessment": "NOT_NEEDED",
"transferImpactAssessment": "NOT_NEEDED",
+ "role": "CONTROLLER",
},
assertField: "internationalTransfers",
assertValue: true,
@@ -164,6 +168,7 @@ func TestProcessingActivity_Create_Validation(t *testing.T) {
"internationalTransfers": false,
"dataProtectionImpactAssessment": "NOT_NEEDED",
"transferImpactAssessment": "NOT_NEEDED",
+ "role": "CONTROLLER",
},
skipOrganization: true,
wantErrorContains: "organizationId",
@@ -518,6 +523,7 @@ func TestProcessingActivity_Timestamps(t *testing.T) {
"internationalTransfers": false,
"dataProtectionImpactAssessment": "NOT_NEEDED",
"transferImpactAssessment": "NOT_NEEDED",
+ "role": "CONTROLLER",
},
}, &result)
require.NoError(t, err)
@@ -647,6 +653,7 @@ func TestProcessingActivity_RBAC(t *testing.T) {
"internationalTransfers": false,
"dataProtectionImpactAssessment": "NOT_NEEDED",
"transferImpactAssessment": "NOT_NEEDED",
+ "role": "CONTROLLER",
},
})
require.NoError(t, err, "owner should be able to create processing activity")
@@ -671,6 +678,7 @@ func TestProcessingActivity_RBAC(t *testing.T) {
"internationalTransfers": false,
"dataProtectionImpactAssessment": "NOT_NEEDED",
"transferImpactAssessment": "NOT_NEEDED",
+ "role": "CONTROLLER",
},
})
require.NoError(t, err, "admin should be able to create processing activity")
@@ -695,6 +703,7 @@ func TestProcessingActivity_RBAC(t *testing.T) {
"internationalTransfers": false,
"dataProtectionImpactAssessment": "NOT_NEEDED",
"transferImpactAssessment": "NOT_NEEDED",
+ "role": "CONTROLLER",
},
})
testutil.RequireForbiddenError(t, err, "viewer should not be able to create processing activity")
@@ -885,7 +894,6 @@ func TestProcessingActivity_RBAC(t *testing.T) {
})
}
-
func TestProcessingActivity_Pagination(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
@@ -1232,3 +1240,1071 @@ func TestProcessingActivity_LawfulBasis(t *testing.T) {
})
}
}
+
+func TestProcessingActivity_Role(t *testing.T) {
+ t.Parallel()
+ owner := testutil.NewClient(t, testutil.RoleOwner)
+
+ roles := []string{"CONTROLLER", "PROCESSOR"}
+
+ for _, role := range roles {
+ t.Run(role, func(t *testing.T) {
+ query := `
+ mutation CreateProcessingActivity($input: CreateProcessingActivityInput!) {
+ createProcessingActivity(input: $input) {
+ processingActivityEdge {
+ node {
+ id
+ role
+ }
+ }
+ }
+ }
+ `
+
+ var result struct {
+ CreateProcessingActivity struct {
+ ProcessingActivityEdge struct {
+ Node struct {
+ ID string `json:"id"`
+ Role string `json:"role"`
+ } `json:"node"`
+ } `json:"processingActivityEdge"`
+ } `json:"createProcessingActivity"`
+ }
+
+ err := owner.Execute(query, map[string]any{
+ "input": map[string]any{
+ "organizationId": owner.GetOrganizationID().String(),
+ "name": fmt.Sprintf("PA Role %s", role),
+ "lawfulBasis": "CONSENT",
+ "specialOrCriminalData": "NO",
+ "internationalTransfers": false,
+ "dataProtectionImpactAssessment": "NOT_NEEDED",
+ "transferImpactAssessment": "NOT_NEEDED",
+ "role": role,
+ },
+ }, &result)
+ require.NoError(t, err)
+ assert.Equal(t, role, result.CreateProcessingActivity.ProcessingActivityEdge.Node.Role)
+ })
+ }
+
+ t.Run("update role", func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName("Role Update Test").
+ Create()
+
+ query := `
+ mutation UpdateProcessingActivity($input: UpdateProcessingActivityInput!) {
+ updateProcessingActivity(input: $input) {
+ processingActivity {
+ id
+ role
+ }
+ }
+ }
+ `
+
+ var result struct {
+ UpdateProcessingActivity struct {
+ ProcessingActivity struct {
+ ID string `json:"id"`
+ Role string `json:"role"`
+ } `json:"processingActivity"`
+ } `json:"updateProcessingActivity"`
+ }
+
+ err := owner.Execute(query, map[string]any{
+ "input": map[string]any{
+ "id": paID,
+ "role": "PROCESSOR",
+ },
+ }, &result)
+ require.NoError(t, err)
+ assert.Equal(t, "PROCESSOR", result.UpdateProcessingActivity.ProcessingActivity.Role)
+ })
+}
+
+func TestProcessingActivity_ReviewDates(t *testing.T) {
+ t.Parallel()
+ owner := testutil.NewClient(t, testutil.RoleOwner)
+
+ t.Run("create with review dates", func(t *testing.T) {
+ query := `
+ mutation CreateProcessingActivity($input: CreateProcessingActivityInput!) {
+ createProcessingActivity(input: $input) {
+ processingActivityEdge {
+ node {
+ id
+ lastReviewDate
+ nextReviewDate
+ }
+ }
+ }
+ }
+ `
+
+ var result struct {
+ CreateProcessingActivity struct {
+ ProcessingActivityEdge struct {
+ Node struct {
+ ID string `json:"id"`
+ LastReviewDate *string `json:"lastReviewDate"`
+ NextReviewDate *string `json:"nextReviewDate"`
+ } `json:"node"`
+ } `json:"processingActivityEdge"`
+ } `json:"createProcessingActivity"`
+ }
+
+ err := owner.Execute(query, map[string]any{
+ "input": map[string]any{
+ "organizationId": owner.GetOrganizationID().String(),
+ "name": "PA Review Dates Test",
+ "lawfulBasis": "CONSENT",
+ "specialOrCriminalData": "NO",
+ "internationalTransfers": false,
+ "dataProtectionImpactAssessment": "NOT_NEEDED",
+ "transferImpactAssessment": "NOT_NEEDED",
+ "role": "CONTROLLER",
+ "lastReviewDate": "2024-01-15T00:00:00Z",
+ "nextReviewDate": "2025-01-15T00:00:00Z",
+ },
+ }, &result)
+ require.NoError(t, err)
+ require.NotNil(t, result.CreateProcessingActivity.ProcessingActivityEdge.Node.LastReviewDate)
+ require.NotNil(t, result.CreateProcessingActivity.ProcessingActivityEdge.Node.NextReviewDate)
+ })
+
+ t.Run("update review dates", func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName("Review Date Update Test").
+ Create()
+
+ query := `
+ mutation UpdateProcessingActivity($input: UpdateProcessingActivityInput!) {
+ updateProcessingActivity(input: $input) {
+ processingActivity {
+ id
+ lastReviewDate
+ nextReviewDate
+ }
+ }
+ }
+ `
+
+ var result struct {
+ UpdateProcessingActivity struct {
+ ProcessingActivity struct {
+ ID string `json:"id"`
+ LastReviewDate *string `json:"lastReviewDate"`
+ NextReviewDate *string `json:"nextReviewDate"`
+ } `json:"processingActivity"`
+ } `json:"updateProcessingActivity"`
+ }
+
+ err := owner.Execute(query, map[string]any{
+ "input": map[string]any{
+ "id": paID,
+ "lastReviewDate": "2024-06-01T00:00:00Z",
+ "nextReviewDate": "2025-06-01T00:00:00Z",
+ },
+ }, &result)
+ require.NoError(t, err)
+ require.NotNil(t, result.UpdateProcessingActivity.ProcessingActivity.LastReviewDate)
+ require.NotNil(t, result.UpdateProcessingActivity.ProcessingActivity.NextReviewDate)
+ })
+}
+
+func TestProcessingActivity_DPIA(t *testing.T) {
+ t.Parallel()
+ owner := testutil.NewClient(t, testutil.RoleOwner)
+
+ t.Run("create DPIA", func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName("DPIA Create Test").
+ Create()
+
+ query := `
+ mutation CreateProcessingActivityDPIA($input: CreateProcessingActivityDPIAInput!) {
+ createProcessingActivityDPIA(input: $input) {
+ processingActivityDpia {
+ id
+ description
+ necessityAndProportionality
+ potentialRisk
+ mitigations
+ residualRisk
+ }
+ }
+ }
+ `
+
+ var result struct {
+ CreateProcessingActivityDPIA struct {
+ ProcessingActivityDpia struct {
+ ID string `json:"id"`
+ Description *string `json:"description"`
+ NecessityAndProportionality *string `json:"necessityAndProportionality"`
+ PotentialRisk *string `json:"potentialRisk"`
+ Mitigations *string `json:"mitigations"`
+ ResidualRisk *string `json:"residualRisk"`
+ } `json:"processingActivityDpia"`
+ } `json:"createProcessingActivityDPIA"`
+ }
+
+ err := owner.Execute(query, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "description": "Test DPIA description",
+ "necessityAndProportionality": "Test necessity",
+ "potentialRisk": "Test risk",
+ "mitigations": "Test mitigations",
+ "residualRisk": "LOW",
+ },
+ }, &result)
+ require.NoError(t, err)
+ assert.NotEmpty(t, result.CreateProcessingActivityDPIA.ProcessingActivityDpia.ID)
+ assert.Equal(t, "Test DPIA description", *result.CreateProcessingActivityDPIA.ProcessingActivityDpia.Description)
+ assert.Equal(t, "LOW", *result.CreateProcessingActivityDPIA.ProcessingActivityDpia.ResidualRisk)
+ })
+
+ t.Run("read DPIA via processing activity", func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName("DPIA Read Test").
+ Create()
+
+ createQuery := `
+ mutation CreateProcessingActivityDPIA($input: CreateProcessingActivityDPIAInput!) {
+ createProcessingActivityDPIA(input: $input) {
+ processingActivityDpia { id }
+ }
+ }
+ `
+ _, err := owner.Do(createQuery, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "description": "Read test DPIA",
+ "residualRisk": "MEDIUM",
+ },
+ })
+ require.NoError(t, err)
+
+ readQuery := `
+ query($id: ID!) {
+ node(id: $id) {
+ ... on ProcessingActivity {
+ id
+ dpia {
+ id
+ description
+ residualRisk
+ }
+ }
+ }
+ }
+ `
+
+ var result struct {
+ Node struct {
+ ID string `json:"id"`
+ Dpia *struct {
+ ID string `json:"id"`
+ Description *string `json:"description"`
+ ResidualRisk *string `json:"residualRisk"`
+ } `json:"dpia"`
+ } `json:"node"`
+ }
+
+ err = owner.Execute(readQuery, map[string]any{"id": paID}, &result)
+ require.NoError(t, err)
+ require.NotNil(t, result.Node.Dpia)
+ assert.Equal(t, "Read test DPIA", *result.Node.Dpia.Description)
+ assert.Equal(t, "MEDIUM", *result.Node.Dpia.ResidualRisk)
+ })
+
+ t.Run("update DPIA", func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName("DPIA Update Test").
+ Create()
+
+ createQuery := `
+ mutation CreateProcessingActivityDPIA($input: CreateProcessingActivityDPIAInput!) {
+ createProcessingActivityDPIA(input: $input) {
+ processingActivityDpia { id }
+ }
+ }
+ `
+ var createResult struct {
+ CreateProcessingActivityDPIA struct {
+ ProcessingActivityDpia struct {
+ ID string `json:"id"`
+ } `json:"processingActivityDpia"`
+ } `json:"createProcessingActivityDPIA"`
+ }
+ err := owner.Execute(createQuery, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "description": "Original description",
+ "residualRisk": "LOW",
+ },
+ }, &createResult)
+ require.NoError(t, err)
+ dpiaID := createResult.CreateProcessingActivityDPIA.ProcessingActivityDpia.ID
+
+ updateQuery := `
+ mutation UpdateProcessingActivityDPIA($input: UpdateProcessingActivityDPIAInput!) {
+ updateProcessingActivityDPIA(input: $input) {
+ processingActivityDpia {
+ id
+ description
+ residualRisk
+ }
+ }
+ }
+ `
+
+ var updateResult struct {
+ UpdateProcessingActivityDPIA struct {
+ ProcessingActivityDpia struct {
+ ID string `json:"id"`
+ Description *string `json:"description"`
+ ResidualRisk *string `json:"residualRisk"`
+ } `json:"processingActivityDpia"`
+ } `json:"updateProcessingActivityDPIA"`
+ }
+
+ err = owner.Execute(updateQuery, map[string]any{
+ "input": map[string]any{
+ "id": dpiaID,
+ "description": "Updated description",
+ "residualRisk": "HIGH",
+ },
+ }, &updateResult)
+ require.NoError(t, err)
+ assert.Equal(t, "Updated description", *updateResult.UpdateProcessingActivityDPIA.ProcessingActivityDpia.Description)
+ assert.Equal(t, "HIGH", *updateResult.UpdateProcessingActivityDPIA.ProcessingActivityDpia.ResidualRisk)
+ })
+
+ t.Run("delete DPIA", func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName("DPIA Delete Test").
+ Create()
+
+ createQuery := `
+ mutation CreateProcessingActivityDPIA($input: CreateProcessingActivityDPIAInput!) {
+ createProcessingActivityDPIA(input: $input) {
+ processingActivityDpia { id }
+ }
+ }
+ `
+ var createResult struct {
+ CreateProcessingActivityDPIA struct {
+ ProcessingActivityDpia struct {
+ ID string `json:"id"`
+ } `json:"processingActivityDpia"`
+ } `json:"createProcessingActivityDPIA"`
+ }
+ err := owner.Execute(createQuery, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "description": "To be deleted",
+ },
+ }, &createResult)
+ require.NoError(t, err)
+ dpiaID := createResult.CreateProcessingActivityDPIA.ProcessingActivityDpia.ID
+
+ deleteQuery := `
+ mutation DeleteProcessingActivityDPIA($input: DeleteProcessingActivityDPIAInput!) {
+ deleteProcessingActivityDPIA(input: $input) {
+ deletedProcessingActivityDpiaId
+ }
+ }
+ `
+
+ var deleteResult struct {
+ DeleteProcessingActivityDPIA struct {
+ DeletedProcessingActivityDpiaID string `json:"deletedProcessingActivityDpiaId"`
+ } `json:"deleteProcessingActivityDPIA"`
+ }
+
+ err = owner.Execute(deleteQuery, map[string]any{
+ "input": map[string]any{
+ "processingActivityDpiaId": dpiaID,
+ },
+ }, &deleteResult)
+ require.NoError(t, err)
+ assert.Equal(t, dpiaID, deleteResult.DeleteProcessingActivityDPIA.DeletedProcessingActivityDpiaID)
+
+ readQuery := `
+ query($id: ID!) {
+ node(id: $id) {
+ ... on ProcessingActivity {
+ dpia { id }
+ }
+ }
+ }
+ `
+ var readResult struct {
+ Node struct {
+ Dpia *struct {
+ ID string `json:"id"`
+ } `json:"dpia"`
+ } `json:"node"`
+ }
+ err = owner.Execute(readQuery, map[string]any{"id": paID}, &readResult)
+ require.NoError(t, err)
+ assert.Nil(t, readResult.Node.Dpia)
+ })
+
+ t.Run("DPIA residual risk values", func(t *testing.T) {
+ residualRisks := []string{"LOW", "MEDIUM", "HIGH"}
+
+ for _, risk := range residualRisks {
+ t.Run(risk, func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName(fmt.Sprintf("DPIA Risk %s", risk)).
+ Create()
+
+ query := `
+ mutation CreateProcessingActivityDPIA($input: CreateProcessingActivityDPIAInput!) {
+ createProcessingActivityDPIA(input: $input) {
+ processingActivityDpia {
+ id
+ residualRisk
+ }
+ }
+ }
+ `
+
+ var result struct {
+ CreateProcessingActivityDPIA struct {
+ ProcessingActivityDpia struct {
+ ID string `json:"id"`
+ ResidualRisk *string `json:"residualRisk"`
+ } `json:"processingActivityDpia"`
+ } `json:"createProcessingActivityDPIA"`
+ }
+
+ err := owner.Execute(query, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "residualRisk": risk,
+ },
+ }, &result)
+ require.NoError(t, err)
+ assert.Equal(t, risk, *result.CreateProcessingActivityDPIA.ProcessingActivityDpia.ResidualRisk)
+ })
+ }
+ })
+}
+
+func TestProcessingActivity_TIA(t *testing.T) {
+ t.Parallel()
+ owner := testutil.NewClient(t, testutil.RoleOwner)
+
+ t.Run("create TIA", func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName("TIA Create Test").
+ Create()
+
+ query := `
+ mutation CreateProcessingActivityTIA($input: CreateProcessingActivityTIAInput!) {
+ createProcessingActivityTIA(input: $input) {
+ processingActivityTia {
+ id
+ dataSubjects
+ legalMechanism
+ transfer
+ localLawRisk
+ supplementaryMeasures
+ }
+ }
+ }
+ `
+
+ var result struct {
+ CreateProcessingActivityTIA struct {
+ ProcessingActivityTia struct {
+ ID string `json:"id"`
+ DataSubjects *string `json:"dataSubjects"`
+ LegalMechanism *string `json:"legalMechanism"`
+ Transfer *string `json:"transfer"`
+ LocalLawRisk *string `json:"localLawRisk"`
+ SupplementaryMeasures *string `json:"supplementaryMeasures"`
+ } `json:"processingActivityTia"`
+ } `json:"createProcessingActivityTIA"`
+ }
+
+ err := owner.Execute(query, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "dataSubjects": "EU customers",
+ "legalMechanism": "Standard Contractual Clauses",
+ "transfer": "EU to US",
+ "localLawRisk": "Moderate risk due to surveillance laws",
+ "supplementaryMeasures": "Encryption at rest and in transit",
+ },
+ }, &result)
+ require.NoError(t, err)
+ assert.NotEmpty(t, result.CreateProcessingActivityTIA.ProcessingActivityTia.ID)
+ assert.Equal(t, "EU customers", *result.CreateProcessingActivityTIA.ProcessingActivityTia.DataSubjects)
+ assert.Equal(t, "Standard Contractual Clauses", *result.CreateProcessingActivityTIA.ProcessingActivityTia.LegalMechanism)
+ })
+
+ t.Run("read TIA via processing activity", func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName("TIA Read Test").
+ Create()
+
+ createQuery := `
+ mutation CreateProcessingActivityTIA($input: CreateProcessingActivityTIAInput!) {
+ createProcessingActivityTIA(input: $input) {
+ processingActivityTia { id }
+ }
+ }
+ `
+ _, err := owner.Do(createQuery, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "dataSubjects": "Read test subjects",
+ "transfer": "Read test transfer",
+ },
+ })
+ require.NoError(t, err)
+
+ readQuery := `
+ query($id: ID!) {
+ node(id: $id) {
+ ... on ProcessingActivity {
+ id
+ tia {
+ id
+ dataSubjects
+ transfer
+ }
+ }
+ }
+ }
+ `
+
+ var result struct {
+ Node struct {
+ ID string `json:"id"`
+ Tia *struct {
+ ID string `json:"id"`
+ DataSubjects *string `json:"dataSubjects"`
+ Transfer *string `json:"transfer"`
+ } `json:"tia"`
+ } `json:"node"`
+ }
+
+ err = owner.Execute(readQuery, map[string]any{"id": paID}, &result)
+ require.NoError(t, err)
+ require.NotNil(t, result.Node.Tia)
+ assert.Equal(t, "Read test subjects", *result.Node.Tia.DataSubjects)
+ assert.Equal(t, "Read test transfer", *result.Node.Tia.Transfer)
+ })
+
+ t.Run("update TIA", func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName("TIA Update Test").
+ Create()
+
+ createQuery := `
+ mutation CreateProcessingActivityTIA($input: CreateProcessingActivityTIAInput!) {
+ createProcessingActivityTIA(input: $input) {
+ processingActivityTia { id }
+ }
+ }
+ `
+ var createResult struct {
+ CreateProcessingActivityTIA struct {
+ ProcessingActivityTia struct {
+ ID string `json:"id"`
+ } `json:"processingActivityTia"`
+ } `json:"createProcessingActivityTIA"`
+ }
+ err := owner.Execute(createQuery, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "dataSubjects": "Original subjects",
+ "transfer": "Original transfer",
+ },
+ }, &createResult)
+ require.NoError(t, err)
+ tiaID := createResult.CreateProcessingActivityTIA.ProcessingActivityTia.ID
+
+ updateQuery := `
+ mutation UpdateProcessingActivityTIA($input: UpdateProcessingActivityTIAInput!) {
+ updateProcessingActivityTIA(input: $input) {
+ processingActivityTia {
+ id
+ dataSubjects
+ transfer
+ legalMechanism
+ }
+ }
+ }
+ `
+
+ var updateResult struct {
+ UpdateProcessingActivityTIA struct {
+ ProcessingActivityTia struct {
+ ID string `json:"id"`
+ DataSubjects *string `json:"dataSubjects"`
+ Transfer *string `json:"transfer"`
+ LegalMechanism *string `json:"legalMechanism"`
+ } `json:"processingActivityTia"`
+ } `json:"updateProcessingActivityTIA"`
+ }
+
+ err = owner.Execute(updateQuery, map[string]any{
+ "input": map[string]any{
+ "id": tiaID,
+ "dataSubjects": "Updated subjects",
+ "transfer": "Updated transfer",
+ "legalMechanism": "Binding Corporate Rules",
+ },
+ }, &updateResult)
+ require.NoError(t, err)
+ assert.Equal(t, "Updated subjects", *updateResult.UpdateProcessingActivityTIA.ProcessingActivityTia.DataSubjects)
+ assert.Equal(t, "Updated transfer", *updateResult.UpdateProcessingActivityTIA.ProcessingActivityTia.Transfer)
+ assert.Equal(t, "Binding Corporate Rules", *updateResult.UpdateProcessingActivityTIA.ProcessingActivityTia.LegalMechanism)
+ })
+
+ t.Run("delete TIA", func(t *testing.T) {
+ paID := factory.NewProcessingActivity(owner).
+ WithName("TIA Delete Test").
+ Create()
+
+ createQuery := `
+ mutation CreateProcessingActivityTIA($input: CreateProcessingActivityTIAInput!) {
+ createProcessingActivityTIA(input: $input) {
+ processingActivityTia { id }
+ }
+ }
+ `
+ var createResult struct {
+ CreateProcessingActivityTIA struct {
+ ProcessingActivityTia struct {
+ ID string `json:"id"`
+ } `json:"processingActivityTia"`
+ } `json:"createProcessingActivityTIA"`
+ }
+ err := owner.Execute(createQuery, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "dataSubjects": "To be deleted",
+ },
+ }, &createResult)
+ require.NoError(t, err)
+ tiaID := createResult.CreateProcessingActivityTIA.ProcessingActivityTia.ID
+
+ deleteQuery := `
+ mutation DeleteProcessingActivityTIA($input: DeleteProcessingActivityTIAInput!) {
+ deleteProcessingActivityTIA(input: $input) {
+ deletedProcessingActivityTiaId
+ }
+ }
+ `
+
+ var deleteResult struct {
+ DeleteProcessingActivityTIA struct {
+ DeletedProcessingActivityTiaID string `json:"deletedProcessingActivityTiaId"`
+ } `json:"deleteProcessingActivityTIA"`
+ }
+
+ err = owner.Execute(deleteQuery, map[string]any{
+ "input": map[string]any{
+ "processingActivityTiaId": tiaID,
+ },
+ }, &deleteResult)
+ require.NoError(t, err)
+ assert.Equal(t, tiaID, deleteResult.DeleteProcessingActivityTIA.DeletedProcessingActivityTiaID)
+
+ readQuery := `
+ query($id: ID!) {
+ node(id: $id) {
+ ... on ProcessingActivity {
+ tia { id }
+ }
+ }
+ }
+ `
+ var readResult struct {
+ Node struct {
+ Tia *struct {
+ ID string `json:"id"`
+ } `json:"tia"`
+ } `json:"node"`
+ }
+ err = owner.Execute(readQuery, map[string]any{"id": paID}, &readResult)
+ require.NoError(t, err)
+ assert.Nil(t, readResult.Node.Tia)
+ })
+}
+
+func TestProcessingActivity_DPIA_RBAC(t *testing.T) {
+ t.Parallel()
+
+ t.Run("owner can manage DPIA", func(t *testing.T) {
+ owner := testutil.NewClient(t, testutil.RoleOwner)
+ paID := factory.NewProcessingActivity(owner).WithName("DPIA RBAC Owner Test").Create()
+
+ var createResult struct {
+ CreateProcessingActivityDPIA struct {
+ ProcessingActivityDpia struct {
+ ID string `json:"id"`
+ } `json:"processingActivityDpia"`
+ } `json:"createProcessingActivityDPIA"`
+ }
+ err := owner.Execute(`
+ mutation($input: CreateProcessingActivityDPIAInput!) {
+ createProcessingActivityDPIA(input: $input) {
+ processingActivityDpia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "description": "Owner DPIA",
+ },
+ }, &createResult)
+ require.NoError(t, err, "owner should be able to create DPIA")
+ dpiaID := createResult.CreateProcessingActivityDPIA.ProcessingActivityDpia.ID
+
+ _, err = owner.Do(`
+ mutation($input: UpdateProcessingActivityDPIAInput!) {
+ updateProcessingActivityDPIA(input: $input) {
+ processingActivityDpia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "id": dpiaID,
+ "description": "Updated by owner",
+ },
+ })
+ require.NoError(t, err, "owner should be able to update DPIA")
+
+ _, err = owner.Do(`
+ mutation($input: DeleteProcessingActivityDPIAInput!) {
+ deleteProcessingActivityDPIA(input: $input) {
+ deletedProcessingActivityDpiaId
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityDpiaId": dpiaID,
+ },
+ })
+ require.NoError(t, err, "owner should be able to delete DPIA")
+ })
+
+ t.Run("admin can manage DPIA", func(t *testing.T) {
+ owner := testutil.NewClient(t, testutil.RoleOwner)
+ admin := testutil.NewClientInOrg(t, testutil.RoleAdmin, owner)
+ paID := factory.NewProcessingActivity(owner).WithName("DPIA RBAC Admin Test").Create()
+
+ var createResult struct {
+ CreateProcessingActivityDPIA struct {
+ ProcessingActivityDpia struct {
+ ID string `json:"id"`
+ } `json:"processingActivityDpia"`
+ } `json:"createProcessingActivityDPIA"`
+ }
+ err := admin.Execute(`
+ mutation($input: CreateProcessingActivityDPIAInput!) {
+ createProcessingActivityDPIA(input: $input) {
+ processingActivityDpia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "description": "Admin DPIA",
+ },
+ }, &createResult)
+ require.NoError(t, err, "admin should be able to create DPIA")
+ dpiaID := createResult.CreateProcessingActivityDPIA.ProcessingActivityDpia.ID
+
+ _, err = admin.Do(`
+ mutation($input: UpdateProcessingActivityDPIAInput!) {
+ updateProcessingActivityDPIA(input: $input) {
+ processingActivityDpia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "id": dpiaID,
+ "description": "Updated by admin",
+ },
+ })
+ require.NoError(t, err, "admin should be able to update DPIA")
+
+ _, err = admin.Do(`
+ mutation($input: DeleteProcessingActivityDPIAInput!) {
+ deleteProcessingActivityDPIA(input: $input) {
+ deletedProcessingActivityDpiaId
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityDpiaId": dpiaID,
+ },
+ })
+ require.NoError(t, err, "admin should be able to delete DPIA")
+ })
+
+ t.Run("viewer cannot manage DPIA", func(t *testing.T) {
+ owner := testutil.NewClient(t, testutil.RoleOwner)
+ viewer := testutil.NewClientInOrg(t, testutil.RoleViewer, owner)
+ paID := factory.NewProcessingActivity(owner).WithName("DPIA RBAC Viewer Test").Create()
+
+ _, err := viewer.Do(`
+ mutation($input: CreateProcessingActivityDPIAInput!) {
+ createProcessingActivityDPIA(input: $input) {
+ processingActivityDpia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "description": "Viewer DPIA",
+ },
+ })
+ testutil.RequireForbiddenError(t, err, "viewer should not be able to create DPIA")
+
+ var createResult struct {
+ CreateProcessingActivityDPIA struct {
+ ProcessingActivityDpia struct {
+ ID string `json:"id"`
+ } `json:"processingActivityDpia"`
+ } `json:"createProcessingActivityDPIA"`
+ }
+ err = owner.Execute(`
+ mutation($input: CreateProcessingActivityDPIAInput!) {
+ createProcessingActivityDPIA(input: $input) {
+ processingActivityDpia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "description": "Owner created DPIA",
+ },
+ }, &createResult)
+ require.NoError(t, err)
+ dpiaID := createResult.CreateProcessingActivityDPIA.ProcessingActivityDpia.ID
+
+ _, err = viewer.Do(`
+ mutation($input: UpdateProcessingActivityDPIAInput!) {
+ updateProcessingActivityDPIA(input: $input) {
+ processingActivityDpia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "id": dpiaID,
+ "description": "Updated by viewer",
+ },
+ })
+ testutil.RequireForbiddenError(t, err, "viewer should not be able to update DPIA")
+
+ _, err = viewer.Do(`
+ mutation($input: DeleteProcessingActivityDPIAInput!) {
+ deleteProcessingActivityDPIA(input: $input) {
+ deletedProcessingActivityDpiaId
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityDpiaId": dpiaID,
+ },
+ })
+ testutil.RequireForbiddenError(t, err, "viewer should not be able to delete DPIA")
+ })
+}
+
+func TestProcessingActivity_TIA_RBAC(t *testing.T) {
+ t.Parallel()
+
+ t.Run("owner can manage TIA", func(t *testing.T) {
+ owner := testutil.NewClient(t, testutil.RoleOwner)
+ paID := factory.NewProcessingActivity(owner).WithName("TIA RBAC Owner Test").Create()
+
+ var createResult struct {
+ CreateProcessingActivityTIA struct {
+ ProcessingActivityTia struct {
+ ID string `json:"id"`
+ } `json:"processingActivityTia"`
+ } `json:"createProcessingActivityTIA"`
+ }
+ err := owner.Execute(`
+ mutation($input: CreateProcessingActivityTIAInput!) {
+ createProcessingActivityTIA(input: $input) {
+ processingActivityTia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "dataSubjects": "Owner TIA subjects",
+ },
+ }, &createResult)
+ require.NoError(t, err, "owner should be able to create TIA")
+ tiaID := createResult.CreateProcessingActivityTIA.ProcessingActivityTia.ID
+
+ _, err = owner.Do(`
+ mutation($input: UpdateProcessingActivityTIAInput!) {
+ updateProcessingActivityTIA(input: $input) {
+ processingActivityTia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "id": tiaID,
+ "dataSubjects": "Updated by owner",
+ },
+ })
+ require.NoError(t, err, "owner should be able to update TIA")
+
+ _, err = owner.Do(`
+ mutation($input: DeleteProcessingActivityTIAInput!) {
+ deleteProcessingActivityTIA(input: $input) {
+ deletedProcessingActivityTiaId
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityTiaId": tiaID,
+ },
+ })
+ require.NoError(t, err, "owner should be able to delete TIA")
+ })
+
+ t.Run("admin can manage TIA", func(t *testing.T) {
+ owner := testutil.NewClient(t, testutil.RoleOwner)
+ admin := testutil.NewClientInOrg(t, testutil.RoleAdmin, owner)
+ paID := factory.NewProcessingActivity(owner).WithName("TIA RBAC Admin Test").Create()
+
+ var createResult struct {
+ CreateProcessingActivityTIA struct {
+ ProcessingActivityTia struct {
+ ID string `json:"id"`
+ } `json:"processingActivityTia"`
+ } `json:"createProcessingActivityTIA"`
+ }
+ err := admin.Execute(`
+ mutation($input: CreateProcessingActivityTIAInput!) {
+ createProcessingActivityTIA(input: $input) {
+ processingActivityTia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "dataSubjects": "Admin TIA subjects",
+ },
+ }, &createResult)
+ require.NoError(t, err, "admin should be able to create TIA")
+ tiaID := createResult.CreateProcessingActivityTIA.ProcessingActivityTia.ID
+
+ _, err = admin.Do(`
+ mutation($input: UpdateProcessingActivityTIAInput!) {
+ updateProcessingActivityTIA(input: $input) {
+ processingActivityTia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "id": tiaID,
+ "dataSubjects": "Updated by admin",
+ },
+ })
+ require.NoError(t, err, "admin should be able to update TIA")
+
+ _, err = admin.Do(`
+ mutation($input: DeleteProcessingActivityTIAInput!) {
+ deleteProcessingActivityTIA(input: $input) {
+ deletedProcessingActivityTiaId
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityTiaId": tiaID,
+ },
+ })
+ require.NoError(t, err, "admin should be able to delete TIA")
+ })
+
+ t.Run("viewer cannot manage TIA", func(t *testing.T) {
+ owner := testutil.NewClient(t, testutil.RoleOwner)
+ viewer := testutil.NewClientInOrg(t, testutil.RoleViewer, owner)
+ paID := factory.NewProcessingActivity(owner).WithName("TIA RBAC Viewer Test").Create()
+
+ _, err := viewer.Do(`
+ mutation($input: CreateProcessingActivityTIAInput!) {
+ createProcessingActivityTIA(input: $input) {
+ processingActivityTia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "dataSubjects": "Viewer TIA subjects",
+ },
+ })
+ testutil.RequireForbiddenError(t, err, "viewer should not be able to create TIA")
+
+ var createResult struct {
+ CreateProcessingActivityTIA struct {
+ ProcessingActivityTia struct {
+ ID string `json:"id"`
+ } `json:"processingActivityTia"`
+ } `json:"createProcessingActivityTIA"`
+ }
+ err = owner.Execute(`
+ mutation($input: CreateProcessingActivityTIAInput!) {
+ createProcessingActivityTIA(input: $input) {
+ processingActivityTia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityId": paID,
+ "dataSubjects": "Owner created TIA",
+ },
+ }, &createResult)
+ require.NoError(t, err)
+ tiaID := createResult.CreateProcessingActivityTIA.ProcessingActivityTia.ID
+
+ _, err = viewer.Do(`
+ mutation($input: UpdateProcessingActivityTIAInput!) {
+ updateProcessingActivityTIA(input: $input) {
+ processingActivityTia { id }
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "id": tiaID,
+ "dataSubjects": "Updated by viewer",
+ },
+ })
+ testutil.RequireForbiddenError(t, err, "viewer should not be able to update TIA")
+
+ _, err = viewer.Do(`
+ mutation($input: DeleteProcessingActivityTIAInput!) {
+ deleteProcessingActivityTIA(input: $input) {
+ deletedProcessingActivityTiaId
+ }
+ }
+ `, map[string]any{
+ "input": map[string]any{
+ "processingActivityTiaId": tiaID,
+ },
+ })
+ testutil.RequireForbiddenError(t, err, "viewer should not be able to delete TIA")
+ })
+}
diff --git a/e2e/internal/factory/factory.go b/e2e/internal/factory/factory.go
index f47c3052d..1e8109251 100644
--- a/e2e/internal/factory/factory.go
+++ b/e2e/internal/factory/factory.go
@@ -919,6 +919,7 @@ func CreateProcessingActivity(c *testutil.Client, attrs ...Attrs) string {
"internationalTransfers": a.getBool("internationalTransfers", false),
"dataProtectionImpactAssessment": a.getString("dataProtectionImpactAssessment", "NOT_NEEDED"),
"transferImpactAssessment": a.getString("transferImpactAssessment", "NOT_NEEDED"),
+ "role": a.getString("role", "CONTROLLER"),
}
if purpose := a.getStringPtr("purpose"); purpose != nil {
input["purpose"] = *purpose
diff --git a/packages/helpers/src/date.ts b/packages/helpers/src/date.ts
index 38c6468da..5cbcde6fa 100644
--- a/packages/helpers/src/date.ts
+++ b/packages/helpers/src/date.ts
@@ -3,6 +3,11 @@ export function formatDatetime(dateString?: string | null): string | undefined {
return `${dateString}T00:00:00Z`;
}
+export function toDateInput(dateString?: string | null): string {
+ if (!dateString) return '';
+ return dateString.split('T')[0];
+}
+
export function formatDate(dateInput?: string | null): string {
if (!dateInput) return '';
diff --git a/packages/helpers/src/index.ts b/packages/helpers/src/index.ts
index c433ff048..767a5c1bd 100644
--- a/packages/helpers/src/index.ts
+++ b/packages/helpers/src/index.ts
@@ -61,7 +61,7 @@ export {
} from "./trustCenterVisibility";
export { promisifyMutation } from "./relay";
export { fileType, fileSize } from "./file";
-export { formatDatetime, formatDate } from "./date";
+export { formatDatetime, formatDate, toDateInput } from "./date";
export { getTrustCenterUrl } from "./trustCenter";
export { formatError, type GraphQLError } from "./error";
export { Role, getAssignableRoles } from "./roles";
diff --git a/pkg/authz/permissions.go b/pkg/authz/permissions.go
index cf8f6efd4..a7a35f297 100644
--- a/pkg/authz/permissions.go
+++ b/pkg/authz/permissions.go
@@ -45,6 +45,9 @@ const (
ActionGetBusinessOwner Action = "getBusinessOwner"
ActionGetCustomDomain Action = "getCustomDomain"
ActionGetDataPrivacyAgreement Action = "getDataPrivacyAgreement"
+ ActionGetDataProtectionOfficer Action = "getDataProtectionOfficer"
+ ActionGetDPIA Action = "getDPIA"
+ ActionGetTIA Action = "getTIA"
ActionGetDocument Action = "getDocument"
ActionGetReport Action = "getReport"
ActionGetFile Action = "getFile"
@@ -135,6 +138,8 @@ const (
ActionCreateObligation Action = "createObligation"
ActionCreatePeople Action = "createPeople"
ActionCreateProcessingActivity Action = "createProcessingActivity"
+ ActionCreateProcessingActivityDPIA Action = "createProcessingActivityDPIA"
+ ActionCreateProcessingActivityTIA Action = "createProcessingActivityTIA"
ActionCreateRisk Action = "createRisk"
ActionCreateRiskDocumentMapping Action = "createRiskDocumentMapping"
ActionCreateRiskMeasureMapping Action = "createRiskMeasureMapping"
@@ -167,6 +172,8 @@ const (
ActionUpdateOrganization Action = "updateOrganization"
ActionUpdatePeople Action = "updatePeople"
ActionUpdateProcessingActivity Action = "updateProcessingActivity"
+ ActionUpdateProcessingActivityDPIA Action = "updateProcessingActivityDPIA"
+ ActionUpdateProcessingActivityTIA Action = "updateProcessingActivityTIA"
ActionUpdateRisk Action = "updateRisk"
ActionUpdateSAMLConfiguration Action = "updateSAMLConfiguration"
ActionUpdateTask Action = "updateTask"
@@ -204,6 +211,8 @@ const (
ActionDeleteOrganizationHorizontalLogo Action = "deleteOrganizationHorizontalLogo"
ActionDeletePeople Action = "deletePeople"
ActionDeleteProcessingActivity Action = "deleteProcessingActivity"
+ ActionDeleteProcessingActivityDPIA Action = "deleteProcessingActivityDPIA"
+ ActionDeleteProcessingActivityTIA Action = "deleteProcessingActivityTIA"
ActionDeleteRisk Action = "deleteRisk"
ActionDeleteRiskDocumentMapping Action = "deleteRiskDocumentMapping"
ActionDeleteRiskMeasureMapping Action = "deleteRiskMeasureMapping"
@@ -665,12 +674,33 @@ var Permissions = map[uint16]map[Action][]Role{
ActionDeleteContinualImprovement: EditRoles,
},
coredata.ProcessingActivityEntityType: {
+ ActionGet: NonEmployeeRoles,
+ ActionGetOrganization: NonEmployeeRoles,
+ ActionListVendors: NonEmployeeRoles,
+ ActionGetDataProtectionOfficer: NonEmployeeRoles,
+ ActionGetDPIA: NonEmployeeRoles,
+ ActionGetTIA: NonEmployeeRoles,
+
+ ActionUpdateProcessingActivity: EditRoles,
+ ActionDeleteProcessingActivity: EditRoles,
+ ActionCreateProcessingActivityDPIA: EditRoles,
+ ActionCreateProcessingActivityTIA: EditRoles,
+ },
+ coredata.ProcessingActivityDPIAEntityType: {
ActionGet: NonEmployeeRoles,
ActionGetOrganization: NonEmployeeRoles,
- ActionListVendors: NonEmployeeRoles,
- ActionUpdateProcessingActivity: EditRoles,
- ActionDeleteProcessingActivity: EditRoles,
+ ActionCreateProcessingActivityDPIA: EditRoles,
+ ActionUpdateProcessingActivityDPIA: EditRoles,
+ ActionDeleteProcessingActivityDPIA: EditRoles,
+ },
+ coredata.ProcessingActivityTIAEntityType: {
+ ActionGet: NonEmployeeRoles,
+ ActionGetOrganization: NonEmployeeRoles,
+
+ ActionCreateProcessingActivityTIA: EditRoles,
+ ActionUpdateProcessingActivityTIA: EditRoles,
+ ActionDeleteProcessingActivityTIA: EditRoles,
},
coredata.SnapshotEntityType: {
ActionGet: NonEmployeeRoles,
diff --git a/pkg/coredata/entity_type_reg.go b/pkg/coredata/entity_type_reg.go
index ee5c725c3..48c8d6a21 100644
--- a/pkg/coredata/entity_type_reg.go
+++ b/pkg/coredata/entity_type_reg.go
@@ -67,6 +67,8 @@ const (
UserAPIKeyEntityType uint16 = 43
UserAPIKeyMembershipEntityType uint16 = 44
MeetingEntityType uint16 = 45
+ ProcessingActivityDPIAEntityType uint16 = 46
+ ProcessingActivityTIAEntityType uint16 = 47
)
type EntityInfo struct {
@@ -259,6 +261,14 @@ var entityRegistry = map[uint16]EntityInfo{
Model: "Meeting",
Table: "meetings",
},
+ ProcessingActivityDPIAEntityType: {
+ Model: "ProcessingActivityDPIA",
+ Table: "processing_activity_data_protection_impact_assessments",
+ },
+ ProcessingActivityTIAEntityType: {
+ Model: "ProcessingActivityTIA",
+ Table: "processing_activity_transfer_impact_assessments",
+ },
}
func EntityTable(entityType uint16) (string, bool) {
diff --git a/pkg/coredata/migrations/20251216T153357Z.sql b/pkg/coredata/migrations/20251216T153357Z.sql
new file mode 100644
index 000000000..e5b532417
--- /dev/null
+++ b/pkg/coredata/migrations/20251216T153357Z.sql
@@ -0,0 +1,62 @@
+ALTER TABLE processing_activities ADD COLUMN last_review_date DATE;
+ALTER TABLE processing_activities ADD COLUMN next_review_date DATE;
+
+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 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;
+
+CREATE TYPE processing_activity_dpia_residual_risk AS ENUM ('LOW', 'MEDIUM', 'HIGH');
+
+CREATE TABLE processing_activity_data_protection_impact_assessments (
+ id TEXT PRIMARY KEY,
+ tenant_id TEXT NOT NULL,
+ organization_id TEXT NOT NULL,
+ processing_activity_id TEXT NOT NULL,
+ description TEXT,
+ necessity_and_proportionality TEXT,
+ potential_risk TEXT,
+ mitigations TEXT,
+ residual_risk processing_activity_dpia_residual_risk,
+ created_at TIMESTAMP WITH TIME ZONE NOT NULL,
+ updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
+
+ CONSTRAINT processing_activity_dpia_organization_id_fkey
+ FOREIGN KEY (organization_id)
+ REFERENCES organizations(id)
+ ON UPDATE CASCADE
+ ON DELETE CASCADE,
+
+ CONSTRAINT processing_activity_dpia_processing_activity_id_fkey
+ FOREIGN KEY (processing_activity_id)
+ REFERENCES processing_activities(id)
+ ON UPDATE CASCADE
+ ON DELETE CASCADE
+);
+
+CREATE TABLE processing_activity_transfer_impact_assessments (
+ id TEXT PRIMARY KEY,
+ tenant_id TEXT NOT NULL,
+ organization_id TEXT NOT NULL,
+ processing_activity_id TEXT NOT NULL,
+ data_subjects TEXT,
+ legal_mechanism TEXT,
+ transfer TEXT,
+ local_law_risk TEXT,
+ supplementary_measures TEXT,
+ created_at TIMESTAMP WITH TIME ZONE NOT NULL,
+ updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
+
+ CONSTRAINT processing_activity_tia_organization_id_fkey
+ FOREIGN KEY (organization_id)
+ REFERENCES organizations(id)
+ ON UPDATE CASCADE
+ ON DELETE CASCADE,
+
+ CONSTRAINT processing_activity_tia_processing_activity_id_fkey
+ FOREIGN KEY (processing_activity_id)
+ REFERENCES processing_activities(id)
+ ON UPDATE CASCADE
+ ON DELETE CASCADE
+);
diff --git a/pkg/coredata/processing_activities.go b/pkg/coredata/processing_activities.go
index ab372d2f3..c22f30152 100644
--- a/pkg/coredata/processing_activities.go
+++ b/pkg/coredata/processing_activities.go
@@ -47,6 +47,10 @@ type (
SecurityMeasures *string `db:"security_measures"`
DataProtectionImpactAssessment ProcessingActivityDataProtectionImpactAssessment `db:"data_protection_impact_assessment"`
TransferImpactAssessment ProcessingActivityTransferImpactAssessment `db:"transfer_impact_assessment"`
+ LastReviewDate *time.Time `db:"last_review_date"`
+ NextReviewDate *time.Time `db:"next_review_date"`
+ Role ProcessingActivityRole `db:"role"`
+ DataProtectionOfficerID *gid.GID `db:"data_protection_officer_id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
}
@@ -92,6 +96,10 @@ SELECT
security_measures,
data_protection_impact_assessment,
transfer_impact_assessment,
+ last_review_date,
+ next_review_date,
+ role,
+ data_protection_officer_id,
created_at,
updated_at
FROM
@@ -186,6 +194,10 @@ SELECT
security_measures,
data_protection_impact_assessment,
transfer_impact_assessment,
+ last_review_date,
+ next_review_date,
+ role,
+ data_protection_officer_id,
created_at,
updated_at
FROM
@@ -246,6 +258,10 @@ INSERT INTO processing_activities (
security_measures,
data_protection_impact_assessment,
transfer_impact_assessment,
+ last_review_date,
+ next_review_date,
+ role,
+ data_protection_officer_id,
created_at,
updated_at
) VALUES (
@@ -269,6 +285,10 @@ INSERT INTO processing_activities (
@security_measures,
@data_protection_impact_assessment,
@transfer_impact_assessment,
+ @last_review_date,
+ @next_review_date,
+ @role,
+ @data_protection_officer_id,
@created_at,
@updated_at
)
@@ -295,6 +315,10 @@ INSERT INTO processing_activities (
"security_measures": p.SecurityMeasures,
"data_protection_impact_assessment": p.DataProtectionImpactAssessment,
"transfer_impact_assessment": p.TransferImpactAssessment,
+ "last_review_date": p.LastReviewDate,
+ "next_review_date": p.NextReviewDate,
+ "role": p.Role,
+ "data_protection_officer_id": p.DataProtectionOfficerID,
"created_at": p.CreatedAt,
"updated_at": p.UpdatedAt,
}
@@ -330,6 +354,10 @@ SET
security_measures = @security_measures,
data_protection_impact_assessment = @data_protection_impact_assessment,
transfer_impact_assessment = @transfer_impact_assessment,
+ last_review_date = @last_review_date,
+ next_review_date = @next_review_date,
+ role = @role,
+ data_protection_officer_id = @data_protection_officer_id,
updated_at = @updated_at
WHERE
%s
@@ -356,6 +384,10 @@ WHERE
"security_measures": p.SecurityMeasures,
"data_protection_impact_assessment": p.DataProtectionImpactAssessment,
"transfer_impact_assessment": p.TransferImpactAssessment,
+ "last_review_date": p.LastReviewDate,
+ "next_review_date": p.NextReviewDate,
+ "role": p.Role,
+ "data_protection_officer_id": p.DataProtectionOfficerID,
"updated_at": p.UpdatedAt,
}
maps.Copy(args, scope.SQLArguments())
@@ -435,6 +467,10 @@ INSERT INTO processing_activities (
security_measures,
data_protection_impact_assessment,
transfer_impact_assessment,
+ last_review_date,
+ next_review_date,
+ role,
+ data_protection_officer_id,
created_at,
updated_at
)
@@ -459,6 +495,10 @@ SELECT
par.security_measures,
par.data_protection_impact_assessment,
par.transfer_impact_assessment,
+ par.last_review_date,
+ par.next_review_date,
+ par.role,
+ par.data_protection_officer_id,
par.created_at,
par.updated_at
FROM processing_activities par
diff --git a/pkg/coredata/processing_activity_dpia.go b/pkg/coredata/processing_activity_dpia.go
new file mode 100644
index 000000000..e07d9709c
--- /dev/null
+++ b/pkg/coredata/processing_activity_dpia.go
@@ -0,0 +1,359 @@
+// Copyright (c) 2025 Probo Inc .
+//
+// 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 (
+ "context"
+ "errors"
+ "fmt"
+ "maps"
+ "time"
+
+ "github.com/jackc/pgx/v5"
+ "go.gearno.de/kit/pg"
+ "go.probo.inc/probo/pkg/gid"
+ "go.probo.inc/probo/pkg/page"
+)
+
+type ErrProcessingActivityDPIANotFound struct {
+ Identifier string
+}
+
+func (e ErrProcessingActivityDPIANotFound) Error() string {
+ return fmt.Sprintf("processing activity dpia not found: %q", e.Identifier)
+}
+
+type (
+ ProcessingActivityDPIA struct {
+ ID gid.GID `db:"id"`
+ OrganizationID gid.GID `db:"organization_id"`
+ ProcessingActivityID gid.GID `db:"processing_activity_id"`
+ Description *string `db:"description"`
+ NecessityAndProportionality *string `db:"necessity_and_proportionality"`
+ PotentialRisk *string `db:"potential_risk"`
+ Mitigations *string `db:"mitigations"`
+ ResidualRisk *ProcessingActivityDPIAResidualRisk `db:"residual_risk"`
+ CreatedAt time.Time `db:"created_at"`
+ UpdatedAt time.Time `db:"updated_at"`
+ }
+
+ ProcessingActivityDPIAs []*ProcessingActivityDPIA
+)
+
+func (dpia *ProcessingActivityDPIA) CursorKey(field ProcessingActivityDPIAOrderField) page.CursorKey {
+ switch field {
+ case ProcessingActivityDPIAOrderFieldCreatedAt:
+ return page.NewCursorKey(dpia.ID, dpia.CreatedAt)
+ }
+
+ panic(fmt.Sprintf("unsupported order by: %s", field))
+}
+
+func (dpias *ProcessingActivityDPIAs) CountByOrganizationID(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+ organizationID gid.GID,
+) (int, error) {
+ q := `
+SELECT
+ COUNT(id)
+FROM
+ processing_activity_data_protection_impact_assessments
+WHERE
+ %s
+ AND organization_id = @organization_id
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment())
+
+ args := pgx.StrictNamedArgs{"organization_id": organizationID}
+ maps.Copy(args, scope.SQLArguments())
+
+ row := conn.QueryRow(ctx, q, args)
+
+ var count int
+ err := row.Scan(&count)
+ if err != nil {
+ return 0, fmt.Errorf("cannot count processing activity dpias: %w", err)
+ }
+
+ return count, nil
+}
+
+func (dpias *ProcessingActivityDPIAs) LoadByOrganizationID(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+ organizationID gid.GID,
+ cursor *page.Cursor[ProcessingActivityDPIAOrderField],
+) error {
+ q := `
+SELECT
+ id,
+ organization_id,
+ processing_activity_id,
+ description,
+ necessity_and_proportionality,
+ potential_risk,
+ mitigations,
+ residual_risk,
+ created_at,
+ updated_at
+FROM
+ processing_activity_data_protection_impact_assessments
+WHERE
+ %s
+ AND organization_id = @organization_id
+ AND %s
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment(), cursor.SQLFragment())
+
+ args := pgx.StrictNamedArgs{"organization_id": organizationID}
+ maps.Copy(args, scope.SQLArguments())
+ maps.Copy(args, cursor.SQLArguments())
+
+ rows, err := conn.Query(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot query processing activity dpias: %w", err)
+ }
+
+ results, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[ProcessingActivityDPIA])
+ if err != nil {
+ return fmt.Errorf("cannot collect processing activity dpias: %w", err)
+ }
+
+ *dpias = results
+
+ return nil
+}
+
+func (dpia *ProcessingActivityDPIA) LoadByID(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+ dpiaID gid.GID,
+) error {
+ q := `
+SELECT
+ id,
+ organization_id,
+ processing_activity_id,
+ description,
+ necessity_and_proportionality,
+ potential_risk,
+ mitigations,
+ residual_risk,
+ created_at,
+ updated_at
+FROM
+ processing_activity_data_protection_impact_assessments
+WHERE
+ %s
+ AND id = @dpia_id
+LIMIT 1;
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment())
+
+ args := pgx.StrictNamedArgs{"dpia_id": dpiaID}
+ maps.Copy(args, scope.SQLArguments())
+
+ rows, err := conn.Query(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot query processing activity dpia: %w", err)
+ }
+
+ result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[ProcessingActivityDPIA])
+ if err != nil {
+ if errors.Is(err, pgx.ErrNoRows) {
+ return &ErrProcessingActivityDPIANotFound{Identifier: dpiaID.String()}
+ }
+ return fmt.Errorf("cannot collect processing activity dpia: %w", err)
+ }
+
+ *dpia = result
+
+ return nil
+}
+
+func (dpia *ProcessingActivityDPIA) LoadByProcessingActivityID(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+ processingActivityID gid.GID,
+) error {
+ q := `
+SELECT
+ id,
+ organization_id,
+ processing_activity_id,
+ description,
+ necessity_and_proportionality,
+ potential_risk,
+ mitigations,
+ residual_risk,
+ created_at,
+ updated_at
+FROM
+ processing_activity_data_protection_impact_assessments
+WHERE
+ %s
+ AND processing_activity_id = @processing_activity_id
+LIMIT 1;
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment())
+
+ args := pgx.StrictNamedArgs{"processing_activity_id": processingActivityID}
+ maps.Copy(args, scope.SQLArguments())
+
+ rows, err := conn.Query(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot query processing activity dpia: %w", err)
+ }
+
+ result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[ProcessingActivityDPIA])
+ if err != nil {
+ if errors.Is(err, pgx.ErrNoRows) {
+ return &ErrProcessingActivityDPIANotFound{Identifier: processingActivityID.String()}
+ }
+ return fmt.Errorf("cannot collect processing activity dpia: %w", err)
+ }
+
+ *dpia = result
+
+ return nil
+}
+
+func (dpia *ProcessingActivityDPIA) Insert(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+) error {
+ q := `
+INSERT INTO processing_activity_data_protection_impact_assessments (
+ id,
+ tenant_id,
+ organization_id,
+ processing_activity_id,
+ description,
+ necessity_and_proportionality,
+ potential_risk,
+ mitigations,
+ residual_risk,
+ created_at,
+ updated_at
+) VALUES (
+ @id,
+ @tenant_id,
+ @organization_id,
+ @processing_activity_id,
+ @description,
+ @necessity_and_proportionality,
+ @potential_risk,
+ @mitigations,
+ @residual_risk,
+ @created_at,
+ @updated_at
+)
+`
+
+ args := pgx.StrictNamedArgs{
+ "id": dpia.ID,
+ "tenant_id": scope.GetTenantID(),
+ "organization_id": dpia.OrganizationID,
+ "processing_activity_id": dpia.ProcessingActivityID,
+ "description": dpia.Description,
+ "necessity_and_proportionality": dpia.NecessityAndProportionality,
+ "potential_risk": dpia.PotentialRisk,
+ "mitigations": dpia.Mitigations,
+ "residual_risk": dpia.ResidualRisk,
+ "created_at": dpia.CreatedAt,
+ "updated_at": dpia.UpdatedAt,
+ }
+
+ _, err := conn.Exec(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot insert processing activity dpia: %w", err)
+ }
+
+ return nil
+}
+
+func (dpia *ProcessingActivityDPIA) Update(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+) error {
+ q := `
+UPDATE processing_activity_data_protection_impact_assessments SET
+ description = @description,
+ necessity_and_proportionality = @necessity_and_proportionality,
+ potential_risk = @potential_risk,
+ mitigations = @mitigations,
+ residual_risk = @residual_risk,
+ updated_at = @updated_at
+WHERE
+ %s
+ AND id = @id
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment())
+
+ args := pgx.StrictNamedArgs{
+ "id": dpia.ID,
+ "description": dpia.Description,
+ "necessity_and_proportionality": dpia.NecessityAndProportionality,
+ "potential_risk": dpia.PotentialRisk,
+ "mitigations": dpia.Mitigations,
+ "residual_risk": dpia.ResidualRisk,
+ "updated_at": dpia.UpdatedAt,
+ }
+ maps.Copy(args, scope.SQLArguments())
+
+ _, err := conn.Exec(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot update processing activity dpia: %w", err)
+ }
+
+ return nil
+}
+
+func (dpia *ProcessingActivityDPIA) Delete(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+) error {
+ q := `
+DELETE FROM processing_activity_data_protection_impact_assessments
+WHERE
+ %s
+ AND id = @id
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment())
+
+ args := pgx.StrictNamedArgs{"id": dpia.ID}
+ maps.Copy(args, scope.SQLArguments())
+
+ _, err := conn.Exec(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot delete processing activity dpia: %w", err)
+ }
+
+ return nil
+}
diff --git a/pkg/coredata/processing_activity_dpia_order_field.go b/pkg/coredata/processing_activity_dpia_order_field.go
new file mode 100644
index 000000000..8352770b9
--- /dev/null
+++ b/pkg/coredata/processing_activity_dpia_order_field.go
@@ -0,0 +1,45 @@
+// Copyright (c) 2025 Probo Inc .
+//
+// 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 "fmt"
+
+type ProcessingActivityDPIAOrderField string
+
+const (
+ ProcessingActivityDPIAOrderFieldCreatedAt ProcessingActivityDPIAOrderField = "CREATED_AT"
+)
+
+func (p ProcessingActivityDPIAOrderField) Column() string {
+ return string(p)
+}
+
+func (p ProcessingActivityDPIAOrderField) String() string {
+ return string(p)
+}
+
+func (p ProcessingActivityDPIAOrderField) MarshalText() ([]byte, error) {
+ return []byte(p.String()), nil
+}
+
+func (p *ProcessingActivityDPIAOrderField) UnmarshalText(text []byte) error {
+ val := string(text)
+ switch val {
+ case string(ProcessingActivityDPIAOrderFieldCreatedAt):
+ *p = ProcessingActivityDPIAOrderFieldCreatedAt
+ return nil
+ }
+ return fmt.Errorf("invalid ProcessingActivityDPIAOrderField value: %q", val)
+}
diff --git a/pkg/coredata/processing_activity_dpia_residual_risk.go b/pkg/coredata/processing_activity_dpia_residual_risk.go
new file mode 100644
index 000000000..6f363b859
--- /dev/null
+++ b/pkg/coredata/processing_activity_dpia_residual_risk.go
@@ -0,0 +1,68 @@
+// Copyright (c) 2025 Probo Inc .
+//
+// 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
+}
diff --git a/pkg/coredata/processing_activity_role.go b/pkg/coredata/processing_activity_role.go
new file mode 100644
index 000000000..9bd592066
--- /dev/null
+++ b/pkg/coredata/processing_activity_role.go
@@ -0,0 +1,64 @@
+// Copyright (c) 2025 Probo Inc .
+//
+// 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 ProcessingActivityRole string
+
+const (
+ ProcessingActivityRoleController ProcessingActivityRole = "CONTROLLER"
+ ProcessingActivityRoleProcessor ProcessingActivityRole = "PROCESSOR"
+)
+
+func ProcessingActivityRoles() []ProcessingActivityRole {
+ return []ProcessingActivityRole{
+ ProcessingActivityRoleController,
+ ProcessingActivityRoleProcessor,
+ }
+}
+
+func (p ProcessingActivityRole) String() string {
+ return string(p)
+}
+
+func (p *ProcessingActivityRole) 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 ProcessingActivityRole: %T", value)
+ }
+
+ switch s {
+ case "CONTROLLER":
+ *p = ProcessingActivityRoleController
+ case "PROCESSOR":
+ *p = ProcessingActivityRoleProcessor
+ default:
+ return fmt.Errorf("invalid ProcessingActivityRole value: %q", s)
+ }
+ return nil
+}
+
+func (p ProcessingActivityRole) Value() (driver.Value, error) {
+ return p.String(), nil
+}
diff --git a/pkg/coredata/processing_activity_tia.go b/pkg/coredata/processing_activity_tia.go
new file mode 100644
index 000000000..714866ccc
--- /dev/null
+++ b/pkg/coredata/processing_activity_tia.go
@@ -0,0 +1,359 @@
+// Copyright (c) 2025 Probo Inc .
+//
+// 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 (
+ "context"
+ "errors"
+ "fmt"
+ "maps"
+ "time"
+
+ "github.com/jackc/pgx/v5"
+ "go.gearno.de/kit/pg"
+ "go.probo.inc/probo/pkg/gid"
+ "go.probo.inc/probo/pkg/page"
+)
+
+type ErrProcessingActivityTIANotFound struct {
+ Identifier string
+}
+
+func (e ErrProcessingActivityTIANotFound) Error() string {
+ return fmt.Sprintf("processing activity tia not found: %q", e.Identifier)
+}
+
+type (
+ ProcessingActivityTIA struct {
+ ID gid.GID `db:"id"`
+ OrganizationID gid.GID `db:"organization_id"`
+ ProcessingActivityID gid.GID `db:"processing_activity_id"`
+ DataSubjects *string `db:"data_subjects"`
+ LegalMechanism *string `db:"legal_mechanism"`
+ Transfer *string `db:"transfer"`
+ LocalLawRisk *string `db:"local_law_risk"`
+ SupplementaryMeasures *string `db:"supplementary_measures"`
+ CreatedAt time.Time `db:"created_at"`
+ UpdatedAt time.Time `db:"updated_at"`
+ }
+
+ ProcessingActivityTIAs []*ProcessingActivityTIA
+)
+
+func (tia *ProcessingActivityTIA) CursorKey(field ProcessingActivityTIAOrderField) page.CursorKey {
+ switch field {
+ case ProcessingActivityTIAOrderFieldCreatedAt:
+ return page.NewCursorKey(tia.ID, tia.CreatedAt)
+ }
+
+ panic(fmt.Sprintf("unsupported order by: %s", field))
+}
+
+func (tias *ProcessingActivityTIAs) CountByOrganizationID(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+ organizationID gid.GID,
+) (int, error) {
+ q := `
+SELECT
+ COUNT(id)
+FROM
+ processing_activity_transfer_impact_assessments
+WHERE
+ %s
+ AND organization_id = @organization_id
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment())
+
+ args := pgx.StrictNamedArgs{"organization_id": organizationID}
+ maps.Copy(args, scope.SQLArguments())
+
+ row := conn.QueryRow(ctx, q, args)
+
+ var count int
+ err := row.Scan(&count)
+ if err != nil {
+ return 0, fmt.Errorf("cannot count processing activity tias: %w", err)
+ }
+
+ return count, nil
+}
+
+func (tias *ProcessingActivityTIAs) LoadByOrganizationID(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+ organizationID gid.GID,
+ cursor *page.Cursor[ProcessingActivityTIAOrderField],
+) error {
+ q := `
+SELECT
+ id,
+ organization_id,
+ processing_activity_id,
+ data_subjects,
+ legal_mechanism,
+ transfer,
+ local_law_risk,
+ supplementary_measures,
+ created_at,
+ updated_at
+FROM
+ processing_activity_transfer_impact_assessments
+WHERE
+ %s
+ AND organization_id = @organization_id
+ AND %s
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment(), cursor.SQLFragment())
+
+ args := pgx.StrictNamedArgs{"organization_id": organizationID}
+ maps.Copy(args, scope.SQLArguments())
+ maps.Copy(args, cursor.SQLArguments())
+
+ rows, err := conn.Query(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot query processing activity tias: %w", err)
+ }
+
+ results, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[ProcessingActivityTIA])
+ if err != nil {
+ return fmt.Errorf("cannot collect processing activity tias: %w", err)
+ }
+
+ *tias = results
+
+ return nil
+}
+
+func (tia *ProcessingActivityTIA) LoadByID(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+ tiaID gid.GID,
+) error {
+ q := `
+SELECT
+ id,
+ organization_id,
+ processing_activity_id,
+ data_subjects,
+ legal_mechanism,
+ transfer,
+ local_law_risk,
+ supplementary_measures,
+ created_at,
+ updated_at
+FROM
+ processing_activity_transfer_impact_assessments
+WHERE
+ %s
+ AND id = @tia_id
+LIMIT 1;
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment())
+
+ args := pgx.StrictNamedArgs{"tia_id": tiaID}
+ maps.Copy(args, scope.SQLArguments())
+
+ rows, err := conn.Query(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot query processing activity tia: %w", err)
+ }
+
+ result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[ProcessingActivityTIA])
+ if err != nil {
+ if errors.Is(err, pgx.ErrNoRows) {
+ return &ErrProcessingActivityTIANotFound{Identifier: tiaID.String()}
+ }
+ return fmt.Errorf("cannot collect processing activity tia: %w", err)
+ }
+
+ *tia = result
+
+ return nil
+}
+
+func (tia *ProcessingActivityTIA) LoadByProcessingActivityID(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+ processingActivityID gid.GID,
+) error {
+ q := `
+SELECT
+ id,
+ organization_id,
+ processing_activity_id,
+ data_subjects,
+ legal_mechanism,
+ transfer,
+ local_law_risk,
+ supplementary_measures,
+ created_at,
+ updated_at
+FROM
+ processing_activity_transfer_impact_assessments
+WHERE
+ %s
+ AND processing_activity_id = @processing_activity_id
+LIMIT 1;
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment())
+
+ args := pgx.StrictNamedArgs{"processing_activity_id": processingActivityID}
+ maps.Copy(args, scope.SQLArguments())
+
+ rows, err := conn.Query(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot query processing activity tia: %w", err)
+ }
+
+ result, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[ProcessingActivityTIA])
+ if err != nil {
+ if errors.Is(err, pgx.ErrNoRows) {
+ return &ErrProcessingActivityTIANotFound{Identifier: processingActivityID.String()}
+ }
+ return fmt.Errorf("cannot collect processing activity tia: %w", err)
+ }
+
+ *tia = result
+
+ return nil
+}
+
+func (tia *ProcessingActivityTIA) Insert(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+) error {
+ q := `
+INSERT INTO processing_activity_transfer_impact_assessments (
+ id,
+ tenant_id,
+ organization_id,
+ processing_activity_id,
+ data_subjects,
+ legal_mechanism,
+ transfer,
+ local_law_risk,
+ supplementary_measures,
+ created_at,
+ updated_at
+) VALUES (
+ @id,
+ @tenant_id,
+ @organization_id,
+ @processing_activity_id,
+ @data_subjects,
+ @legal_mechanism,
+ @transfer,
+ @local_law_risk,
+ @supplementary_measures,
+ @created_at,
+ @updated_at
+)
+`
+
+ args := pgx.StrictNamedArgs{
+ "id": tia.ID,
+ "tenant_id": scope.GetTenantID(),
+ "organization_id": tia.OrganizationID,
+ "processing_activity_id": tia.ProcessingActivityID,
+ "data_subjects": tia.DataSubjects,
+ "legal_mechanism": tia.LegalMechanism,
+ "transfer": tia.Transfer,
+ "local_law_risk": tia.LocalLawRisk,
+ "supplementary_measures": tia.SupplementaryMeasures,
+ "created_at": tia.CreatedAt,
+ "updated_at": tia.UpdatedAt,
+ }
+
+ _, err := conn.Exec(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot insert processing activity tia: %w", err)
+ }
+
+ return nil
+}
+
+func (tia *ProcessingActivityTIA) Update(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+) error {
+ q := `
+UPDATE processing_activity_transfer_impact_assessments SET
+ data_subjects = @data_subjects,
+ legal_mechanism = @legal_mechanism,
+ transfer = @transfer,
+ local_law_risk = @local_law_risk,
+ supplementary_measures = @supplementary_measures,
+ updated_at = @updated_at
+WHERE
+ %s
+ AND id = @id
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment())
+
+ args := pgx.StrictNamedArgs{
+ "id": tia.ID,
+ "data_subjects": tia.DataSubjects,
+ "legal_mechanism": tia.LegalMechanism,
+ "transfer": tia.Transfer,
+ "local_law_risk": tia.LocalLawRisk,
+ "supplementary_measures": tia.SupplementaryMeasures,
+ "updated_at": tia.UpdatedAt,
+ }
+ maps.Copy(args, scope.SQLArguments())
+
+ _, err := conn.Exec(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot update processing activity tia: %w", err)
+ }
+
+ return nil
+}
+
+func (tia *ProcessingActivityTIA) Delete(
+ ctx context.Context,
+ conn pg.Conn,
+ scope Scoper,
+) error {
+ q := `
+DELETE FROM processing_activity_transfer_impact_assessments
+WHERE
+ %s
+ AND id = @id
+`
+
+ q = fmt.Sprintf(q, scope.SQLFragment())
+
+ args := pgx.StrictNamedArgs{"id": tia.ID}
+ maps.Copy(args, scope.SQLArguments())
+
+ _, err := conn.Exec(ctx, q, args)
+ if err != nil {
+ return fmt.Errorf("cannot delete processing activity tia: %w", err)
+ }
+
+ return nil
+}
diff --git a/pkg/coredata/processing_activity_tia_order_field.go b/pkg/coredata/processing_activity_tia_order_field.go
new file mode 100644
index 000000000..84b1417bd
--- /dev/null
+++ b/pkg/coredata/processing_activity_tia_order_field.go
@@ -0,0 +1,45 @@
+// Copyright (c) 2025 Probo Inc .
+//
+// 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 "fmt"
+
+type ProcessingActivityTIAOrderField string
+
+const (
+ ProcessingActivityTIAOrderFieldCreatedAt ProcessingActivityTIAOrderField = "CREATED_AT"
+)
+
+func (p ProcessingActivityTIAOrderField) Column() string {
+ return string(p)
+}
+
+func (p ProcessingActivityTIAOrderField) String() string {
+ return string(p)
+}
+
+func (p ProcessingActivityTIAOrderField) MarshalText() ([]byte, error) {
+ return []byte(p.String()), nil
+}
+
+func (p *ProcessingActivityTIAOrderField) UnmarshalText(text []byte) error {
+ val := string(text)
+ switch val {
+ case string(ProcessingActivityTIAOrderFieldCreatedAt):
+ *p = ProcessingActivityTIAOrderFieldCreatedAt
+ return nil
+ }
+ return fmt.Errorf("invalid ProcessingActivityTIAOrderField value: %q", val)
+}
diff --git a/pkg/probo/processing_activity_dpia_service.go b/pkg/probo/processing_activity_dpia_service.go
new file mode 100644
index 000000000..e5e524cee
--- /dev/null
+++ b/pkg/probo/processing_activity_dpia_service.go
@@ -0,0 +1,297 @@
+// Copyright (c) 2025 Probo Inc .
+//
+// 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 probo
+
+import (
+ "context"
+ "fmt"
+ "time"
+
+ "go.gearno.de/kit/pg"
+ "go.probo.inc/probo/pkg/coredata"
+ "go.probo.inc/probo/pkg/gid"
+ "go.probo.inc/probo/pkg/page"
+ "go.probo.inc/probo/pkg/validator"
+)
+
+type ProcessingActivityDPIAService struct {
+ svc *TenantService
+}
+
+type (
+ CreateProcessingActivityDPIARequest struct {
+ ProcessingActivityID gid.GID
+ Description *string
+ NecessityAndProportionality *string
+ PotentialRisk *string
+ Mitigations *string
+ ResidualRisk *coredata.ProcessingActivityDPIAResidualRisk
+ }
+
+ UpdateProcessingActivityDPIARequest struct {
+ ID gid.GID
+ Description **string
+ NecessityAndProportionality **string
+ PotentialRisk **string
+ Mitigations **string
+ ResidualRisk *coredata.ProcessingActivityDPIAResidualRisk
+ }
+)
+
+func (req *CreateProcessingActivityDPIARequest) Validate() error {
+ v := validator.New()
+
+ v.Check(req.ProcessingActivityID, "processing_activity_id", validator.Required(), validator.GID(coredata.ProcessingActivityEntityType))
+ v.Check(req.Description, "description", 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.Mitigations, "mitigations", validator.SafeText(ContentMaxLength))
+ v.Check(req.ResidualRisk, "residual_risk", validator.OneOfSlice(coredata.ProcessingActivityDPIAResidualRisks()))
+
+ return v.Error()
+}
+
+func (req *UpdateProcessingActivityDPIARequest) Validate() error {
+ v := validator.New()
+
+ v.Check(req.ID, "id", validator.Required(), validator.GID(coredata.ProcessingActivityDPIAEntityType))
+ v.Check(req.Description, "description", 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.Mitigations, "mitigations", validator.SafeText(ContentMaxLength))
+ v.Check(req.ResidualRisk, "residual_risk", validator.OneOfSlice(coredata.ProcessingActivityDPIAResidualRisks()))
+
+ return v.Error()
+}
+
+func (s ProcessingActivityDPIAService) Get(
+ ctx context.Context,
+ dpiaID gid.GID,
+) (*coredata.ProcessingActivityDPIA, error) {
+ dpia := &coredata.ProcessingActivityDPIA{}
+
+ err := s.svc.pg.WithConn(
+ ctx,
+ func(conn pg.Conn) error {
+ if err := dpia.LoadByID(ctx, conn, s.svc.scope, dpiaID); err != nil {
+ return fmt.Errorf("cannot load processing activity dpia: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
+ return dpia, nil
+}
+
+func (s ProcessingActivityDPIAService) GetByProcessingActivityID(
+ ctx context.Context,
+ processingActivityID gid.GID,
+) (*coredata.ProcessingActivityDPIA, error) {
+ dpia := &coredata.ProcessingActivityDPIA{}
+
+ err := s.svc.pg.WithConn(
+ ctx,
+ func(conn pg.Conn) error {
+ if err := dpia.LoadByProcessingActivityID(ctx, conn, s.svc.scope, processingActivityID); err != nil {
+ return fmt.Errorf("cannot load processing activity dpia: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
+ return dpia, nil
+}
+
+func (s ProcessingActivityDPIAService) ListForOrganizationID(
+ ctx context.Context,
+ organizationID gid.GID,
+ cursor *page.Cursor[coredata.ProcessingActivityDPIAOrderField],
+) (*page.Page[*coredata.ProcessingActivityDPIA, coredata.ProcessingActivityDPIAOrderField], error) {
+ var dpias coredata.ProcessingActivityDPIAs
+
+ err := s.svc.pg.WithConn(
+ ctx,
+ func(conn pg.Conn) error {
+ err := dpias.LoadByOrganizationID(ctx, conn, s.svc.scope, organizationID, cursor)
+ if err != nil {
+ return fmt.Errorf("cannot load processing activity dpias: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
+ return page.NewPage(dpias, cursor), nil
+}
+
+func (s ProcessingActivityDPIAService) CountForOrganizationID(
+ ctx context.Context,
+ organizationID gid.GID,
+) (int, error) {
+ var count int
+
+ err := s.svc.pg.WithConn(
+ ctx,
+ func(conn pg.Conn) (err error) {
+ dpias := coredata.ProcessingActivityDPIAs{}
+ count, err = dpias.CountByOrganizationID(ctx, conn, s.svc.scope, organizationID)
+ return err
+ },
+ )
+
+ if err != nil {
+ return 0, err
+ }
+
+ return count, nil
+}
+
+func (s *ProcessingActivityDPIAService) Create(
+ ctx context.Context,
+ req *CreateProcessingActivityDPIARequest,
+) (*coredata.ProcessingActivityDPIA, error) {
+ if err := req.Validate(); err != nil {
+ return nil, err
+ }
+
+ now := time.Now()
+
+ dpia := &coredata.ProcessingActivityDPIA{
+ ID: gid.New(s.svc.scope.GetTenantID(), coredata.ProcessingActivityDPIAEntityType),
+ ProcessingActivityID: req.ProcessingActivityID,
+ Description: req.Description,
+ NecessityAndProportionality: req.NecessityAndProportionality,
+ PotentialRisk: req.PotentialRisk,
+ Mitigations: req.Mitigations,
+ ResidualRisk: req.ResidualRisk,
+ CreatedAt: now,
+ UpdatedAt: now,
+ }
+
+ err := s.svc.pg.WithTx(
+ ctx,
+ func(conn pg.Conn) error {
+ processingActivity := &coredata.ProcessingActivity{}
+ if err := processingActivity.LoadByID(ctx, conn, s.svc.scope, req.ProcessingActivityID); err != nil {
+ return fmt.Errorf("cannot load processing activity: %w", err)
+ }
+
+ dpia.OrganizationID = processingActivity.OrganizationID
+
+ if err := dpia.Insert(ctx, conn, s.svc.scope); err != nil {
+ return fmt.Errorf("cannot insert processing activity dpia: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
+ return dpia, nil
+}
+
+func (s *ProcessingActivityDPIAService) Update(
+ ctx context.Context,
+ req *UpdateProcessingActivityDPIARequest,
+) (*coredata.ProcessingActivityDPIA, error) {
+ if err := req.Validate(); err != nil {
+ return nil, err
+ }
+
+ dpia := &coredata.ProcessingActivityDPIA{}
+
+ err := s.svc.pg.WithTx(
+ ctx,
+ func(conn pg.Conn) error {
+ if err := dpia.LoadByID(ctx, conn, s.svc.scope, req.ID); err != nil {
+ return fmt.Errorf("cannot load processing activity dpia: %w", err)
+ }
+
+ if req.Description != nil {
+ dpia.Description = *req.Description
+ }
+
+ if req.NecessityAndProportionality != nil {
+ dpia.NecessityAndProportionality = *req.NecessityAndProportionality
+ }
+
+ if req.PotentialRisk != nil {
+ dpia.PotentialRisk = *req.PotentialRisk
+ }
+
+ if req.Mitigations != nil {
+ dpia.Mitigations = *req.Mitigations
+ }
+
+ if req.ResidualRisk != nil {
+ dpia.ResidualRisk = req.ResidualRisk
+ }
+
+ dpia.UpdatedAt = time.Now()
+
+ if err := dpia.Update(ctx, conn, s.svc.scope); err != nil {
+ return fmt.Errorf("cannot update processing activity dpia: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
+ return dpia, nil
+}
+
+func (s *ProcessingActivityDPIAService) Delete(
+ ctx context.Context,
+ dpiaID gid.GID,
+) error {
+ err := s.svc.pg.WithTx(
+ ctx,
+ func(conn pg.Conn) error {
+ dpia := &coredata.ProcessingActivityDPIA{}
+ if err := dpia.LoadByID(ctx, conn, s.svc.scope, dpiaID); err != nil {
+ return fmt.Errorf("cannot load processing activity dpia: %w", err)
+ }
+
+ if err := dpia.Delete(ctx, conn, s.svc.scope); err != nil {
+ return fmt.Errorf("cannot delete processing activity dpia: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ return err
+}
diff --git a/pkg/probo/processing_activity_service.go b/pkg/probo/processing_activity_service.go
index 139fcdbdf..8a67bf915 100644
--- a/pkg/probo/processing_activity_service.go
+++ b/pkg/probo/processing_activity_service.go
@@ -48,6 +48,10 @@ type (
SecurityMeasures *string
DataProtectionImpactAssessment coredata.ProcessingActivityDataProtectionImpactAssessment
TransferImpactAssessment coredata.ProcessingActivityTransferImpactAssessment
+ LastReviewDate *time.Time
+ NextReviewDate *time.Time
+ Role coredata.ProcessingActivityRole
+ DataProtectionOfficerID *gid.GID
VendorIDs []gid.GID
}
@@ -68,6 +72,10 @@ type (
SecurityMeasures **string
DataProtectionImpactAssessment *coredata.ProcessingActivityDataProtectionImpactAssessment
TransferImpactAssessment *coredata.ProcessingActivityTransferImpactAssessment
+ LastReviewDate **time.Time
+ NextReviewDate **time.Time
+ Role *coredata.ProcessingActivityRole
+ DataProtectionOfficerID **gid.GID
VendorIDs *[]gid.GID
}
)
@@ -91,6 +99,8 @@ func (cpar *CreateProcessingActivityRequest) Validate() error {
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.TransferImpactAssessment, "transfer_impact_assessment", validator.Required(), validator.OneOfSlice(coredata.ProcessingActivityTransferImpactAssessments()))
+ v.Check(cpar.Role, "role", validator.Required(), validator.OneOfSlice(coredata.ProcessingActivityRoles()))
+ v.Check(cpar.DataProtectionOfficerID, "data_protection_officer_id", validator.GID(coredata.PeopleEntityType))
v.CheckEach(cpar.VendorIDs, "vendor_ids", func(index int, item any) {
v.Check(item, fmt.Sprintf("vendor_ids[%d]", index), validator.Required(), validator.GID(coredata.VendorEntityType))
})
@@ -116,6 +126,8 @@ func (upar *UpdateProcessingActivityRequest) Validate() error {
v.Check(upar.SecurityMeasures, "security_measures", validator.SafeText(TitleMaxLength))
v.Check(upar.DataProtectionImpactAssessment, "data_protection_impact_assessment", validator.OneOfSlice(coredata.ProcessingActivityDataProtectionImpactAssessments()))
v.Check(upar.TransferImpactAssessment, "transfer_impact_assessment", validator.OneOfSlice(coredata.ProcessingActivityTransferImpactAssessments()))
+ v.Check(upar.Role, "role", validator.OneOfSlice(coredata.ProcessingActivityRoles()))
+ v.Check(upar.DataProtectionOfficerID, "data_protection_officer_id", validator.GID(coredata.PeopleEntityType))
v.CheckEach(upar.VendorIDs, "vendor_ids", func(index int, item any) {
v.Check(item, fmt.Sprintf("vendor_ids[%d]", index), validator.GID(coredata.VendorEntityType))
})
@@ -168,6 +180,10 @@ func (s *ProcessingActivityService) Create(
SecurityMeasures: req.SecurityMeasures,
DataProtectionImpactAssessment: req.DataProtectionImpactAssessment,
TransferImpactAssessment: req.TransferImpactAssessment,
+ LastReviewDate: req.LastReviewDate,
+ NextReviewDate: req.NextReviewDate,
+ Role: req.Role,
+ DataProtectionOfficerID: req.DataProtectionOfficerID,
CreatedAt: now,
UpdatedAt: now,
}
@@ -260,6 +276,18 @@ func (s *ProcessingActivityService) Update(
if req.TransferImpactAssessment != nil {
processingActivity.TransferImpactAssessment = *req.TransferImpactAssessment
}
+ if req.LastReviewDate != nil {
+ processingActivity.LastReviewDate = *req.LastReviewDate
+ }
+ if req.NextReviewDate != nil {
+ processingActivity.NextReviewDate = *req.NextReviewDate
+ }
+ if req.Role != nil {
+ processingActivity.Role = *req.Role
+ }
+ if req.DataProtectionOfficerID != nil {
+ processingActivity.DataProtectionOfficerID = *req.DataProtectionOfficerID
+ }
processingActivity.UpdatedAt = time.Now()
diff --git a/pkg/probo/processing_activity_tia_service.go b/pkg/probo/processing_activity_tia_service.go
new file mode 100644
index 000000000..c87f19221
--- /dev/null
+++ b/pkg/probo/processing_activity_tia_service.go
@@ -0,0 +1,297 @@
+// Copyright (c) 2025 Probo Inc .
+//
+// 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 probo
+
+import (
+ "context"
+ "fmt"
+ "time"
+
+ "go.gearno.de/kit/pg"
+ "go.probo.inc/probo/pkg/coredata"
+ "go.probo.inc/probo/pkg/gid"
+ "go.probo.inc/probo/pkg/page"
+ "go.probo.inc/probo/pkg/validator"
+)
+
+type ProcessingActivityTIAService struct {
+ svc *TenantService
+}
+
+type (
+ CreateProcessingActivityTIARequest struct {
+ ProcessingActivityID gid.GID
+ DataSubjects *string
+ LegalMechanism *string
+ Transfer *string
+ LocalLawRisk *string
+ SupplementaryMeasures *string
+ }
+
+ UpdateProcessingActivityTIARequest struct {
+ ID gid.GID
+ DataSubjects **string
+ LegalMechanism **string
+ Transfer **string
+ LocalLawRisk **string
+ SupplementaryMeasures **string
+ }
+)
+
+func (req *CreateProcessingActivityTIARequest) Validate() error {
+ v := validator.New()
+
+ v.Check(req.ProcessingActivityID, "processing_activity_id", validator.Required(), validator.GID(coredata.ProcessingActivityEntityType))
+ v.Check(req.DataSubjects, "data_subjects", validator.SafeText(ContentMaxLength))
+ v.Check(req.LegalMechanism, "legal_mechanism", validator.SafeText(ContentMaxLength))
+ v.Check(req.Transfer, "transfer", validator.SafeText(ContentMaxLength))
+ v.Check(req.LocalLawRisk, "local_law_risk", validator.SafeText(ContentMaxLength))
+ v.Check(req.SupplementaryMeasures, "supplementary_measures", validator.SafeText(ContentMaxLength))
+
+ return v.Error()
+}
+
+func (req *UpdateProcessingActivityTIARequest) Validate() error {
+ v := validator.New()
+
+ v.Check(req.ID, "id", validator.Required(), validator.GID(coredata.ProcessingActivityTIAEntityType))
+ v.Check(req.DataSubjects, "data_subjects", validator.SafeText(ContentMaxLength))
+ v.Check(req.LegalMechanism, "legal_mechanism", validator.SafeText(ContentMaxLength))
+ v.Check(req.Transfer, "transfer", validator.SafeText(ContentMaxLength))
+ v.Check(req.LocalLawRisk, "local_law_risk", validator.SafeText(ContentMaxLength))
+ v.Check(req.SupplementaryMeasures, "supplementary_measures", validator.SafeText(ContentMaxLength))
+
+ return v.Error()
+}
+
+func (s ProcessingActivityTIAService) Get(
+ ctx context.Context,
+ tiaID gid.GID,
+) (*coredata.ProcessingActivityTIA, error) {
+ tia := &coredata.ProcessingActivityTIA{}
+
+ err := s.svc.pg.WithConn(
+ ctx,
+ func(conn pg.Conn) error {
+ if err := tia.LoadByID(ctx, conn, s.svc.scope, tiaID); err != nil {
+ return fmt.Errorf("cannot load processing activity tia: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
+ return tia, nil
+}
+
+func (s ProcessingActivityTIAService) GetByProcessingActivityID(
+ ctx context.Context,
+ processingActivityID gid.GID,
+) (*coredata.ProcessingActivityTIA, error) {
+ tia := &coredata.ProcessingActivityTIA{}
+
+ err := s.svc.pg.WithConn(
+ ctx,
+ func(conn pg.Conn) error {
+ if err := tia.LoadByProcessingActivityID(ctx, conn, s.svc.scope, processingActivityID); err != nil {
+ return fmt.Errorf("cannot load processing activity tia: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
+ return tia, nil
+}
+
+func (s ProcessingActivityTIAService) ListForOrganizationID(
+ ctx context.Context,
+ organizationID gid.GID,
+ cursor *page.Cursor[coredata.ProcessingActivityTIAOrderField],
+) (*page.Page[*coredata.ProcessingActivityTIA, coredata.ProcessingActivityTIAOrderField], error) {
+ var tias coredata.ProcessingActivityTIAs
+
+ err := s.svc.pg.WithConn(
+ ctx,
+ func(conn pg.Conn) error {
+ err := tias.LoadByOrganizationID(ctx, conn, s.svc.scope, organizationID, cursor)
+ if err != nil {
+ return fmt.Errorf("cannot load processing activity tias: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
+ return page.NewPage(tias, cursor), nil
+}
+
+func (s ProcessingActivityTIAService) CountForOrganizationID(
+ ctx context.Context,
+ organizationID gid.GID,
+) (int, error) {
+ var count int
+
+ err := s.svc.pg.WithConn(
+ ctx,
+ func(conn pg.Conn) (err error) {
+ tias := coredata.ProcessingActivityTIAs{}
+ count, err = tias.CountByOrganizationID(ctx, conn, s.svc.scope, organizationID)
+ return err
+ },
+ )
+
+ if err != nil {
+ return 0, err
+ }
+
+ return count, nil
+}
+
+func (s *ProcessingActivityTIAService) Create(
+ ctx context.Context,
+ req *CreateProcessingActivityTIARequest,
+) (*coredata.ProcessingActivityTIA, error) {
+ if err := req.Validate(); err != nil {
+ return nil, err
+ }
+
+ now := time.Now()
+
+ tia := &coredata.ProcessingActivityTIA{
+ ID: gid.New(s.svc.scope.GetTenantID(), coredata.ProcessingActivityTIAEntityType),
+ ProcessingActivityID: req.ProcessingActivityID,
+ DataSubjects: req.DataSubjects,
+ LegalMechanism: req.LegalMechanism,
+ Transfer: req.Transfer,
+ LocalLawRisk: req.LocalLawRisk,
+ SupplementaryMeasures: req.SupplementaryMeasures,
+ CreatedAt: now,
+ UpdatedAt: now,
+ }
+
+ err := s.svc.pg.WithTx(
+ ctx,
+ func(conn pg.Conn) error {
+ processingActivity := &coredata.ProcessingActivity{}
+ if err := processingActivity.LoadByID(ctx, conn, s.svc.scope, req.ProcessingActivityID); err != nil {
+ return fmt.Errorf("cannot load processing activity: %w", err)
+ }
+
+ tia.OrganizationID = processingActivity.OrganizationID
+
+ if err := tia.Insert(ctx, conn, s.svc.scope); err != nil {
+ return fmt.Errorf("cannot insert processing activity tia: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
+ return tia, nil
+}
+
+func (s *ProcessingActivityTIAService) Update(
+ ctx context.Context,
+ req *UpdateProcessingActivityTIARequest,
+) (*coredata.ProcessingActivityTIA, error) {
+ if err := req.Validate(); err != nil {
+ return nil, err
+ }
+
+ tia := &coredata.ProcessingActivityTIA{}
+
+ err := s.svc.pg.WithTx(
+ ctx,
+ func(conn pg.Conn) error {
+ if err := tia.LoadByID(ctx, conn, s.svc.scope, req.ID); err != nil {
+ return fmt.Errorf("cannot load processing activity tia: %w", err)
+ }
+
+ if req.DataSubjects != nil {
+ tia.DataSubjects = *req.DataSubjects
+ }
+
+ if req.LegalMechanism != nil {
+ tia.LegalMechanism = *req.LegalMechanism
+ }
+
+ if req.Transfer != nil {
+ tia.Transfer = *req.Transfer
+ }
+
+ if req.LocalLawRisk != nil {
+ tia.LocalLawRisk = *req.LocalLawRisk
+ }
+
+ if req.SupplementaryMeasures != nil {
+ tia.SupplementaryMeasures = *req.SupplementaryMeasures
+ }
+
+ tia.UpdatedAt = time.Now()
+
+ if err := tia.Update(ctx, conn, s.svc.scope); err != nil {
+ return fmt.Errorf("cannot update processing activity tia: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
+ return tia, nil
+}
+
+func (s *ProcessingActivityTIAService) Delete(
+ ctx context.Context,
+ tiaID gid.GID,
+) error {
+ err := s.svc.pg.WithTx(
+ ctx,
+ func(conn pg.Conn) error {
+ tia := &coredata.ProcessingActivityTIA{}
+ if err := tia.LoadByID(ctx, conn, s.svc.scope, tiaID); err != nil {
+ return fmt.Errorf("cannot load processing activity tia: %w", err)
+ }
+
+ if err := tia.Delete(ctx, conn, s.svc.scope); err != nil {
+ return fmt.Errorf("cannot delete processing activity tia: %w", err)
+ }
+
+ return nil
+ },
+ )
+
+ return err
+}
diff --git a/pkg/probo/service.go b/pkg/probo/service.go
index 5b9dce06f..b0279b316 100644
--- a/pkg/probo/service.go
+++ b/pkg/probo/service.go
@@ -31,9 +31,9 @@ import (
"go.probo.inc/probo/pkg/crypto/cipher"
"go.probo.inc/probo/pkg/filemanager"
"go.probo.inc/probo/pkg/filevalidation"
- "go.probo.inc/probo/pkg/mail"
"go.probo.inc/probo/pkg/gid"
"go.probo.inc/probo/pkg/html2pdf"
+ "go.probo.inc/probo/pkg/mail"
"go.probo.inc/probo/pkg/slack"
)
@@ -114,6 +114,8 @@ type (
Snapshots *SnapshotService
ContinualImprovements *ContinualImprovementService
ProcessingActivities *ProcessingActivityService
+ ProcessingActivityDPIAs *ProcessingActivityDPIAService
+ ProcessingActivityTIAs *ProcessingActivityTIAService
Files *FileService
CustomDomains *CustomDomainService
SlackMessages *slack.SlackMessageService
@@ -249,6 +251,8 @@ func (s *Service) WithTenant(tenantID gid.TenantID) *TenantService {
tenantService.Snapshots = &SnapshotService{svc: tenantService}
tenantService.ContinualImprovements = &ContinualImprovementService{svc: tenantService}
tenantService.ProcessingActivities = &ProcessingActivityService{svc: tenantService}
+ tenantService.ProcessingActivityDPIAs = &ProcessingActivityDPIAService{svc: tenantService}
+ tenantService.ProcessingActivityTIAs = &ProcessingActivityTIAService{svc: tenantService}
tenantService.Files = &FileService{svc: tenantService}
tenantService.CustomDomains = &CustomDomainService{
svc: tenantService,
diff --git a/pkg/server/api/console/v1/schema.graphql b/pkg/server/api/console/v1/schema.graphql
index b27fb53bb..cdf7bc22f 100644
--- a/pkg/server/api/console/v1/schema.graphql
+++ b/pkg/server/api/console/v1/schema.graphql
@@ -366,6 +366,38 @@ enum ProcessingActivityTransferImpactAssessment
)
}
+enum ProcessingActivityDPIAResidualRisk
+ @goModel(
+ model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRisk"
+ ) {
+ LOW
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRiskLow"
+ )
+ MEDIUM
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRiskMedium"
+ )
+ HIGH
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRiskHigh"
+ )
+}
+
+enum ProcessingActivityRole
+ @goModel(
+ model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityRole"
+ ) {
+ CONTROLLER
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityRoleController"
+ )
+ PROCESSOR
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityRoleProcessor"
+ )
+}
+
# Order Field Enums
enum UserOrderField
@goModel(model: "go.probo.inc/probo/pkg/coredata.UserOrderField") {
@@ -1047,6 +1079,26 @@ enum ProcessingActivityOrderField
)
}
+enum ProcessingActivityDPIAOrderField
+ @goModel(
+ model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAOrderField"
+ ) {
+ CREATED_AT
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAOrderFieldCreatedAt"
+ )
+}
+
+enum ProcessingActivityTIAOrderField
+ @goModel(
+ model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityTIAOrderField"
+ ) {
+ CREATED_AT
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityTIAOrderFieldCreatedAt"
+ )
+}
+
enum TrustCenterAccessOrderField
@goModel(
model: "go.probo.inc/probo/pkg/coredata.TrustCenterAccessOrderField"
@@ -1300,6 +1352,22 @@ input ProcessingActivityOrder
field: ProcessingActivityOrderField!
}
+input ProcessingActivityDPIAOrder
+ @goModel(
+ model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityDPIAOrderBy"
+ ) {
+ direction: OrderDirection!
+ field: ProcessingActivityDPIAOrderField!
+}
+
+input ProcessingActivityTIAOrder
+ @goModel(
+ model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityTIAOrderBy"
+ ) {
+ direction: OrderDirection!
+ field: ProcessingActivityTIAOrderField!
+}
+
input TrustCenterAccessOrder
@goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.TrustCenterAccessOrderBy"
@@ -1660,6 +1728,22 @@ type Organization implements Node {
filter: ProcessingActivityFilter = { snapshotId: null }
): ProcessingActivityConnection! @goField(forceResolver: true)
+ dataProtectionImpactAssessments(
+ first: Int
+ after: CursorKey
+ last: Int
+ before: CursorKey
+ orderBy: ProcessingActivityDPIAOrder
+ ): ProcessingActivityDPIAConnection! @goField(forceResolver: true)
+
+ transferImpactAssessments(
+ first: Int
+ after: CursorKey
+ last: Int
+ before: CursorKey
+ orderBy: ProcessingActivityTIAOrder
+ ): ProcessingActivityTIAConnection! @goField(forceResolver: true)
+
snapshots(
first: Int
after: CursorKey
@@ -2252,6 +2336,10 @@ type ProcessingActivity implements Node {
securityMeasures: String
dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment!
transferImpactAssessment: ProcessingActivityTransferImpactAssessment!
+ lastReviewDate: Datetime
+ nextReviewDate: Datetime
+ role: ProcessingActivityRole!
+ dataProtectionOfficer: People @goField(forceResolver: true)
vendors(
first: Int
after: CursorKey
@@ -2259,6 +2347,34 @@ type ProcessingActivity implements Node {
before: CursorKey
orderBy: VendorOrder
): VendorConnection! @goField(forceResolver: true)
+ dpia: ProcessingActivityDPIA @goField(forceResolver: true)
+ tia: ProcessingActivityTIA @goField(forceResolver: true)
+ createdAt: Datetime!
+ updatedAt: Datetime!
+}
+
+type ProcessingActivityDPIA implements Node {
+ id: ID!
+ processingActivity: ProcessingActivity! @goField(forceResolver: true)
+ organization: Organization! @goField(forceResolver: true)
+ description: String
+ necessityAndProportionality: String
+ potentialRisk: String
+ mitigations: String
+ residualRisk: ProcessingActivityDPIAResidualRisk
+ createdAt: Datetime!
+ updatedAt: Datetime!
+}
+
+type ProcessingActivityTIA implements Node {
+ id: ID!
+ processingActivity: ProcessingActivity! @goField(forceResolver: true)
+ organization: Organization! @goField(forceResolver: true)
+ dataSubjects: String
+ legalMechanism: String
+ transfer: String
+ localLawRisk: String
+ supplementaryMeasures: String
createdAt: Datetime!
updatedAt: Datetime!
}
@@ -2767,6 +2883,34 @@ type ProcessingActivityEdge {
node: ProcessingActivity!
}
+type ProcessingActivityDPIAConnection
+ @goModel(
+ model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityDPIAConnection"
+ ) {
+ totalCount: Int! @goField(forceResolver: true)
+ edges: [ProcessingActivityDPIAEdge!]!
+ pageInfo: PageInfo!
+}
+
+type ProcessingActivityDPIAEdge {
+ cursor: CursorKey!
+ node: ProcessingActivityDPIA!
+}
+
+type ProcessingActivityTIAConnection
+ @goModel(
+ model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityTIAConnection"
+ ) {
+ totalCount: Int! @goField(forceResolver: true)
+ edges: [ProcessingActivityTIAEdge!]!
+ pageInfo: PageInfo!
+}
+
+type ProcessingActivityTIAEdge {
+ cursor: CursorKey!
+ node: ProcessingActivityTIA!
+}
+
type SnapshotConnection
@goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.SnapshotConnection"
@@ -3104,6 +3248,26 @@ type Mutation {
deleteProcessingActivity(
input: DeleteProcessingActivityInput!
): DeleteProcessingActivityPayload!
+ # Processing Activity DPIA mutations
+ createProcessingActivityDPIA(
+ input: CreateProcessingActivityDPIAInput!
+ ): CreateProcessingActivityDPIAPayload!
+ updateProcessingActivityDPIA(
+ input: UpdateProcessingActivityDPIAInput!
+ ): UpdateProcessingActivityDPIAPayload!
+ deleteProcessingActivityDPIA(
+ input: DeleteProcessingActivityDPIAInput!
+ ): DeleteProcessingActivityDPIAPayload!
+ # Processing Activity TIA mutations
+ createProcessingActivityTIA(
+ input: CreateProcessingActivityTIAInput!
+ ): CreateProcessingActivityTIAPayload!
+ updateProcessingActivityTIA(
+ input: UpdateProcessingActivityTIAInput!
+ ): UpdateProcessingActivityTIAPayload!
+ deleteProcessingActivityTIA(
+ input: DeleteProcessingActivityTIAInput!
+ ): DeleteProcessingActivityTIAPayload!
# Snapshot mutations
createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload!
deleteSnapshot(input: DeleteSnapshotInput!): DeleteSnapshotPayload!
@@ -3874,6 +4038,10 @@ input CreateProcessingActivityInput {
securityMeasures: String
dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment!
transferImpactAssessment: ProcessingActivityTransferImpactAssessment!
+ lastReviewDate: Datetime
+ nextReviewDate: Datetime
+ role: ProcessingActivityRole!
+ dataProtectionOfficerId: ID
vendorIds: [ID!]
}
@@ -3895,6 +4063,10 @@ input UpdateProcessingActivityInput {
securityMeasures: String @goField(omittable: true)
dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment
transferImpactAssessment: ProcessingActivityTransferImpactAssessment
+ lastReviewDate: Datetime @goField(omittable: true)
+ nextReviewDate: Datetime @goField(omittable: true)
+ role: ProcessingActivityRole
+ dataProtectionOfficerId: ID @goField(omittable: true)
vendorIds: [ID!]
}
@@ -3902,6 +4074,50 @@ input DeleteProcessingActivityInput {
processingActivityId: ID!
}
+input CreateProcessingActivityDPIAInput {
+ processingActivityId: ID!
+ description: String
+ necessityAndProportionality: String
+ potentialRisk: String
+ mitigations: String
+ residualRisk: ProcessingActivityDPIAResidualRisk
+}
+
+input UpdateProcessingActivityDPIAInput {
+ id: ID!
+ description: String @goField(omittable: true)
+ necessityAndProportionality: String @goField(omittable: true)
+ potentialRisk: String @goField(omittable: true)
+ mitigations: String @goField(omittable: true)
+ residualRisk: ProcessingActivityDPIAResidualRisk
+}
+
+input DeleteProcessingActivityDPIAInput {
+ processingActivityDpiaId: ID!
+}
+
+input CreateProcessingActivityTIAInput {
+ processingActivityId: ID!
+ dataSubjects: String
+ legalMechanism: String
+ transfer: String
+ localLawRisk: String
+ supplementaryMeasures: String
+}
+
+input UpdateProcessingActivityTIAInput {
+ id: ID!
+ dataSubjects: String @goField(omittable: true)
+ legalMechanism: String @goField(omittable: true)
+ transfer: String @goField(omittable: true)
+ localLawRisk: String @goField(omittable: true)
+ supplementaryMeasures: String @goField(omittable: true)
+}
+
+input DeleteProcessingActivityTIAInput {
+ processingActivityTiaId: ID!
+}
+
input CreateSnapshotInput {
organizationId: ID!
name: String!
@@ -4766,6 +4982,30 @@ type DeleteProcessingActivityPayload {
deletedProcessingActivityId: ID!
}
+type CreateProcessingActivityDPIAPayload {
+ processingActivityDpia: ProcessingActivityDPIA!
+}
+
+type UpdateProcessingActivityDPIAPayload {
+ processingActivityDpia: ProcessingActivityDPIA!
+}
+
+type DeleteProcessingActivityDPIAPayload {
+ deletedProcessingActivityDpiaId: ID!
+}
+
+type CreateProcessingActivityTIAPayload {
+ processingActivityTia: ProcessingActivityTIA!
+}
+
+type UpdateProcessingActivityTIAPayload {
+ processingActivityTia: ProcessingActivityTIA!
+}
+
+type DeleteProcessingActivityTIAPayload {
+ deletedProcessingActivityTiaId: ID!
+}
+
type CreateSnapshotPayload {
snapshotEdge: SnapshotEdge!
}
diff --git a/pkg/server/api/console/v1/schema/schema.go b/pkg/server/api/console/v1/schema/schema.go
index cf45041a2..7f0c7f469 100644
--- a/pkg/server/api/console/v1/schema/schema.go
+++ b/pkg/server/api/console/v1/schema/schema.go
@@ -83,6 +83,10 @@ type ResolverRoot interface {
PeopleConnection() PeopleConnectionResolver
ProcessingActivity() ProcessingActivityResolver
ProcessingActivityConnection() ProcessingActivityConnectionResolver
+ ProcessingActivityDPIA() ProcessingActivityDPIAResolver
+ ProcessingActivityDPIAConnection() ProcessingActivityDPIAConnectionResolver
+ ProcessingActivityTIA() ProcessingActivityTIAResolver
+ ProcessingActivityTIAConnection() ProcessingActivityTIAConnectionResolver
Query() QueryResolver
Report() ReportResolver
Risk() RiskResolver
@@ -345,10 +349,18 @@ type ComplexityRoot struct {
PeopleEdge func(childComplexity int) int
}
+ CreateProcessingActivityDPIAPayload struct {
+ ProcessingActivityDpia func(childComplexity int) int
+ }
+
CreateProcessingActivityPayload struct {
ProcessingActivityEdge func(childComplexity int) int
}
+ CreateProcessingActivityTIAPayload struct {
+ ProcessingActivityTia func(childComplexity int) int
+ }
+
CreateRiskDocumentMappingPayload struct {
DocumentEdge func(childComplexity int) int
RiskEdge func(childComplexity int) int
@@ -546,10 +558,18 @@ type ComplexityRoot struct {
DeletedPeopleID func(childComplexity int) int
}
+ DeleteProcessingActivityDPIAPayload struct {
+ DeletedProcessingActivityDpiaID func(childComplexity int) int
+ }
+
DeleteProcessingActivityPayload struct {
DeletedProcessingActivityID func(childComplexity int) int
}
+ DeleteProcessingActivityTIAPayload struct {
+ DeletedProcessingActivityTiaID func(childComplexity int) int
+ }
+
DeleteRiskDocumentMappingPayload struct {
DeletedDocumentID func(childComplexity int) int
DeletedRiskID func(childComplexity int) int
@@ -930,6 +950,8 @@ type ComplexityRoot struct {
CreateOrganization func(childComplexity int, input types.CreateOrganizationInput) int
CreatePeople func(childComplexity int, input types.CreatePeopleInput) int
CreateProcessingActivity func(childComplexity int, input types.CreateProcessingActivityInput) int
+ CreateProcessingActivityDpia func(childComplexity int, input types.CreateProcessingActivityDPIAInput) int
+ CreateProcessingActivityTia func(childComplexity int, input types.CreateProcessingActivityTIAInput) int
CreateRisk func(childComplexity int, input types.CreateRiskInput) int
CreateRiskDocumentMapping func(childComplexity int, input types.CreateRiskDocumentMappingInput) int
CreateRiskMeasureMapping func(childComplexity int, input types.CreateRiskMeasureMappingInput) int
@@ -968,6 +990,8 @@ type ComplexityRoot struct {
DeleteOrganizationHorizontalLogo func(childComplexity int, input types.DeleteOrganizationHorizontalLogoInput) int
DeletePeople func(childComplexity int, input types.DeletePeopleInput) int
DeleteProcessingActivity func(childComplexity int, input types.DeleteProcessingActivityInput) int
+ DeleteProcessingActivityDpia func(childComplexity int, input types.DeleteProcessingActivityDPIAInput) int
+ DeleteProcessingActivityTia func(childComplexity int, input types.DeleteProcessingActivityTIAInput) int
DeleteRisk func(childComplexity int, input types.DeleteRiskInput) int
DeleteRiskDocumentMapping func(childComplexity int, input types.DeleteRiskDocumentMappingInput) int
DeleteRiskMeasureMapping func(childComplexity int, input types.DeleteRiskMeasureMappingInput) int
@@ -1020,6 +1044,8 @@ type ComplexityRoot struct {
UpdateOrganizationContext func(childComplexity int, input types.UpdateOrganizationContextInput) int
UpdatePeople func(childComplexity int, input types.UpdatePeopleInput) int
UpdateProcessingActivity func(childComplexity int, input types.UpdateProcessingActivityInput) int
+ UpdateProcessingActivityDpia func(childComplexity int, input types.UpdateProcessingActivityDPIAInput) int
+ UpdateProcessingActivityTia func(childComplexity int, input types.UpdateProcessingActivityTIAInput) int
UpdateRisk func(childComplexity int, input types.UpdateRiskInput) int
UpdateSAMLConfiguration func(childComplexity int, input types.UpdateSAMLConfigurationInput) int
UpdateTask func(childComplexity int, input types.UpdateTaskInput) int
@@ -1100,41 +1126,43 @@ type ComplexityRoot struct {
}
Organization struct {
- Assets func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.AssetOrderBy, filter *types.AssetFilter) int
- Audits func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.AuditOrderBy) int
- Context func(childComplexity int) int
- ContinualImprovements func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ContinualImprovementOrderBy, filter *types.ContinualImprovementFilter) int
- Controls func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ControlOrderBy, filter *types.ControlFilter) int
- CreatedAt func(childComplexity int) int
- CustomDomain func(childComplexity int) int
- Data func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.DatumOrderBy, filter *types.DatumFilter) int
- Description func(childComplexity int) int
- Documents func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.DocumentOrderBy, filter *types.DocumentFilter) int
- Email func(childComplexity int) int
- Frameworks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.FrameworkOrderBy) int
- HeadquarterAddress func(childComplexity int) int
- HorizontalLogoURL func(childComplexity int) int
- ID func(childComplexity int) int
- Invitations func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.InvitationOrder, filter *types.InvitationFilter) int
- LogoURL func(childComplexity int) int
- Measures func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.MeasureOrderBy, filter *types.MeasureFilter) int
- Meetings func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.MeetingOrderBy) int
- Memberships func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.MembershipOrderBy) int
- Name func(childComplexity int) int
- Nonconformities func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.NonconformityOrderBy, filter *types.NonconformityFilter) int
- Obligations func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ObligationOrderBy, filter *types.ObligationFilter) int
- Peoples func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.PeopleOrderBy, filter *types.PeopleFilter) int
- ProcessingActivities func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProcessingActivityOrderBy, filter *types.ProcessingActivityFilter) int
- Risks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.RiskOrderBy, filter *types.RiskFilter) int
- SamlConfigurations func(childComplexity int) int
- SlackConnections func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int
- Snapshots func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.SnapshotOrderBy) int
- Tasks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.TaskOrderBy) int
- TrustCenter func(childComplexity int) int
- TrustCenterFiles func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterFileOrderField]) int
- UpdatedAt func(childComplexity int) int
- Vendors func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.VendorOrderBy, filter *types.VendorFilter) int
- WebsiteURL func(childComplexity int) int
+ Assets func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.AssetOrderBy, filter *types.AssetFilter) int
+ Audits func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.AuditOrderBy) int
+ Context func(childComplexity int) int
+ ContinualImprovements func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ContinualImprovementOrderBy, filter *types.ContinualImprovementFilter) int
+ Controls func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ControlOrderBy, filter *types.ControlFilter) int
+ CreatedAt func(childComplexity int) int
+ CustomDomain func(childComplexity int) int
+ Data func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.DatumOrderBy, filter *types.DatumFilter) int
+ DataProtectionImpactAssessments func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProcessingActivityDPIAOrderBy) int
+ Description func(childComplexity int) int
+ Documents func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.DocumentOrderBy, filter *types.DocumentFilter) int
+ Email func(childComplexity int) int
+ Frameworks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.FrameworkOrderBy) int
+ HeadquarterAddress func(childComplexity int) int
+ HorizontalLogoURL func(childComplexity int) int
+ ID func(childComplexity int) int
+ Invitations func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.InvitationOrder, filter *types.InvitationFilter) int
+ LogoURL func(childComplexity int) int
+ Measures func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.MeasureOrderBy, filter *types.MeasureFilter) int
+ Meetings func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.MeetingOrderBy) int
+ Memberships func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.MembershipOrderBy) int
+ Name func(childComplexity int) int
+ Nonconformities func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.NonconformityOrderBy, filter *types.NonconformityFilter) int
+ Obligations func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ObligationOrderBy, filter *types.ObligationFilter) int
+ Peoples func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.PeopleOrderBy, filter *types.PeopleFilter) int
+ ProcessingActivities func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProcessingActivityOrderBy, filter *types.ProcessingActivityFilter) int
+ Risks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.RiskOrderBy, filter *types.RiskFilter) int
+ SamlConfigurations func(childComplexity int) int
+ SlackConnections func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int
+ Snapshots func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.SnapshotOrderBy) int
+ Tasks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.TaskOrderBy) int
+ TransferImpactAssessments func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProcessingActivityTIAOrderBy) int
+ TrustCenter func(childComplexity int) int
+ TrustCenterFiles func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterFileOrderField]) int
+ UpdatedAt func(childComplexity int) int
+ Vendors func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.VendorOrderBy, filter *types.VendorFilter) int
+ WebsiteURL func(childComplexity int) int
}
OrganizationConnection struct {
@@ -1187,21 +1215,27 @@ type ComplexityRoot struct {
ConsentEvidenceLink func(childComplexity int) int
CreatedAt func(childComplexity int) int
DataProtectionImpactAssessment func(childComplexity int) int
+ DataProtectionOfficer func(childComplexity int) int
DataSubjectCategory func(childComplexity int) int
+ Dpia func(childComplexity int) int
ID func(childComplexity int) int
InternationalTransfers func(childComplexity int) int
+ LastReviewDate func(childComplexity int) int
LawfulBasis func(childComplexity int) int
Location func(childComplexity int) int
Name func(childComplexity int) int
+ NextReviewDate func(childComplexity int) int
Organization func(childComplexity int) int
PersonalDataCategory func(childComplexity int) int
Purpose func(childComplexity int) int
Recipients func(childComplexity int) int
RetentionPeriod func(childComplexity int) int
+ Role func(childComplexity int) int
SecurityMeasures func(childComplexity int) int
SnapshotID func(childComplexity int) int
SourceID func(childComplexity int) int
SpecialOrCriminalData func(childComplexity int) int
+ Tia func(childComplexity int) int
TransferImpactAssessment func(childComplexity int) int
TransferSafeguards func(childComplexity int) int
UpdatedAt func(childComplexity int) int
@@ -1214,11 +1248,59 @@ type ComplexityRoot struct {
TotalCount func(childComplexity int) int
}
+ ProcessingActivityDPIA struct {
+ CreatedAt func(childComplexity int) int
+ Description func(childComplexity int) int
+ ID func(childComplexity int) int
+ Mitigations func(childComplexity int) int
+ NecessityAndProportionality func(childComplexity int) int
+ Organization func(childComplexity int) int
+ PotentialRisk func(childComplexity int) int
+ ProcessingActivity func(childComplexity int) int
+ ResidualRisk func(childComplexity int) int
+ UpdatedAt func(childComplexity int) int
+ }
+
+ ProcessingActivityDPIAConnection struct {
+ Edges func(childComplexity int) int
+ PageInfo func(childComplexity int) int
+ TotalCount func(childComplexity int) int
+ }
+
+ ProcessingActivityDPIAEdge struct {
+ Cursor func(childComplexity int) int
+ Node func(childComplexity int) int
+ }
+
ProcessingActivityEdge struct {
Cursor func(childComplexity int) int
Node func(childComplexity int) int
}
+ ProcessingActivityTIA struct {
+ CreatedAt func(childComplexity int) int
+ DataSubjects func(childComplexity int) int
+ ID func(childComplexity int) int
+ LegalMechanism func(childComplexity int) int
+ LocalLawRisk func(childComplexity int) int
+ Organization func(childComplexity int) int
+ ProcessingActivity func(childComplexity int) int
+ SupplementaryMeasures func(childComplexity int) int
+ Transfer func(childComplexity int) int
+ UpdatedAt func(childComplexity int) int
+ }
+
+ ProcessingActivityTIAConnection struct {
+ Edges func(childComplexity int) int
+ PageInfo func(childComplexity int) int
+ TotalCount func(childComplexity int) int
+ }
+
+ ProcessingActivityTIAEdge struct {
+ Cursor func(childComplexity int) int
+ Node func(childComplexity int) int
+ }
+
PublishDocumentVersionPayload struct {
Document func(childComplexity int) int
DocumentVersion func(childComplexity int) int
@@ -1591,10 +1673,18 @@ type ComplexityRoot struct {
People func(childComplexity int) int
}
+ UpdateProcessingActivityDPIAPayload struct {
+ ProcessingActivityDpia func(childComplexity int) int
+ }
+
UpdateProcessingActivityPayload struct {
ProcessingActivity func(childComplexity int) int
}
+ UpdateProcessingActivityTIAPayload struct {
+ ProcessingActivityTia func(childComplexity int) int
+ }
+
UpdateRiskPayload struct {
Risk func(childComplexity int) int
}
@@ -2097,6 +2187,12 @@ type MutationResolver interface {
CreateProcessingActivity(ctx context.Context, input types.CreateProcessingActivityInput) (*types.CreateProcessingActivityPayload, error)
UpdateProcessingActivity(ctx context.Context, input types.UpdateProcessingActivityInput) (*types.UpdateProcessingActivityPayload, error)
DeleteProcessingActivity(ctx context.Context, input types.DeleteProcessingActivityInput) (*types.DeleteProcessingActivityPayload, error)
+ CreateProcessingActivityDpia(ctx context.Context, input types.CreateProcessingActivityDPIAInput) (*types.CreateProcessingActivityDPIAPayload, error)
+ UpdateProcessingActivityDpia(ctx context.Context, input types.UpdateProcessingActivityDPIAInput) (*types.UpdateProcessingActivityDPIAPayload, error)
+ DeleteProcessingActivityDpia(ctx context.Context, input types.DeleteProcessingActivityDPIAInput) (*types.DeleteProcessingActivityDPIAPayload, error)
+ CreateProcessingActivityTia(ctx context.Context, input types.CreateProcessingActivityTIAInput) (*types.CreateProcessingActivityTIAPayload, error)
+ UpdateProcessingActivityTia(ctx context.Context, input types.UpdateProcessingActivityTIAInput) (*types.UpdateProcessingActivityTIAPayload, error)
+ DeleteProcessingActivityTia(ctx context.Context, input types.DeleteProcessingActivityTIAInput) (*types.DeleteProcessingActivityTIAPayload, error)
CreateSnapshot(ctx context.Context, input types.CreateSnapshotInput) (*types.CreateSnapshotPayload, error)
DeleteSnapshot(ctx context.Context, input types.DeleteSnapshotInput) (*types.DeleteSnapshotPayload, error)
CreateCustomDomain(ctx context.Context, input types.CreateCustomDomainInput) (*types.CreateCustomDomainPayload, error)
@@ -2151,6 +2247,8 @@ type OrganizationResolver interface {
Obligations(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ObligationOrderBy, filter *types.ObligationFilter) (*types.ObligationConnection, error)
ContinualImprovements(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ContinualImprovementOrderBy, filter *types.ContinualImprovementFilter) (*types.ContinualImprovementConnection, error)
ProcessingActivities(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProcessingActivityOrderBy, filter *types.ProcessingActivityFilter) (*types.ProcessingActivityConnection, error)
+ DataProtectionImpactAssessments(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProcessingActivityDPIAOrderBy) (*types.ProcessingActivityDPIAConnection, error)
+ TransferImpactAssessments(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProcessingActivityTIAOrderBy) (*types.ProcessingActivityTIAConnection, error)
Snapshots(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.SnapshotOrderBy) (*types.SnapshotConnection, error)
TrustCenterFiles(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterFileOrderField]) (*types.TrustCenterFileConnection, error)
TrustCenter(ctx context.Context, obj *types.Organization) (*types.TrustCenter, error)
@@ -2163,11 +2261,28 @@ type PeopleConnectionResolver interface {
type ProcessingActivityResolver interface {
Organization(ctx context.Context, obj *types.ProcessingActivity) (*types.Organization, error)
+ DataProtectionOfficer(ctx context.Context, obj *types.ProcessingActivity) (*types.People, error)
Vendors(ctx context.Context, obj *types.ProcessingActivity, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.VendorOrderBy) (*types.VendorConnection, error)
+ Dpia(ctx context.Context, obj *types.ProcessingActivity) (*types.ProcessingActivityDpia, error)
+ Tia(ctx context.Context, obj *types.ProcessingActivity) (*types.ProcessingActivityTia, error)
}
type ProcessingActivityConnectionResolver interface {
TotalCount(ctx context.Context, obj *types.ProcessingActivityConnection) (int, error)
}
+type ProcessingActivityDPIAResolver interface {
+ ProcessingActivity(ctx context.Context, obj *types.ProcessingActivityDpia) (*types.ProcessingActivity, error)
+ Organization(ctx context.Context, obj *types.ProcessingActivityDpia) (*types.Organization, error)
+}
+type ProcessingActivityDPIAConnectionResolver interface {
+ TotalCount(ctx context.Context, obj *types.ProcessingActivityDPIAConnection) (int, error)
+}
+type ProcessingActivityTIAResolver interface {
+ ProcessingActivity(ctx context.Context, obj *types.ProcessingActivityTia) (*types.ProcessingActivity, error)
+ Organization(ctx context.Context, obj *types.ProcessingActivityTia) (*types.Organization, error)
+}
+type ProcessingActivityTIAConnectionResolver interface {
+ TotalCount(ctx context.Context, obj *types.ProcessingActivityTIAConnection) (int, error)
+}
type QueryResolver interface {
Node(ctx context.Context, id gid.GID) (types.Node, error)
Viewer(ctx context.Context) (*types.Viewer, error)
@@ -3017,6 +3132,13 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
return e.complexity.CreatePeoplePayload.PeopleEdge(childComplexity), true
+ case "CreateProcessingActivityDPIAPayload.processingActivityDpia":
+ if e.complexity.CreateProcessingActivityDPIAPayload.ProcessingActivityDpia == nil {
+ break
+ }
+
+ return e.complexity.CreateProcessingActivityDPIAPayload.ProcessingActivityDpia(childComplexity), true
+
case "CreateProcessingActivityPayload.processingActivityEdge":
if e.complexity.CreateProcessingActivityPayload.ProcessingActivityEdge == nil {
break
@@ -3024,6 +3146,13 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
return e.complexity.CreateProcessingActivityPayload.ProcessingActivityEdge(childComplexity), true
+ case "CreateProcessingActivityTIAPayload.processingActivityTia":
+ if e.complexity.CreateProcessingActivityTIAPayload.ProcessingActivityTia == nil {
+ break
+ }
+
+ return e.complexity.CreateProcessingActivityTIAPayload.ProcessingActivityTia(childComplexity), true
+
case "CreateRiskDocumentMappingPayload.documentEdge":
if e.complexity.CreateRiskDocumentMappingPayload.DocumentEdge == nil {
break
@@ -3497,6 +3626,13 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
return e.complexity.DeletePeoplePayload.DeletedPeopleID(childComplexity), true
+ case "DeleteProcessingActivityDPIAPayload.deletedProcessingActivityDpiaId":
+ if e.complexity.DeleteProcessingActivityDPIAPayload.DeletedProcessingActivityDpiaID == nil {
+ break
+ }
+
+ return e.complexity.DeleteProcessingActivityDPIAPayload.DeletedProcessingActivityDpiaID(childComplexity), true
+
case "DeleteProcessingActivityPayload.deletedProcessingActivityId":
if e.complexity.DeleteProcessingActivityPayload.DeletedProcessingActivityID == nil {
break
@@ -3504,6 +3640,13 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
return e.complexity.DeleteProcessingActivityPayload.DeletedProcessingActivityID(childComplexity), true
+ case "DeleteProcessingActivityTIAPayload.deletedProcessingActivityTiaId":
+ if e.complexity.DeleteProcessingActivityTIAPayload.DeletedProcessingActivityTiaID == nil {
+ break
+ }
+
+ return e.complexity.DeleteProcessingActivityTIAPayload.DeletedProcessingActivityTiaID(childComplexity), true
+
case "DeleteRiskDocumentMappingPayload.deletedDocumentId":
if e.complexity.DeleteRiskDocumentMappingPayload.DeletedDocumentID == nil {
break
@@ -4977,6 +5120,28 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.Mutation.CreateProcessingActivity(childComplexity, args["input"].(types.CreateProcessingActivityInput)), true
+ case "Mutation.createProcessingActivityDPIA":
+ if e.complexity.Mutation.CreateProcessingActivityDpia == nil {
+ break
+ }
+
+ args, err := ec.field_Mutation_createProcessingActivityDPIA_args(ctx, rawArgs)
+ if err != nil {
+ return 0, false
+ }
+
+ return e.complexity.Mutation.CreateProcessingActivityDpia(childComplexity, args["input"].(types.CreateProcessingActivityDPIAInput)), true
+ case "Mutation.createProcessingActivityTIA":
+ if e.complexity.Mutation.CreateProcessingActivityTia == nil {
+ break
+ }
+
+ args, err := ec.field_Mutation_createProcessingActivityTIA_args(ctx, rawArgs)
+ if err != nil {
+ return 0, false
+ }
+
+ return e.complexity.Mutation.CreateProcessingActivityTia(childComplexity, args["input"].(types.CreateProcessingActivityTIAInput)), true
case "Mutation.createRisk":
if e.complexity.Mutation.CreateRisk == nil {
break
@@ -5395,6 +5560,28 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.Mutation.DeleteProcessingActivity(childComplexity, args["input"].(types.DeleteProcessingActivityInput)), true
+ case "Mutation.deleteProcessingActivityDPIA":
+ if e.complexity.Mutation.DeleteProcessingActivityDpia == nil {
+ break
+ }
+
+ args, err := ec.field_Mutation_deleteProcessingActivityDPIA_args(ctx, rawArgs)
+ if err != nil {
+ return 0, false
+ }
+
+ return e.complexity.Mutation.DeleteProcessingActivityDpia(childComplexity, args["input"].(types.DeleteProcessingActivityDPIAInput)), true
+ case "Mutation.deleteProcessingActivityTIA":
+ if e.complexity.Mutation.DeleteProcessingActivityTia == nil {
+ break
+ }
+
+ args, err := ec.field_Mutation_deleteProcessingActivityTIA_args(ctx, rawArgs)
+ if err != nil {
+ return 0, false
+ }
+
+ return e.complexity.Mutation.DeleteProcessingActivityTia(childComplexity, args["input"].(types.DeleteProcessingActivityTIAInput)), true
case "Mutation.deleteRisk":
if e.complexity.Mutation.DeleteRisk == nil {
break
@@ -5967,6 +6154,28 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.Mutation.UpdateProcessingActivity(childComplexity, args["input"].(types.UpdateProcessingActivityInput)), true
+ case "Mutation.updateProcessingActivityDPIA":
+ if e.complexity.Mutation.UpdateProcessingActivityDpia == nil {
+ break
+ }
+
+ args, err := ec.field_Mutation_updateProcessingActivityDPIA_args(ctx, rawArgs)
+ if err != nil {
+ return 0, false
+ }
+
+ return e.complexity.Mutation.UpdateProcessingActivityDpia(childComplexity, args["input"].(types.UpdateProcessingActivityDPIAInput)), true
+ case "Mutation.updateProcessingActivityTIA":
+ if e.complexity.Mutation.UpdateProcessingActivityTia == nil {
+ break
+ }
+
+ args, err := ec.field_Mutation_updateProcessingActivityTIA_args(ctx, rawArgs)
+ if err != nil {
+ return 0, false
+ }
+
+ return e.complexity.Mutation.UpdateProcessingActivityTia(childComplexity, args["input"].(types.UpdateProcessingActivityTIAInput)), true
case "Mutation.updateRisk":
if e.complexity.Mutation.UpdateRisk == nil {
break
@@ -6496,6 +6705,17 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.Organization.Data(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.DatumOrderBy), args["filter"].(*types.DatumFilter)), true
+ case "Organization.dataProtectionImpactAssessments":
+ if e.complexity.Organization.DataProtectionImpactAssessments == nil {
+ break
+ }
+
+ args, err := ec.field_Organization_dataProtectionImpactAssessments_args(ctx, rawArgs)
+ if err != nil {
+ return 0, false
+ }
+
+ return e.complexity.Organization.DataProtectionImpactAssessments(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.ProcessingActivityDPIAOrderBy)), true
case "Organization.description":
if e.complexity.Organization.Description == nil {
break
@@ -6698,6 +6918,17 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.Organization.Tasks(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.TaskOrderBy)), true
+ case "Organization.transferImpactAssessments":
+ if e.complexity.Organization.TransferImpactAssessments == nil {
+ break
+ }
+
+ args, err := ec.field_Organization_transferImpactAssessments_args(ctx, rawArgs)
+ if err != nil {
+ return 0, false
+ }
+
+ return e.complexity.Organization.TransferImpactAssessments(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.ProcessingActivityTIAOrderBy)), true
case "Organization.trustCenter":
if e.complexity.Organization.TrustCenter == nil {
break
@@ -6914,12 +7145,24 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.ProcessingActivity.DataProtectionImpactAssessment(childComplexity), true
+ case "ProcessingActivity.dataProtectionOfficer":
+ if e.complexity.ProcessingActivity.DataProtectionOfficer == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivity.DataProtectionOfficer(childComplexity), true
case "ProcessingActivity.dataSubjectCategory":
if e.complexity.ProcessingActivity.DataSubjectCategory == nil {
break
}
return e.complexity.ProcessingActivity.DataSubjectCategory(childComplexity), true
+ case "ProcessingActivity.dpia":
+ if e.complexity.ProcessingActivity.Dpia == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivity.Dpia(childComplexity), true
case "ProcessingActivity.id":
if e.complexity.ProcessingActivity.ID == nil {
break
@@ -6932,6 +7175,12 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.ProcessingActivity.InternationalTransfers(childComplexity), true
+ case "ProcessingActivity.lastReviewDate":
+ if e.complexity.ProcessingActivity.LastReviewDate == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivity.LastReviewDate(childComplexity), true
case "ProcessingActivity.lawfulBasis":
if e.complexity.ProcessingActivity.LawfulBasis == nil {
break
@@ -6950,6 +7199,12 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.ProcessingActivity.Name(childComplexity), true
+ case "ProcessingActivity.nextReviewDate":
+ if e.complexity.ProcessingActivity.NextReviewDate == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivity.NextReviewDate(childComplexity), true
case "ProcessingActivity.organization":
if e.complexity.ProcessingActivity.Organization == nil {
break
@@ -6980,6 +7235,12 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.ProcessingActivity.RetentionPeriod(childComplexity), true
+ case "ProcessingActivity.role":
+ if e.complexity.ProcessingActivity.Role == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivity.Role(childComplexity), true
case "ProcessingActivity.securityMeasures":
if e.complexity.ProcessingActivity.SecurityMeasures == nil {
break
@@ -7004,6 +7265,12 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.ProcessingActivity.SpecialOrCriminalData(childComplexity), true
+ case "ProcessingActivity.tia":
+ if e.complexity.ProcessingActivity.Tia == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivity.Tia(childComplexity), true
case "ProcessingActivity.transferImpactAssessment":
if e.complexity.ProcessingActivity.TransferImpactAssessment == nil {
break
@@ -7053,6 +7320,99 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
return e.complexity.ProcessingActivityConnection.TotalCount(childComplexity), true
+ case "ProcessingActivityDPIA.createdAt":
+ if e.complexity.ProcessingActivityDPIA.CreatedAt == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIA.CreatedAt(childComplexity), true
+ case "ProcessingActivityDPIA.description":
+ if e.complexity.ProcessingActivityDPIA.Description == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIA.Description(childComplexity), true
+ case "ProcessingActivityDPIA.id":
+ if e.complexity.ProcessingActivityDPIA.ID == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIA.ID(childComplexity), true
+ case "ProcessingActivityDPIA.mitigations":
+ if e.complexity.ProcessingActivityDPIA.Mitigations == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIA.Mitigations(childComplexity), true
+ case "ProcessingActivityDPIA.necessityAndProportionality":
+ if e.complexity.ProcessingActivityDPIA.NecessityAndProportionality == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIA.NecessityAndProportionality(childComplexity), true
+ case "ProcessingActivityDPIA.organization":
+ if e.complexity.ProcessingActivityDPIA.Organization == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIA.Organization(childComplexity), true
+ case "ProcessingActivityDPIA.potentialRisk":
+ if e.complexity.ProcessingActivityDPIA.PotentialRisk == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIA.PotentialRisk(childComplexity), true
+ case "ProcessingActivityDPIA.processingActivity":
+ if e.complexity.ProcessingActivityDPIA.ProcessingActivity == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIA.ProcessingActivity(childComplexity), true
+ case "ProcessingActivityDPIA.residualRisk":
+ if e.complexity.ProcessingActivityDPIA.ResidualRisk == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIA.ResidualRisk(childComplexity), true
+ case "ProcessingActivityDPIA.updatedAt":
+ if e.complexity.ProcessingActivityDPIA.UpdatedAt == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIA.UpdatedAt(childComplexity), true
+
+ case "ProcessingActivityDPIAConnection.edges":
+ if e.complexity.ProcessingActivityDPIAConnection.Edges == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIAConnection.Edges(childComplexity), true
+ case "ProcessingActivityDPIAConnection.pageInfo":
+ if e.complexity.ProcessingActivityDPIAConnection.PageInfo == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIAConnection.PageInfo(childComplexity), true
+ case "ProcessingActivityDPIAConnection.totalCount":
+ if e.complexity.ProcessingActivityDPIAConnection.TotalCount == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIAConnection.TotalCount(childComplexity), true
+
+ case "ProcessingActivityDPIAEdge.cursor":
+ if e.complexity.ProcessingActivityDPIAEdge.Cursor == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIAEdge.Cursor(childComplexity), true
+ case "ProcessingActivityDPIAEdge.node":
+ if e.complexity.ProcessingActivityDPIAEdge.Node == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityDPIAEdge.Node(childComplexity), true
+
case "ProcessingActivityEdge.cursor":
if e.complexity.ProcessingActivityEdge.Cursor == nil {
break
@@ -7066,6 +7426,99 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
return e.complexity.ProcessingActivityEdge.Node(childComplexity), true
+ case "ProcessingActivityTIA.createdAt":
+ if e.complexity.ProcessingActivityTIA.CreatedAt == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIA.CreatedAt(childComplexity), true
+ case "ProcessingActivityTIA.dataSubjects":
+ if e.complexity.ProcessingActivityTIA.DataSubjects == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIA.DataSubjects(childComplexity), true
+ case "ProcessingActivityTIA.id":
+ if e.complexity.ProcessingActivityTIA.ID == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIA.ID(childComplexity), true
+ case "ProcessingActivityTIA.legalMechanism":
+ if e.complexity.ProcessingActivityTIA.LegalMechanism == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIA.LegalMechanism(childComplexity), true
+ case "ProcessingActivityTIA.localLawRisk":
+ if e.complexity.ProcessingActivityTIA.LocalLawRisk == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIA.LocalLawRisk(childComplexity), true
+ case "ProcessingActivityTIA.organization":
+ if e.complexity.ProcessingActivityTIA.Organization == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIA.Organization(childComplexity), true
+ case "ProcessingActivityTIA.processingActivity":
+ if e.complexity.ProcessingActivityTIA.ProcessingActivity == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIA.ProcessingActivity(childComplexity), true
+ case "ProcessingActivityTIA.supplementaryMeasures":
+ if e.complexity.ProcessingActivityTIA.SupplementaryMeasures == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIA.SupplementaryMeasures(childComplexity), true
+ case "ProcessingActivityTIA.transfer":
+ if e.complexity.ProcessingActivityTIA.Transfer == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIA.Transfer(childComplexity), true
+ case "ProcessingActivityTIA.updatedAt":
+ if e.complexity.ProcessingActivityTIA.UpdatedAt == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIA.UpdatedAt(childComplexity), true
+
+ case "ProcessingActivityTIAConnection.edges":
+ if e.complexity.ProcessingActivityTIAConnection.Edges == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIAConnection.Edges(childComplexity), true
+ case "ProcessingActivityTIAConnection.pageInfo":
+ if e.complexity.ProcessingActivityTIAConnection.PageInfo == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIAConnection.PageInfo(childComplexity), true
+ case "ProcessingActivityTIAConnection.totalCount":
+ if e.complexity.ProcessingActivityTIAConnection.TotalCount == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIAConnection.TotalCount(childComplexity), true
+
+ case "ProcessingActivityTIAEdge.cursor":
+ if e.complexity.ProcessingActivityTIAEdge.Cursor == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIAEdge.Cursor(childComplexity), true
+ case "ProcessingActivityTIAEdge.node":
+ if e.complexity.ProcessingActivityTIAEdge.Node == nil {
+ break
+ }
+
+ return e.complexity.ProcessingActivityTIAEdge.Node(childComplexity), true
+
case "PublishDocumentVersionPayload.document":
if e.complexity.PublishDocumentVersionPayload.Document == nil {
break
@@ -8384,6 +8837,13 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
return e.complexity.UpdatePeoplePayload.People(childComplexity), true
+ case "UpdateProcessingActivityDPIAPayload.processingActivityDpia":
+ if e.complexity.UpdateProcessingActivityDPIAPayload.ProcessingActivityDpia == nil {
+ break
+ }
+
+ return e.complexity.UpdateProcessingActivityDPIAPayload.ProcessingActivityDpia(childComplexity), true
+
case "UpdateProcessingActivityPayload.processingActivity":
if e.complexity.UpdateProcessingActivityPayload.ProcessingActivity == nil {
break
@@ -8391,6 +8851,13 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
return e.complexity.UpdateProcessingActivityPayload.ProcessingActivity(childComplexity), true
+ case "UpdateProcessingActivityTIAPayload.processingActivityTia":
+ if e.complexity.UpdateProcessingActivityTIAPayload.ProcessingActivityTia == nil {
+ break
+ }
+
+ return e.complexity.UpdateProcessingActivityTIAPayload.ProcessingActivityTia(childComplexity), true
+
case "UpdateRiskPayload.risk":
if e.complexity.UpdateRiskPayload.Risk == nil {
break
@@ -9320,7 +9787,9 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler {
ec.unmarshalInputCreateObligationInput,
ec.unmarshalInputCreateOrganizationInput,
ec.unmarshalInputCreatePeopleInput,
+ ec.unmarshalInputCreateProcessingActivityDPIAInput,
ec.unmarshalInputCreateProcessingActivityInput,
+ ec.unmarshalInputCreateProcessingActivityTIAInput,
ec.unmarshalInputCreateRiskDocumentMappingInput,
ec.unmarshalInputCreateRiskInput,
ec.unmarshalInputCreateRiskMeasureMappingInput,
@@ -9360,7 +9829,9 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler {
ec.unmarshalInputDeleteOrganizationHorizontalLogoInput,
ec.unmarshalInputDeleteOrganizationInput,
ec.unmarshalInputDeletePeopleInput,
+ ec.unmarshalInputDeleteProcessingActivityDPIAInput,
ec.unmarshalInputDeleteProcessingActivityInput,
+ ec.unmarshalInputDeleteProcessingActivityTIAInput,
ec.unmarshalInputDeleteRiskDocumentMappingInput,
ec.unmarshalInputDeleteRiskInput,
ec.unmarshalInputDeleteRiskMeasureMappingInput,
@@ -9412,8 +9883,10 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler {
ec.unmarshalInputOrganizationOrder,
ec.unmarshalInputPeopleFilter,
ec.unmarshalInputPeopleOrder,
+ ec.unmarshalInputProcessingActivityDPIAOrder,
ec.unmarshalInputProcessingActivityFilter,
ec.unmarshalInputProcessingActivityOrder,
+ ec.unmarshalInputProcessingActivityTIAOrder,
ec.unmarshalInputPublishDocumentVersionInput,
ec.unmarshalInputRemoveMemberInput,
ec.unmarshalInputRequestEvidenceInput,
@@ -9446,7 +9919,9 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler {
ec.unmarshalInputUpdateOrganizationContextInput,
ec.unmarshalInputUpdateOrganizationInput,
ec.unmarshalInputUpdatePeopleInput,
+ ec.unmarshalInputUpdateProcessingActivityDPIAInput,
ec.unmarshalInputUpdateProcessingActivityInput,
+ ec.unmarshalInputUpdateProcessingActivityTIAInput,
ec.unmarshalInputUpdateRiskInput,
ec.unmarshalInputUpdateSAMLConfigurationInput,
ec.unmarshalInputUpdateTaskInput,
@@ -9938,6 +10413,38 @@ enum ProcessingActivityTransferImpactAssessment
)
}
+enum ProcessingActivityDPIAResidualRisk
+ @goModel(
+ model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRisk"
+ ) {
+ LOW
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRiskLow"
+ )
+ MEDIUM
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRiskMedium"
+ )
+ HIGH
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAResidualRiskHigh"
+ )
+}
+
+enum ProcessingActivityRole
+ @goModel(
+ model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityRole"
+ ) {
+ CONTROLLER
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityRoleController"
+ )
+ PROCESSOR
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityRoleProcessor"
+ )
+}
+
# Order Field Enums
enum UserOrderField
@goModel(model: "go.probo.inc/probo/pkg/coredata.UserOrderField") {
@@ -10619,6 +11126,26 @@ enum ProcessingActivityOrderField
)
}
+enum ProcessingActivityDPIAOrderField
+ @goModel(
+ model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAOrderField"
+ ) {
+ CREATED_AT
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityDPIAOrderFieldCreatedAt"
+ )
+}
+
+enum ProcessingActivityTIAOrderField
+ @goModel(
+ model: "go.probo.inc/probo/pkg/coredata.ProcessingActivityTIAOrderField"
+ ) {
+ CREATED_AT
+ @goEnum(
+ value: "go.probo.inc/probo/pkg/coredata.ProcessingActivityTIAOrderFieldCreatedAt"
+ )
+}
+
enum TrustCenterAccessOrderField
@goModel(
model: "go.probo.inc/probo/pkg/coredata.TrustCenterAccessOrderField"
@@ -10872,6 +11399,22 @@ input ProcessingActivityOrder
field: ProcessingActivityOrderField!
}
+input ProcessingActivityDPIAOrder
+ @goModel(
+ model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityDPIAOrderBy"
+ ) {
+ direction: OrderDirection!
+ field: ProcessingActivityDPIAOrderField!
+}
+
+input ProcessingActivityTIAOrder
+ @goModel(
+ model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityTIAOrderBy"
+ ) {
+ direction: OrderDirection!
+ field: ProcessingActivityTIAOrderField!
+}
+
input TrustCenterAccessOrder
@goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.TrustCenterAccessOrderBy"
@@ -11232,6 +11775,22 @@ type Organization implements Node {
filter: ProcessingActivityFilter = { snapshotId: null }
): ProcessingActivityConnection! @goField(forceResolver: true)
+ dataProtectionImpactAssessments(
+ first: Int
+ after: CursorKey
+ last: Int
+ before: CursorKey
+ orderBy: ProcessingActivityDPIAOrder
+ ): ProcessingActivityDPIAConnection! @goField(forceResolver: true)
+
+ transferImpactAssessments(
+ first: Int
+ after: CursorKey
+ last: Int
+ before: CursorKey
+ orderBy: ProcessingActivityTIAOrder
+ ): ProcessingActivityTIAConnection! @goField(forceResolver: true)
+
snapshots(
first: Int
after: CursorKey
@@ -11824,6 +12383,10 @@ type ProcessingActivity implements Node {
securityMeasures: String
dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment!
transferImpactAssessment: ProcessingActivityTransferImpactAssessment!
+ lastReviewDate: Datetime
+ nextReviewDate: Datetime
+ role: ProcessingActivityRole!
+ dataProtectionOfficer: People @goField(forceResolver: true)
vendors(
first: Int
after: CursorKey
@@ -11831,6 +12394,34 @@ type ProcessingActivity implements Node {
before: CursorKey
orderBy: VendorOrder
): VendorConnection! @goField(forceResolver: true)
+ dpia: ProcessingActivityDPIA @goField(forceResolver: true)
+ tia: ProcessingActivityTIA @goField(forceResolver: true)
+ createdAt: Datetime!
+ updatedAt: Datetime!
+}
+
+type ProcessingActivityDPIA implements Node {
+ id: ID!
+ processingActivity: ProcessingActivity! @goField(forceResolver: true)
+ organization: Organization! @goField(forceResolver: true)
+ description: String
+ necessityAndProportionality: String
+ potentialRisk: String
+ mitigations: String
+ residualRisk: ProcessingActivityDPIAResidualRisk
+ createdAt: Datetime!
+ updatedAt: Datetime!
+}
+
+type ProcessingActivityTIA implements Node {
+ id: ID!
+ processingActivity: ProcessingActivity! @goField(forceResolver: true)
+ organization: Organization! @goField(forceResolver: true)
+ dataSubjects: String
+ legalMechanism: String
+ transfer: String
+ localLawRisk: String
+ supplementaryMeasures: String
createdAt: Datetime!
updatedAt: Datetime!
}
@@ -12339,6 +12930,34 @@ type ProcessingActivityEdge {
node: ProcessingActivity!
}
+type ProcessingActivityDPIAConnection
+ @goModel(
+ model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityDPIAConnection"
+ ) {
+ totalCount: Int! @goField(forceResolver: true)
+ edges: [ProcessingActivityDPIAEdge!]!
+ pageInfo: PageInfo!
+}
+
+type ProcessingActivityDPIAEdge {
+ cursor: CursorKey!
+ node: ProcessingActivityDPIA!
+}
+
+type ProcessingActivityTIAConnection
+ @goModel(
+ model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ProcessingActivityTIAConnection"
+ ) {
+ totalCount: Int! @goField(forceResolver: true)
+ edges: [ProcessingActivityTIAEdge!]!
+ pageInfo: PageInfo!
+}
+
+type ProcessingActivityTIAEdge {
+ cursor: CursorKey!
+ node: ProcessingActivityTIA!
+}
+
type SnapshotConnection
@goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.SnapshotConnection"
@@ -12676,6 +13295,26 @@ type Mutation {
deleteProcessingActivity(
input: DeleteProcessingActivityInput!
): DeleteProcessingActivityPayload!
+ # Processing Activity DPIA mutations
+ createProcessingActivityDPIA(
+ input: CreateProcessingActivityDPIAInput!
+ ): CreateProcessingActivityDPIAPayload!
+ updateProcessingActivityDPIA(
+ input: UpdateProcessingActivityDPIAInput!
+ ): UpdateProcessingActivityDPIAPayload!
+ deleteProcessingActivityDPIA(
+ input: DeleteProcessingActivityDPIAInput!
+ ): DeleteProcessingActivityDPIAPayload!
+ # Processing Activity TIA mutations
+ createProcessingActivityTIA(
+ input: CreateProcessingActivityTIAInput!
+ ): CreateProcessingActivityTIAPayload!
+ updateProcessingActivityTIA(
+ input: UpdateProcessingActivityTIAInput!
+ ): UpdateProcessingActivityTIAPayload!
+ deleteProcessingActivityTIA(
+ input: DeleteProcessingActivityTIAInput!
+ ): DeleteProcessingActivityTIAPayload!
# Snapshot mutations
createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload!
deleteSnapshot(input: DeleteSnapshotInput!): DeleteSnapshotPayload!
@@ -13446,6 +14085,10 @@ input CreateProcessingActivityInput {
securityMeasures: String
dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment!
transferImpactAssessment: ProcessingActivityTransferImpactAssessment!
+ lastReviewDate: Datetime
+ nextReviewDate: Datetime
+ role: ProcessingActivityRole!
+ dataProtectionOfficerId: ID
vendorIds: [ID!]
}
@@ -13467,6 +14110,10 @@ input UpdateProcessingActivityInput {
securityMeasures: String @goField(omittable: true)
dataProtectionImpactAssessment: ProcessingActivityDataProtectionImpactAssessment
transferImpactAssessment: ProcessingActivityTransferImpactAssessment
+ lastReviewDate: Datetime @goField(omittable: true)
+ nextReviewDate: Datetime @goField(omittable: true)
+ role: ProcessingActivityRole
+ dataProtectionOfficerId: ID @goField(omittable: true)
vendorIds: [ID!]
}
@@ -13474,6 +14121,50 @@ input DeleteProcessingActivityInput {
processingActivityId: ID!
}
+input CreateProcessingActivityDPIAInput {
+ processingActivityId: ID!
+ description: String
+ necessityAndProportionality: String
+ potentialRisk: String
+ mitigations: String
+ residualRisk: ProcessingActivityDPIAResidualRisk
+}
+
+input UpdateProcessingActivityDPIAInput {
+ id: ID!
+ description: String @goField(omittable: true)
+ necessityAndProportionality: String @goField(omittable: true)
+ potentialRisk: String @goField(omittable: true)
+ mitigations: String @goField(omittable: true)
+ residualRisk: ProcessingActivityDPIAResidualRisk
+}
+
+input DeleteProcessingActivityDPIAInput {
+ processingActivityDpiaId: ID!
+}
+
+input CreateProcessingActivityTIAInput {
+ processingActivityId: ID!
+ dataSubjects: String
+ legalMechanism: String
+ transfer: String
+ localLawRisk: String
+ supplementaryMeasures: String
+}
+
+input UpdateProcessingActivityTIAInput {
+ id: ID!
+ dataSubjects: String @goField(omittable: true)
+ legalMechanism: String @goField(omittable: true)
+ transfer: String @goField(omittable: true)
+ localLawRisk: String @goField(omittable: true)
+ supplementaryMeasures: String @goField(omittable: true)
+}
+
+input DeleteProcessingActivityTIAInput {
+ processingActivityTiaId: ID!
+}
+
input CreateSnapshotInput {
organizationId: ID!
name: String!
@@ -14338,6 +15029,30 @@ type DeleteProcessingActivityPayload {
deletedProcessingActivityId: ID!
}
+type CreateProcessingActivityDPIAPayload {
+ processingActivityDpia: ProcessingActivityDPIA!
+}
+
+type UpdateProcessingActivityDPIAPayload {
+ processingActivityDpia: ProcessingActivityDPIA!
+}
+
+type DeleteProcessingActivityDPIAPayload {
+ deletedProcessingActivityDpiaId: ID!
+}
+
+type CreateProcessingActivityTIAPayload {
+ processingActivityTia: ProcessingActivityTIA!
+}
+
+type UpdateProcessingActivityTIAPayload {
+ processingActivityTia: ProcessingActivityTIA!
+}
+
+type DeleteProcessingActivityTIAPayload {
+ deletedProcessingActivityTiaId: ID!
+}
+
type CreateSnapshotPayload {
snapshotEdge: SnapshotEdge!
}
@@ -15394,6 +16109,28 @@ func (ec *executionContext) field_Mutation_createPeople_args(ctx context.Context
return args, nil
}
+func (ec *executionContext) field_Mutation_createProcessingActivityDPIA_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
+ var err error
+ args := map[string]any{}
+ arg0, err := graphql.ProcessArgField(ctx, rawArgs, "input", ec.unmarshalNCreateProcessingActivityDPIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityDPIAInput)
+ if err != nil {
+ return nil, err
+ }
+ args["input"] = arg0
+ return args, nil
+}
+
+func (ec *executionContext) field_Mutation_createProcessingActivityTIA_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
+ var err error
+ args := map[string]any{}
+ arg0, err := graphql.ProcessArgField(ctx, rawArgs, "input", ec.unmarshalNCreateProcessingActivityTIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityTIAInput)
+ if err != nil {
+ return nil, err
+ }
+ args["input"] = arg0
+ return args, nil
+}
+
func (ec *executionContext) field_Mutation_createProcessingActivity_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
var err error
args := map[string]any{}
@@ -15812,6 +16549,28 @@ func (ec *executionContext) field_Mutation_deletePeople_args(ctx context.Context
return args, nil
}
+func (ec *executionContext) field_Mutation_deleteProcessingActivityDPIA_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
+ var err error
+ args := map[string]any{}
+ arg0, err := graphql.ProcessArgField(ctx, rawArgs, "input", ec.unmarshalNDeleteProcessingActivityDPIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityDPIAInput)
+ if err != nil {
+ return nil, err
+ }
+ args["input"] = arg0
+ return args, nil
+}
+
+func (ec *executionContext) field_Mutation_deleteProcessingActivityTIA_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
+ var err error
+ args := map[string]any{}
+ arg0, err := graphql.ProcessArgField(ctx, rawArgs, "input", ec.unmarshalNDeleteProcessingActivityTIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityTIAInput)
+ if err != nil {
+ return nil, err
+ }
+ args["input"] = arg0
+ return args, nil
+}
+
func (ec *executionContext) field_Mutation_deleteProcessingActivity_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
var err error
args := map[string]any{}
@@ -16384,6 +17143,28 @@ func (ec *executionContext) field_Mutation_updatePeople_args(ctx context.Context
return args, nil
}
+func (ec *executionContext) field_Mutation_updateProcessingActivityDPIA_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
+ var err error
+ args := map[string]any{}
+ arg0, err := graphql.ProcessArgField(ctx, rawArgs, "input", ec.unmarshalNUpdateProcessingActivityDPIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityDPIAInput)
+ if err != nil {
+ return nil, err
+ }
+ args["input"] = arg0
+ return args, nil
+}
+
+func (ec *executionContext) field_Mutation_updateProcessingActivityTIA_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
+ var err error
+ args := map[string]any{}
+ arg0, err := graphql.ProcessArgField(ctx, rawArgs, "input", ec.unmarshalNUpdateProcessingActivityTIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityTIAInput)
+ if err != nil {
+ return nil, err
+ }
+ args["input"] = arg0
+ return args, nil
+}
+
func (ec *executionContext) field_Mutation_updateProcessingActivity_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
var err error
args := map[string]any{}
@@ -16743,6 +17524,37 @@ func (ec *executionContext) field_Organization_controls_args(ctx context.Context
return args, nil
}
+func (ec *executionContext) field_Organization_dataProtectionImpactAssessments_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
+ var err error
+ args := map[string]any{}
+ arg0, err := graphql.ProcessArgField(ctx, rawArgs, "first", ec.unmarshalOInt2ᚖint)
+ if err != nil {
+ return nil, err
+ }
+ args["first"] = arg0
+ arg1, err := graphql.ProcessArgField(ctx, rawArgs, "after", ec.unmarshalOCursorKey2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋpageᚐCursorKey)
+ if err != nil {
+ return nil, err
+ }
+ args["after"] = arg1
+ arg2, err := graphql.ProcessArgField(ctx, rawArgs, "last", ec.unmarshalOInt2ᚖint)
+ if err != nil {
+ return nil, err
+ }
+ args["last"] = arg2
+ arg3, err := graphql.ProcessArgField(ctx, rawArgs, "before", ec.unmarshalOCursorKey2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋpageᚐCursorKey)
+ if err != nil {
+ return nil, err
+ }
+ args["before"] = arg3
+ arg4, err := graphql.ProcessArgField(ctx, rawArgs, "orderBy", ec.unmarshalOProcessingActivityDPIAOrder2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDPIAOrderBy)
+ if err != nil {
+ return nil, err
+ }
+ args["orderBy"] = arg4
+ return args, nil
+}
+
func (ec *executionContext) field_Organization_data_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
var err error
args := map[string]any{}
@@ -17248,6 +18060,37 @@ func (ec *executionContext) field_Organization_tasks_args(ctx context.Context, r
return args, nil
}
+func (ec *executionContext) field_Organization_transferImpactAssessments_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
+ var err error
+ args := map[string]any{}
+ arg0, err := graphql.ProcessArgField(ctx, rawArgs, "first", ec.unmarshalOInt2ᚖint)
+ if err != nil {
+ return nil, err
+ }
+ args["first"] = arg0
+ arg1, err := graphql.ProcessArgField(ctx, rawArgs, "after", ec.unmarshalOCursorKey2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋpageᚐCursorKey)
+ if err != nil {
+ return nil, err
+ }
+ args["after"] = arg1
+ arg2, err := graphql.ProcessArgField(ctx, rawArgs, "last", ec.unmarshalOInt2ᚖint)
+ if err != nil {
+ return nil, err
+ }
+ args["last"] = arg2
+ arg3, err := graphql.ProcessArgField(ctx, rawArgs, "before", ec.unmarshalOCursorKey2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋpageᚐCursorKey)
+ if err != nil {
+ return nil, err
+ }
+ args["before"] = arg3
+ arg4, err := graphql.ProcessArgField(ctx, rawArgs, "orderBy", ec.unmarshalOProcessingActivityTIAOrder2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTIAOrderBy)
+ if err != nil {
+ return nil, err
+ }
+ args["orderBy"] = arg4
+ return args, nil
+}
+
func (ec *executionContext) field_Organization_trustCenterFiles_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
var err error
args := map[string]any{}
@@ -18458,6 +19301,10 @@ func (ec *executionContext) fieldContext_Asset_organization(_ context.Context, f
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -18915,6 +19762,10 @@ func (ec *executionContext) fieldContext_Audit_organization(_ context.Context, f
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -19863,6 +20714,10 @@ func (ec *executionContext) fieldContext_ContinualImprovement_organization(_ con
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -21909,6 +22764,57 @@ func (ec *executionContext) fieldContext_CreatePeoplePayload_peopleEdge(_ contex
return fc, nil
}
+func (ec *executionContext) _CreateProcessingActivityDPIAPayload_processingActivityDpia(ctx context.Context, field graphql.CollectedField, obj *types.CreateProcessingActivityDPIAPayload) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_CreateProcessingActivityDPIAPayload_processingActivityDpia,
+ func(ctx context.Context) (any, error) {
+ return obj.ProcessingActivityDpia, nil
+ },
+ nil,
+ ec.marshalNProcessingActivityDPIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDpia,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_CreateProcessingActivityDPIAPayload_processingActivityDpia(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "CreateProcessingActivityDPIAPayload",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_ProcessingActivityDPIA_id(ctx, field)
+ case "processingActivity":
+ return ec.fieldContext_ProcessingActivityDPIA_processingActivity(ctx, field)
+ case "organization":
+ return ec.fieldContext_ProcessingActivityDPIA_organization(ctx, field)
+ case "description":
+ return ec.fieldContext_ProcessingActivityDPIA_description(ctx, field)
+ case "necessityAndProportionality":
+ return ec.fieldContext_ProcessingActivityDPIA_necessityAndProportionality(ctx, field)
+ case "potentialRisk":
+ return ec.fieldContext_ProcessingActivityDPIA_potentialRisk(ctx, field)
+ case "mitigations":
+ return ec.fieldContext_ProcessingActivityDPIA_mitigations(ctx, field)
+ case "residualRisk":
+ return ec.fieldContext_ProcessingActivityDPIA_residualRisk(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_ProcessingActivityDPIA_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_ProcessingActivityDPIA_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityDPIA", field.Name)
+ },
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _CreateProcessingActivityPayload_processingActivityEdge(ctx context.Context, field graphql.CollectedField, obj *types.CreateProcessingActivityPayload) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -21944,6 +22850,57 @@ func (ec *executionContext) fieldContext_CreateProcessingActivityPayload_process
return fc, nil
}
+func (ec *executionContext) _CreateProcessingActivityTIAPayload_processingActivityTia(ctx context.Context, field graphql.CollectedField, obj *types.CreateProcessingActivityTIAPayload) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_CreateProcessingActivityTIAPayload_processingActivityTia,
+ func(ctx context.Context) (any, error) {
+ return obj.ProcessingActivityTia, nil
+ },
+ nil,
+ ec.marshalNProcessingActivityTIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTia,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_CreateProcessingActivityTIAPayload_processingActivityTia(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "CreateProcessingActivityTIAPayload",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_ProcessingActivityTIA_id(ctx, field)
+ case "processingActivity":
+ return ec.fieldContext_ProcessingActivityTIA_processingActivity(ctx, field)
+ case "organization":
+ return ec.fieldContext_ProcessingActivityTIA_organization(ctx, field)
+ case "dataSubjects":
+ return ec.fieldContext_ProcessingActivityTIA_dataSubjects(ctx, field)
+ case "legalMechanism":
+ return ec.fieldContext_ProcessingActivityTIA_legalMechanism(ctx, field)
+ case "transfer":
+ return ec.fieldContext_ProcessingActivityTIA_transfer(ctx, field)
+ case "localLawRisk":
+ return ec.fieldContext_ProcessingActivityTIA_localLawRisk(ctx, field)
+ case "supplementaryMeasures":
+ return ec.fieldContext_ProcessingActivityTIA_supplementaryMeasures(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_ProcessingActivityTIA_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_ProcessingActivityTIA_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityTIA", field.Name)
+ },
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _CreateRiskDocumentMappingPayload_riskEdge(ctx context.Context, field graphql.CollectedField, obj *types.CreateRiskDocumentMappingPayload) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -22690,6 +23647,10 @@ func (ec *executionContext) fieldContext_CustomDomain_organization(_ context.Con
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -23338,6 +24299,10 @@ func (ec *executionContext) fieldContext_Datum_organization(_ context.Context, f
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -24402,6 +25367,10 @@ func (ec *executionContext) fieldContext_DeleteOrganizationHorizontalLogoPayload
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -24481,6 +25450,35 @@ func (ec *executionContext) fieldContext_DeletePeoplePayload_deletedPeopleId(_ c
return fc, nil
}
+func (ec *executionContext) _DeleteProcessingActivityDPIAPayload_deletedProcessingActivityDpiaId(ctx context.Context, field graphql.CollectedField, obj *types.DeleteProcessingActivityDPIAPayload) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_DeleteProcessingActivityDPIAPayload_deletedProcessingActivityDpiaId,
+ func(ctx context.Context) (any, error) {
+ return obj.DeletedProcessingActivityDpiaID, nil
+ },
+ nil,
+ ec.marshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_DeleteProcessingActivityDPIAPayload_deletedProcessingActivityDpiaId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "DeleteProcessingActivityDPIAPayload",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type ID does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _DeleteProcessingActivityPayload_deletedProcessingActivityId(ctx context.Context, field graphql.CollectedField, obj *types.DeleteProcessingActivityPayload) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -24510,6 +25508,35 @@ func (ec *executionContext) fieldContext_DeleteProcessingActivityPayload_deleted
return fc, nil
}
+func (ec *executionContext) _DeleteProcessingActivityTIAPayload_deletedProcessingActivityTiaId(ctx context.Context, field graphql.CollectedField, obj *types.DeleteProcessingActivityTIAPayload) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_DeleteProcessingActivityTIAPayload_deletedProcessingActivityTiaId,
+ func(ctx context.Context) (any, error) {
+ return obj.DeletedProcessingActivityTiaID, nil
+ },
+ nil,
+ ec.marshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_DeleteProcessingActivityTIAPayload_deletedProcessingActivityTiaId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "DeleteProcessingActivityTIAPayload",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type ID does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _DeleteRiskDocumentMappingPayload_deletedRiskId(ctx context.Context, field graphql.CollectedField, obj *types.DeleteRiskDocumentMappingPayload) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -25521,6 +26548,10 @@ func (ec *executionContext) fieldContext_Document_organization(_ context.Context
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -28059,6 +29090,10 @@ func (ec *executionContext) fieldContext_Framework_organization(_ context.Contex
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -29054,6 +30089,10 @@ func (ec *executionContext) fieldContext_Invitation_organization(_ context.Conte
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -30122,6 +31161,10 @@ func (ec *executionContext) fieldContext_Meeting_organization(_ context.Context,
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -36571,6 +37614,276 @@ func (ec *executionContext) fieldContext_Mutation_deleteProcessingActivity(ctx c
return fc, nil
}
+func (ec *executionContext) _Mutation_createProcessingActivityDPIA(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_Mutation_createProcessingActivityDPIA,
+ func(ctx context.Context) (any, error) {
+ fc := graphql.GetFieldContext(ctx)
+ return ec.resolvers.Mutation().CreateProcessingActivityDpia(ctx, fc.Args["input"].(types.CreateProcessingActivityDPIAInput))
+ },
+ nil,
+ ec.marshalNCreateProcessingActivityDPIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityDPIAPayload,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_Mutation_createProcessingActivityDPIA(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "Mutation",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "processingActivityDpia":
+ return ec.fieldContext_CreateProcessingActivityDPIAPayload_processingActivityDpia(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type CreateProcessingActivityDPIAPayload", field.Name)
+ },
+ }
+ defer func() {
+ if r := recover(); r != nil {
+ err = ec.Recover(ctx, r)
+ ec.Error(ctx, err)
+ }
+ }()
+ ctx = graphql.WithFieldContext(ctx, fc)
+ if fc.Args, err = ec.field_Mutation_createProcessingActivityDPIA_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
+ ec.Error(ctx, err)
+ return fc, err
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _Mutation_updateProcessingActivityDPIA(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_Mutation_updateProcessingActivityDPIA,
+ func(ctx context.Context) (any, error) {
+ fc := graphql.GetFieldContext(ctx)
+ return ec.resolvers.Mutation().UpdateProcessingActivityDpia(ctx, fc.Args["input"].(types.UpdateProcessingActivityDPIAInput))
+ },
+ nil,
+ ec.marshalNUpdateProcessingActivityDPIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityDPIAPayload,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_Mutation_updateProcessingActivityDPIA(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "Mutation",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "processingActivityDpia":
+ return ec.fieldContext_UpdateProcessingActivityDPIAPayload_processingActivityDpia(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type UpdateProcessingActivityDPIAPayload", field.Name)
+ },
+ }
+ defer func() {
+ if r := recover(); r != nil {
+ err = ec.Recover(ctx, r)
+ ec.Error(ctx, err)
+ }
+ }()
+ ctx = graphql.WithFieldContext(ctx, fc)
+ if fc.Args, err = ec.field_Mutation_updateProcessingActivityDPIA_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
+ ec.Error(ctx, err)
+ return fc, err
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _Mutation_deleteProcessingActivityDPIA(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_Mutation_deleteProcessingActivityDPIA,
+ func(ctx context.Context) (any, error) {
+ fc := graphql.GetFieldContext(ctx)
+ return ec.resolvers.Mutation().DeleteProcessingActivityDpia(ctx, fc.Args["input"].(types.DeleteProcessingActivityDPIAInput))
+ },
+ nil,
+ ec.marshalNDeleteProcessingActivityDPIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityDPIAPayload,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_Mutation_deleteProcessingActivityDPIA(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "Mutation",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "deletedProcessingActivityDpiaId":
+ return ec.fieldContext_DeleteProcessingActivityDPIAPayload_deletedProcessingActivityDpiaId(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type DeleteProcessingActivityDPIAPayload", field.Name)
+ },
+ }
+ defer func() {
+ if r := recover(); r != nil {
+ err = ec.Recover(ctx, r)
+ ec.Error(ctx, err)
+ }
+ }()
+ ctx = graphql.WithFieldContext(ctx, fc)
+ if fc.Args, err = ec.field_Mutation_deleteProcessingActivityDPIA_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
+ ec.Error(ctx, err)
+ return fc, err
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _Mutation_createProcessingActivityTIA(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_Mutation_createProcessingActivityTIA,
+ func(ctx context.Context) (any, error) {
+ fc := graphql.GetFieldContext(ctx)
+ return ec.resolvers.Mutation().CreateProcessingActivityTia(ctx, fc.Args["input"].(types.CreateProcessingActivityTIAInput))
+ },
+ nil,
+ ec.marshalNCreateProcessingActivityTIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityTIAPayload,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_Mutation_createProcessingActivityTIA(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "Mutation",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "processingActivityTia":
+ return ec.fieldContext_CreateProcessingActivityTIAPayload_processingActivityTia(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type CreateProcessingActivityTIAPayload", field.Name)
+ },
+ }
+ defer func() {
+ if r := recover(); r != nil {
+ err = ec.Recover(ctx, r)
+ ec.Error(ctx, err)
+ }
+ }()
+ ctx = graphql.WithFieldContext(ctx, fc)
+ if fc.Args, err = ec.field_Mutation_createProcessingActivityTIA_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
+ ec.Error(ctx, err)
+ return fc, err
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _Mutation_updateProcessingActivityTIA(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_Mutation_updateProcessingActivityTIA,
+ func(ctx context.Context) (any, error) {
+ fc := graphql.GetFieldContext(ctx)
+ return ec.resolvers.Mutation().UpdateProcessingActivityTia(ctx, fc.Args["input"].(types.UpdateProcessingActivityTIAInput))
+ },
+ nil,
+ ec.marshalNUpdateProcessingActivityTIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityTIAPayload,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_Mutation_updateProcessingActivityTIA(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "Mutation",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "processingActivityTia":
+ return ec.fieldContext_UpdateProcessingActivityTIAPayload_processingActivityTia(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type UpdateProcessingActivityTIAPayload", field.Name)
+ },
+ }
+ defer func() {
+ if r := recover(); r != nil {
+ err = ec.Recover(ctx, r)
+ ec.Error(ctx, err)
+ }
+ }()
+ ctx = graphql.WithFieldContext(ctx, fc)
+ if fc.Args, err = ec.field_Mutation_updateProcessingActivityTIA_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
+ ec.Error(ctx, err)
+ return fc, err
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _Mutation_deleteProcessingActivityTIA(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_Mutation_deleteProcessingActivityTIA,
+ func(ctx context.Context) (any, error) {
+ fc := graphql.GetFieldContext(ctx)
+ return ec.resolvers.Mutation().DeleteProcessingActivityTia(ctx, fc.Args["input"].(types.DeleteProcessingActivityTIAInput))
+ },
+ nil,
+ ec.marshalNDeleteProcessingActivityTIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityTIAPayload,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_Mutation_deleteProcessingActivityTIA(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "Mutation",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "deletedProcessingActivityTiaId":
+ return ec.fieldContext_DeleteProcessingActivityTIAPayload_deletedProcessingActivityTiaId(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type DeleteProcessingActivityTIAPayload", field.Name)
+ },
+ }
+ defer func() {
+ if r := recover(); r != nil {
+ err = ec.Recover(ctx, r)
+ ec.Error(ctx, err)
+ }
+ }()
+ ctx = graphql.WithFieldContext(ctx, fc)
+ if fc.Args, err = ec.field_Mutation_deleteProcessingActivityTIA_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
+ ec.Error(ctx, err)
+ return fc, err
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _Mutation_createSnapshot(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -37208,6 +38521,10 @@ func (ec *executionContext) fieldContext_Nonconformity_organization(_ context.Co
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -37987,6 +39304,10 @@ func (ec *executionContext) fieldContext_Obligation_organization(_ context.Conte
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -39738,6 +41059,104 @@ func (ec *executionContext) fieldContext_Organization_processingActivities(ctx c
return fc, nil
}
+func (ec *executionContext) _Organization_dataProtectionImpactAssessments(ctx context.Context, field graphql.CollectedField, obj *types.Organization) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_Organization_dataProtectionImpactAssessments,
+ func(ctx context.Context) (any, error) {
+ fc := graphql.GetFieldContext(ctx)
+ return ec.resolvers.Organization().DataProtectionImpactAssessments(ctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.ProcessingActivityDPIAOrderBy))
+ },
+ nil,
+ ec.marshalNProcessingActivityDPIAConnection2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDPIAConnection,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_Organization_dataProtectionImpactAssessments(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "Organization",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "totalCount":
+ return ec.fieldContext_ProcessingActivityDPIAConnection_totalCount(ctx, field)
+ case "edges":
+ return ec.fieldContext_ProcessingActivityDPIAConnection_edges(ctx, field)
+ case "pageInfo":
+ return ec.fieldContext_ProcessingActivityDPIAConnection_pageInfo(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityDPIAConnection", field.Name)
+ },
+ }
+ defer func() {
+ if r := recover(); r != nil {
+ err = ec.Recover(ctx, r)
+ ec.Error(ctx, err)
+ }
+ }()
+ ctx = graphql.WithFieldContext(ctx, fc)
+ if fc.Args, err = ec.field_Organization_dataProtectionImpactAssessments_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
+ ec.Error(ctx, err)
+ return fc, err
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _Organization_transferImpactAssessments(ctx context.Context, field graphql.CollectedField, obj *types.Organization) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_Organization_transferImpactAssessments,
+ func(ctx context.Context) (any, error) {
+ fc := graphql.GetFieldContext(ctx)
+ return ec.resolvers.Organization().TransferImpactAssessments(ctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.ProcessingActivityTIAOrderBy))
+ },
+ nil,
+ ec.marshalNProcessingActivityTIAConnection2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTIAConnection,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_Organization_transferImpactAssessments(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "Organization",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "totalCount":
+ return ec.fieldContext_ProcessingActivityTIAConnection_totalCount(ctx, field)
+ case "edges":
+ return ec.fieldContext_ProcessingActivityTIAConnection_edges(ctx, field)
+ case "pageInfo":
+ return ec.fieldContext_ProcessingActivityTIAConnection_pageInfo(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityTIAConnection", field.Name)
+ },
+ }
+ defer func() {
+ if r := recover(); r != nil {
+ err = ec.Recover(ctx, r)
+ ec.Error(ctx, err)
+ }
+ }()
+ ctx = graphql.WithFieldContext(ctx, fc)
+ if fc.Args, err = ec.field_Organization_transferImpactAssessments_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
+ ec.Error(ctx, err)
+ return fc, err
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _Organization_snapshots(ctx context.Context, field graphql.CollectedField, obj *types.Organization) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -40308,6 +41727,10 @@ func (ec *executionContext) fieldContext_OrganizationEdge_node(_ context.Context
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -41085,6 +42508,10 @@ func (ec *executionContext) fieldContext_ProcessingActivity_organization(_ conte
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -41541,6 +42968,144 @@ func (ec *executionContext) fieldContext_ProcessingActivity_transferImpactAssess
return fc, nil
}
+func (ec *executionContext) _ProcessingActivity_lastReviewDate(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivity) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivity_lastReviewDate,
+ func(ctx context.Context) (any, error) {
+ return obj.LastReviewDate, nil
+ },
+ nil,
+ ec.marshalODatetime2ᚖtimeᚐTime,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivity_lastReviewDate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivity",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type Datetime does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivity_nextReviewDate(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivity) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivity_nextReviewDate,
+ func(ctx context.Context) (any, error) {
+ return obj.NextReviewDate, nil
+ },
+ nil,
+ ec.marshalODatetime2ᚖtimeᚐTime,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivity_nextReviewDate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivity",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type Datetime does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivity_role(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivity) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivity_role,
+ func(ctx context.Context) (any, error) {
+ return obj.Role, nil
+ },
+ nil,
+ ec.marshalNProcessingActivityRole2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivity_role(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivity",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type ProcessingActivityRole does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivity_dataProtectionOfficer(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivity) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivity_dataProtectionOfficer,
+ func(ctx context.Context) (any, error) {
+ return ec.resolvers.ProcessingActivity().DataProtectionOfficer(ctx, obj)
+ },
+ nil,
+ ec.marshalOPeople2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPeople,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivity_dataProtectionOfficer(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivity",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_People_id(ctx, field)
+ case "fullName":
+ return ec.fieldContext_People_fullName(ctx, field)
+ case "primaryEmailAddress":
+ return ec.fieldContext_People_primaryEmailAddress(ctx, field)
+ case "additionalEmailAddresses":
+ return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
+ case "kind":
+ return ec.fieldContext_People_kind(ctx, field)
+ case "position":
+ return ec.fieldContext_People_position(ctx, field)
+ case "contractStartDate":
+ return ec.fieldContext_People_contractStartDate(ctx, field)
+ case "contractEndDate":
+ return ec.fieldContext_People_contractEndDate(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_People_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_People_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type People", field.Name)
+ },
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _ProcessingActivity_vendors(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivity) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -41590,6 +43155,108 @@ func (ec *executionContext) fieldContext_ProcessingActivity_vendors(ctx context.
return fc, nil
}
+func (ec *executionContext) _ProcessingActivity_dpia(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivity) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivity_dpia,
+ func(ctx context.Context) (any, error) {
+ return ec.resolvers.ProcessingActivity().Dpia(ctx, obj)
+ },
+ nil,
+ ec.marshalOProcessingActivityDPIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDpia,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivity_dpia(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivity",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_ProcessingActivityDPIA_id(ctx, field)
+ case "processingActivity":
+ return ec.fieldContext_ProcessingActivityDPIA_processingActivity(ctx, field)
+ case "organization":
+ return ec.fieldContext_ProcessingActivityDPIA_organization(ctx, field)
+ case "description":
+ return ec.fieldContext_ProcessingActivityDPIA_description(ctx, field)
+ case "necessityAndProportionality":
+ return ec.fieldContext_ProcessingActivityDPIA_necessityAndProportionality(ctx, field)
+ case "potentialRisk":
+ return ec.fieldContext_ProcessingActivityDPIA_potentialRisk(ctx, field)
+ case "mitigations":
+ return ec.fieldContext_ProcessingActivityDPIA_mitigations(ctx, field)
+ case "residualRisk":
+ return ec.fieldContext_ProcessingActivityDPIA_residualRisk(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_ProcessingActivityDPIA_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_ProcessingActivityDPIA_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityDPIA", field.Name)
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivity_tia(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivity) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivity_tia,
+ func(ctx context.Context) (any, error) {
+ return ec.resolvers.ProcessingActivity().Tia(ctx, obj)
+ },
+ nil,
+ ec.marshalOProcessingActivityTIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTia,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivity_tia(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivity",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_ProcessingActivityTIA_id(ctx, field)
+ case "processingActivity":
+ return ec.fieldContext_ProcessingActivityTIA_processingActivity(ctx, field)
+ case "organization":
+ return ec.fieldContext_ProcessingActivityTIA_organization(ctx, field)
+ case "dataSubjects":
+ return ec.fieldContext_ProcessingActivityTIA_dataSubjects(ctx, field)
+ case "legalMechanism":
+ return ec.fieldContext_ProcessingActivityTIA_legalMechanism(ctx, field)
+ case "transfer":
+ return ec.fieldContext_ProcessingActivityTIA_transfer(ctx, field)
+ case "localLawRisk":
+ return ec.fieldContext_ProcessingActivityTIA_localLawRisk(ctx, field)
+ case "supplementaryMeasures":
+ return ec.fieldContext_ProcessingActivityTIA_supplementaryMeasures(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_ProcessingActivityTIA_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_ProcessingActivityTIA_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityTIA", field.Name)
+ },
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _ProcessingActivity_createdAt(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivity) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -41751,6 +43418,613 @@ func (ec *executionContext) fieldContext_ProcessingActivityConnection_pageInfo(_
return fc, nil
}
+func (ec *executionContext) _ProcessingActivityDPIA_id(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDpia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIA_id,
+ func(ctx context.Context) (any, error) {
+ return obj.ID, nil
+ },
+ nil,
+ ec.marshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIA_id(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type ID does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIA_processingActivity(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDpia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIA_processingActivity,
+ func(ctx context.Context) (any, error) {
+ return ec.resolvers.ProcessingActivityDPIA().ProcessingActivity(ctx, obj)
+ },
+ nil,
+ ec.marshalNProcessingActivity2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivity,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIA_processingActivity(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIA",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_ProcessingActivity_id(ctx, field)
+ case "snapshotId":
+ return ec.fieldContext_ProcessingActivity_snapshotId(ctx, field)
+ case "sourceId":
+ return ec.fieldContext_ProcessingActivity_sourceId(ctx, field)
+ case "organization":
+ return ec.fieldContext_ProcessingActivity_organization(ctx, field)
+ case "name":
+ return ec.fieldContext_ProcessingActivity_name(ctx, field)
+ case "purpose":
+ return ec.fieldContext_ProcessingActivity_purpose(ctx, field)
+ case "dataSubjectCategory":
+ return ec.fieldContext_ProcessingActivity_dataSubjectCategory(ctx, field)
+ case "personalDataCategory":
+ return ec.fieldContext_ProcessingActivity_personalDataCategory(ctx, field)
+ case "specialOrCriminalData":
+ return ec.fieldContext_ProcessingActivity_specialOrCriminalData(ctx, field)
+ case "consentEvidenceLink":
+ return ec.fieldContext_ProcessingActivity_consentEvidenceLink(ctx, field)
+ case "lawfulBasis":
+ return ec.fieldContext_ProcessingActivity_lawfulBasis(ctx, field)
+ case "recipients":
+ return ec.fieldContext_ProcessingActivity_recipients(ctx, field)
+ case "location":
+ return ec.fieldContext_ProcessingActivity_location(ctx, field)
+ case "internationalTransfers":
+ return ec.fieldContext_ProcessingActivity_internationalTransfers(ctx, field)
+ case "transferSafeguards":
+ return ec.fieldContext_ProcessingActivity_transferSafeguards(ctx, field)
+ case "retentionPeriod":
+ return ec.fieldContext_ProcessingActivity_retentionPeriod(ctx, field)
+ case "securityMeasures":
+ return ec.fieldContext_ProcessingActivity_securityMeasures(ctx, field)
+ case "dataProtectionImpactAssessment":
+ return ec.fieldContext_ProcessingActivity_dataProtectionImpactAssessment(ctx, field)
+ case "transferImpactAssessment":
+ return ec.fieldContext_ProcessingActivity_transferImpactAssessment(ctx, field)
+ case "lastReviewDate":
+ return ec.fieldContext_ProcessingActivity_lastReviewDate(ctx, field)
+ case "nextReviewDate":
+ return ec.fieldContext_ProcessingActivity_nextReviewDate(ctx, field)
+ case "role":
+ return ec.fieldContext_ProcessingActivity_role(ctx, field)
+ case "dataProtectionOfficer":
+ return ec.fieldContext_ProcessingActivity_dataProtectionOfficer(ctx, field)
+ case "vendors":
+ return ec.fieldContext_ProcessingActivity_vendors(ctx, field)
+ case "dpia":
+ return ec.fieldContext_ProcessingActivity_dpia(ctx, field)
+ case "tia":
+ return ec.fieldContext_ProcessingActivity_tia(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_ProcessingActivity_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_ProcessingActivity_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivity", field.Name)
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIA_organization(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDpia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIA_organization,
+ func(ctx context.Context) (any, error) {
+ return ec.resolvers.ProcessingActivityDPIA().Organization(ctx, obj)
+ },
+ nil,
+ ec.marshalNOrganization2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐOrganization,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIA_organization(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIA",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_Organization_id(ctx, field)
+ case "name":
+ return ec.fieldContext_Organization_name(ctx, field)
+ case "logoUrl":
+ return ec.fieldContext_Organization_logoUrl(ctx, field)
+ case "horizontalLogoUrl":
+ return ec.fieldContext_Organization_horizontalLogoUrl(ctx, field)
+ case "description":
+ return ec.fieldContext_Organization_description(ctx, field)
+ case "websiteUrl":
+ return ec.fieldContext_Organization_websiteUrl(ctx, field)
+ case "email":
+ return ec.fieldContext_Organization_email(ctx, field)
+ case "headquarterAddress":
+ return ec.fieldContext_Organization_headquarterAddress(ctx, field)
+ case "context":
+ return ec.fieldContext_Organization_context(ctx, field)
+ case "memberships":
+ return ec.fieldContext_Organization_memberships(ctx, field)
+ case "invitations":
+ return ec.fieldContext_Organization_invitations(ctx, field)
+ case "slackConnections":
+ return ec.fieldContext_Organization_slackConnections(ctx, field)
+ case "frameworks":
+ return ec.fieldContext_Organization_frameworks(ctx, field)
+ case "controls":
+ return ec.fieldContext_Organization_controls(ctx, field)
+ case "vendors":
+ return ec.fieldContext_Organization_vendors(ctx, field)
+ case "peoples":
+ return ec.fieldContext_Organization_peoples(ctx, field)
+ case "documents":
+ return ec.fieldContext_Organization_documents(ctx, field)
+ case "meetings":
+ return ec.fieldContext_Organization_meetings(ctx, field)
+ case "measures":
+ return ec.fieldContext_Organization_measures(ctx, field)
+ case "risks":
+ return ec.fieldContext_Organization_risks(ctx, field)
+ case "tasks":
+ return ec.fieldContext_Organization_tasks(ctx, field)
+ case "assets":
+ return ec.fieldContext_Organization_assets(ctx, field)
+ case "data":
+ return ec.fieldContext_Organization_data(ctx, field)
+ case "audits":
+ return ec.fieldContext_Organization_audits(ctx, field)
+ case "nonconformities":
+ return ec.fieldContext_Organization_nonconformities(ctx, field)
+ case "obligations":
+ return ec.fieldContext_Organization_obligations(ctx, field)
+ case "continualImprovements":
+ return ec.fieldContext_Organization_continualImprovements(ctx, field)
+ case "processingActivities":
+ return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
+ case "snapshots":
+ return ec.fieldContext_Organization_snapshots(ctx, field)
+ case "trustCenterFiles":
+ return ec.fieldContext_Organization_trustCenterFiles(ctx, field)
+ case "trustCenter":
+ return ec.fieldContext_Organization_trustCenter(ctx, field)
+ case "customDomain":
+ return ec.fieldContext_Organization_customDomain(ctx, field)
+ case "samlConfigurations":
+ return ec.fieldContext_Organization_samlConfigurations(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_Organization_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_Organization_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type Organization", field.Name)
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIA_description(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDpia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIA_description,
+ func(ctx context.Context) (any, error) {
+ return obj.Description, nil
+ },
+ nil,
+ ec.marshalOString2ᚖstring,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIA_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type String does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIA_necessityAndProportionality(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDpia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIA_necessityAndProportionality,
+ func(ctx context.Context) (any, error) {
+ return obj.NecessityAndProportionality, nil
+ },
+ nil,
+ ec.marshalOString2ᚖstring,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIA_necessityAndProportionality(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type String does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIA_potentialRisk(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDpia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIA_potentialRisk,
+ func(ctx context.Context) (any, error) {
+ return obj.PotentialRisk, nil
+ },
+ nil,
+ ec.marshalOString2ᚖstring,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIA_potentialRisk(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type String does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIA_mitigations(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDpia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIA_mitigations,
+ func(ctx context.Context) (any, error) {
+ return obj.Mitigations, nil
+ },
+ nil,
+ ec.marshalOString2ᚖstring,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIA_mitigations(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type String does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIA_residualRisk(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDpia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIA_residualRisk,
+ func(ctx context.Context) (any, error) {
+ return obj.ResidualRisk, nil
+ },
+ nil,
+ ec.marshalOProcessingActivityDPIAResidualRisk2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAResidualRisk,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIA_residualRisk(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type ProcessingActivityDPIAResidualRisk does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIA_createdAt(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDpia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIA_createdAt,
+ func(ctx context.Context) (any, error) {
+ return obj.CreatedAt, nil
+ },
+ nil,
+ ec.marshalNDatetime2timeᚐTime,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIA_createdAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type Datetime does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIA_updatedAt(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDpia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIA_updatedAt,
+ func(ctx context.Context) (any, error) {
+ return obj.UpdatedAt, nil
+ },
+ nil,
+ ec.marshalNDatetime2timeᚐTime,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIA_updatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type Datetime does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIAConnection_totalCount(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDPIAConnection) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIAConnection_totalCount,
+ func(ctx context.Context) (any, error) {
+ return ec.resolvers.ProcessingActivityDPIAConnection().TotalCount(ctx, obj)
+ },
+ nil,
+ ec.marshalNInt2int,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIAConnection_totalCount(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIAConnection",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type Int does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIAConnection_edges(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDPIAConnection) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIAConnection_edges,
+ func(ctx context.Context) (any, error) {
+ return obj.Edges, nil
+ },
+ nil,
+ ec.marshalNProcessingActivityDPIAEdge2ᚕᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDPIAEdgeᚄ,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIAConnection_edges(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIAConnection",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "cursor":
+ return ec.fieldContext_ProcessingActivityDPIAEdge_cursor(ctx, field)
+ case "node":
+ return ec.fieldContext_ProcessingActivityDPIAEdge_node(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityDPIAEdge", field.Name)
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIAConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDPIAConnection) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIAConnection_pageInfo,
+ func(ctx context.Context) (any, error) {
+ return obj.PageInfo, nil
+ },
+ nil,
+ ec.marshalNPageInfo2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPageInfo,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIAConnection_pageInfo(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIAConnection",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "hasNextPage":
+ return ec.fieldContext_PageInfo_hasNextPage(ctx, field)
+ case "hasPreviousPage":
+ return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field)
+ case "startCursor":
+ return ec.fieldContext_PageInfo_startCursor(ctx, field)
+ case "endCursor":
+ return ec.fieldContext_PageInfo_endCursor(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name)
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIAEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDPIAEdge) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIAEdge_cursor,
+ func(ctx context.Context) (any, error) {
+ return obj.Cursor, nil
+ },
+ nil,
+ ec.marshalNCursorKey2goᚗproboᚗincᚋproboᚋpkgᚋpageᚐCursorKey,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIAEdge_cursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIAEdge",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type CursorKey does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityDPIAEdge_node(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityDPIAEdge) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityDPIAEdge_node,
+ func(ctx context.Context) (any, error) {
+ return obj.Node, nil
+ },
+ nil,
+ ec.marshalNProcessingActivityDPIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDpia,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityDPIAEdge_node(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityDPIAEdge",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_ProcessingActivityDPIA_id(ctx, field)
+ case "processingActivity":
+ return ec.fieldContext_ProcessingActivityDPIA_processingActivity(ctx, field)
+ case "organization":
+ return ec.fieldContext_ProcessingActivityDPIA_organization(ctx, field)
+ case "description":
+ return ec.fieldContext_ProcessingActivityDPIA_description(ctx, field)
+ case "necessityAndProportionality":
+ return ec.fieldContext_ProcessingActivityDPIA_necessityAndProportionality(ctx, field)
+ case "potentialRisk":
+ return ec.fieldContext_ProcessingActivityDPIA_potentialRisk(ctx, field)
+ case "mitigations":
+ return ec.fieldContext_ProcessingActivityDPIA_mitigations(ctx, field)
+ case "residualRisk":
+ return ec.fieldContext_ProcessingActivityDPIA_residualRisk(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_ProcessingActivityDPIA_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_ProcessingActivityDPIA_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityDPIA", field.Name)
+ },
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _ProcessingActivityEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityEdge) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -41842,8 +44116,20 @@ func (ec *executionContext) fieldContext_ProcessingActivityEdge_node(_ context.C
return ec.fieldContext_ProcessingActivity_dataProtectionImpactAssessment(ctx, field)
case "transferImpactAssessment":
return ec.fieldContext_ProcessingActivity_transferImpactAssessment(ctx, field)
+ case "lastReviewDate":
+ return ec.fieldContext_ProcessingActivity_lastReviewDate(ctx, field)
+ case "nextReviewDate":
+ return ec.fieldContext_ProcessingActivity_nextReviewDate(ctx, field)
+ case "role":
+ return ec.fieldContext_ProcessingActivity_role(ctx, field)
+ case "dataProtectionOfficer":
+ return ec.fieldContext_ProcessingActivity_dataProtectionOfficer(ctx, field)
case "vendors":
return ec.fieldContext_ProcessingActivity_vendors(ctx, field)
+ case "dpia":
+ return ec.fieldContext_ProcessingActivity_dpia(ctx, field)
+ case "tia":
+ return ec.fieldContext_ProcessingActivity_tia(ctx, field)
case "createdAt":
return ec.fieldContext_ProcessingActivity_createdAt(ctx, field)
case "updatedAt":
@@ -41855,6 +44141,613 @@ func (ec *executionContext) fieldContext_ProcessingActivityEdge_node(_ context.C
return fc, nil
}
+func (ec *executionContext) _ProcessingActivityTIA_id(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIA_id,
+ func(ctx context.Context) (any, error) {
+ return obj.ID, nil
+ },
+ nil,
+ ec.marshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIA_id(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type ID does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIA_processingActivity(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIA_processingActivity,
+ func(ctx context.Context) (any, error) {
+ return ec.resolvers.ProcessingActivityTIA().ProcessingActivity(ctx, obj)
+ },
+ nil,
+ ec.marshalNProcessingActivity2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivity,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIA_processingActivity(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIA",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_ProcessingActivity_id(ctx, field)
+ case "snapshotId":
+ return ec.fieldContext_ProcessingActivity_snapshotId(ctx, field)
+ case "sourceId":
+ return ec.fieldContext_ProcessingActivity_sourceId(ctx, field)
+ case "organization":
+ return ec.fieldContext_ProcessingActivity_organization(ctx, field)
+ case "name":
+ return ec.fieldContext_ProcessingActivity_name(ctx, field)
+ case "purpose":
+ return ec.fieldContext_ProcessingActivity_purpose(ctx, field)
+ case "dataSubjectCategory":
+ return ec.fieldContext_ProcessingActivity_dataSubjectCategory(ctx, field)
+ case "personalDataCategory":
+ return ec.fieldContext_ProcessingActivity_personalDataCategory(ctx, field)
+ case "specialOrCriminalData":
+ return ec.fieldContext_ProcessingActivity_specialOrCriminalData(ctx, field)
+ case "consentEvidenceLink":
+ return ec.fieldContext_ProcessingActivity_consentEvidenceLink(ctx, field)
+ case "lawfulBasis":
+ return ec.fieldContext_ProcessingActivity_lawfulBasis(ctx, field)
+ case "recipients":
+ return ec.fieldContext_ProcessingActivity_recipients(ctx, field)
+ case "location":
+ return ec.fieldContext_ProcessingActivity_location(ctx, field)
+ case "internationalTransfers":
+ return ec.fieldContext_ProcessingActivity_internationalTransfers(ctx, field)
+ case "transferSafeguards":
+ return ec.fieldContext_ProcessingActivity_transferSafeguards(ctx, field)
+ case "retentionPeriod":
+ return ec.fieldContext_ProcessingActivity_retentionPeriod(ctx, field)
+ case "securityMeasures":
+ return ec.fieldContext_ProcessingActivity_securityMeasures(ctx, field)
+ case "dataProtectionImpactAssessment":
+ return ec.fieldContext_ProcessingActivity_dataProtectionImpactAssessment(ctx, field)
+ case "transferImpactAssessment":
+ return ec.fieldContext_ProcessingActivity_transferImpactAssessment(ctx, field)
+ case "lastReviewDate":
+ return ec.fieldContext_ProcessingActivity_lastReviewDate(ctx, field)
+ case "nextReviewDate":
+ return ec.fieldContext_ProcessingActivity_nextReviewDate(ctx, field)
+ case "role":
+ return ec.fieldContext_ProcessingActivity_role(ctx, field)
+ case "dataProtectionOfficer":
+ return ec.fieldContext_ProcessingActivity_dataProtectionOfficer(ctx, field)
+ case "vendors":
+ return ec.fieldContext_ProcessingActivity_vendors(ctx, field)
+ case "dpia":
+ return ec.fieldContext_ProcessingActivity_dpia(ctx, field)
+ case "tia":
+ return ec.fieldContext_ProcessingActivity_tia(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_ProcessingActivity_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_ProcessingActivity_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivity", field.Name)
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIA_organization(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIA_organization,
+ func(ctx context.Context) (any, error) {
+ return ec.resolvers.ProcessingActivityTIA().Organization(ctx, obj)
+ },
+ nil,
+ ec.marshalNOrganization2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐOrganization,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIA_organization(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIA",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_Organization_id(ctx, field)
+ case "name":
+ return ec.fieldContext_Organization_name(ctx, field)
+ case "logoUrl":
+ return ec.fieldContext_Organization_logoUrl(ctx, field)
+ case "horizontalLogoUrl":
+ return ec.fieldContext_Organization_horizontalLogoUrl(ctx, field)
+ case "description":
+ return ec.fieldContext_Organization_description(ctx, field)
+ case "websiteUrl":
+ return ec.fieldContext_Organization_websiteUrl(ctx, field)
+ case "email":
+ return ec.fieldContext_Organization_email(ctx, field)
+ case "headquarterAddress":
+ return ec.fieldContext_Organization_headquarterAddress(ctx, field)
+ case "context":
+ return ec.fieldContext_Organization_context(ctx, field)
+ case "memberships":
+ return ec.fieldContext_Organization_memberships(ctx, field)
+ case "invitations":
+ return ec.fieldContext_Organization_invitations(ctx, field)
+ case "slackConnections":
+ return ec.fieldContext_Organization_slackConnections(ctx, field)
+ case "frameworks":
+ return ec.fieldContext_Organization_frameworks(ctx, field)
+ case "controls":
+ return ec.fieldContext_Organization_controls(ctx, field)
+ case "vendors":
+ return ec.fieldContext_Organization_vendors(ctx, field)
+ case "peoples":
+ return ec.fieldContext_Organization_peoples(ctx, field)
+ case "documents":
+ return ec.fieldContext_Organization_documents(ctx, field)
+ case "meetings":
+ return ec.fieldContext_Organization_meetings(ctx, field)
+ case "measures":
+ return ec.fieldContext_Organization_measures(ctx, field)
+ case "risks":
+ return ec.fieldContext_Organization_risks(ctx, field)
+ case "tasks":
+ return ec.fieldContext_Organization_tasks(ctx, field)
+ case "assets":
+ return ec.fieldContext_Organization_assets(ctx, field)
+ case "data":
+ return ec.fieldContext_Organization_data(ctx, field)
+ case "audits":
+ return ec.fieldContext_Organization_audits(ctx, field)
+ case "nonconformities":
+ return ec.fieldContext_Organization_nonconformities(ctx, field)
+ case "obligations":
+ return ec.fieldContext_Organization_obligations(ctx, field)
+ case "continualImprovements":
+ return ec.fieldContext_Organization_continualImprovements(ctx, field)
+ case "processingActivities":
+ return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
+ case "snapshots":
+ return ec.fieldContext_Organization_snapshots(ctx, field)
+ case "trustCenterFiles":
+ return ec.fieldContext_Organization_trustCenterFiles(ctx, field)
+ case "trustCenter":
+ return ec.fieldContext_Organization_trustCenter(ctx, field)
+ case "customDomain":
+ return ec.fieldContext_Organization_customDomain(ctx, field)
+ case "samlConfigurations":
+ return ec.fieldContext_Organization_samlConfigurations(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_Organization_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_Organization_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type Organization", field.Name)
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIA_dataSubjects(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIA_dataSubjects,
+ func(ctx context.Context) (any, error) {
+ return obj.DataSubjects, nil
+ },
+ nil,
+ ec.marshalOString2ᚖstring,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIA_dataSubjects(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type String does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIA_legalMechanism(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIA_legalMechanism,
+ func(ctx context.Context) (any, error) {
+ return obj.LegalMechanism, nil
+ },
+ nil,
+ ec.marshalOString2ᚖstring,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIA_legalMechanism(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type String does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIA_transfer(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIA_transfer,
+ func(ctx context.Context) (any, error) {
+ return obj.Transfer, nil
+ },
+ nil,
+ ec.marshalOString2ᚖstring,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIA_transfer(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type String does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIA_localLawRisk(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIA_localLawRisk,
+ func(ctx context.Context) (any, error) {
+ return obj.LocalLawRisk, nil
+ },
+ nil,
+ ec.marshalOString2ᚖstring,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIA_localLawRisk(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type String does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIA_supplementaryMeasures(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIA_supplementaryMeasures,
+ func(ctx context.Context) (any, error) {
+ return obj.SupplementaryMeasures, nil
+ },
+ nil,
+ ec.marshalOString2ᚖstring,
+ true,
+ false,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIA_supplementaryMeasures(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type String does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIA_createdAt(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIA_createdAt,
+ func(ctx context.Context) (any, error) {
+ return obj.CreatedAt, nil
+ },
+ nil,
+ ec.marshalNDatetime2timeᚐTime,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIA_createdAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type Datetime does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIA_updatedAt(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTia) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIA_updatedAt,
+ func(ctx context.Context) (any, error) {
+ return obj.UpdatedAt, nil
+ },
+ nil,
+ ec.marshalNDatetime2timeᚐTime,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIA_updatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIA",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type Datetime does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIAConnection_totalCount(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTIAConnection) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIAConnection_totalCount,
+ func(ctx context.Context) (any, error) {
+ return ec.resolvers.ProcessingActivityTIAConnection().TotalCount(ctx, obj)
+ },
+ nil,
+ ec.marshalNInt2int,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIAConnection_totalCount(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIAConnection",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type Int does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIAConnection_edges(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTIAConnection) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIAConnection_edges,
+ func(ctx context.Context) (any, error) {
+ return obj.Edges, nil
+ },
+ nil,
+ ec.marshalNProcessingActivityTIAEdge2ᚕᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTIAEdgeᚄ,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIAConnection_edges(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIAConnection",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "cursor":
+ return ec.fieldContext_ProcessingActivityTIAEdge_cursor(ctx, field)
+ case "node":
+ return ec.fieldContext_ProcessingActivityTIAEdge_node(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityTIAEdge", field.Name)
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIAConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTIAConnection) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIAConnection_pageInfo,
+ func(ctx context.Context) (any, error) {
+ return obj.PageInfo, nil
+ },
+ nil,
+ ec.marshalNPageInfo2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPageInfo,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIAConnection_pageInfo(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIAConnection",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "hasNextPage":
+ return ec.fieldContext_PageInfo_hasNextPage(ctx, field)
+ case "hasPreviousPage":
+ return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field)
+ case "startCursor":
+ return ec.fieldContext_PageInfo_startCursor(ctx, field)
+ case "endCursor":
+ return ec.fieldContext_PageInfo_endCursor(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name)
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIAEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTIAEdge) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIAEdge_cursor,
+ func(ctx context.Context) (any, error) {
+ return obj.Cursor, nil
+ },
+ nil,
+ ec.marshalNCursorKey2goᚗproboᚗincᚋproboᚋpkgᚋpageᚐCursorKey,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIAEdge_cursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIAEdge",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type CursorKey does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _ProcessingActivityTIAEdge_node(ctx context.Context, field graphql.CollectedField, obj *types.ProcessingActivityTIAEdge) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_ProcessingActivityTIAEdge_node,
+ func(ctx context.Context) (any, error) {
+ return obj.Node, nil
+ },
+ nil,
+ ec.marshalNProcessingActivityTIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTia,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_ProcessingActivityTIAEdge_node(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "ProcessingActivityTIAEdge",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_ProcessingActivityTIA_id(ctx, field)
+ case "processingActivity":
+ return ec.fieldContext_ProcessingActivityTIA_processingActivity(ctx, field)
+ case "organization":
+ return ec.fieldContext_ProcessingActivityTIA_organization(ctx, field)
+ case "dataSubjects":
+ return ec.fieldContext_ProcessingActivityTIA_dataSubjects(ctx, field)
+ case "legalMechanism":
+ return ec.fieldContext_ProcessingActivityTIA_legalMechanism(ctx, field)
+ case "transfer":
+ return ec.fieldContext_ProcessingActivityTIA_transfer(ctx, field)
+ case "localLawRisk":
+ return ec.fieldContext_ProcessingActivityTIA_localLawRisk(ctx, field)
+ case "supplementaryMeasures":
+ return ec.fieldContext_ProcessingActivityTIA_supplementaryMeasures(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_ProcessingActivityTIA_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_ProcessingActivityTIA_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityTIA", field.Name)
+ },
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _PublishDocumentVersionPayload_documentVersion(ctx context.Context, field graphql.CollectedField, obj *types.PublishDocumentVersionPayload) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -43057,6 +45950,10 @@ func (ec *executionContext) fieldContext_Risk_organization(_ context.Context, fi
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -43646,6 +46543,10 @@ func (ec *executionContext) fieldContext_SAMLConfiguration_organization(_ contex
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -45239,6 +48140,10 @@ func (ec *executionContext) fieldContext_Snapshot_organization(_ context.Context
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -45907,6 +48812,10 @@ func (ec *executionContext) fieldContext_Task_organization(_ context.Context, fi
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -46529,6 +49438,10 @@ func (ec *executionContext) fieldContext_TrustCenter_organization(_ context.Cont
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -47960,6 +50873,10 @@ func (ec *executionContext) fieldContext_TrustCenterFile_organization(_ context.
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -49450,6 +52367,10 @@ func (ec *executionContext) fieldContext_UpdateOrganizationPayload_organization(
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -49522,6 +52443,57 @@ func (ec *executionContext) fieldContext_UpdatePeoplePayload_people(_ context.Co
return fc, nil
}
+func (ec *executionContext) _UpdateProcessingActivityDPIAPayload_processingActivityDpia(ctx context.Context, field graphql.CollectedField, obj *types.UpdateProcessingActivityDPIAPayload) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_UpdateProcessingActivityDPIAPayload_processingActivityDpia,
+ func(ctx context.Context) (any, error) {
+ return obj.ProcessingActivityDpia, nil
+ },
+ nil,
+ ec.marshalNProcessingActivityDPIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDpia,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_UpdateProcessingActivityDPIAPayload_processingActivityDpia(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "UpdateProcessingActivityDPIAPayload",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_ProcessingActivityDPIA_id(ctx, field)
+ case "processingActivity":
+ return ec.fieldContext_ProcessingActivityDPIA_processingActivity(ctx, field)
+ case "organization":
+ return ec.fieldContext_ProcessingActivityDPIA_organization(ctx, field)
+ case "description":
+ return ec.fieldContext_ProcessingActivityDPIA_description(ctx, field)
+ case "necessityAndProportionality":
+ return ec.fieldContext_ProcessingActivityDPIA_necessityAndProportionality(ctx, field)
+ case "potentialRisk":
+ return ec.fieldContext_ProcessingActivityDPIA_potentialRisk(ctx, field)
+ case "mitigations":
+ return ec.fieldContext_ProcessingActivityDPIA_mitigations(ctx, field)
+ case "residualRisk":
+ return ec.fieldContext_ProcessingActivityDPIA_residualRisk(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_ProcessingActivityDPIA_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_ProcessingActivityDPIA_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityDPIA", field.Name)
+ },
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _UpdateProcessingActivityPayload_processingActivity(ctx context.Context, field graphql.CollectedField, obj *types.UpdateProcessingActivityPayload) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -49584,8 +52556,20 @@ func (ec *executionContext) fieldContext_UpdateProcessingActivityPayload_process
return ec.fieldContext_ProcessingActivity_dataProtectionImpactAssessment(ctx, field)
case "transferImpactAssessment":
return ec.fieldContext_ProcessingActivity_transferImpactAssessment(ctx, field)
+ case "lastReviewDate":
+ return ec.fieldContext_ProcessingActivity_lastReviewDate(ctx, field)
+ case "nextReviewDate":
+ return ec.fieldContext_ProcessingActivity_nextReviewDate(ctx, field)
+ case "role":
+ return ec.fieldContext_ProcessingActivity_role(ctx, field)
+ case "dataProtectionOfficer":
+ return ec.fieldContext_ProcessingActivity_dataProtectionOfficer(ctx, field)
case "vendors":
return ec.fieldContext_ProcessingActivity_vendors(ctx, field)
+ case "dpia":
+ return ec.fieldContext_ProcessingActivity_dpia(ctx, field)
+ case "tia":
+ return ec.fieldContext_ProcessingActivity_tia(ctx, field)
case "createdAt":
return ec.fieldContext_ProcessingActivity_createdAt(ctx, field)
case "updatedAt":
@@ -49597,6 +52581,57 @@ func (ec *executionContext) fieldContext_UpdateProcessingActivityPayload_process
return fc, nil
}
+func (ec *executionContext) _UpdateProcessingActivityTIAPayload_processingActivityTia(ctx context.Context, field graphql.CollectedField, obj *types.UpdateProcessingActivityTIAPayload) (ret graphql.Marshaler) {
+ return graphql.ResolveField(
+ ctx,
+ ec.OperationContext,
+ field,
+ ec.fieldContext_UpdateProcessingActivityTIAPayload_processingActivityTia,
+ func(ctx context.Context) (any, error) {
+ return obj.ProcessingActivityTia, nil
+ },
+ nil,
+ ec.marshalNProcessingActivityTIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTia,
+ true,
+ true,
+ )
+}
+
+func (ec *executionContext) fieldContext_UpdateProcessingActivityTIAPayload_processingActivityTia(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "UpdateProcessingActivityTIAPayload",
+ Field: field,
+ IsMethod: false,
+ IsResolver: false,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ switch field.Name {
+ case "id":
+ return ec.fieldContext_ProcessingActivityTIA_id(ctx, field)
+ case "processingActivity":
+ return ec.fieldContext_ProcessingActivityTIA_processingActivity(ctx, field)
+ case "organization":
+ return ec.fieldContext_ProcessingActivityTIA_organization(ctx, field)
+ case "dataSubjects":
+ return ec.fieldContext_ProcessingActivityTIA_dataSubjects(ctx, field)
+ case "legalMechanism":
+ return ec.fieldContext_ProcessingActivityTIA_legalMechanism(ctx, field)
+ case "transfer":
+ return ec.fieldContext_ProcessingActivityTIA_transfer(ctx, field)
+ case "localLawRisk":
+ return ec.fieldContext_ProcessingActivityTIA_localLawRisk(ctx, field)
+ case "supplementaryMeasures":
+ return ec.fieldContext_ProcessingActivityTIA_supplementaryMeasures(ctx, field)
+ case "createdAt":
+ return ec.fieldContext_ProcessingActivityTIA_createdAt(ctx, field)
+ case "updatedAt":
+ return ec.fieldContext_ProcessingActivityTIA_updatedAt(ctx, field)
+ }
+ return nil, fmt.Errorf("no field named %q was found under type ProcessingActivityTIA", field.Name)
+ },
+ }
+ return fc, nil
+}
+
func (ec *executionContext) _UpdateRiskPayload_risk(ctx context.Context, field graphql.CollectedField, obj *types.UpdateRiskPayload) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -51096,6 +54131,10 @@ func (ec *executionContext) fieldContext_Vendor_organization(_ context.Context,
return ec.fieldContext_Organization_continualImprovements(ctx, field)
case "processingActivities":
return ec.fieldContext_Organization_processingActivities(ctx, field)
+ case "dataProtectionImpactAssessments":
+ return ec.fieldContext_Organization_dataProtectionImpactAssessments(ctx, field)
+ case "transferImpactAssessments":
+ return ec.fieldContext_Organization_transferImpactAssessments(ctx, field)
case "snapshots":
return ec.fieldContext_Organization_snapshots(ctx, field)
case "trustCenterFiles":
@@ -57990,6 +61029,68 @@ func (ec *executionContext) unmarshalInputCreatePeopleInput(ctx context.Context,
return it, nil
}
+func (ec *executionContext) unmarshalInputCreateProcessingActivityDPIAInput(ctx context.Context, obj any) (types.CreateProcessingActivityDPIAInput, error) {
+ var it types.CreateProcessingActivityDPIAInput
+ asMap := map[string]any{}
+ for k, v := range obj.(map[string]any) {
+ asMap[k] = v
+ }
+
+ fieldsInOrder := [...]string{"processingActivityId", "description", "necessityAndProportionality", "potentialRisk", "mitigations", "residualRisk"}
+ for _, k := range fieldsInOrder {
+ v, ok := asMap[k]
+ if !ok {
+ continue
+ }
+ switch k {
+ case "processingActivityId":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("processingActivityId"))
+ data, err := ec.unmarshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.ProcessingActivityID = data
+ case "description":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("description"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Description = data
+ case "necessityAndProportionality":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("necessityAndProportionality"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.NecessityAndProportionality = data
+ case "potentialRisk":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("potentialRisk"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.PotentialRisk = data
+ case "mitigations":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("mitigations"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Mitigations = data
+ case "residualRisk":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("residualRisk"))
+ data, err := ec.unmarshalOProcessingActivityDPIAResidualRisk2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAResidualRisk(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.ResidualRisk = data
+ }
+ }
+
+ return it, nil
+}
+
func (ec *executionContext) unmarshalInputCreateProcessingActivityInput(ctx context.Context, obj any) (types.CreateProcessingActivityInput, error) {
var it types.CreateProcessingActivityInput
asMap := map[string]any{}
@@ -57997,7 +61098,7 @@ func (ec *executionContext) unmarshalInputCreateProcessingActivityInput(ctx cont
asMap[k] = v
}
- fieldsInOrder := [...]string{"organizationId", "name", "purpose", "dataSubjectCategory", "personalDataCategory", "specialOrCriminalData", "consentEvidenceLink", "lawfulBasis", "recipients", "location", "internationalTransfers", "transferSafeguards", "retentionPeriod", "securityMeasures", "dataProtectionImpactAssessment", "transferImpactAssessment", "vendorIds"}
+ fieldsInOrder := [...]string{"organizationId", "name", "purpose", "dataSubjectCategory", "personalDataCategory", "specialOrCriminalData", "consentEvidenceLink", "lawfulBasis", "recipients", "location", "internationalTransfers", "transferSafeguards", "retentionPeriod", "securityMeasures", "dataProtectionImpactAssessment", "transferImpactAssessment", "lastReviewDate", "nextReviewDate", "role", "dataProtectionOfficerId", "vendorIds"}
for _, k := range fieldsInOrder {
v, ok := asMap[k]
if !ok {
@@ -58116,6 +61217,34 @@ func (ec *executionContext) unmarshalInputCreateProcessingActivityInput(ctx cont
return it, err
}
it.TransferImpactAssessment = data
+ case "lastReviewDate":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("lastReviewDate"))
+ data, err := ec.unmarshalODatetime2ᚖtimeᚐTime(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.LastReviewDate = data
+ case "nextReviewDate":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("nextReviewDate"))
+ data, err := ec.unmarshalODatetime2ᚖtimeᚐTime(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.NextReviewDate = data
+ case "role":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("role"))
+ data, err := ec.unmarshalNProcessingActivityRole2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Role = data
+ case "dataProtectionOfficerId":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("dataProtectionOfficerId"))
+ data, err := ec.unmarshalOID2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.DataProtectionOfficerID = data
case "vendorIds":
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("vendorIds"))
data, err := ec.unmarshalOID2ᚕgoᚗproboᚗincᚋproboᚋpkgᚋgidᚐGIDᚄ(ctx, v)
@@ -58129,6 +61258,68 @@ func (ec *executionContext) unmarshalInputCreateProcessingActivityInput(ctx cont
return it, nil
}
+func (ec *executionContext) unmarshalInputCreateProcessingActivityTIAInput(ctx context.Context, obj any) (types.CreateProcessingActivityTIAInput, error) {
+ var it types.CreateProcessingActivityTIAInput
+ asMap := map[string]any{}
+ for k, v := range obj.(map[string]any) {
+ asMap[k] = v
+ }
+
+ fieldsInOrder := [...]string{"processingActivityId", "dataSubjects", "legalMechanism", "transfer", "localLawRisk", "supplementaryMeasures"}
+ for _, k := range fieldsInOrder {
+ v, ok := asMap[k]
+ if !ok {
+ continue
+ }
+ switch k {
+ case "processingActivityId":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("processingActivityId"))
+ data, err := ec.unmarshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.ProcessingActivityID = data
+ case "dataSubjects":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("dataSubjects"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.DataSubjects = data
+ case "legalMechanism":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("legalMechanism"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.LegalMechanism = data
+ case "transfer":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("transfer"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Transfer = data
+ case "localLawRisk":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("localLawRisk"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.LocalLawRisk = data
+ case "supplementaryMeasures":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("supplementaryMeasures"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.SupplementaryMeasures = data
+ }
+ }
+
+ return it, nil
+}
+
func (ec *executionContext) unmarshalInputCreateRiskDocumentMappingInput(ctx context.Context, obj any) (types.CreateRiskDocumentMappingInput, error) {
var it types.CreateRiskDocumentMappingInput
asMap := map[string]any{}
@@ -59763,6 +62954,33 @@ func (ec *executionContext) unmarshalInputDeletePeopleInput(ctx context.Context,
return it, nil
}
+func (ec *executionContext) unmarshalInputDeleteProcessingActivityDPIAInput(ctx context.Context, obj any) (types.DeleteProcessingActivityDPIAInput, error) {
+ var it types.DeleteProcessingActivityDPIAInput
+ asMap := map[string]any{}
+ for k, v := range obj.(map[string]any) {
+ asMap[k] = v
+ }
+
+ fieldsInOrder := [...]string{"processingActivityDpiaId"}
+ for _, k := range fieldsInOrder {
+ v, ok := asMap[k]
+ if !ok {
+ continue
+ }
+ switch k {
+ case "processingActivityDpiaId":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("processingActivityDpiaId"))
+ data, err := ec.unmarshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.ProcessingActivityDpiaID = data
+ }
+ }
+
+ return it, nil
+}
+
func (ec *executionContext) unmarshalInputDeleteProcessingActivityInput(ctx context.Context, obj any) (types.DeleteProcessingActivityInput, error) {
var it types.DeleteProcessingActivityInput
asMap := map[string]any{}
@@ -59790,6 +63008,33 @@ func (ec *executionContext) unmarshalInputDeleteProcessingActivityInput(ctx cont
return it, nil
}
+func (ec *executionContext) unmarshalInputDeleteProcessingActivityTIAInput(ctx context.Context, obj any) (types.DeleteProcessingActivityTIAInput, error) {
+ var it types.DeleteProcessingActivityTIAInput
+ asMap := map[string]any{}
+ for k, v := range obj.(map[string]any) {
+ asMap[k] = v
+ }
+
+ fieldsInOrder := [...]string{"processingActivityTiaId"}
+ for _, k := range fieldsInOrder {
+ v, ok := asMap[k]
+ if !ok {
+ continue
+ }
+ switch k {
+ case "processingActivityTiaId":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("processingActivityTiaId"))
+ data, err := ec.unmarshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.ProcessingActivityTiaID = data
+ }
+ }
+
+ return it, nil
+}
+
func (ec *executionContext) unmarshalInputDeleteRiskDocumentMappingInput(ctx context.Context, obj any) (types.DeleteRiskDocumentMappingInput, error) {
var it types.DeleteRiskDocumentMappingInput
asMap := map[string]any{}
@@ -61377,6 +64622,40 @@ func (ec *executionContext) unmarshalInputPeopleOrder(ctx context.Context, obj a
return it, nil
}
+func (ec *executionContext) unmarshalInputProcessingActivityDPIAOrder(ctx context.Context, obj any) (types.ProcessingActivityDPIAOrderBy, error) {
+ var it types.ProcessingActivityDPIAOrderBy
+ asMap := map[string]any{}
+ for k, v := range obj.(map[string]any) {
+ asMap[k] = v
+ }
+
+ fieldsInOrder := [...]string{"direction", "field"}
+ for _, k := range fieldsInOrder {
+ v, ok := asMap[k]
+ if !ok {
+ continue
+ }
+ switch k {
+ case "direction":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction"))
+ data, err := ec.unmarshalNOrderDirection2goᚗproboᚗincᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Direction = data
+ case "field":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field"))
+ data, err := ec.unmarshalNProcessingActivityDPIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAOrderField(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Field = data
+ }
+ }
+
+ return it, nil
+}
+
func (ec *executionContext) unmarshalInputProcessingActivityFilter(ctx context.Context, obj any) (types.ProcessingActivityFilter, error) {
var it types.ProcessingActivityFilter
asMap := map[string]any{}
@@ -61438,6 +64717,40 @@ func (ec *executionContext) unmarshalInputProcessingActivityOrder(ctx context.Co
return it, nil
}
+func (ec *executionContext) unmarshalInputProcessingActivityTIAOrder(ctx context.Context, obj any) (types.ProcessingActivityTIAOrderBy, error) {
+ var it types.ProcessingActivityTIAOrderBy
+ asMap := map[string]any{}
+ for k, v := range obj.(map[string]any) {
+ asMap[k] = v
+ }
+
+ fieldsInOrder := [...]string{"direction", "field"}
+ for _, k := range fieldsInOrder {
+ v, ok := asMap[k]
+ if !ok {
+ continue
+ }
+ switch k {
+ case "direction":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction"))
+ data, err := ec.unmarshalNOrderDirection2goᚗproboᚗincᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Direction = data
+ case "field":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field"))
+ data, err := ec.unmarshalNProcessingActivityTIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityTIAOrderField(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Field = data
+ }
+ }
+
+ return it, nil
+}
+
func (ec *executionContext) unmarshalInputPublishDocumentVersionInput(ctx context.Context, obj any) (types.PublishDocumentVersionInput, error) {
var it types.PublishDocumentVersionInput
asMap := map[string]any{}
@@ -62967,6 +66280,68 @@ func (ec *executionContext) unmarshalInputUpdatePeopleInput(ctx context.Context,
return it, nil
}
+func (ec *executionContext) unmarshalInputUpdateProcessingActivityDPIAInput(ctx context.Context, obj any) (types.UpdateProcessingActivityDPIAInput, error) {
+ var it types.UpdateProcessingActivityDPIAInput
+ asMap := map[string]any{}
+ for k, v := range obj.(map[string]any) {
+ asMap[k] = v
+ }
+
+ fieldsInOrder := [...]string{"id", "description", "necessityAndProportionality", "potentialRisk", "mitigations", "residualRisk"}
+ for _, k := range fieldsInOrder {
+ v, ok := asMap[k]
+ if !ok {
+ continue
+ }
+ switch k {
+ case "id":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id"))
+ data, err := ec.unmarshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.ID = data
+ case "description":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("description"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Description = graphql.OmittableOf(data)
+ case "necessityAndProportionality":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("necessityAndProportionality"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.NecessityAndProportionality = graphql.OmittableOf(data)
+ case "potentialRisk":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("potentialRisk"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.PotentialRisk = graphql.OmittableOf(data)
+ case "mitigations":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("mitigations"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Mitigations = graphql.OmittableOf(data)
+ case "residualRisk":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("residualRisk"))
+ data, err := ec.unmarshalOProcessingActivityDPIAResidualRisk2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAResidualRisk(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.ResidualRisk = data
+ }
+ }
+
+ return it, nil
+}
+
func (ec *executionContext) unmarshalInputUpdateProcessingActivityInput(ctx context.Context, obj any) (types.UpdateProcessingActivityInput, error) {
var it types.UpdateProcessingActivityInput
asMap := map[string]any{}
@@ -62974,7 +66349,7 @@ func (ec *executionContext) unmarshalInputUpdateProcessingActivityInput(ctx cont
asMap[k] = v
}
- fieldsInOrder := [...]string{"id", "name", "purpose", "dataSubjectCategory", "personalDataCategory", "specialOrCriminalData", "consentEvidenceLink", "lawfulBasis", "recipients", "location", "internationalTransfers", "transferSafeguards", "retentionPeriod", "securityMeasures", "dataProtectionImpactAssessment", "transferImpactAssessment", "vendorIds"}
+ fieldsInOrder := [...]string{"id", "name", "purpose", "dataSubjectCategory", "personalDataCategory", "specialOrCriminalData", "consentEvidenceLink", "lawfulBasis", "recipients", "location", "internationalTransfers", "transferSafeguards", "retentionPeriod", "securityMeasures", "dataProtectionImpactAssessment", "transferImpactAssessment", "lastReviewDate", "nextReviewDate", "role", "dataProtectionOfficerId", "vendorIds"}
for _, k := range fieldsInOrder {
v, ok := asMap[k]
if !ok {
@@ -63093,6 +66468,34 @@ func (ec *executionContext) unmarshalInputUpdateProcessingActivityInput(ctx cont
return it, err
}
it.TransferImpactAssessment = data
+ case "lastReviewDate":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("lastReviewDate"))
+ data, err := ec.unmarshalODatetime2ᚖtimeᚐTime(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.LastReviewDate = graphql.OmittableOf(data)
+ case "nextReviewDate":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("nextReviewDate"))
+ data, err := ec.unmarshalODatetime2ᚖtimeᚐTime(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.NextReviewDate = graphql.OmittableOf(data)
+ case "role":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("role"))
+ data, err := ec.unmarshalOProcessingActivityRole2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Role = data
+ case "dataProtectionOfficerId":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("dataProtectionOfficerId"))
+ data, err := ec.unmarshalOID2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.DataProtectionOfficerID = graphql.OmittableOf(data)
case "vendorIds":
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("vendorIds"))
data, err := ec.unmarshalOID2ᚕgoᚗproboᚗincᚋproboᚋpkgᚋgidᚐGIDᚄ(ctx, v)
@@ -63106,6 +66509,68 @@ func (ec *executionContext) unmarshalInputUpdateProcessingActivityInput(ctx cont
return it, nil
}
+func (ec *executionContext) unmarshalInputUpdateProcessingActivityTIAInput(ctx context.Context, obj any) (types.UpdateProcessingActivityTIAInput, error) {
+ var it types.UpdateProcessingActivityTIAInput
+ asMap := map[string]any{}
+ for k, v := range obj.(map[string]any) {
+ asMap[k] = v
+ }
+
+ fieldsInOrder := [...]string{"id", "dataSubjects", "legalMechanism", "transfer", "localLawRisk", "supplementaryMeasures"}
+ for _, k := range fieldsInOrder {
+ v, ok := asMap[k]
+ if !ok {
+ continue
+ }
+ switch k {
+ case "id":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id"))
+ data, err := ec.unmarshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.ID = data
+ case "dataSubjects":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("dataSubjects"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.DataSubjects = graphql.OmittableOf(data)
+ case "legalMechanism":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("legalMechanism"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.LegalMechanism = graphql.OmittableOf(data)
+ case "transfer":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("transfer"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.Transfer = graphql.OmittableOf(data)
+ case "localLawRisk":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("localLawRisk"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.LocalLawRisk = graphql.OmittableOf(data)
+ case "supplementaryMeasures":
+ ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("supplementaryMeasures"))
+ data, err := ec.unmarshalOString2ᚖstring(ctx, v)
+ if err != nil {
+ return it, err
+ }
+ it.SupplementaryMeasures = graphql.OmittableOf(data)
+ }
+ }
+
+ return it, nil
+}
+
func (ec *executionContext) unmarshalInputUpdateRiskInput(ctx context.Context, obj any) (types.UpdateRiskInput, error) {
var it types.UpdateRiskInput
asMap := map[string]any{}
@@ -64600,6 +68065,20 @@ func (ec *executionContext) _Node(ctx context.Context, sel ast.SelectionSet, obj
return graphql.Null
}
return ec._Report(ctx, sel, obj)
+ case types.ProcessingActivityTia:
+ return ec._ProcessingActivityTIA(ctx, sel, &obj)
+ case *types.ProcessingActivityTia:
+ if obj == nil {
+ return graphql.Null
+ }
+ return ec._ProcessingActivityTIA(ctx, sel, obj)
+ case types.ProcessingActivityDpia:
+ return ec._ProcessingActivityDPIA(ctx, sel, &obj)
+ case *types.ProcessingActivityDpia:
+ if obj == nil {
+ return graphql.Null
+ }
+ return ec._ProcessingActivityDPIA(ctx, sel, obj)
case types.ProcessingActivity:
return ec._ProcessingActivity(ctx, sel, &obj)
case *types.ProcessingActivity:
@@ -67249,6 +70728,45 @@ func (ec *executionContext) _CreatePeoplePayload(ctx context.Context, sel ast.Se
return out
}
+var createProcessingActivityDPIAPayloadImplementors = []string{"CreateProcessingActivityDPIAPayload"}
+
+func (ec *executionContext) _CreateProcessingActivityDPIAPayload(ctx context.Context, sel ast.SelectionSet, obj *types.CreateProcessingActivityDPIAPayload) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, createProcessingActivityDPIAPayloadImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("CreateProcessingActivityDPIAPayload")
+ case "processingActivityDpia":
+ out.Values[i] = ec._CreateProcessingActivityDPIAPayload_processingActivityDpia(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
var createProcessingActivityPayloadImplementors = []string{"CreateProcessingActivityPayload"}
func (ec *executionContext) _CreateProcessingActivityPayload(ctx context.Context, sel ast.SelectionSet, obj *types.CreateProcessingActivityPayload) graphql.Marshaler {
@@ -67288,6 +70806,45 @@ func (ec *executionContext) _CreateProcessingActivityPayload(ctx context.Context
return out
}
+var createProcessingActivityTIAPayloadImplementors = []string{"CreateProcessingActivityTIAPayload"}
+
+func (ec *executionContext) _CreateProcessingActivityTIAPayload(ctx context.Context, sel ast.SelectionSet, obj *types.CreateProcessingActivityTIAPayload) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, createProcessingActivityTIAPayloadImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("CreateProcessingActivityTIAPayload")
+ case "processingActivityTia":
+ out.Values[i] = ec._CreateProcessingActivityTIAPayload_processingActivityTia(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
var createRiskDocumentMappingPayloadImplementors = []string{"CreateRiskDocumentMappingPayload"}
func (ec *executionContext) _CreateRiskDocumentMappingPayload(ctx context.Context, sel ast.SelectionSet, obj *types.CreateRiskDocumentMappingPayload) graphql.Marshaler {
@@ -69189,6 +72746,45 @@ func (ec *executionContext) _DeletePeoplePayload(ctx context.Context, sel ast.Se
return out
}
+var deleteProcessingActivityDPIAPayloadImplementors = []string{"DeleteProcessingActivityDPIAPayload"}
+
+func (ec *executionContext) _DeleteProcessingActivityDPIAPayload(ctx context.Context, sel ast.SelectionSet, obj *types.DeleteProcessingActivityDPIAPayload) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, deleteProcessingActivityDPIAPayloadImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("DeleteProcessingActivityDPIAPayload")
+ case "deletedProcessingActivityDpiaId":
+ out.Values[i] = ec._DeleteProcessingActivityDPIAPayload_deletedProcessingActivityDpiaId(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
var deleteProcessingActivityPayloadImplementors = []string{"DeleteProcessingActivityPayload"}
func (ec *executionContext) _DeleteProcessingActivityPayload(ctx context.Context, sel ast.SelectionSet, obj *types.DeleteProcessingActivityPayload) graphql.Marshaler {
@@ -69228,6 +72824,45 @@ func (ec *executionContext) _DeleteProcessingActivityPayload(ctx context.Context
return out
}
+var deleteProcessingActivityTIAPayloadImplementors = []string{"DeleteProcessingActivityTIAPayload"}
+
+func (ec *executionContext) _DeleteProcessingActivityTIAPayload(ctx context.Context, sel ast.SelectionSet, obj *types.DeleteProcessingActivityTIAPayload) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, deleteProcessingActivityTIAPayloadImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("DeleteProcessingActivityTIAPayload")
+ case "deletedProcessingActivityTiaId":
+ out.Values[i] = ec._DeleteProcessingActivityTIAPayload_deletedProcessingActivityTiaId(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
var deleteRiskDocumentMappingPayloadImplementors = []string{"DeleteRiskDocumentMappingPayload"}
func (ec *executionContext) _DeleteRiskDocumentMappingPayload(ctx context.Context, sel ast.SelectionSet, obj *types.DeleteRiskDocumentMappingPayload) graphql.Marshaler {
@@ -73969,6 +77604,48 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet)
if out.Values[i] == graphql.Null {
out.Invalids++
}
+ case "createProcessingActivityDPIA":
+ out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
+ return ec._Mutation_createProcessingActivityDPIA(ctx, field)
+ })
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ case "updateProcessingActivityDPIA":
+ out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
+ return ec._Mutation_updateProcessingActivityDPIA(ctx, field)
+ })
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ case "deleteProcessingActivityDPIA":
+ out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
+ return ec._Mutation_deleteProcessingActivityDPIA(ctx, field)
+ })
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ case "createProcessingActivityTIA":
+ out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
+ return ec._Mutation_createProcessingActivityTIA(ctx, field)
+ })
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ case "updateProcessingActivityTIA":
+ out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
+ return ec._Mutation_updateProcessingActivityTIA(ctx, field)
+ })
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ case "deleteProcessingActivityTIA":
+ out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
+ return ec._Mutation_deleteProcessingActivityTIA(ctx, field)
+ })
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
case "createSnapshot":
out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
return ec._Mutation_createSnapshot(ctx, field)
@@ -75453,6 +79130,78 @@ func (ec *executionContext) _Organization(ctx context.Context, sel ast.Selection
continue
}
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
+ case "dataProtectionImpactAssessments":
+ field := field
+
+ innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._Organization_dataProtectionImpactAssessments(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&fs.Invalids, 1)
+ }
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
+ case "transferImpactAssessments":
+ field := field
+
+ innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._Organization_transferImpactAssessments(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&fs.Invalids, 1)
+ }
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
case "snapshots":
field := field
@@ -76141,6 +79890,48 @@ func (ec *executionContext) _ProcessingActivity(ctx context.Context, sel ast.Sel
if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1)
}
+ case "lastReviewDate":
+ out.Values[i] = ec._ProcessingActivity_lastReviewDate(ctx, field, obj)
+ case "nextReviewDate":
+ out.Values[i] = ec._ProcessingActivity_nextReviewDate(ctx, field, obj)
+ case "role":
+ out.Values[i] = ec._ProcessingActivity_role(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ case "dataProtectionOfficer":
+ field := field
+
+ innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._ProcessingActivity_dataProtectionOfficer(ctx, field, obj)
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
case "vendors":
field := field
@@ -76176,6 +79967,72 @@ func (ec *executionContext) _ProcessingActivity(ctx context.Context, sel ast.Sel
continue
}
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
+ case "dpia":
+ field := field
+
+ innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._ProcessingActivity_dpia(ctx, field, obj)
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
+ case "tia":
+ field := field
+
+ innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._ProcessingActivity_tia(ctx, field, obj)
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
case "createdAt":
out.Values[i] = ec._ProcessingActivity_createdAt(ctx, field, obj)
@@ -76290,6 +80147,261 @@ func (ec *executionContext) _ProcessingActivityConnection(ctx context.Context, s
return out
}
+var processingActivityDPIAImplementors = []string{"ProcessingActivityDPIA", "Node"}
+
+func (ec *executionContext) _ProcessingActivityDPIA(ctx context.Context, sel ast.SelectionSet, obj *types.ProcessingActivityDpia) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, processingActivityDPIAImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("ProcessingActivityDPIA")
+ case "id":
+ out.Values[i] = ec._ProcessingActivityDPIA_id(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ case "processingActivity":
+ field := field
+
+ innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._ProcessingActivityDPIA_processingActivity(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&fs.Invalids, 1)
+ }
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
+ case "organization":
+ field := field
+
+ innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._ProcessingActivityDPIA_organization(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&fs.Invalids, 1)
+ }
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
+ case "description":
+ out.Values[i] = ec._ProcessingActivityDPIA_description(ctx, field, obj)
+ case "necessityAndProportionality":
+ out.Values[i] = ec._ProcessingActivityDPIA_necessityAndProportionality(ctx, field, obj)
+ case "potentialRisk":
+ out.Values[i] = ec._ProcessingActivityDPIA_potentialRisk(ctx, field, obj)
+ case "mitigations":
+ out.Values[i] = ec._ProcessingActivityDPIA_mitigations(ctx, field, obj)
+ case "residualRisk":
+ out.Values[i] = ec._ProcessingActivityDPIA_residualRisk(ctx, field, obj)
+ case "createdAt":
+ out.Values[i] = ec._ProcessingActivityDPIA_createdAt(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ case "updatedAt":
+ out.Values[i] = ec._ProcessingActivityDPIA_updatedAt(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
+var processingActivityDPIAConnectionImplementors = []string{"ProcessingActivityDPIAConnection"}
+
+func (ec *executionContext) _ProcessingActivityDPIAConnection(ctx context.Context, sel ast.SelectionSet, obj *types.ProcessingActivityDPIAConnection) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, processingActivityDPIAConnectionImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("ProcessingActivityDPIAConnection")
+ case "totalCount":
+ field := field
+
+ innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._ProcessingActivityDPIAConnection_totalCount(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&fs.Invalids, 1)
+ }
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
+ case "edges":
+ out.Values[i] = ec._ProcessingActivityDPIAConnection_edges(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ case "pageInfo":
+ out.Values[i] = ec._ProcessingActivityDPIAConnection_pageInfo(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
+var processingActivityDPIAEdgeImplementors = []string{"ProcessingActivityDPIAEdge"}
+
+func (ec *executionContext) _ProcessingActivityDPIAEdge(ctx context.Context, sel ast.SelectionSet, obj *types.ProcessingActivityDPIAEdge) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, processingActivityDPIAEdgeImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("ProcessingActivityDPIAEdge")
+ case "cursor":
+ out.Values[i] = ec._ProcessingActivityDPIAEdge_cursor(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ case "node":
+ out.Values[i] = ec._ProcessingActivityDPIAEdge_node(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
var processingActivityEdgeImplementors = []string{"ProcessingActivityEdge"}
func (ec *executionContext) _ProcessingActivityEdge(ctx context.Context, sel ast.SelectionSet, obj *types.ProcessingActivityEdge) graphql.Marshaler {
@@ -76334,6 +80446,261 @@ func (ec *executionContext) _ProcessingActivityEdge(ctx context.Context, sel ast
return out
}
+var processingActivityTIAImplementors = []string{"ProcessingActivityTIA", "Node"}
+
+func (ec *executionContext) _ProcessingActivityTIA(ctx context.Context, sel ast.SelectionSet, obj *types.ProcessingActivityTia) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, processingActivityTIAImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("ProcessingActivityTIA")
+ case "id":
+ out.Values[i] = ec._ProcessingActivityTIA_id(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ case "processingActivity":
+ field := field
+
+ innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._ProcessingActivityTIA_processingActivity(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&fs.Invalids, 1)
+ }
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
+ case "organization":
+ field := field
+
+ innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._ProcessingActivityTIA_organization(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&fs.Invalids, 1)
+ }
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
+ case "dataSubjects":
+ out.Values[i] = ec._ProcessingActivityTIA_dataSubjects(ctx, field, obj)
+ case "legalMechanism":
+ out.Values[i] = ec._ProcessingActivityTIA_legalMechanism(ctx, field, obj)
+ case "transfer":
+ out.Values[i] = ec._ProcessingActivityTIA_transfer(ctx, field, obj)
+ case "localLawRisk":
+ out.Values[i] = ec._ProcessingActivityTIA_localLawRisk(ctx, field, obj)
+ case "supplementaryMeasures":
+ out.Values[i] = ec._ProcessingActivityTIA_supplementaryMeasures(ctx, field, obj)
+ case "createdAt":
+ out.Values[i] = ec._ProcessingActivityTIA_createdAt(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ case "updatedAt":
+ out.Values[i] = ec._ProcessingActivityTIA_updatedAt(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
+var processingActivityTIAConnectionImplementors = []string{"ProcessingActivityTIAConnection"}
+
+func (ec *executionContext) _ProcessingActivityTIAConnection(ctx context.Context, sel ast.SelectionSet, obj *types.ProcessingActivityTIAConnection) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, processingActivityTIAConnectionImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("ProcessingActivityTIAConnection")
+ case "totalCount":
+ field := field
+
+ innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._ProcessingActivityTIAConnection_totalCount(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&fs.Invalids, 1)
+ }
+ return res
+ }
+
+ if field.Deferrable != nil {
+ dfs, ok := deferred[field.Deferrable.Label]
+ di := 0
+ if ok {
+ dfs.AddField(field)
+ di = len(dfs.Values) - 1
+ } else {
+ dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
+ deferred[field.Deferrable.Label] = dfs
+ }
+ dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
+ return innerFunc(ctx, dfs)
+ })
+
+ // don't run the out.Concurrently() call below
+ out.Values[i] = graphql.Null
+ continue
+ }
+
+ out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
+ case "edges":
+ out.Values[i] = ec._ProcessingActivityTIAConnection_edges(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ case "pageInfo":
+ out.Values[i] = ec._ProcessingActivityTIAConnection_pageInfo(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&out.Invalids, 1)
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
+var processingActivityTIAEdgeImplementors = []string{"ProcessingActivityTIAEdge"}
+
+func (ec *executionContext) _ProcessingActivityTIAEdge(ctx context.Context, sel ast.SelectionSet, obj *types.ProcessingActivityTIAEdge) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, processingActivityTIAEdgeImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("ProcessingActivityTIAEdge")
+ case "cursor":
+ out.Values[i] = ec._ProcessingActivityTIAEdge_cursor(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ case "node":
+ out.Values[i] = ec._ProcessingActivityTIAEdge_node(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
var publishDocumentVersionPayloadImplementors = []string{"PublishDocumentVersionPayload"}
func (ec *executionContext) _PublishDocumentVersionPayload(ctx context.Context, sel ast.SelectionSet, obj *types.PublishDocumentVersionPayload) graphql.Marshaler {
@@ -80433,6 +84800,45 @@ func (ec *executionContext) _UpdatePeoplePayload(ctx context.Context, sel ast.Se
return out
}
+var updateProcessingActivityDPIAPayloadImplementors = []string{"UpdateProcessingActivityDPIAPayload"}
+
+func (ec *executionContext) _UpdateProcessingActivityDPIAPayload(ctx context.Context, sel ast.SelectionSet, obj *types.UpdateProcessingActivityDPIAPayload) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, updateProcessingActivityDPIAPayloadImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("UpdateProcessingActivityDPIAPayload")
+ case "processingActivityDpia":
+ out.Values[i] = ec._UpdateProcessingActivityDPIAPayload_processingActivityDpia(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
var updateProcessingActivityPayloadImplementors = []string{"UpdateProcessingActivityPayload"}
func (ec *executionContext) _UpdateProcessingActivityPayload(ctx context.Context, sel ast.SelectionSet, obj *types.UpdateProcessingActivityPayload) graphql.Marshaler {
@@ -80472,6 +84878,45 @@ func (ec *executionContext) _UpdateProcessingActivityPayload(ctx context.Context
return out
}
+var updateProcessingActivityTIAPayloadImplementors = []string{"UpdateProcessingActivityTIAPayload"}
+
+func (ec *executionContext) _UpdateProcessingActivityTIAPayload(ctx context.Context, sel ast.SelectionSet, obj *types.UpdateProcessingActivityTIAPayload) graphql.Marshaler {
+ fields := graphql.CollectFields(ec.OperationContext, sel, updateProcessingActivityTIAPayloadImplementors)
+
+ out := graphql.NewFieldSet(fields)
+ deferred := make(map[string]*graphql.FieldSet)
+ for i, field := range fields {
+ switch field.Name {
+ case "__typename":
+ out.Values[i] = graphql.MarshalString("UpdateProcessingActivityTIAPayload")
+ case "processingActivityTia":
+ out.Values[i] = ec._UpdateProcessingActivityTIAPayload_processingActivityTia(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ out.Invalids++
+ }
+ default:
+ panic("unknown field " + strconv.Quote(field.Name))
+ }
+ }
+ out.Dispatch(ctx)
+ if out.Invalids > 0 {
+ return graphql.Null
+ }
+
+ atomic.AddInt32(&ec.deferred, int32(len(deferred)))
+
+ for label, dfs := range deferred {
+ ec.processDeferredGroup(graphql.DeferredGroup{
+ Label: label,
+ Path: graphql.GetPath(ctx),
+ FieldSet: dfs,
+ Context: ctx,
+ })
+ }
+
+ return out
+}
+
var updateRiskPayloadImplementors = []string{"UpdateRiskPayload"}
func (ec *executionContext) _UpdateRiskPayload(ctx context.Context, sel ast.SelectionSet, obj *types.UpdateRiskPayload) graphql.Marshaler {
@@ -85223,6 +89668,25 @@ func (ec *executionContext) marshalNCreatePeoplePayload2ᚖgoᚗproboᚗincᚋpr
return ec._CreatePeoplePayload(ctx, sel, v)
}
+func (ec *executionContext) unmarshalNCreateProcessingActivityDPIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityDPIAInput(ctx context.Context, v any) (types.CreateProcessingActivityDPIAInput, error) {
+ res, err := ec.unmarshalInputCreateProcessingActivityDPIAInput(ctx, v)
+ return res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalNCreateProcessingActivityDPIAPayload2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityDPIAPayload(ctx context.Context, sel ast.SelectionSet, v types.CreateProcessingActivityDPIAPayload) graphql.Marshaler {
+ return ec._CreateProcessingActivityDPIAPayload(ctx, sel, &v)
+}
+
+func (ec *executionContext) marshalNCreateProcessingActivityDPIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityDPIAPayload(ctx context.Context, sel ast.SelectionSet, v *types.CreateProcessingActivityDPIAPayload) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._CreateProcessingActivityDPIAPayload(ctx, sel, v)
+}
+
func (ec *executionContext) unmarshalNCreateProcessingActivityInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityInput(ctx context.Context, v any) (types.CreateProcessingActivityInput, error) {
res, err := ec.unmarshalInputCreateProcessingActivityInput(ctx, v)
return res, graphql.ErrorOnPath(ctx, err)
@@ -85242,6 +89706,25 @@ func (ec *executionContext) marshalNCreateProcessingActivityPayload2ᚖgoᚗprob
return ec._CreateProcessingActivityPayload(ctx, sel, v)
}
+func (ec *executionContext) unmarshalNCreateProcessingActivityTIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityTIAInput(ctx context.Context, v any) (types.CreateProcessingActivityTIAInput, error) {
+ res, err := ec.unmarshalInputCreateProcessingActivityTIAInput(ctx, v)
+ return res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalNCreateProcessingActivityTIAPayload2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityTIAPayload(ctx context.Context, sel ast.SelectionSet, v types.CreateProcessingActivityTIAPayload) graphql.Marshaler {
+ return ec._CreateProcessingActivityTIAPayload(ctx, sel, &v)
+}
+
+func (ec *executionContext) marshalNCreateProcessingActivityTIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateProcessingActivityTIAPayload(ctx context.Context, sel ast.SelectionSet, v *types.CreateProcessingActivityTIAPayload) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._CreateProcessingActivityTIAPayload(ctx, sel, v)
+}
+
func (ec *executionContext) unmarshalNCreateRiskDocumentMappingInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐCreateRiskDocumentMappingInput(ctx context.Context, v any) (types.CreateRiskDocumentMappingInput, error) {
res, err := ec.unmarshalInputCreateRiskDocumentMappingInput(ctx, v)
return res, graphql.ErrorOnPath(ctx, err)
@@ -86215,6 +90698,25 @@ func (ec *executionContext) marshalNDeletePeoplePayload2ᚖgoᚗproboᚗincᚋpr
return ec._DeletePeoplePayload(ctx, sel, v)
}
+func (ec *executionContext) unmarshalNDeleteProcessingActivityDPIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityDPIAInput(ctx context.Context, v any) (types.DeleteProcessingActivityDPIAInput, error) {
+ res, err := ec.unmarshalInputDeleteProcessingActivityDPIAInput(ctx, v)
+ return res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalNDeleteProcessingActivityDPIAPayload2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityDPIAPayload(ctx context.Context, sel ast.SelectionSet, v types.DeleteProcessingActivityDPIAPayload) graphql.Marshaler {
+ return ec._DeleteProcessingActivityDPIAPayload(ctx, sel, &v)
+}
+
+func (ec *executionContext) marshalNDeleteProcessingActivityDPIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityDPIAPayload(ctx context.Context, sel ast.SelectionSet, v *types.DeleteProcessingActivityDPIAPayload) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._DeleteProcessingActivityDPIAPayload(ctx, sel, v)
+}
+
func (ec *executionContext) unmarshalNDeleteProcessingActivityInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityInput(ctx context.Context, v any) (types.DeleteProcessingActivityInput, error) {
res, err := ec.unmarshalInputDeleteProcessingActivityInput(ctx, v)
return res, graphql.ErrorOnPath(ctx, err)
@@ -86234,6 +90736,25 @@ func (ec *executionContext) marshalNDeleteProcessingActivityPayload2ᚖgoᚗprob
return ec._DeleteProcessingActivityPayload(ctx, sel, v)
}
+func (ec *executionContext) unmarshalNDeleteProcessingActivityTIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityTIAInput(ctx context.Context, v any) (types.DeleteProcessingActivityTIAInput, error) {
+ res, err := ec.unmarshalInputDeleteProcessingActivityTIAInput(ctx, v)
+ return res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalNDeleteProcessingActivityTIAPayload2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityTIAPayload(ctx context.Context, sel ast.SelectionSet, v types.DeleteProcessingActivityTIAPayload) graphql.Marshaler {
+ return ec._DeleteProcessingActivityTIAPayload(ctx, sel, &v)
+}
+
+func (ec *executionContext) marshalNDeleteProcessingActivityTIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteProcessingActivityTIAPayload(ctx context.Context, sel ast.SelectionSet, v *types.DeleteProcessingActivityTIAPayload) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._DeleteProcessingActivityTIAPayload(ctx, sel, v)
+}
+
func (ec *executionContext) unmarshalNDeleteRiskDocumentMappingInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐDeleteRiskDocumentMappingInput(ctx context.Context, v any) (types.DeleteRiskDocumentMappingInput, error) {
res, err := ec.unmarshalInputDeleteRiskDocumentMappingInput(ctx, v)
return res, graphql.ErrorOnPath(ctx, err)
@@ -88778,6 +93299,10 @@ var (
}
)
+func (ec *executionContext) marshalNProcessingActivity2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivity(ctx context.Context, sel ast.SelectionSet, v types.ProcessingActivity) graphql.Marshaler {
+ return ec._ProcessingActivity(ctx, sel, &v)
+}
+
func (ec *executionContext) marshalNProcessingActivity2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivity(ctx context.Context, sel ast.SelectionSet, v *types.ProcessingActivity) graphql.Marshaler {
if v == nil {
if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
@@ -88802,6 +93327,110 @@ func (ec *executionContext) marshalNProcessingActivityConnection2ᚖgoᚗprobo
return ec._ProcessingActivityConnection(ctx, sel, v)
}
+func (ec *executionContext) marshalNProcessingActivityDPIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDpia(ctx context.Context, sel ast.SelectionSet, v *types.ProcessingActivityDpia) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._ProcessingActivityDPIA(ctx, sel, v)
+}
+
+func (ec *executionContext) marshalNProcessingActivityDPIAConnection2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDPIAConnection(ctx context.Context, sel ast.SelectionSet, v types.ProcessingActivityDPIAConnection) graphql.Marshaler {
+ return ec._ProcessingActivityDPIAConnection(ctx, sel, &v)
+}
+
+func (ec *executionContext) marshalNProcessingActivityDPIAConnection2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDPIAConnection(ctx context.Context, sel ast.SelectionSet, v *types.ProcessingActivityDPIAConnection) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._ProcessingActivityDPIAConnection(ctx, sel, v)
+}
+
+func (ec *executionContext) marshalNProcessingActivityDPIAEdge2ᚕᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDPIAEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*types.ProcessingActivityDPIAEdge) graphql.Marshaler {
+ ret := make(graphql.Array, len(v))
+ var wg sync.WaitGroup
+ isLen1 := len(v) == 1
+ if !isLen1 {
+ wg.Add(len(v))
+ }
+ for i := range v {
+ i := i
+ fc := &graphql.FieldContext{
+ Index: &i,
+ Result: &v[i],
+ }
+ ctx := graphql.WithFieldContext(ctx, fc)
+ f := func(i int) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ ret = nil
+ }
+ }()
+ if !isLen1 {
+ defer wg.Done()
+ }
+ ret[i] = ec.marshalNProcessingActivityDPIAEdge2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDPIAEdge(ctx, sel, v[i])
+ }
+ if isLen1 {
+ f(i)
+ } else {
+ go f(i)
+ }
+
+ }
+ wg.Wait()
+
+ for _, e := range ret {
+ if e == graphql.Null {
+ return graphql.Null
+ }
+ }
+
+ return ret
+}
+
+func (ec *executionContext) marshalNProcessingActivityDPIAEdge2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDPIAEdge(ctx context.Context, sel ast.SelectionSet, v *types.ProcessingActivityDPIAEdge) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._ProcessingActivityDPIAEdge(ctx, sel, v)
+}
+
+func (ec *executionContext) unmarshalNProcessingActivityDPIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAOrderField(ctx context.Context, v any) (coredata.ProcessingActivityDPIAOrderField, error) {
+ tmp, err := graphql.UnmarshalString(v)
+ res := unmarshalNProcessingActivityDPIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAOrderField[tmp]
+ return res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalNProcessingActivityDPIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAOrderField(ctx context.Context, sel ast.SelectionSet, v coredata.ProcessingActivityDPIAOrderField) graphql.Marshaler {
+ _ = sel
+ res := graphql.MarshalString(marshalNProcessingActivityDPIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAOrderField[v])
+ if res == graphql.Null {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ }
+ return res
+}
+
+var (
+ unmarshalNProcessingActivityDPIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAOrderField = map[string]coredata.ProcessingActivityDPIAOrderField{
+ "CREATED_AT": coredata.ProcessingActivityDPIAOrderFieldCreatedAt,
+ }
+ marshalNProcessingActivityDPIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAOrderField = map[coredata.ProcessingActivityDPIAOrderField]string{
+ coredata.ProcessingActivityDPIAOrderFieldCreatedAt: "CREATED_AT",
+ }
+)
+
func (ec *executionContext) unmarshalNProcessingActivityDataProtectionImpactAssessment2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDataProtectionImpactAssessment(ctx context.Context, v any) (coredata.ProcessingActivityDataProtectionImpactAssessment, error) {
tmp, err := graphql.UnmarshalString(v)
res := unmarshalNProcessingActivityDataProtectionImpactAssessment2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDataProtectionImpactAssessment[tmp]
@@ -88948,6 +93577,34 @@ var (
}
)
+func (ec *executionContext) unmarshalNProcessingActivityRole2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole(ctx context.Context, v any) (coredata.ProcessingActivityRole, error) {
+ tmp, err := graphql.UnmarshalString(v)
+ res := unmarshalNProcessingActivityRole2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole[tmp]
+ return res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalNProcessingActivityRole2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole(ctx context.Context, sel ast.SelectionSet, v coredata.ProcessingActivityRole) graphql.Marshaler {
+ _ = sel
+ res := graphql.MarshalString(marshalNProcessingActivityRole2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole[v])
+ if res == graphql.Null {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ }
+ return res
+}
+
+var (
+ unmarshalNProcessingActivityRole2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole = map[string]coredata.ProcessingActivityRole{
+ "CONTROLLER": coredata.ProcessingActivityRoleController,
+ "PROCESSOR": coredata.ProcessingActivityRoleProcessor,
+ }
+ marshalNProcessingActivityRole2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole = map[coredata.ProcessingActivityRole]string{
+ coredata.ProcessingActivityRoleController: "CONTROLLER",
+ coredata.ProcessingActivityRoleProcessor: "PROCESSOR",
+ }
+)
+
func (ec *executionContext) unmarshalNProcessingActivitySpecialOrCriminalDatum2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivitySpecialOrCriminalDatum(ctx context.Context, v any) (coredata.ProcessingActivitySpecialOrCriminalDatum, error) {
tmp, err := graphql.UnmarshalString(v)
res := unmarshalNProcessingActivitySpecialOrCriminalDatum2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivitySpecialOrCriminalDatum[tmp]
@@ -88978,6 +93635,110 @@ var (
}
)
+func (ec *executionContext) marshalNProcessingActivityTIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTia(ctx context.Context, sel ast.SelectionSet, v *types.ProcessingActivityTia) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._ProcessingActivityTIA(ctx, sel, v)
+}
+
+func (ec *executionContext) marshalNProcessingActivityTIAConnection2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTIAConnection(ctx context.Context, sel ast.SelectionSet, v types.ProcessingActivityTIAConnection) graphql.Marshaler {
+ return ec._ProcessingActivityTIAConnection(ctx, sel, &v)
+}
+
+func (ec *executionContext) marshalNProcessingActivityTIAConnection2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTIAConnection(ctx context.Context, sel ast.SelectionSet, v *types.ProcessingActivityTIAConnection) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._ProcessingActivityTIAConnection(ctx, sel, v)
+}
+
+func (ec *executionContext) marshalNProcessingActivityTIAEdge2ᚕᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTIAEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*types.ProcessingActivityTIAEdge) graphql.Marshaler {
+ ret := make(graphql.Array, len(v))
+ var wg sync.WaitGroup
+ isLen1 := len(v) == 1
+ if !isLen1 {
+ wg.Add(len(v))
+ }
+ for i := range v {
+ i := i
+ fc := &graphql.FieldContext{
+ Index: &i,
+ Result: &v[i],
+ }
+ ctx := graphql.WithFieldContext(ctx, fc)
+ f := func(i int) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ ret = nil
+ }
+ }()
+ if !isLen1 {
+ defer wg.Done()
+ }
+ ret[i] = ec.marshalNProcessingActivityTIAEdge2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTIAEdge(ctx, sel, v[i])
+ }
+ if isLen1 {
+ f(i)
+ } else {
+ go f(i)
+ }
+
+ }
+ wg.Wait()
+
+ for _, e := range ret {
+ if e == graphql.Null {
+ return graphql.Null
+ }
+ }
+
+ return ret
+}
+
+func (ec *executionContext) marshalNProcessingActivityTIAEdge2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTIAEdge(ctx context.Context, sel ast.SelectionSet, v *types.ProcessingActivityTIAEdge) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._ProcessingActivityTIAEdge(ctx, sel, v)
+}
+
+func (ec *executionContext) unmarshalNProcessingActivityTIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityTIAOrderField(ctx context.Context, v any) (coredata.ProcessingActivityTIAOrderField, error) {
+ tmp, err := graphql.UnmarshalString(v)
+ res := unmarshalNProcessingActivityTIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityTIAOrderField[tmp]
+ return res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalNProcessingActivityTIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityTIAOrderField(ctx context.Context, sel ast.SelectionSet, v coredata.ProcessingActivityTIAOrderField) graphql.Marshaler {
+ _ = sel
+ res := graphql.MarshalString(marshalNProcessingActivityTIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityTIAOrderField[v])
+ if res == graphql.Null {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ }
+ return res
+}
+
+var (
+ unmarshalNProcessingActivityTIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityTIAOrderField = map[string]coredata.ProcessingActivityTIAOrderField{
+ "CREATED_AT": coredata.ProcessingActivityTIAOrderFieldCreatedAt,
+ }
+ marshalNProcessingActivityTIAOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityTIAOrderField = map[coredata.ProcessingActivityTIAOrderField]string{
+ coredata.ProcessingActivityTIAOrderFieldCreatedAt: "CREATED_AT",
+ }
+)
+
func (ec *executionContext) unmarshalNProcessingActivityTransferImpactAssessment2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityTransferImpactAssessment(ctx context.Context, v any) (coredata.ProcessingActivityTransferImpactAssessment, error) {
tmp, err := graphql.UnmarshalString(v)
res := unmarshalNProcessingActivityTransferImpactAssessment2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityTransferImpactAssessment[tmp]
@@ -90724,6 +95485,25 @@ func (ec *executionContext) marshalNUpdatePeoplePayload2ᚖgoᚗproboᚗincᚋpr
return ec._UpdatePeoplePayload(ctx, sel, v)
}
+func (ec *executionContext) unmarshalNUpdateProcessingActivityDPIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityDPIAInput(ctx context.Context, v any) (types.UpdateProcessingActivityDPIAInput, error) {
+ res, err := ec.unmarshalInputUpdateProcessingActivityDPIAInput(ctx, v)
+ return res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalNUpdateProcessingActivityDPIAPayload2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityDPIAPayload(ctx context.Context, sel ast.SelectionSet, v types.UpdateProcessingActivityDPIAPayload) graphql.Marshaler {
+ return ec._UpdateProcessingActivityDPIAPayload(ctx, sel, &v)
+}
+
+func (ec *executionContext) marshalNUpdateProcessingActivityDPIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityDPIAPayload(ctx context.Context, sel ast.SelectionSet, v *types.UpdateProcessingActivityDPIAPayload) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._UpdateProcessingActivityDPIAPayload(ctx, sel, v)
+}
+
func (ec *executionContext) unmarshalNUpdateProcessingActivityInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityInput(ctx context.Context, v any) (types.UpdateProcessingActivityInput, error) {
res, err := ec.unmarshalInputUpdateProcessingActivityInput(ctx, v)
return res, graphql.ErrorOnPath(ctx, err)
@@ -90743,6 +95523,25 @@ func (ec *executionContext) marshalNUpdateProcessingActivityPayload2ᚖgoᚗprob
return ec._UpdateProcessingActivityPayload(ctx, sel, v)
}
+func (ec *executionContext) unmarshalNUpdateProcessingActivityTIAInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityTIAInput(ctx context.Context, v any) (types.UpdateProcessingActivityTIAInput, error) {
+ res, err := ec.unmarshalInputUpdateProcessingActivityTIAInput(ctx, v)
+ return res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalNUpdateProcessingActivityTIAPayload2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityTIAPayload(ctx context.Context, sel ast.SelectionSet, v types.UpdateProcessingActivityTIAPayload) graphql.Marshaler {
+ return ec._UpdateProcessingActivityTIAPayload(ctx, sel, &v)
+}
+
+func (ec *executionContext) marshalNUpdateProcessingActivityTIAPayload2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateProcessingActivityTIAPayload(ctx context.Context, sel ast.SelectionSet, v *types.UpdateProcessingActivityTIAPayload) graphql.Marshaler {
+ if v == nil {
+ if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
+ graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
+ }
+ return graphql.Null
+ }
+ return ec._UpdateProcessingActivityTIAPayload(ctx, sel, v)
+}
+
func (ec *executionContext) unmarshalNUpdateRiskInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUpdateRiskInput(ctx context.Context, v any) (types.UpdateRiskInput, error) {
res, err := ec.unmarshalInputUpdateRiskInput(ctx, v)
return res, graphql.ErrorOnPath(ctx, err)
@@ -93247,6 +98046,53 @@ func (ec *executionContext) unmarshalOPeopleOrder2ᚖgoᚗproboᚗincᚋproboᚋ
return &res, graphql.ErrorOnPath(ctx, err)
}
+func (ec *executionContext) marshalOProcessingActivityDPIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDpia(ctx context.Context, sel ast.SelectionSet, v *types.ProcessingActivityDpia) graphql.Marshaler {
+ if v == nil {
+ return graphql.Null
+ }
+ return ec._ProcessingActivityDPIA(ctx, sel, v)
+}
+
+func (ec *executionContext) unmarshalOProcessingActivityDPIAOrder2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityDPIAOrderBy(ctx context.Context, v any) (*types.ProcessingActivityDPIAOrderBy, error) {
+ if v == nil {
+ return nil, nil
+ }
+ res, err := ec.unmarshalInputProcessingActivityDPIAOrder(ctx, v)
+ return &res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) unmarshalOProcessingActivityDPIAResidualRisk2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAResidualRisk(ctx context.Context, v any) (*coredata.ProcessingActivityDPIAResidualRisk, error) {
+ if v == nil {
+ return nil, nil
+ }
+ tmp, err := graphql.UnmarshalString(v)
+ res := unmarshalOProcessingActivityDPIAResidualRisk2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAResidualRisk[tmp]
+ return &res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalOProcessingActivityDPIAResidualRisk2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAResidualRisk(ctx context.Context, sel ast.SelectionSet, v *coredata.ProcessingActivityDPIAResidualRisk) graphql.Marshaler {
+ if v == nil {
+ return graphql.Null
+ }
+ _ = sel
+ _ = ctx
+ res := graphql.MarshalString(marshalOProcessingActivityDPIAResidualRisk2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAResidualRisk[*v])
+ return res
+}
+
+var (
+ unmarshalOProcessingActivityDPIAResidualRisk2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAResidualRisk = map[string]coredata.ProcessingActivityDPIAResidualRisk{
+ "LOW": coredata.ProcessingActivityDPIAResidualRiskLow,
+ "MEDIUM": coredata.ProcessingActivityDPIAResidualRiskMedium,
+ "HIGH": coredata.ProcessingActivityDPIAResidualRiskHigh,
+ }
+ marshalOProcessingActivityDPIAResidualRisk2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDPIAResidualRisk = map[coredata.ProcessingActivityDPIAResidualRisk]string{
+ coredata.ProcessingActivityDPIAResidualRiskLow: "LOW",
+ coredata.ProcessingActivityDPIAResidualRiskMedium: "MEDIUM",
+ coredata.ProcessingActivityDPIAResidualRiskHigh: "HIGH",
+ }
+)
+
func (ec *executionContext) unmarshalOProcessingActivityDataProtectionImpactAssessment2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityDataProtectionImpactAssessment(ctx context.Context, v any) (*coredata.ProcessingActivityDataProtectionImpactAssessment, error) {
if v == nil {
return nil, nil
@@ -93331,6 +98177,36 @@ func (ec *executionContext) unmarshalOProcessingActivityOrder2ᚖgoᚗproboᚗin
return &res, graphql.ErrorOnPath(ctx, err)
}
+func (ec *executionContext) unmarshalOProcessingActivityRole2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole(ctx context.Context, v any) (*coredata.ProcessingActivityRole, error) {
+ if v == nil {
+ return nil, nil
+ }
+ tmp, err := graphql.UnmarshalString(v)
+ res := unmarshalOProcessingActivityRole2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole[tmp]
+ return &res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalOProcessingActivityRole2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole(ctx context.Context, sel ast.SelectionSet, v *coredata.ProcessingActivityRole) graphql.Marshaler {
+ if v == nil {
+ return graphql.Null
+ }
+ _ = sel
+ _ = ctx
+ res := graphql.MarshalString(marshalOProcessingActivityRole2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole[*v])
+ return res
+}
+
+var (
+ unmarshalOProcessingActivityRole2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole = map[string]coredata.ProcessingActivityRole{
+ "CONTROLLER": coredata.ProcessingActivityRoleController,
+ "PROCESSOR": coredata.ProcessingActivityRoleProcessor,
+ }
+ marshalOProcessingActivityRole2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityRole = map[coredata.ProcessingActivityRole]string{
+ coredata.ProcessingActivityRoleController: "CONTROLLER",
+ coredata.ProcessingActivityRoleProcessor: "PROCESSOR",
+ }
+)
+
func (ec *executionContext) unmarshalOProcessingActivitySpecialOrCriminalDatum2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivitySpecialOrCriminalDatum(ctx context.Context, v any) (*coredata.ProcessingActivitySpecialOrCriminalDatum, error) {
if v == nil {
return nil, nil
@@ -93363,6 +98239,21 @@ var (
}
)
+func (ec *executionContext) marshalOProcessingActivityTIA2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTia(ctx context.Context, sel ast.SelectionSet, v *types.ProcessingActivityTia) graphql.Marshaler {
+ if v == nil {
+ return graphql.Null
+ }
+ return ec._ProcessingActivityTIA(ctx, sel, v)
+}
+
+func (ec *executionContext) unmarshalOProcessingActivityTIAOrder2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProcessingActivityTIAOrderBy(ctx context.Context, v any) (*types.ProcessingActivityTIAOrderBy, error) {
+ if v == nil {
+ return nil, nil
+ }
+ res, err := ec.unmarshalInputProcessingActivityTIAOrder(ctx, v)
+ return &res, graphql.ErrorOnPath(ctx, err)
+}
+
func (ec *executionContext) unmarshalOProcessingActivityTransferImpactAssessment2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProcessingActivityTransferImpactAssessment(ctx context.Context, v any) (*coredata.ProcessingActivityTransferImpactAssessment, error) {
if v == nil {
return nil, nil
diff --git a/pkg/server/api/console/v1/types/processing_activity.go b/pkg/server/api/console/v1/types/processing_activity.go
index 298290aac..8cfbc1147 100644
--- a/pkg/server/api/console/v1/types/processing_activity.go
+++ b/pkg/server/api/console/v1/types/processing_activity.go
@@ -75,6 +75,9 @@ func NewProcessingActivity(par *coredata.ProcessingActivity) *ProcessingActivity
SecurityMeasures: par.SecurityMeasures,
DataProtectionImpactAssessment: par.DataProtectionImpactAssessment,
TransferImpactAssessment: par.TransferImpactAssessment,
+ LastReviewDate: par.LastReviewDate,
+ NextReviewDate: par.NextReviewDate,
+ Role: par.Role,
CreatedAt: par.CreatedAt,
UpdatedAt: par.UpdatedAt,
}
diff --git a/pkg/server/api/console/v1/types/processing_activity_dpia.go b/pkg/server/api/console/v1/types/processing_activity_dpia.go
new file mode 100644
index 000000000..3e8dca6e4
--- /dev/null
+++ b/pkg/server/api/console/v1/types/processing_activity_dpia.go
@@ -0,0 +1,73 @@
+// Copyright (c) 2025 Probo Inc .
+//
+// 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 types
+
+import (
+ "go.probo.inc/probo/pkg/coredata"
+ "go.probo.inc/probo/pkg/gid"
+ "go.probo.inc/probo/pkg/page"
+)
+
+type (
+ ProcessingActivityDPIAOrderBy OrderBy[coredata.ProcessingActivityDPIAOrderField]
+
+ ProcessingActivityDPIAConnection struct {
+ TotalCount int
+ Edges []*ProcessingActivityDPIAEdge
+ PageInfo PageInfo
+
+ Resolver any
+ ParentID gid.GID
+ }
+)
+
+func NewProcessingActivityDPIAConnection(
+ p *page.Page[*coredata.ProcessingActivityDPIA, coredata.ProcessingActivityDPIAOrderField],
+ parentType any,
+ parentID gid.GID,
+) *ProcessingActivityDPIAConnection {
+ edges := make([]*ProcessingActivityDPIAEdge, len(p.Data))
+ for i, dpia := range p.Data {
+ edges[i] = NewProcessingActivityDPIAEdge(dpia, p.Cursor.OrderBy.Field)
+ }
+
+ return &ProcessingActivityDPIAConnection{
+ Edges: edges,
+ PageInfo: *NewPageInfo(p),
+
+ Resolver: parentType,
+ ParentID: parentID,
+ }
+}
+
+func NewProcessingActivityDPIAEdge(dpia *coredata.ProcessingActivityDPIA, orderField coredata.ProcessingActivityDPIAOrderField) *ProcessingActivityDPIAEdge {
+ return &ProcessingActivityDPIAEdge{
+ Node: NewProcessingActivityDpia(dpia),
+ Cursor: dpia.CursorKey(orderField),
+ }
+}
+
+func NewProcessingActivityDpia(dpia *coredata.ProcessingActivityDPIA) *ProcessingActivityDpia {
+ return &ProcessingActivityDpia{
+ ID: dpia.ID,
+ Description: dpia.Description,
+ NecessityAndProportionality: dpia.NecessityAndProportionality,
+ PotentialRisk: dpia.PotentialRisk,
+ Mitigations: dpia.Mitigations,
+ ResidualRisk: dpia.ResidualRisk,
+ CreatedAt: dpia.CreatedAt,
+ UpdatedAt: dpia.UpdatedAt,
+ }
+}
diff --git a/pkg/server/api/console/v1/types/processing_activity_tia.go b/pkg/server/api/console/v1/types/processing_activity_tia.go
new file mode 100644
index 000000000..8d7b09659
--- /dev/null
+++ b/pkg/server/api/console/v1/types/processing_activity_tia.go
@@ -0,0 +1,73 @@
+// Copyright (c) 2025 Probo Inc .
+//
+// 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 types
+
+import (
+ "go.probo.inc/probo/pkg/coredata"
+ "go.probo.inc/probo/pkg/gid"
+ "go.probo.inc/probo/pkg/page"
+)
+
+type (
+ ProcessingActivityTIAOrderBy OrderBy[coredata.ProcessingActivityTIAOrderField]
+
+ ProcessingActivityTIAConnection struct {
+ TotalCount int
+ Edges []*ProcessingActivityTIAEdge
+ PageInfo PageInfo
+
+ Resolver any
+ ParentID gid.GID
+ }
+)
+
+func NewProcessingActivityTIAConnection(
+ p *page.Page[*coredata.ProcessingActivityTIA, coredata.ProcessingActivityTIAOrderField],
+ parentType any,
+ parentID gid.GID,
+) *ProcessingActivityTIAConnection {
+ edges := make([]*ProcessingActivityTIAEdge, len(p.Data))
+ for i, tia := range p.Data {
+ edges[i] = NewProcessingActivityTIAEdge(tia, p.Cursor.OrderBy.Field)
+ }
+
+ return &ProcessingActivityTIAConnection{
+ Edges: edges,
+ PageInfo: *NewPageInfo(p),
+
+ Resolver: parentType,
+ ParentID: parentID,
+ }
+}
+
+func NewProcessingActivityTIAEdge(tia *coredata.ProcessingActivityTIA, orderField coredata.ProcessingActivityTIAOrderField) *ProcessingActivityTIAEdge {
+ return &ProcessingActivityTIAEdge{
+ Node: NewProcessingActivityTia(tia),
+ Cursor: tia.CursorKey(orderField),
+ }
+}
+
+func NewProcessingActivityTia(tia *coredata.ProcessingActivityTIA) *ProcessingActivityTia {
+ return &ProcessingActivityTia{
+ ID: tia.ID,
+ DataSubjects: tia.DataSubjects,
+ LegalMechanism: tia.LegalMechanism,
+ Transfer: tia.Transfer,
+ LocalLawRisk: tia.LocalLawRisk,
+ SupplementaryMeasures: tia.SupplementaryMeasures,
+ CreatedAt: tia.CreatedAt,
+ UpdatedAt: tia.UpdatedAt,
+ }
+}
diff --git a/pkg/server/api/console/v1/types/types.go b/pkg/server/api/console/v1/types/types.go
index 2674ba74c..ce71a1cd8 100644
--- a/pkg/server/api/console/v1/types/types.go
+++ b/pkg/server/api/console/v1/types/types.go
@@ -432,6 +432,19 @@ type CreatePeoplePayload struct {
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 {
OrganizationID gid.GID `json:"organizationId"`
Name string `json:"name"`
@@ -449,6 +462,10 @@ type CreateProcessingActivityInput struct {
SecurityMeasures *string `json:"securityMeasures,omitempty"`
DataProtectionImpactAssessment coredata.ProcessingActivityDataProtectionImpactAssessment `json:"dataProtectionImpactAssessment"`
TransferImpactAssessment coredata.ProcessingActivityTransferImpactAssessment `json:"transferImpactAssessment"`
+ LastReviewDate *time.Time `json:"lastReviewDate,omitempty"`
+ NextReviewDate *time.Time `json:"nextReviewDate,omitempty"`
+ Role coredata.ProcessingActivityRole `json:"role"`
+ DataProtectionOfficerID *gid.GID `json:"dataProtectionOfficerId,omitempty"`
VendorIds []gid.GID `json:"vendorIds,omitempty"`
}
@@ -456,6 +473,19 @@ type CreateProcessingActivityPayload struct {
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 {
RiskID gid.GID `json:"riskId"`
DocumentID gid.GID `json:"documentId"`
@@ -872,6 +902,14 @@ type DeletePeoplePayload struct {
DeletedPeopleID gid.GID `json:"deletedPeopleId"`
}
+type DeleteProcessingActivityDPIAInput struct {
+ ProcessingActivityDpiaID gid.GID `json:"processingActivityDpiaId"`
+}
+
+type DeleteProcessingActivityDPIAPayload struct {
+ DeletedProcessingActivityDpiaID gid.GID `json:"deletedProcessingActivityDpiaId"`
+}
+
type DeleteProcessingActivityInput struct {
ProcessingActivityID gid.GID `json:"processingActivityId"`
}
@@ -880,6 +918,14 @@ type DeleteProcessingActivityPayload struct {
DeletedProcessingActivityID gid.GID `json:"deletedProcessingActivityId"`
}
+type DeleteProcessingActivityTIAInput struct {
+ ProcessingActivityTiaID gid.GID `json:"processingActivityTiaId"`
+}
+
+type DeleteProcessingActivityTIAPayload struct {
+ DeletedProcessingActivityTiaID gid.GID `json:"deletedProcessingActivityTiaId"`
+}
+
type DeleteRiskDocumentMappingInput struct {
RiskID gid.GID `json:"riskId"`
DocumentID gid.GID `json:"documentId"`
@@ -1426,41 +1472,43 @@ type ObligationFilter struct {
}
type Organization struct {
- ID gid.GID `json:"id"`
- Name string `json:"name"`
- LogoURL *string `json:"logoUrl,omitempty"`
- HorizontalLogoURL *string `json:"horizontalLogoUrl,omitempty"`
- Description *string `json:"description,omitempty"`
- WebsiteURL *string `json:"websiteUrl,omitempty"`
- Email *string `json:"email,omitempty"`
- HeadquarterAddress *string `json:"headquarterAddress,omitempty"`
- Context *OrganizationContext `json:"context,omitempty"`
- Memberships *MembershipConnection `json:"memberships"`
- Invitations *InvitationConnection `json:"invitations"`
- SlackConnections *SlackConnectionConnection `json:"slackConnections"`
- Frameworks *FrameworkConnection `json:"frameworks"`
- Controls *ControlConnection `json:"controls"`
- Vendors *VendorConnection `json:"vendors"`
- Peoples *PeopleConnection `json:"peoples"`
- Documents *DocumentConnection `json:"documents"`
- Meetings *MeetingConnection `json:"meetings"`
- Measures *MeasureConnection `json:"measures"`
- Risks *RiskConnection `json:"risks"`
- Tasks *TaskConnection `json:"tasks"`
- Assets *AssetConnection `json:"assets"`
- Data *DatumConnection `json:"data"`
- Audits *AuditConnection `json:"audits"`
- Nonconformities *NonconformityConnection `json:"nonconformities"`
- Obligations *ObligationConnection `json:"obligations"`
- ContinualImprovements *ContinualImprovementConnection `json:"continualImprovements"`
- ProcessingActivities *ProcessingActivityConnection `json:"processingActivities"`
- Snapshots *SnapshotConnection `json:"snapshots"`
- TrustCenterFiles *TrustCenterFileConnection `json:"trustCenterFiles"`
- TrustCenter *TrustCenter `json:"trustCenter,omitempty"`
- CustomDomain *CustomDomain `json:"customDomain,omitempty"`
- SamlConfigurations []*SAMLConfiguration `json:"samlConfigurations"`
- CreatedAt time.Time `json:"createdAt"`
- UpdatedAt time.Time `json:"updatedAt"`
+ ID gid.GID `json:"id"`
+ Name string `json:"name"`
+ LogoURL *string `json:"logoUrl,omitempty"`
+ HorizontalLogoURL *string `json:"horizontalLogoUrl,omitempty"`
+ Description *string `json:"description,omitempty"`
+ WebsiteURL *string `json:"websiteUrl,omitempty"`
+ Email *string `json:"email,omitempty"`
+ HeadquarterAddress *string `json:"headquarterAddress,omitempty"`
+ Context *OrganizationContext `json:"context,omitempty"`
+ Memberships *MembershipConnection `json:"memberships"`
+ Invitations *InvitationConnection `json:"invitations"`
+ SlackConnections *SlackConnectionConnection `json:"slackConnections"`
+ Frameworks *FrameworkConnection `json:"frameworks"`
+ Controls *ControlConnection `json:"controls"`
+ Vendors *VendorConnection `json:"vendors"`
+ Peoples *PeopleConnection `json:"peoples"`
+ Documents *DocumentConnection `json:"documents"`
+ Meetings *MeetingConnection `json:"meetings"`
+ Measures *MeasureConnection `json:"measures"`
+ Risks *RiskConnection `json:"risks"`
+ Tasks *TaskConnection `json:"tasks"`
+ Assets *AssetConnection `json:"assets"`
+ Data *DatumConnection `json:"data"`
+ Audits *AuditConnection `json:"audits"`
+ Nonconformities *NonconformityConnection `json:"nonconformities"`
+ Obligations *ObligationConnection `json:"obligations"`
+ ContinualImprovements *ContinualImprovementConnection `json:"continualImprovements"`
+ ProcessingActivities *ProcessingActivityConnection `json:"processingActivities"`
+ DataProtectionImpactAssessments *ProcessingActivityDPIAConnection `json:"dataProtectionImpactAssessments"`
+ TransferImpactAssessments *ProcessingActivityTIAConnection `json:"transferImpactAssessments"`
+ Snapshots *SnapshotConnection `json:"snapshots"`
+ TrustCenterFiles *TrustCenterFileConnection `json:"trustCenterFiles"`
+ TrustCenter *TrustCenter `json:"trustCenter,omitempty"`
+ CustomDomain *CustomDomain `json:"customDomain,omitempty"`
+ SamlConfigurations []*SAMLConfiguration `json:"samlConfigurations"`
+ CreatedAt time.Time `json:"createdAt"`
+ UpdatedAt time.Time `json:"updatedAt"`
}
func (Organization) IsNode() {}
@@ -1538,7 +1586,13 @@ type ProcessingActivity struct {
SecurityMeasures *string `json:"securityMeasures,omitempty"`
DataProtectionImpactAssessment coredata.ProcessingActivityDataProtectionImpactAssessment `json:"dataProtectionImpactAssessment"`
TransferImpactAssessment coredata.ProcessingActivityTransferImpactAssessment `json:"transferImpactAssessment"`
+ LastReviewDate *time.Time `json:"lastReviewDate,omitempty"`
+ NextReviewDate *time.Time `json:"nextReviewDate,omitempty"`
+ Role coredata.ProcessingActivityRole `json:"role"`
+ DataProtectionOfficer *People `json:"dataProtectionOfficer,omitempty"`
Vendors *VendorConnection `json:"vendors"`
+ Dpia *ProcessingActivityDpia `json:"dpia,omitempty"`
+ Tia *ProcessingActivityTia `json:"tia,omitempty"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
@@ -1546,6 +1600,27 @@ type ProcessingActivity struct {
func (ProcessingActivity) IsNode() {}
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 ProcessingActivityEdge struct {
Cursor page.CursorKey `json:"cursor"`
Node *ProcessingActivity `json:"node"`
@@ -1555,6 +1630,27 @@ type ProcessingActivityFilter struct {
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 PublishDocumentVersionInput struct {
DocumentID gid.GID `json:"documentId"`
Changelog *string `json:"changelog,omitempty"`
@@ -2071,6 +2167,19 @@ type UpdatePeoplePayload struct {
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 {
ID gid.GID `json:"id"`
Name *string `json:"name,omitempty"`
@@ -2088,6 +2197,10 @@ type UpdateProcessingActivityInput struct {
SecurityMeasures graphql.Omittable[*string] `json:"securityMeasures,omitempty"`
DataProtectionImpactAssessment *coredata.ProcessingActivityDataProtectionImpactAssessment `json:"dataProtectionImpactAssessment,omitempty"`
TransferImpactAssessment *coredata.ProcessingActivityTransferImpactAssessment `json:"transferImpactAssessment,omitempty"`
+ LastReviewDate graphql.Omittable[*time.Time] `json:"lastReviewDate,omitempty"`
+ NextReviewDate graphql.Omittable[*time.Time] `json:"nextReviewDate,omitempty"`
+ Role *coredata.ProcessingActivityRole `json:"role,omitempty"`
+ DataProtectionOfficerID graphql.Omittable[*gid.GID] `json:"dataProtectionOfficerId,omitempty"`
VendorIds []gid.GID `json:"vendorIds,omitempty"`
}
@@ -2095,6 +2208,19 @@ type UpdateProcessingActivityPayload struct {
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 {
ID gid.GID `json:"id"`
Name *string `json:"name,omitempty"`
diff --git a/pkg/server/api/console/v1/v1_resolver.go b/pkg/server/api/console/v1/v1_resolver.go
index c41a3a22b..d492ce516 100644
--- a/pkg/server/api/console/v1/v1_resolver.go
+++ b/pkg/server/api/console/v1/v1_resolver.go
@@ -4227,6 +4227,10 @@ func (r *mutationResolver) CreateProcessingActivity(ctx context.Context, input t
SecurityMeasures: input.SecurityMeasures,
DataProtectionImpactAssessment: input.DataProtectionImpactAssessment,
TransferImpactAssessment: input.TransferImpactAssessment,
+ LastReviewDate: input.LastReviewDate,
+ NextReviewDate: input.NextReviewDate,
+ Role: input.Role,
+ DataProtectionOfficerID: input.DataProtectionOfficerID,
VendorIDs: input.VendorIds,
}
@@ -4262,6 +4266,10 @@ func (r *mutationResolver) UpdateProcessingActivity(ctx context.Context, input t
SecurityMeasures: UnwrapOmittable(input.SecurityMeasures),
DataProtectionImpactAssessment: input.DataProtectionImpactAssessment,
TransferImpactAssessment: input.TransferImpactAssessment,
+ LastReviewDate: UnwrapOmittable(input.LastReviewDate),
+ NextReviewDate: UnwrapOmittable(input.NextReviewDate),
+ Role: input.Role,
+ DataProtectionOfficerID: UnwrapOmittable(input.DataProtectionOfficerID),
VendorIDs: &input.VendorIds,
}
@@ -4291,6 +4299,138 @@ func (r *mutationResolver) DeleteProcessingActivity(ctx context.Context, input t
}, nil
}
+// CreateProcessingActivityDpia is the resolver for the createProcessingActivityDPIA field.
+func (r *mutationResolver) CreateProcessingActivityDpia(ctx context.Context, input types.CreateProcessingActivityDPIAInput) (*types.CreateProcessingActivityDPIAPayload, error) {
+ r.MustBeAuthorized(ctx, input.ProcessingActivityID, authz.ActionCreateProcessingActivityDPIA)
+
+ prb := r.ProboService(ctx, input.ProcessingActivityID.TenantID())
+
+ req := probo.CreateProcessingActivityDPIARequest{
+ ProcessingActivityID: input.ProcessingActivityID,
+ Description: input.Description,
+ NecessityAndProportionality: input.NecessityAndProportionality,
+ PotentialRisk: input.PotentialRisk,
+ Mitigations: input.Mitigations,
+ ResidualRisk: input.ResidualRisk,
+ }
+
+ dpia, err := prb.ProcessingActivityDPIAs.Create(ctx, &req)
+ if err != nil {
+ panic(fmt.Errorf("cannot create processing activity dpia: %w", err))
+ }
+
+ return &types.CreateProcessingActivityDPIAPayload{
+ ProcessingActivityDpia: types.NewProcessingActivityDpia(dpia),
+ }, nil
+}
+
+// UpdateProcessingActivityDpia is the resolver for the updateProcessingActivityDPIA field.
+func (r *mutationResolver) UpdateProcessingActivityDpia(ctx context.Context, input types.UpdateProcessingActivityDPIAInput) (*types.UpdateProcessingActivityDPIAPayload, error) {
+ r.MustBeAuthorized(ctx, input.ID, authz.ActionUpdateProcessingActivityDPIA)
+
+ prb := r.ProboService(ctx, input.ID.TenantID())
+
+ req := probo.UpdateProcessingActivityDPIARequest{
+ ID: input.ID,
+ Description: UnwrapOmittable(input.Description),
+ NecessityAndProportionality: UnwrapOmittable(input.NecessityAndProportionality),
+ PotentialRisk: UnwrapOmittable(input.PotentialRisk),
+ Mitigations: UnwrapOmittable(input.Mitigations),
+ ResidualRisk: input.ResidualRisk,
+ }
+
+ dpia, err := prb.ProcessingActivityDPIAs.Update(ctx, &req)
+ if err != nil {
+ panic(fmt.Errorf("cannot update processing activity dpia: %w", err))
+ }
+
+ return &types.UpdateProcessingActivityDPIAPayload{
+ ProcessingActivityDpia: types.NewProcessingActivityDpia(dpia),
+ }, nil
+}
+
+// DeleteProcessingActivityDpia is the resolver for the deleteProcessingActivityDPIA field.
+func (r *mutationResolver) DeleteProcessingActivityDpia(ctx context.Context, input types.DeleteProcessingActivityDPIAInput) (*types.DeleteProcessingActivityDPIAPayload, error) {
+ r.MustBeAuthorized(ctx, input.ProcessingActivityDpiaID, authz.ActionDeleteProcessingActivityDPIA)
+
+ prb := r.ProboService(ctx, input.ProcessingActivityDpiaID.TenantID())
+
+ err := prb.ProcessingActivityDPIAs.Delete(ctx, input.ProcessingActivityDpiaID)
+ if err != nil {
+ panic(fmt.Errorf("cannot delete processing activity dpia: %w", err))
+ }
+
+ return &types.DeleteProcessingActivityDPIAPayload{
+ DeletedProcessingActivityDpiaID: input.ProcessingActivityDpiaID,
+ }, nil
+}
+
+// CreateProcessingActivityTia is the resolver for the createProcessingActivityTIA field.
+func (r *mutationResolver) CreateProcessingActivityTia(ctx context.Context, input types.CreateProcessingActivityTIAInput) (*types.CreateProcessingActivityTIAPayload, error) {
+ r.MustBeAuthorized(ctx, input.ProcessingActivityID, authz.ActionCreateProcessingActivityTIA)
+
+ prb := r.ProboService(ctx, input.ProcessingActivityID.TenantID())
+
+ req := probo.CreateProcessingActivityTIARequest{
+ ProcessingActivityID: input.ProcessingActivityID,
+ DataSubjects: input.DataSubjects,
+ LegalMechanism: input.LegalMechanism,
+ Transfer: input.Transfer,
+ LocalLawRisk: input.LocalLawRisk,
+ SupplementaryMeasures: input.SupplementaryMeasures,
+ }
+
+ tia, err := prb.ProcessingActivityTIAs.Create(ctx, &req)
+ if err != nil {
+ panic(fmt.Errorf("cannot create processing activity tia: %w", err))
+ }
+
+ return &types.CreateProcessingActivityTIAPayload{
+ ProcessingActivityTia: types.NewProcessingActivityTia(tia),
+ }, nil
+}
+
+// UpdateProcessingActivityTia is the resolver for the updateProcessingActivityTIA field.
+func (r *mutationResolver) UpdateProcessingActivityTia(ctx context.Context, input types.UpdateProcessingActivityTIAInput) (*types.UpdateProcessingActivityTIAPayload, error) {
+ r.MustBeAuthorized(ctx, input.ID, authz.ActionUpdateProcessingActivityTIA)
+
+ prb := r.ProboService(ctx, input.ID.TenantID())
+
+ req := probo.UpdateProcessingActivityTIARequest{
+ ID: input.ID,
+ DataSubjects: UnwrapOmittable(input.DataSubjects),
+ LegalMechanism: UnwrapOmittable(input.LegalMechanism),
+ Transfer: UnwrapOmittable(input.Transfer),
+ LocalLawRisk: UnwrapOmittable(input.LocalLawRisk),
+ SupplementaryMeasures: UnwrapOmittable(input.SupplementaryMeasures),
+ }
+
+ tia, err := prb.ProcessingActivityTIAs.Update(ctx, &req)
+ if err != nil {
+ panic(fmt.Errorf("cannot update processing activity tia: %w", err))
+ }
+
+ return &types.UpdateProcessingActivityTIAPayload{
+ ProcessingActivityTia: types.NewProcessingActivityTia(tia),
+ }, nil
+}
+
+// DeleteProcessingActivityTia is the resolver for the deleteProcessingActivityTIA field.
+func (r *mutationResolver) DeleteProcessingActivityTia(ctx context.Context, input types.DeleteProcessingActivityTIAInput) (*types.DeleteProcessingActivityTIAPayload, error) {
+ r.MustBeAuthorized(ctx, input.ProcessingActivityTiaID, authz.ActionDeleteProcessingActivityTIA)
+
+ prb := r.ProboService(ctx, input.ProcessingActivityTiaID.TenantID())
+
+ err := prb.ProcessingActivityTIAs.Delete(ctx, input.ProcessingActivityTiaID)
+ if err != nil {
+ panic(fmt.Errorf("cannot delete processing activity tia: %w", err))
+ }
+
+ return &types.DeleteProcessingActivityTIAPayload{
+ DeletedProcessingActivityTiaID: input.ProcessingActivityTiaID,
+ }, nil
+}
+
// CreateSnapshot is the resolver for the createSnapshot field.
func (r *mutationResolver) CreateSnapshot(ctx context.Context, input types.CreateSnapshotInput) (*types.CreateSnapshotPayload, error) {
r.MustBeAuthorized(ctx, input.OrganizationID, authz.ActionCreateSnapshot)
@@ -5390,6 +5530,62 @@ func (r *organizationResolver) ProcessingActivities(ctx context.Context, obj *ty
return types.NewProcessingActivityConnection(page, r, obj.ID, filter), nil
}
+// 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) (*types.ProcessingActivityDPIAConnection, error) {
+ r.MustBeAuthorized(ctx, obj.ID, authz.ActionListProcessingActivities)
+
+ prb := r.ProboService(ctx, obj.ID.TenantID())
+
+ pageOrderBy := page.OrderBy[coredata.ProcessingActivityDPIAOrderField]{
+ Field: coredata.ProcessingActivityDPIAOrderFieldCreatedAt,
+ Direction: page.OrderDirectionDesc,
+ }
+
+ if orderBy != nil {
+ pageOrderBy = page.OrderBy[coredata.ProcessingActivityDPIAOrderField]{
+ Field: orderBy.Field,
+ Direction: orderBy.Direction,
+ }
+ }
+
+ cursor := types.NewCursor(first, after, last, before, pageOrderBy)
+
+ page, err := prb.ProcessingActivityDPIAs.ListForOrganizationID(ctx, obj.ID, cursor)
+ if err != nil {
+ panic(fmt.Errorf("cannot list organization data protection impact assessments: %w", err))
+ }
+
+ return types.NewProcessingActivityDPIAConnection(page, r, obj.ID), nil
+}
+
+// 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) (*types.ProcessingActivityTIAConnection, error) {
+ r.MustBeAuthorized(ctx, obj.ID, authz.ActionListProcessingActivities)
+
+ prb := r.ProboService(ctx, obj.ID.TenantID())
+
+ pageOrderBy := page.OrderBy[coredata.ProcessingActivityTIAOrderField]{
+ Field: coredata.ProcessingActivityTIAOrderFieldCreatedAt,
+ Direction: page.OrderDirectionDesc,
+ }
+
+ if orderBy != nil {
+ pageOrderBy = page.OrderBy[coredata.ProcessingActivityTIAOrderField]{
+ Field: orderBy.Field,
+ Direction: orderBy.Direction,
+ }
+ }
+
+ cursor := types.NewCursor(first, after, last, before, pageOrderBy)
+
+ page, err := prb.ProcessingActivityTIAs.ListForOrganizationID(ctx, obj.ID, cursor)
+ if err != nil {
+ panic(fmt.Errorf("cannot list organization transfer impact assessments: %w", err))
+ }
+
+ return types.NewProcessingActivityTIAConnection(page, r, obj.ID), nil
+}
+
// Snapshots is the resolver for the snapshots field.
func (r *organizationResolver) Snapshots(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.SnapshotOrderBy) (*types.SnapshotConnection, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionListSnapshots)
@@ -5541,6 +5737,29 @@ func (r *processingActivityResolver) Organization(ctx context.Context, obj *type
return types.NewOrganization(organization), nil
}
+// DataProtectionOfficer is the resolver for the dataProtectionOfficer field.
+func (r *processingActivityResolver) DataProtectionOfficer(ctx context.Context, obj *types.ProcessingActivity) (*types.People, error) {
+ r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetDataProtectionOfficer)
+
+ prb := r.ProboService(ctx, obj.ID.TenantID())
+
+ processingActivity, err := prb.ProcessingActivities.Get(ctx, obj.ID)
+ if err != nil {
+ panic(fmt.Errorf("cannot get processing activity: %w", err))
+ }
+
+ if processingActivity.DataProtectionOfficerID == nil {
+ return nil, nil
+ }
+
+ people, err := prb.Peoples.Get(ctx, *processingActivity.DataProtectionOfficerID)
+ if err != nil {
+ panic(fmt.Errorf("cannot get data protection officer: %w", err))
+ }
+
+ return types.NewPeople(people), nil
+}
+
// Vendors is the resolver for the vendors field.
func (r *processingActivityResolver) Vendors(ctx context.Context, obj *types.ProcessingActivity, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.VendorOrderBy) (*types.VendorConnection, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionListVendors)
@@ -5568,6 +5787,42 @@ func (r *processingActivityResolver) Vendors(ctx context.Context, obj *types.Pro
return types.NewVendorConnection(page, r, obj.ID), nil
}
+// Dpia is the resolver for the dpia field.
+func (r *processingActivityResolver) Dpia(ctx context.Context, obj *types.ProcessingActivity) (*types.ProcessingActivityDpia, error) {
+ r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetDPIA)
+
+ prb := r.ProboService(ctx, obj.ID.TenantID())
+
+ dpia, err := prb.ProcessingActivityDPIAs.GetByProcessingActivityID(ctx, obj.ID)
+ if err != nil {
+ var errNotFound *coredata.ErrProcessingActivityDPIANotFound
+ if errors.As(err, &errNotFound) {
+ return nil, nil
+ }
+ panic(fmt.Errorf("cannot get processing activity dpia: %w", err))
+ }
+
+ return types.NewProcessingActivityDpia(dpia), nil
+}
+
+// Tia is the resolver for the tia field.
+func (r *processingActivityResolver) Tia(ctx context.Context, obj *types.ProcessingActivity) (*types.ProcessingActivityTia, error) {
+ r.MustBeAuthorized(ctx, obj.ID, authz.ActionGetTIA)
+
+ prb := r.ProboService(ctx, obj.ID.TenantID())
+
+ tia, err := prb.ProcessingActivityTIAs.GetByProcessingActivityID(ctx, obj.ID)
+ if err != nil {
+ var errNotFound *coredata.ErrProcessingActivityTIANotFound
+ if errors.As(err, &errNotFound) {
+ return nil, nil
+ }
+ panic(fmt.Errorf("cannot get processing activity tia: %w", err))
+ }
+
+ return types.NewProcessingActivityTia(tia), nil
+}
+
// TotalCount is the resolver for the totalCount field.
func (r *processingActivityConnectionResolver) TotalCount(ctx context.Context, obj *types.ProcessingActivityConnection) (int, error) {
r.MustBeAuthorized(ctx, obj.ParentID, authz.ActionTotalCount)
@@ -5591,6 +5846,126 @@ func (r *processingActivityConnectionResolver) TotalCount(ctx context.Context, o
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)
+ 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)
+ 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.
func (r *queryResolver) Node(ctx context.Context, id gid.GID) (types.Node, error) {
r.MustBeAuthorized(ctx, id, authz.ActionGet)
@@ -5797,6 +6172,20 @@ func (r *queryResolver) Node(ctx context.Context, id gid.GID) (types.Node, error
}
return types.NewProcessingActivity(processingActivity), nil
+ case coredata.ProcessingActivityDPIAEntityType:
+ dpia, err := prb.ProcessingActivityDPIAs.Get(ctx, id)
+ if err != nil {
+ panic(fmt.Errorf("cannot get processing activity dpia: %w", err))
+ }
+
+ return types.NewProcessingActivityDpia(dpia), nil
+ case coredata.ProcessingActivityTIAEntityType:
+ tia, err := prb.ProcessingActivityTIAs.Get(ctx, id)
+ if err != nil {
+ panic(fmt.Errorf("cannot get processing activity tia: %w", err))
+ }
+
+ return types.NewProcessingActivityTia(tia), nil
case coredata.SnapshotEntityType:
snapshot, err := prb.Snapshots.Get(ctx, id)
if err != nil {
@@ -7396,6 +7785,26 @@ func (r *Resolver) ProcessingActivityConnection() schema.ProcessingActivityConne
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.
func (r *Resolver) Query() schema.QueryResolver { return &queryResolver{r} }
@@ -7546,6 +7955,10 @@ type organizationResolver struct{ *Resolver }
type peopleConnectionResolver struct{ *Resolver }
type processingActivityResolver 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 reportResolver struct{ *Resolver }
type riskResolver struct{ *Resolver }