Add new gdpr registries

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-12-16 16:56:33 +01:00
parent 9084d74b06
commit 91b42c6cd1
44 changed files with 12700 additions and 463 deletions

View File

@@ -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!
}

File diff suppressed because it is too large Load Diff

View File

@@ -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,
}

View File

@@ -0,0 +1,73 @@
// Copyright (c) 2025 Probo Inc <hello@getprobo.com>.
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
package 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,
}
}

View File

@@ -0,0 +1,73 @@
// Copyright (c) 2025 Probo Inc <hello@getprobo.com>.
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
package 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,
}
}

View File

@@ -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"`

View File

@@ -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 }