Rename State of Applicability to Statement of Applicability
Rename the entity across the full stack: database table (states_of_applicability → statements_of_applicability), Go model, GraphQL types, MCP specification, CLI commands, frontend components, routes, and display labels. Includes a migration to rename the table and its foreign key column. Widen sidebar from 260px to 280px to fit the longer label. Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
@@ -1398,9 +1398,9 @@ enum SnapshotsType
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.SnapshotsTypeProcessingActivities"
|
||||
)
|
||||
STATES_OF_APPLICABILITY
|
||||
STATEMENTS_OF_APPLICABILITY
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.SnapshotsTypeStatesOfApplicability"
|
||||
value: "go.probo.inc/probo/pkg/coredata.SnapshotsTypeStatementsOfApplicability"
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1690,7 +1690,7 @@ input DatumFilter {
|
||||
snapshotId: ID
|
||||
}
|
||||
|
||||
input StateOfApplicabilityFilter {
|
||||
input StatementOfApplicabilityFilter {
|
||||
snapshotId: ID
|
||||
}
|
||||
|
||||
@@ -1955,14 +1955,14 @@ type Organization implements Node {
|
||||
orderBy: MeetingOrder
|
||||
): MeetingConnection! @goField(forceResolver: true)
|
||||
|
||||
statesOfApplicability(
|
||||
statementsOfApplicability(
|
||||
first: Int
|
||||
after: CursorKey
|
||||
last: Int
|
||||
before: CursorKey
|
||||
orderBy: StateOfApplicabilityOrder
|
||||
filter: StateOfApplicabilityFilter = { snapshotId: null }
|
||||
): StateOfApplicabilityConnection! @goField(forceResolver: true)
|
||||
orderBy: StatementOfApplicabilityOrder
|
||||
filter: StatementOfApplicabilityFilter = { snapshotId: null }
|
||||
): StatementOfApplicabilityConnection! @goField(forceResolver: true)
|
||||
|
||||
measureCategories: [String!]! @goField(forceResolver: true)
|
||||
|
||||
@@ -2756,7 +2756,7 @@ type WebhookEventEdge {
|
||||
node: WebhookEvent!
|
||||
}
|
||||
|
||||
type StateOfApplicability implements Node {
|
||||
type StatementOfApplicability implements Node {
|
||||
id: ID!
|
||||
name: String!
|
||||
sourceId: ID
|
||||
@@ -2793,7 +2793,7 @@ type ApplicabilityStatementEdge {
|
||||
|
||||
type ApplicabilityStatement implements Node {
|
||||
id: ID!
|
||||
stateOfApplicability: StateOfApplicability! @goField(forceResolver: true)
|
||||
statementOfApplicability: StatementOfApplicability! @goField(forceResolver: true)
|
||||
control: Control! @goField(forceResolver: true)
|
||||
applicability: Boolean!
|
||||
justification: String!
|
||||
@@ -3427,18 +3427,18 @@ type MeetingEdge {
|
||||
node: Meeting!
|
||||
}
|
||||
|
||||
type StateOfApplicabilityConnection
|
||||
type StatementOfApplicabilityConnection
|
||||
@goModel(
|
||||
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.StateOfApplicabilityConnection"
|
||||
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.StatementOfApplicabilityConnection"
|
||||
) {
|
||||
totalCount: Int! @goField(forceResolver: true)
|
||||
edges: [StateOfApplicabilityEdge!]!
|
||||
edges: [StatementOfApplicabilityEdge!]!
|
||||
pageInfo: PageInfo!
|
||||
}
|
||||
|
||||
type StateOfApplicabilityEdge {
|
||||
type StatementOfApplicabilityEdge {
|
||||
cursor: CursorKey!
|
||||
node: StateOfApplicability!
|
||||
node: StatementOfApplicability!
|
||||
}
|
||||
|
||||
|
||||
@@ -3906,19 +3906,19 @@ type Mutation {
|
||||
deleteWebhookSubscription(
|
||||
input: DeleteWebhookSubscriptionInput!
|
||||
): DeleteWebhookSubscriptionPayload!
|
||||
# StateOfApplicability mutations
|
||||
createStateOfApplicability(
|
||||
input: CreateStateOfApplicabilityInput!
|
||||
): CreateStateOfApplicabilityPayload!
|
||||
updateStateOfApplicability(
|
||||
input: UpdateStateOfApplicabilityInput!
|
||||
): UpdateStateOfApplicabilityPayload!
|
||||
deleteStateOfApplicability(
|
||||
input: DeleteStateOfApplicabilityInput!
|
||||
): DeleteStateOfApplicabilityPayload!
|
||||
exportStateOfApplicabilityPDF(
|
||||
input: ExportStateOfApplicabilityPDFInput!
|
||||
): ExportStateOfApplicabilityPDFPayload!
|
||||
# StatementOfApplicability mutations
|
||||
createStatementOfApplicability(
|
||||
input: CreateStatementOfApplicabilityInput!
|
||||
): CreateStatementOfApplicabilityPayload!
|
||||
updateStatementOfApplicability(
|
||||
input: UpdateStatementOfApplicabilityInput!
|
||||
): UpdateStatementOfApplicabilityPayload!
|
||||
deleteStatementOfApplicability(
|
||||
input: DeleteStatementOfApplicabilityInput!
|
||||
): DeleteStatementOfApplicabilityPayload!
|
||||
exportStatementOfApplicabilityPDF(
|
||||
input: ExportStatementOfApplicabilityPDFInput!
|
||||
): ExportStatementOfApplicabilityPDFPayload!
|
||||
publishMajorDocumentVersion(
|
||||
input: PublishMajorDocumentVersionInput!
|
||||
): PublishDocumentVersionPayload!
|
||||
@@ -4491,7 +4491,7 @@ input DeleteControlDocumentMappingInput {
|
||||
}
|
||||
|
||||
input CreateApplicabilityStatementInput {
|
||||
stateOfApplicabilityId: ID!
|
||||
statementOfApplicabilityId: ID!
|
||||
controlId: ID!
|
||||
applicability: Boolean!
|
||||
justification: String
|
||||
@@ -4735,13 +4735,13 @@ input DeleteMeetingInput {
|
||||
meetingId: ID!
|
||||
}
|
||||
|
||||
input CreateStateOfApplicabilityInput {
|
||||
input CreateStatementOfApplicabilityInput {
|
||||
organizationId: ID!
|
||||
name: String!
|
||||
ownerId: ID!
|
||||
}
|
||||
|
||||
input UpdateStateOfApplicabilityInput {
|
||||
input UpdateStatementOfApplicabilityInput {
|
||||
id: ID!
|
||||
name: String
|
||||
ownerId: ID
|
||||
@@ -4753,37 +4753,37 @@ input ApplicabilityStatementInput {
|
||||
justification: String
|
||||
}
|
||||
|
||||
input DeleteStateOfApplicabilityInput {
|
||||
stateOfApplicabilityId: ID!
|
||||
input DeleteStatementOfApplicabilityInput {
|
||||
statementOfApplicabilityId: ID!
|
||||
}
|
||||
|
||||
input ExportStateOfApplicabilityPDFInput {
|
||||
stateOfApplicabilityId: ID!
|
||||
input ExportStatementOfApplicabilityPDFInput {
|
||||
statementOfApplicabilityId: ID!
|
||||
}
|
||||
|
||||
type ExportStateOfApplicabilityPDFPayload {
|
||||
type ExportStatementOfApplicabilityPDFPayload {
|
||||
data: String!
|
||||
}
|
||||
|
||||
input StateOfApplicabilityOrder
|
||||
input StatementOfApplicabilityOrder
|
||||
@goModel(
|
||||
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.StateOfApplicabilityOrderBy"
|
||||
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.StatementOfApplicabilityOrderBy"
|
||||
) {
|
||||
direction: OrderDirection!
|
||||
field: StateOfApplicabilityOrderField!
|
||||
field: StatementOfApplicabilityOrderField!
|
||||
}
|
||||
|
||||
enum StateOfApplicabilityOrderField
|
||||
enum StatementOfApplicabilityOrderField
|
||||
@goModel(
|
||||
model: "go.probo.inc/probo/pkg/coredata.StateOfApplicabilityOrderField"
|
||||
model: "go.probo.inc/probo/pkg/coredata.StatementOfApplicabilityOrderField"
|
||||
) {
|
||||
NAME
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.StateOfApplicabilityOrderFieldName"
|
||||
value: "go.probo.inc/probo/pkg/coredata.StatementOfApplicabilityOrderFieldName"
|
||||
)
|
||||
CREATED_AT
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.StateOfApplicabilityOrderFieldCreatedAt"
|
||||
value: "go.probo.inc/probo/pkg/coredata.StatementOfApplicabilityOrderFieldCreatedAt"
|
||||
)
|
||||
}
|
||||
input CreateControlInput {
|
||||
@@ -5496,16 +5496,16 @@ type DeleteWebhookSubscriptionPayload {
|
||||
deletedWebhookSubscriptionId: ID!
|
||||
}
|
||||
|
||||
type CreateStateOfApplicabilityPayload {
|
||||
stateOfApplicabilityEdge: StateOfApplicabilityEdge!
|
||||
type CreateStatementOfApplicabilityPayload {
|
||||
statementOfApplicabilityEdge: StatementOfApplicabilityEdge!
|
||||
}
|
||||
|
||||
type UpdateStateOfApplicabilityPayload {
|
||||
stateOfApplicability: StateOfApplicability!
|
||||
type UpdateStatementOfApplicabilityPayload {
|
||||
statementOfApplicability: StatementOfApplicability!
|
||||
}
|
||||
|
||||
type DeleteStateOfApplicabilityPayload {
|
||||
deletedStateOfApplicabilityId: ID!
|
||||
type DeleteStatementOfApplicabilityPayload {
|
||||
deletedStatementOfApplicabilityId: ID!
|
||||
}
|
||||
|
||||
input VendorRiskAssessmentOrder {
|
||||
|
||||
@@ -70,8 +70,8 @@ func NewApplicabilityStatement(as *coredata.ApplicabilityStatement) *Applicabili
|
||||
|
||||
return &ApplicabilityStatement{
|
||||
ID: as.ID,
|
||||
StateOfApplicability: &StateOfApplicability{
|
||||
ID: as.StateOfApplicabilityID,
|
||||
StatementOfApplicability: &StatementOfApplicability{
|
||||
ID: as.StatementOfApplicabilityID,
|
||||
},
|
||||
Control: &Control{
|
||||
ID: as.ControlID,
|
||||
|
||||
@@ -21,32 +21,32 @@ import (
|
||||
)
|
||||
|
||||
type (
|
||||
StateOfApplicabilityOrderBy OrderBy[coredata.StateOfApplicabilityOrderField]
|
||||
StatementOfApplicabilityOrderBy OrderBy[coredata.StatementOfApplicabilityOrderField]
|
||||
|
||||
StateOfApplicabilityConnection struct {
|
||||
StatementOfApplicabilityConnection struct {
|
||||
TotalCount int
|
||||
Edges []*StateOfApplicabilityEdge
|
||||
Edges []*StatementOfApplicabilityEdge
|
||||
PageInfo PageInfo
|
||||
|
||||
Resolver any
|
||||
ParentID gid.GID
|
||||
Filters *coredata.StateOfApplicabilityFilter
|
||||
Filters *coredata.StatementOfApplicabilityFilter
|
||||
}
|
||||
)
|
||||
|
||||
func NewStateOfApplicabilityConnection(
|
||||
p *page.Page[*coredata.StateOfApplicability, coredata.StateOfApplicabilityOrderField],
|
||||
func NewStatementOfApplicabilityConnection(
|
||||
p *page.Page[*coredata.StatementOfApplicability, coredata.StatementOfApplicabilityOrderField],
|
||||
parentType any,
|
||||
parentID gid.GID,
|
||||
filters *coredata.StateOfApplicabilityFilter,
|
||||
) *StateOfApplicabilityConnection {
|
||||
var edges = make([]*StateOfApplicabilityEdge, len(p.Data))
|
||||
filters *coredata.StatementOfApplicabilityFilter,
|
||||
) *StatementOfApplicabilityConnection {
|
||||
var edges = make([]*StatementOfApplicabilityEdge, len(p.Data))
|
||||
|
||||
for i := range edges {
|
||||
edges[i] = NewStateOfApplicabilityEdge(p.Data[i], p.Cursor.OrderBy.Field)
|
||||
edges[i] = NewStatementOfApplicabilityEdge(p.Data[i], p.Cursor.OrderBy.Field)
|
||||
}
|
||||
|
||||
return &StateOfApplicabilityConnection{
|
||||
return &StatementOfApplicabilityConnection{
|
||||
Edges: edges,
|
||||
PageInfo: *NewPageInfo(p),
|
||||
|
||||
@@ -56,15 +56,15 @@ func NewStateOfApplicabilityConnection(
|
||||
}
|
||||
}
|
||||
|
||||
func NewStateOfApplicabilityEdge(soa *coredata.StateOfApplicability, orderBy coredata.StateOfApplicabilityOrderField) *StateOfApplicabilityEdge {
|
||||
return &StateOfApplicabilityEdge{
|
||||
func NewStatementOfApplicabilityEdge(soa *coredata.StatementOfApplicability, orderBy coredata.StatementOfApplicabilityOrderField) *StatementOfApplicabilityEdge {
|
||||
return &StatementOfApplicabilityEdge{
|
||||
Cursor: soa.CursorKey(orderBy),
|
||||
Node: NewStateOfApplicability(soa),
|
||||
Node: NewStatementOfApplicability(soa),
|
||||
}
|
||||
}
|
||||
|
||||
func NewStateOfApplicability(soa *coredata.StateOfApplicability) *StateOfApplicability {
|
||||
return &StateOfApplicability{
|
||||
func NewStatementOfApplicability(soa *coredata.StatementOfApplicability) *StatementOfApplicability {
|
||||
return &StatementOfApplicability{
|
||||
ID: soa.ID,
|
||||
Organization: &Organization{
|
||||
ID: soa.OrganizationID,
|
||||
@@ -543,21 +543,21 @@ func (r *accessSourceConnectionResolver) TotalCount(ctx context.Context, obj *ty
|
||||
panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver))
|
||||
}
|
||||
|
||||
// StateOfApplicability is the resolver for the stateOfApplicability field.
|
||||
func (r *applicabilityStatementResolver) StateOfApplicability(ctx context.Context, obj *types.ApplicabilityStatement) (*types.StateOfApplicability, error) {
|
||||
if err := r.authorize(ctx, obj.StateOfApplicability.ID, probo.ActionStateOfApplicabilityGet); err != nil {
|
||||
// StatementOfApplicability is the resolver for the statementOfApplicability field.
|
||||
func (r *applicabilityStatementResolver) StatementOfApplicability(ctx context.Context, obj *types.ApplicabilityStatement) (*types.StatementOfApplicability, error) {
|
||||
if err := r.authorize(ctx, obj.StatementOfApplicability.ID, probo.ActionStatementOfApplicabilityGet); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
prb := r.ProboService(ctx, obj.StateOfApplicability.ID.TenantID())
|
||||
prb := r.ProboService(ctx, obj.StatementOfApplicability.ID.TenantID())
|
||||
|
||||
soa, err := prb.StatesOfApplicability.Get(ctx, obj.StateOfApplicability.ID)
|
||||
soa, err := prb.StatementsOfApplicability.Get(ctx, obj.StatementOfApplicability.ID)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot get state of applicability", log.Error(err))
|
||||
r.logger.ErrorCtx(ctx, "cannot get statement of applicability", log.Error(err))
|
||||
return nil, gqlutils.Internal(ctx)
|
||||
}
|
||||
|
||||
return types.NewStateOfApplicability(soa), nil
|
||||
return types.NewStatementOfApplicability(soa), nil
|
||||
}
|
||||
|
||||
// Control is the resolver for the control field.
|
||||
@@ -595,8 +595,8 @@ func (r *applicabilityStatementConnectionResolver) TotalCount(ctx context.Contex
|
||||
prb := r.ProboService(ctx, obj.ParentID.TenantID())
|
||||
|
||||
switch obj.Resolver.(type) {
|
||||
case *stateOfApplicabilityResolver:
|
||||
count, err := prb.StatesOfApplicability.CountApplicabilityStatements(ctx, obj.ParentID)
|
||||
case *statementOfApplicabilityResolver:
|
||||
count, err := prb.StatementsOfApplicability.CountApplicabilityStatements(ctx, obj.ParentID)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot count applicability statements", log.Error(err))
|
||||
return 0, gqlutils.Internal(ctx)
|
||||
@@ -1289,8 +1289,8 @@ func (r *controlConnectionResolver) TotalCount(ctx context.Context, obj *types.C
|
||||
return 0, gqlutils.Internal(ctx)
|
||||
}
|
||||
return count, nil
|
||||
case *stateOfApplicabilityResolver:
|
||||
count, err := prb.Controls.CountForStateOfApplicabilityID(ctx, obj.ParentID, obj.Filters)
|
||||
case *statementOfApplicabilityResolver:
|
||||
count, err := prb.Controls.CountForStatementOfApplicabilityID(ctx, obj.ParentID, obj.Filters)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot count controls", log.Error(err))
|
||||
return 0, gqlutils.Internal(ctx)
|
||||
@@ -4440,9 +4440,9 @@ func (r *mutationResolver) CreateApplicabilityStatement(ctx context.Context, inp
|
||||
return nil, err
|
||||
}
|
||||
|
||||
prb := r.ProboService(ctx, input.StateOfApplicabilityID.TenantID())
|
||||
prb := r.ProboService(ctx, input.StatementOfApplicabilityID.TenantID())
|
||||
|
||||
applicabilityStatement, err := prb.StatesOfApplicability.CreateApplicabilityStatement(ctx, input.StateOfApplicabilityID, input.ControlID, input.Applicability, input.Justification)
|
||||
applicabilityStatement, err := prb.StatementsOfApplicability.CreateApplicabilityStatement(ctx, input.StatementOfApplicabilityID, input.ControlID, input.Applicability, input.Justification)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot create applicability statement", log.Error(err))
|
||||
return nil, gqlutils.Internal(ctx)
|
||||
@@ -4461,7 +4461,7 @@ func (r *mutationResolver) UpdateApplicabilityStatement(ctx context.Context, inp
|
||||
|
||||
prb := r.ProboService(ctx, input.ApplicabilityStatementID.TenantID())
|
||||
|
||||
applicabilityStatement, err := prb.StatesOfApplicability.UpdateApplicabilityStatement(ctx, input.ApplicabilityStatementID, input.Applicability, input.Justification)
|
||||
applicabilityStatement, err := prb.StatementsOfApplicability.UpdateApplicabilityStatement(ctx, input.ApplicabilityStatementID, input.Applicability, input.Justification)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot update applicability statement", log.Error(err))
|
||||
return nil, gqlutils.Internal(ctx)
|
||||
@@ -4480,7 +4480,7 @@ func (r *mutationResolver) DeleteApplicabilityStatement(ctx context.Context, inp
|
||||
|
||||
prb := r.ProboService(ctx, input.ApplicabilityStatementID.TenantID())
|
||||
|
||||
err := prb.StatesOfApplicability.DeleteApplicabilityStatement(ctx, input.ApplicabilityStatementID)
|
||||
err := prb.StatementsOfApplicability.DeleteApplicabilityStatement(ctx, input.ApplicabilityStatementID)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot delete applicability statement", log.Error(err))
|
||||
return nil, gqlutils.Internal(ctx)
|
||||
@@ -5526,17 +5526,17 @@ func (r *mutationResolver) DeleteWebhookSubscription(ctx context.Context, input
|
||||
}, nil
|
||||
}
|
||||
|
||||
// CreateStateOfApplicability is the resolver for the createStateOfApplicability field.
|
||||
func (r *mutationResolver) CreateStateOfApplicability(ctx context.Context, input types.CreateStateOfApplicabilityInput) (*types.CreateStateOfApplicabilityPayload, error) {
|
||||
if err := r.authorize(ctx, input.OrganizationID, probo.ActionStateOfApplicabilityCreate); err != nil {
|
||||
// CreateStatementOfApplicability is the resolver for the createStatementOfApplicability field.
|
||||
func (r *mutationResolver) CreateStatementOfApplicability(ctx context.Context, input types.CreateStatementOfApplicabilityInput) (*types.CreateStatementOfApplicabilityPayload, error) {
|
||||
if err := r.authorize(ctx, input.OrganizationID, probo.ActionStatementOfApplicabilityCreate); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
prb := r.ProboService(ctx, input.OrganizationID.TenantID())
|
||||
|
||||
stateOfApplicability, err := prb.StatesOfApplicability.Create(
|
||||
statementOfApplicability, err := prb.StatementsOfApplicability.Create(
|
||||
ctx,
|
||||
probo.CreateStateOfApplicabilityRequest{
|
||||
probo.CreateStatementOfApplicabilityRequest{
|
||||
OrganizationID: input.OrganizationID,
|
||||
Name: input.Name,
|
||||
OwnerID: input.OwnerID,
|
||||
@@ -5549,18 +5549,18 @@ func (r *mutationResolver) CreateStateOfApplicability(ctx context.Context, input
|
||||
if validationErrors, ok := errors.AsType[validator.ValidationErrors](err); ok {
|
||||
return nil, gqlutils.InvalidValidationErrors(ctx, validationErrors)
|
||||
}
|
||||
r.logger.ErrorCtx(ctx, "cannot create state_of_applicability", log.Error(err))
|
||||
r.logger.ErrorCtx(ctx, "cannot create statement_of_applicability", log.Error(err))
|
||||
return nil, gqlutils.Internal(ctx)
|
||||
}
|
||||
|
||||
return &types.CreateStateOfApplicabilityPayload{
|
||||
StateOfApplicabilityEdge: types.NewStateOfApplicabilityEdge(stateOfApplicability, coredata.StateOfApplicabilityOrderFieldCreatedAt),
|
||||
return &types.CreateStatementOfApplicabilityPayload{
|
||||
StatementOfApplicabilityEdge: types.NewStatementOfApplicabilityEdge(statementOfApplicability, coredata.StatementOfApplicabilityOrderFieldCreatedAt),
|
||||
}, nil
|
||||
}
|
||||
|
||||
// UpdateStateOfApplicability is the resolver for the updateStateOfApplicability field.
|
||||
func (r *mutationResolver) UpdateStateOfApplicability(ctx context.Context, input types.UpdateStateOfApplicabilityInput) (*types.UpdateStateOfApplicabilityPayload, error) {
|
||||
if err := r.authorize(ctx, input.ID, probo.ActionStateOfApplicabilityUpdate); err != nil {
|
||||
// UpdateStatementOfApplicability is the resolver for the updateStatementOfApplicability field.
|
||||
func (r *mutationResolver) UpdateStatementOfApplicability(ctx context.Context, input types.UpdateStatementOfApplicabilityInput) (*types.UpdateStatementOfApplicabilityPayload, error) {
|
||||
if err := r.authorize(ctx, input.ID, probo.ActionStatementOfApplicabilityUpdate); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -5571,12 +5571,12 @@ func (r *mutationResolver) UpdateStateOfApplicability(ctx context.Context, input
|
||||
name = input.Name
|
||||
}
|
||||
|
||||
stateOfApplicability, err := prb.StatesOfApplicability.Update(
|
||||
statementOfApplicability, err := prb.StatementsOfApplicability.Update(
|
||||
ctx,
|
||||
probo.UpdateStateOfApplicabilityRequest{
|
||||
StateOfApplicabilityID: input.ID,
|
||||
Name: name,
|
||||
OwnerID: input.OwnerID,
|
||||
probo.UpdateStatementOfApplicabilityRequest{
|
||||
StatementOfApplicabilityID: input.ID,
|
||||
Name: name,
|
||||
OwnerID: input.OwnerID,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
@@ -5586,52 +5586,52 @@ func (r *mutationResolver) UpdateStateOfApplicability(ctx context.Context, input
|
||||
if validationErrors, ok := errors.AsType[validator.ValidationErrors](err); ok {
|
||||
return nil, gqlutils.InvalidValidationErrors(ctx, validationErrors)
|
||||
}
|
||||
r.logger.ErrorCtx(ctx, "cannot update state_of_applicability", log.Error(err))
|
||||
r.logger.ErrorCtx(ctx, "cannot update statement_of_applicability", log.Error(err))
|
||||
return nil, gqlutils.Internal(ctx)
|
||||
}
|
||||
|
||||
return &types.UpdateStateOfApplicabilityPayload{
|
||||
StateOfApplicability: types.NewStateOfApplicability(stateOfApplicability),
|
||||
return &types.UpdateStatementOfApplicabilityPayload{
|
||||
StatementOfApplicability: types.NewStatementOfApplicability(statementOfApplicability),
|
||||
}, nil
|
||||
}
|
||||
|
||||
// DeleteStateOfApplicability is the resolver for the deleteStateOfApplicability field.
|
||||
func (r *mutationResolver) DeleteStateOfApplicability(ctx context.Context, input types.DeleteStateOfApplicabilityInput) (*types.DeleteStateOfApplicabilityPayload, error) {
|
||||
if err := r.authorize(ctx, input.StateOfApplicabilityID, probo.ActionStateOfApplicabilityDelete); err != nil {
|
||||
// DeleteStatementOfApplicability is the resolver for the deleteStatementOfApplicability field.
|
||||
func (r *mutationResolver) DeleteStatementOfApplicability(ctx context.Context, input types.DeleteStatementOfApplicabilityInput) (*types.DeleteStatementOfApplicabilityPayload, error) {
|
||||
if err := r.authorize(ctx, input.StatementOfApplicabilityID, probo.ActionStatementOfApplicabilityDelete); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
prb := r.ProboService(ctx, input.StateOfApplicabilityID.TenantID())
|
||||
prb := r.ProboService(ctx, input.StatementOfApplicabilityID.TenantID())
|
||||
|
||||
err := prb.StatesOfApplicability.Delete(ctx, input.StateOfApplicabilityID)
|
||||
err := prb.StatementsOfApplicability.Delete(ctx, input.StatementOfApplicabilityID)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot delete state_of_applicability", log.Error(err))
|
||||
r.logger.ErrorCtx(ctx, "cannot delete statement_of_applicability", log.Error(err))
|
||||
return nil, gqlutils.Internal(ctx)
|
||||
}
|
||||
|
||||
return &types.DeleteStateOfApplicabilityPayload{
|
||||
DeletedStateOfApplicabilityID: input.StateOfApplicabilityID,
|
||||
return &types.DeleteStatementOfApplicabilityPayload{
|
||||
DeletedStatementOfApplicabilityID: input.StatementOfApplicabilityID,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// ExportStateOfApplicabilityPDF is the resolver for the exportStateOfApplicabilityPDF field.
|
||||
func (r *mutationResolver) ExportStateOfApplicabilityPDF(ctx context.Context, input types.ExportStateOfApplicabilityPDFInput) (*types.ExportStateOfApplicabilityPDFPayload, error) {
|
||||
if err := r.authorize(ctx, input.StateOfApplicabilityID, probo.ActionStateOfApplicabilityExport); err != nil {
|
||||
// ExportStatementOfApplicabilityPDF is the resolver for the exportStatementOfApplicabilityPDF field.
|
||||
func (r *mutationResolver) ExportStatementOfApplicabilityPDF(ctx context.Context, input types.ExportStatementOfApplicabilityPDFInput) (*types.ExportStatementOfApplicabilityPDFPayload, error) {
|
||||
if err := r.authorize(ctx, input.StatementOfApplicabilityID, probo.ActionStatementOfApplicabilityExport); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
prb := r.ProboService(ctx, input.StateOfApplicabilityID.TenantID())
|
||||
prb := r.ProboService(ctx, input.StatementOfApplicabilityID.TenantID())
|
||||
|
||||
pdfData, err := prb.StatesOfApplicability.ExportPDF(ctx, input.StateOfApplicabilityID)
|
||||
pdfData, err := prb.StatementsOfApplicability.ExportPDF(ctx, input.StatementOfApplicabilityID)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot export state of applicability PDF", log.Error(err))
|
||||
r.logger.ErrorCtx(ctx, "cannot export statement of applicability PDF", log.Error(err))
|
||||
return nil, gqlutils.Internal(ctx)
|
||||
}
|
||||
|
||||
base64Data := base64.StdEncoding.EncodeToString(pdfData)
|
||||
dataURI := fmt.Sprintf("data:application/pdf;base64,%s", base64Data)
|
||||
|
||||
return &types.ExportStateOfApplicabilityPDFPayload{
|
||||
return &types.ExportStatementOfApplicabilityPDFPayload{
|
||||
Data: dataURI,
|
||||
}, nil
|
||||
}
|
||||
@@ -8522,20 +8522,20 @@ func (r *organizationResolver) Meetings(ctx context.Context, obj *types.Organiza
|
||||
return types.NewMeetingConnection(page, r, obj.ID), nil
|
||||
}
|
||||
|
||||
// StatesOfApplicability is the resolver for the statesOfApplicability field.
|
||||
func (r *organizationResolver) StatesOfApplicability(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.StateOfApplicabilityOrderBy, filter *types.StateOfApplicabilityFilter) (*types.StateOfApplicabilityConnection, error) {
|
||||
if err := r.authorize(ctx, obj.ID, probo.ActionStateOfApplicabilityList); err != nil {
|
||||
// StatementsOfApplicability is the resolver for the statementsOfApplicability field.
|
||||
func (r *organizationResolver) StatementsOfApplicability(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.StatementOfApplicabilityOrderBy, filter *types.StatementOfApplicabilityFilter) (*types.StatementOfApplicabilityConnection, error) {
|
||||
if err := r.authorize(ctx, obj.ID, probo.ActionStatementOfApplicabilityList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
prb := r.ProboService(ctx, obj.ID.TenantID())
|
||||
|
||||
pageOrderBy := page.OrderBy[coredata.StateOfApplicabilityOrderField]{
|
||||
Field: coredata.StateOfApplicabilityOrderFieldCreatedAt,
|
||||
pageOrderBy := page.OrderBy[coredata.StatementOfApplicabilityOrderField]{
|
||||
Field: coredata.StatementOfApplicabilityOrderFieldCreatedAt,
|
||||
Direction: page.OrderDirectionDesc,
|
||||
}
|
||||
if orderBy != nil {
|
||||
pageOrderBy = page.OrderBy[coredata.StateOfApplicabilityOrderField]{
|
||||
pageOrderBy = page.OrderBy[coredata.StatementOfApplicabilityOrderField]{
|
||||
Field: orderBy.Field,
|
||||
Direction: orderBy.Direction,
|
||||
}
|
||||
@@ -8543,18 +8543,18 @@ func (r *organizationResolver) StatesOfApplicability(ctx context.Context, obj *t
|
||||
|
||||
cursor := types.NewCursor(first, after, last, before, pageOrderBy)
|
||||
|
||||
var stateOfApplicabilityFilter = coredata.NewStateOfApplicabilityFilter(nil)
|
||||
var statementOfApplicabilityFilter = coredata.NewStatementOfApplicabilityFilter(nil)
|
||||
if filter != nil {
|
||||
stateOfApplicabilityFilter = coredata.NewStateOfApplicabilityFilter(&filter.SnapshotID)
|
||||
statementOfApplicabilityFilter = coredata.NewStatementOfApplicabilityFilter(&filter.SnapshotID)
|
||||
}
|
||||
|
||||
page, err := prb.StatesOfApplicability.ListForOrganizationID(ctx, obj.ID, cursor, stateOfApplicabilityFilter)
|
||||
page, err := prb.StatementsOfApplicability.ListForOrganizationID(ctx, obj.ID, cursor, statementOfApplicabilityFilter)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot list organization states_of_applicability", log.Error(err))
|
||||
r.logger.ErrorCtx(ctx, "cannot list organization statements_of_applicability", log.Error(err))
|
||||
return nil, gqlutils.Internal(ctx)
|
||||
}
|
||||
|
||||
return types.NewStateOfApplicabilityConnection(page, r, obj.ID, stateOfApplicabilityFilter), nil
|
||||
return types.NewStatementOfApplicabilityConnection(page, r, obj.ID, statementOfApplicabilityFilter), nil
|
||||
}
|
||||
|
||||
// MeasureCategories is the resolver for the measureCategories field.
|
||||
@@ -9695,14 +9695,14 @@ func (r *queryResolver) Node(ctx context.Context, id gid.GID) (types.Node, error
|
||||
}
|
||||
return types.NewRightsRequest(rightsRequest), nil
|
||||
}
|
||||
case coredata.StateOfApplicabilityEntityType:
|
||||
action = probo.ActionStateOfApplicabilityGet
|
||||
case coredata.StatementOfApplicabilityEntityType:
|
||||
action = probo.ActionStatementOfApplicabilityGet
|
||||
loadNode = func(ctx context.Context, id gid.GID) (types.Node, error) {
|
||||
stateOfApplicability, err := prb.StatesOfApplicability.Get(ctx, id)
|
||||
statementOfApplicability, err := prb.StatementsOfApplicability.Get(ctx, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return types.NewStateOfApplicability(stateOfApplicability), nil
|
||||
return types.NewStatementOfApplicability(statementOfApplicability), nil
|
||||
}
|
||||
case coredata.WebhookSubscriptionEntityType:
|
||||
action = probo.ActionWebhookSubscriptionGet
|
||||
@@ -10191,7 +10191,7 @@ func (r *snapshotConnectionResolver) TotalCount(ctx context.Context, obj *types.
|
||||
}
|
||||
|
||||
// Organization is the resolver for the organization field.
|
||||
func (r *stateOfApplicabilityResolver) Organization(ctx context.Context, obj *types.StateOfApplicability) (*types.Organization, error) {
|
||||
func (r *statementOfApplicabilityResolver) Organization(ctx context.Context, obj *types.StatementOfApplicability) (*types.Organization, error) {
|
||||
if err := r.authorize(ctx, obj.ID, probo.ActionOrganizationGet); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -10211,7 +10211,7 @@ func (r *stateOfApplicabilityResolver) Organization(ctx context.Context, obj *ty
|
||||
}
|
||||
|
||||
// Owner is the resolver for the owner field.
|
||||
func (r *stateOfApplicabilityResolver) Owner(ctx context.Context, obj *types.StateOfApplicability) (*types.Profile, error) {
|
||||
func (r *statementOfApplicabilityResolver) Owner(ctx context.Context, obj *types.StatementOfApplicability) (*types.Profile, error) {
|
||||
if err := r.authorize(ctx, obj.ID, iam.ActionMembershipProfileGet); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -10231,7 +10231,7 @@ func (r *stateOfApplicabilityResolver) Owner(ctx context.Context, obj *types.Sta
|
||||
}
|
||||
|
||||
// ApplicabilityStatements is the resolver for the applicabilityStatements field.
|
||||
func (r *stateOfApplicabilityResolver) ApplicabilityStatements(ctx context.Context, obj *types.StateOfApplicability, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ApplicabilityStatementOrderBy) (*types.ApplicabilityStatementConnection, error) {
|
||||
func (r *statementOfApplicabilityResolver) ApplicabilityStatements(ctx context.Context, obj *types.StatementOfApplicability, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ApplicabilityStatementOrderBy) (*types.ApplicabilityStatementConnection, error) {
|
||||
if err := r.authorize(ctx, obj.ID, probo.ActionApplicabilityStatementList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -10251,7 +10251,7 @@ func (r *stateOfApplicabilityResolver) ApplicabilityStatements(ctx context.Conte
|
||||
|
||||
cursor := types.NewCursor(first, after, last, before, pageOrderBy)
|
||||
|
||||
p, err := prb.StatesOfApplicability.ListApplicabilityStatements(ctx, obj.ID, cursor)
|
||||
p, err := prb.StatementsOfApplicability.ListApplicabilityStatements(ctx, obj.ID, cursor)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot list applicability statements", log.Error(err))
|
||||
return nil, gqlutils.Internal(ctx)
|
||||
@@ -10261,19 +10261,19 @@ func (r *stateOfApplicabilityResolver) ApplicabilityStatements(ctx context.Conte
|
||||
}
|
||||
|
||||
// Permission is the resolver for the permission field.
|
||||
func (r *stateOfApplicabilityResolver) Permission(ctx context.Context, obj *types.StateOfApplicability, action string) (bool, error) {
|
||||
func (r *statementOfApplicabilityResolver) Permission(ctx context.Context, obj *types.StatementOfApplicability, action string) (bool, error) {
|
||||
return r.Resolver.Permission(ctx, obj, action)
|
||||
}
|
||||
|
||||
// TotalCount is the resolver for the totalCount field.
|
||||
func (r *stateOfApplicabilityConnectionResolver) TotalCount(ctx context.Context, obj *types.StateOfApplicabilityConnection) (int, error) {
|
||||
func (r *statementOfApplicabilityConnectionResolver) TotalCount(ctx context.Context, obj *types.StatementOfApplicabilityConnection) (int, error) {
|
||||
prb := r.ProboService(ctx, obj.ParentID.TenantID())
|
||||
|
||||
switch obj.Resolver.(type) {
|
||||
case *organizationResolver:
|
||||
count, err := prb.StatesOfApplicability.CountForOrganizationID(ctx, obj.ParentID, obj.Filters)
|
||||
count, err := prb.StatementsOfApplicability.CountForOrganizationID(ctx, obj.ParentID, obj.Filters)
|
||||
if err != nil {
|
||||
r.logger.ErrorCtx(ctx, "cannot count states_of_applicability", log.Error(err))
|
||||
r.logger.ErrorCtx(ctx, "cannot count statements_of_applicability", log.Error(err))
|
||||
return 0, gqlutils.Internal(ctx)
|
||||
}
|
||||
return count, nil
|
||||
@@ -12081,14 +12081,14 @@ func (r *Resolver) SnapshotConnection() schema.SnapshotConnectionResolver {
|
||||
return &snapshotConnectionResolver{r}
|
||||
}
|
||||
|
||||
// StateOfApplicability returns schema.StateOfApplicabilityResolver implementation.
|
||||
func (r *Resolver) StateOfApplicability() schema.StateOfApplicabilityResolver {
|
||||
return &stateOfApplicabilityResolver{r}
|
||||
// StatementOfApplicability returns schema.StatementOfApplicabilityResolver implementation.
|
||||
func (r *Resolver) StatementOfApplicability() schema.StatementOfApplicabilityResolver {
|
||||
return &statementOfApplicabilityResolver{r}
|
||||
}
|
||||
|
||||
// StateOfApplicabilityConnection returns schema.StateOfApplicabilityConnectionResolver implementation.
|
||||
func (r *Resolver) StateOfApplicabilityConnection() schema.StateOfApplicabilityConnectionResolver {
|
||||
return &stateOfApplicabilityConnectionResolver{r}
|
||||
// StatementOfApplicabilityConnection returns schema.StatementOfApplicabilityConnectionResolver implementation.
|
||||
func (r *Resolver) StatementOfApplicabilityConnection() schema.StatementOfApplicabilityConnectionResolver {
|
||||
return &statementOfApplicabilityConnectionResolver{r}
|
||||
}
|
||||
|
||||
// Task returns schema.TaskResolver implementation.
|
||||
@@ -12267,8 +12267,8 @@ type riskConnectionResolver struct{ *Resolver }
|
||||
type slackConnectionResolver struct{ *Resolver }
|
||||
type snapshotResolver struct{ *Resolver }
|
||||
type snapshotConnectionResolver struct{ *Resolver }
|
||||
type stateOfApplicabilityResolver struct{ *Resolver }
|
||||
type stateOfApplicabilityConnectionResolver struct{ *Resolver }
|
||||
type statementOfApplicabilityResolver struct{ *Resolver }
|
||||
type statementOfApplicabilityConnectionResolver struct{ *Resolver }
|
||||
type taskResolver struct{ *Resolver }
|
||||
type taskConnectionResolver struct{ *Resolver }
|
||||
type transferImpactAssessmentResolver struct{ *Resolver }
|
||||
|
||||
@@ -2844,17 +2844,17 @@ func (r *Resolver) DeleteDataProtectionImpactAssessmentTool(ctx context.Context,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *Resolver) ListStatesOfApplicabilityTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListStatesOfApplicabilityInput) (*mcp.CallToolResult, types.ListStatesOfApplicabilityOutput, error) {
|
||||
r.MustAuthorize(ctx, input.OrganizationID, probo.ActionStateOfApplicabilityList)
|
||||
func (r *Resolver) ListStatementsOfApplicabilityTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListStatementsOfApplicabilityInput) (*mcp.CallToolResult, types.ListStatementsOfApplicabilityOutput, error) {
|
||||
r.MustAuthorize(ctx, input.OrganizationID, probo.ActionStatementOfApplicabilityList)
|
||||
|
||||
prb := r.ProboService(ctx, input.OrganizationID)
|
||||
|
||||
pageOrderBy := page.OrderBy[coredata.StateOfApplicabilityOrderField]{
|
||||
Field: coredata.StateOfApplicabilityOrderFieldCreatedAt,
|
||||
pageOrderBy := page.OrderBy[coredata.StatementOfApplicabilityOrderField]{
|
||||
Field: coredata.StatementOfApplicabilityOrderFieldCreatedAt,
|
||||
Direction: page.OrderDirectionDesc,
|
||||
}
|
||||
if input.OrderBy != nil {
|
||||
pageOrderBy = page.OrderBy[coredata.StateOfApplicabilityOrderField]{
|
||||
pageOrderBy = page.OrderBy[coredata.StatementOfApplicabilityOrderField]{
|
||||
Field: input.OrderBy.Field,
|
||||
Direction: input.OrderBy.Direction,
|
||||
}
|
||||
@@ -2862,107 +2862,107 @@ func (r *Resolver) ListStatesOfApplicabilityTool(ctx context.Context, req *mcp.C
|
||||
|
||||
cursor := types.NewCursor(input.Size, input.Cursor, pageOrderBy)
|
||||
|
||||
pg, err := prb.StatesOfApplicability.ListForOrganizationID(ctx, input.OrganizationID, cursor, coredata.NewStateOfApplicabilityFilter(nil))
|
||||
pg, err := prb.StatementsOfApplicability.ListForOrganizationID(ctx, input.OrganizationID, cursor, coredata.NewStatementOfApplicabilityFilter(nil))
|
||||
if err != nil {
|
||||
return nil, types.ListStatesOfApplicabilityOutput{}, fmt.Errorf("failed to list states of applicability: %w", err)
|
||||
return nil, types.ListStatementsOfApplicabilityOutput{}, fmt.Errorf("failed to list statements of applicability: %w", err)
|
||||
}
|
||||
|
||||
return nil, types.NewListStatesOfApplicabilityOutput(pg), nil
|
||||
return nil, types.NewListStatementsOfApplicabilityOutput(pg), nil
|
||||
}
|
||||
|
||||
func (r *Resolver) GetStateOfApplicabilityTool(ctx context.Context, req *mcp.CallToolRequest, input *types.GetStateOfApplicabilityInput) (*mcp.CallToolResult, types.GetStateOfApplicabilityOutput, error) {
|
||||
r.MustAuthorize(ctx, input.ID, probo.ActionStateOfApplicabilityGet)
|
||||
func (r *Resolver) GetStatementOfApplicabilityTool(ctx context.Context, req *mcp.CallToolRequest, input *types.GetStatementOfApplicabilityInput) (*mcp.CallToolResult, types.GetStatementOfApplicabilityOutput, error) {
|
||||
r.MustAuthorize(ctx, input.ID, probo.ActionStatementOfApplicabilityGet)
|
||||
|
||||
prb := r.ProboService(ctx, input.ID)
|
||||
|
||||
soa, err := prb.StatesOfApplicability.Get(ctx, input.ID)
|
||||
soa, err := prb.StatementsOfApplicability.Get(ctx, input.ID)
|
||||
if err != nil {
|
||||
return nil, types.GetStateOfApplicabilityOutput{}, fmt.Errorf("failed to get state of applicability: %w", err)
|
||||
return nil, types.GetStatementOfApplicabilityOutput{}, fmt.Errorf("failed to get statement of applicability: %w", err)
|
||||
}
|
||||
|
||||
return nil, types.GetStateOfApplicabilityOutput{
|
||||
StateOfApplicability: types.NewStateOfApplicability(soa),
|
||||
return nil, types.GetStatementOfApplicabilityOutput{
|
||||
StatementOfApplicability: types.NewStatementOfApplicability(soa),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *Resolver) AddStateOfApplicabilityTool(ctx context.Context, req *mcp.CallToolRequest, input *types.AddStateOfApplicabilityInput) (*mcp.CallToolResult, types.AddStateOfApplicabilityOutput, error) {
|
||||
r.MustAuthorize(ctx, input.OrganizationID, probo.ActionStateOfApplicabilityCreate)
|
||||
func (r *Resolver) AddStatementOfApplicabilityTool(ctx context.Context, req *mcp.CallToolRequest, input *types.AddStatementOfApplicabilityInput) (*mcp.CallToolResult, types.AddStatementOfApplicabilityOutput, error) {
|
||||
r.MustAuthorize(ctx, input.OrganizationID, probo.ActionStatementOfApplicabilityCreate)
|
||||
|
||||
svc := r.ProboService(ctx, input.OrganizationID)
|
||||
|
||||
soa, err := svc.StatesOfApplicability.Create(ctx, probo.CreateStateOfApplicabilityRequest{
|
||||
soa, err := svc.StatementsOfApplicability.Create(ctx, probo.CreateStatementOfApplicabilityRequest{
|
||||
OrganizationID: input.OrganizationID,
|
||||
Name: input.Name,
|
||||
OwnerID: input.OwnerID,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, types.AddStateOfApplicabilityOutput{}, fmt.Errorf("failed to create state of applicability: %w", err)
|
||||
return nil, types.AddStatementOfApplicabilityOutput{}, fmt.Errorf("failed to create statement of applicability: %w", err)
|
||||
}
|
||||
|
||||
return nil, types.AddStateOfApplicabilityOutput{
|
||||
StateOfApplicability: types.NewStateOfApplicability(soa),
|
||||
return nil, types.AddStatementOfApplicabilityOutput{
|
||||
StatementOfApplicability: types.NewStatementOfApplicability(soa),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *Resolver) UpdateStateOfApplicabilityTool(ctx context.Context, req *mcp.CallToolRequest, input *types.UpdateStateOfApplicabilityInput) (*mcp.CallToolResult, types.UpdateStateOfApplicabilityOutput, error) {
|
||||
r.MustAuthorize(ctx, input.ID, probo.ActionStateOfApplicabilityUpdate)
|
||||
func (r *Resolver) UpdateStatementOfApplicabilityTool(ctx context.Context, req *mcp.CallToolRequest, input *types.UpdateStatementOfApplicabilityInput) (*mcp.CallToolResult, types.UpdateStatementOfApplicabilityOutput, error) {
|
||||
r.MustAuthorize(ctx, input.ID, probo.ActionStatementOfApplicabilityUpdate)
|
||||
|
||||
svc := r.ProboService(ctx, input.ID)
|
||||
|
||||
soa, err := svc.StatesOfApplicability.Update(ctx, probo.UpdateStateOfApplicabilityRequest{
|
||||
StateOfApplicabilityID: input.ID,
|
||||
Name: input.Name,
|
||||
OwnerID: input.OwnerID,
|
||||
soa, err := svc.StatementsOfApplicability.Update(ctx, probo.UpdateStatementOfApplicabilityRequest{
|
||||
StatementOfApplicabilityID: input.ID,
|
||||
Name: input.Name,
|
||||
OwnerID: input.OwnerID,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, types.UpdateStateOfApplicabilityOutput{}, fmt.Errorf("failed to update state of applicability: %w", err)
|
||||
return nil, types.UpdateStatementOfApplicabilityOutput{}, fmt.Errorf("failed to update statement of applicability: %w", err)
|
||||
}
|
||||
|
||||
return nil, types.UpdateStateOfApplicabilityOutput{
|
||||
StateOfApplicability: types.NewStateOfApplicability(soa),
|
||||
return nil, types.UpdateStatementOfApplicabilityOutput{
|
||||
StatementOfApplicability: types.NewStatementOfApplicability(soa),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *Resolver) DeleteStateOfApplicabilityTool(ctx context.Context, req *mcp.CallToolRequest, input *types.DeleteStateOfApplicabilityInput) (*mcp.CallToolResult, types.DeleteStateOfApplicabilityOutput, error) {
|
||||
r.MustAuthorize(ctx, input.ID, probo.ActionStateOfApplicabilityDelete)
|
||||
func (r *Resolver) DeleteStatementOfApplicabilityTool(ctx context.Context, req *mcp.CallToolRequest, input *types.DeleteStatementOfApplicabilityInput) (*mcp.CallToolResult, types.DeleteStatementOfApplicabilityOutput, error) {
|
||||
r.MustAuthorize(ctx, input.ID, probo.ActionStatementOfApplicabilityDelete)
|
||||
|
||||
svc := r.ProboService(ctx, input.ID)
|
||||
|
||||
err := svc.StatesOfApplicability.Delete(ctx, input.ID)
|
||||
err := svc.StatementsOfApplicability.Delete(ctx, input.ID)
|
||||
if err != nil {
|
||||
return nil, types.DeleteStateOfApplicabilityOutput{}, fmt.Errorf("failed to delete state of applicability: %w", err)
|
||||
return nil, types.DeleteStatementOfApplicabilityOutput{}, fmt.Errorf("failed to delete statement of applicability: %w", err)
|
||||
}
|
||||
|
||||
return nil, types.DeleteStateOfApplicabilityOutput{
|
||||
DeletedStateOfApplicabilityID: input.ID,
|
||||
return nil, types.DeleteStatementOfApplicabilityOutput{
|
||||
DeletedStatementOfApplicabilityID: input.ID,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *Resolver) ExportStateOfApplicabilityPDFTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ExportStateOfApplicabilityPDFInput) (*mcp.CallToolResult, types.ExportStateOfApplicabilityPDFOutput, error) {
|
||||
r.MustAuthorize(ctx, input.ID, probo.ActionStateOfApplicabilityExport)
|
||||
func (r *Resolver) ExportStatementOfApplicabilityPDFTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ExportStatementOfApplicabilityPDFInput) (*mcp.CallToolResult, types.ExportStatementOfApplicabilityPDFOutput, error) {
|
||||
r.MustAuthorize(ctx, input.ID, probo.ActionStatementOfApplicabilityExport)
|
||||
|
||||
svc := r.ProboService(ctx, input.ID)
|
||||
|
||||
soa, err := svc.StatesOfApplicability.Get(ctx, input.ID)
|
||||
soa, err := svc.StatementsOfApplicability.Get(ctx, input.ID)
|
||||
if err != nil {
|
||||
return nil, types.ExportStateOfApplicabilityPDFOutput{}, fmt.Errorf("failed to get state of applicability: %w", err)
|
||||
return nil, types.ExportStatementOfApplicabilityPDFOutput{}, fmt.Errorf("failed to get statement of applicability: %w", err)
|
||||
}
|
||||
|
||||
pdfData, err := svc.StatesOfApplicability.ExportPDF(ctx, input.ID)
|
||||
pdfData, err := svc.StatementsOfApplicability.ExportPDF(ctx, input.ID)
|
||||
if err != nil {
|
||||
return nil, types.ExportStateOfApplicabilityPDFOutput{}, fmt.Errorf("failed to export state of applicability PDF: %w", err)
|
||||
return nil, types.ExportStatementOfApplicabilityPDFOutput{}, fmt.Errorf("failed to export statement of applicability PDF: %w", err)
|
||||
}
|
||||
|
||||
return nil, types.ExportStateOfApplicabilityPDFOutput{
|
||||
return nil, types.ExportStatementOfApplicabilityPDFOutput{
|
||||
PdfBase64: base64.StdEncoding.EncodeToString(pdfData),
|
||||
Filename: soa.Name + ".pdf",
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *Resolver) ListApplicabilityStatementsTool(ctx context.Context, req *mcp.CallToolRequest, input *types.ListApplicabilityStatementsInput) (*mcp.CallToolResult, types.ListApplicabilityStatementsOutput, error) {
|
||||
r.MustAuthorize(ctx, input.StateOfApplicabilityID, probo.ActionApplicabilityStatementList)
|
||||
r.MustAuthorize(ctx, input.StatementOfApplicabilityID, probo.ActionApplicabilityStatementList)
|
||||
|
||||
prb := r.ProboService(ctx, input.StateOfApplicabilityID)
|
||||
prb := r.ProboService(ctx, input.StatementOfApplicabilityID)
|
||||
|
||||
pageOrderBy := page.OrderBy[coredata.ApplicabilityStatementOrderField]{
|
||||
Field: coredata.ApplicabilityStatementOrderFieldControlSectionTitle,
|
||||
@@ -2977,7 +2977,7 @@ func (r *Resolver) ListApplicabilityStatementsTool(ctx context.Context, req *mcp
|
||||
|
||||
cursor := types.NewCursor(input.Size, input.Cursor, pageOrderBy)
|
||||
|
||||
pg, err := prb.StatesOfApplicability.ListApplicabilityStatements(ctx, input.StateOfApplicabilityID, cursor)
|
||||
pg, err := prb.StatementsOfApplicability.ListApplicabilityStatements(ctx, input.StatementOfApplicabilityID, cursor)
|
||||
if err != nil {
|
||||
return nil, types.ListApplicabilityStatementsOutput{}, fmt.Errorf("failed to list applicability statements: %w", err)
|
||||
}
|
||||
@@ -2990,7 +2990,7 @@ func (r *Resolver) GetApplicabilityStatementTool(ctx context.Context, req *mcp.C
|
||||
|
||||
prb := r.ProboService(ctx, input.ID)
|
||||
|
||||
stmt, err := prb.StatesOfApplicability.GetApplicabilityStatement(ctx, input.ID)
|
||||
stmt, err := prb.StatementsOfApplicability.GetApplicabilityStatement(ctx, input.ID)
|
||||
if err != nil {
|
||||
return nil, types.GetApplicabilityStatementOutput{}, fmt.Errorf("failed to get applicability statement: %w", err)
|
||||
}
|
||||
@@ -3001,13 +3001,13 @@ func (r *Resolver) GetApplicabilityStatementTool(ctx context.Context, req *mcp.C
|
||||
}
|
||||
|
||||
func (r *Resolver) AddApplicabilityStatementTool(ctx context.Context, req *mcp.CallToolRequest, input *types.AddApplicabilityStatementInput) (*mcp.CallToolResult, types.AddApplicabilityStatementOutput, error) {
|
||||
r.MustAuthorize(ctx, input.StateOfApplicabilityID, probo.ActionApplicabilityStatementCreate)
|
||||
r.MustAuthorize(ctx, input.StatementOfApplicabilityID, probo.ActionApplicabilityStatementCreate)
|
||||
|
||||
svc := r.ProboService(ctx, input.StateOfApplicabilityID)
|
||||
svc := r.ProboService(ctx, input.StatementOfApplicabilityID)
|
||||
|
||||
stmt, err := svc.StatesOfApplicability.CreateApplicabilityStatement(
|
||||
stmt, err := svc.StatementsOfApplicability.CreateApplicabilityStatement(
|
||||
ctx,
|
||||
input.StateOfApplicabilityID,
|
||||
input.StatementOfApplicabilityID,
|
||||
input.ControlID,
|
||||
input.Applicability,
|
||||
input.Justification,
|
||||
@@ -3026,7 +3026,7 @@ func (r *Resolver) UpdateApplicabilityStatementTool(ctx context.Context, req *mc
|
||||
|
||||
svc := r.ProboService(ctx, input.ID)
|
||||
|
||||
stmt, err := svc.StatesOfApplicability.UpdateApplicabilityStatement(
|
||||
stmt, err := svc.StatementsOfApplicability.UpdateApplicabilityStatement(
|
||||
ctx,
|
||||
input.ID,
|
||||
input.Applicability,
|
||||
@@ -3046,7 +3046,7 @@ func (r *Resolver) DeleteApplicabilityStatementTool(ctx context.Context, req *mc
|
||||
|
||||
svc := r.ProboService(ctx, input.ID)
|
||||
|
||||
err := svc.StatesOfApplicability.DeleteApplicabilityStatement(ctx, input.ID)
|
||||
err := svc.StatementsOfApplicability.DeleteApplicabilityStatement(ctx, input.ID)
|
||||
if err != nil {
|
||||
return nil, types.DeleteApplicabilityStatementOutput{}, fmt.Errorf("failed to delete applicability statement: %w", err)
|
||||
}
|
||||
|
||||
@@ -6076,27 +6076,27 @@ components:
|
||||
$ref: "#/components/schemas/Profile"
|
||||
description: List of attendee profiles
|
||||
|
||||
StateOfApplicabilityOrderField:
|
||||
StatementOfApplicabilityOrderField:
|
||||
type: string
|
||||
enum:
|
||||
- CREATED_AT
|
||||
- NAME
|
||||
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.StateOfApplicabilityOrderField
|
||||
go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.StatementOfApplicabilityOrderField
|
||||
|
||||
StateOfApplicabilityOrderBy:
|
||||
StatementOfApplicabilityOrderBy:
|
||||
type: object
|
||||
required:
|
||||
- field
|
||||
- direction
|
||||
properties:
|
||||
field:
|
||||
$ref: "#/components/schemas/StateOfApplicabilityOrderField"
|
||||
description: State of applicability order field
|
||||
$ref: "#/components/schemas/StatementOfApplicabilityOrderField"
|
||||
description: Statement of applicability order field
|
||||
direction:
|
||||
$ref: "#/components/schemas/OrderDirection"
|
||||
description: Order direction
|
||||
|
||||
StateOfApplicability:
|
||||
StatementOfApplicability:
|
||||
type: object
|
||||
required:
|
||||
- id
|
||||
@@ -6108,13 +6108,13 @@ components:
|
||||
properties:
|
||||
id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: State of applicability ID
|
||||
description: Statement of applicability ID
|
||||
organization_id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: Organization ID
|
||||
name:
|
||||
type: string
|
||||
description: State of applicability name
|
||||
description: Statement of applicability name
|
||||
owner_id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: Owner profile ID
|
||||
@@ -6132,7 +6132,7 @@ components:
|
||||
format: date-time
|
||||
description: Update timestamp
|
||||
|
||||
ListStatesOfApplicabilityInput:
|
||||
ListStatementsOfApplicabilityInput:
|
||||
type: object
|
||||
required:
|
||||
- organization_id
|
||||
@@ -6141,7 +6141,7 @@ components:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: Organization ID
|
||||
order_by:
|
||||
$ref: "#/components/schemas/StateOfApplicabilityOrderBy"
|
||||
$ref: "#/components/schemas/StatementOfApplicabilityOrderBy"
|
||||
description: Order by
|
||||
size:
|
||||
type: integer
|
||||
@@ -6150,37 +6150,37 @@ components:
|
||||
$ref: "#/components/schemas/CursorKey"
|
||||
description: Page cursor
|
||||
|
||||
ListStatesOfApplicabilityOutput:
|
||||
ListStatementsOfApplicabilityOutput:
|
||||
type: object
|
||||
required:
|
||||
- states_of_applicability
|
||||
- statements_of_applicability
|
||||
properties:
|
||||
next_cursor:
|
||||
$ref: "#/components/schemas/CursorKey"
|
||||
description: Next cursor
|
||||
states_of_applicability:
|
||||
statements_of_applicability:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/StateOfApplicability"
|
||||
$ref: "#/components/schemas/StatementOfApplicability"
|
||||
|
||||
GetStateOfApplicabilityInput:
|
||||
GetStatementOfApplicabilityInput:
|
||||
type: object
|
||||
required:
|
||||
- id
|
||||
properties:
|
||||
id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: State of applicability ID
|
||||
description: Statement of applicability ID
|
||||
|
||||
GetStateOfApplicabilityOutput:
|
||||
GetStatementOfApplicabilityOutput:
|
||||
type: object
|
||||
required:
|
||||
- state_of_applicability
|
||||
- statement_of_applicability
|
||||
properties:
|
||||
state_of_applicability:
|
||||
$ref: "#/components/schemas/StateOfApplicability"
|
||||
statement_of_applicability:
|
||||
$ref: "#/components/schemas/StatementOfApplicability"
|
||||
|
||||
AddStateOfApplicabilityInput:
|
||||
AddStatementOfApplicabilityInput:
|
||||
type: object
|
||||
required:
|
||||
- organization_id
|
||||
@@ -6192,70 +6192,70 @@ components:
|
||||
description: Organization ID
|
||||
name:
|
||||
type: string
|
||||
description: State of applicability name
|
||||
description: Statement of applicability name
|
||||
owner_id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: Owner profile ID
|
||||
|
||||
AddStateOfApplicabilityOutput:
|
||||
AddStatementOfApplicabilityOutput:
|
||||
type: object
|
||||
required:
|
||||
- state_of_applicability
|
||||
- statement_of_applicability
|
||||
properties:
|
||||
state_of_applicability:
|
||||
$ref: "#/components/schemas/StateOfApplicability"
|
||||
statement_of_applicability:
|
||||
$ref: "#/components/schemas/StatementOfApplicability"
|
||||
|
||||
UpdateStateOfApplicabilityInput:
|
||||
UpdateStatementOfApplicabilityInput:
|
||||
type: object
|
||||
required:
|
||||
- id
|
||||
properties:
|
||||
id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: State of applicability ID
|
||||
description: Statement of applicability ID
|
||||
name:
|
||||
type: string
|
||||
description: State of applicability name
|
||||
description: Statement of applicability name
|
||||
owner_id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: Owner profile ID
|
||||
|
||||
UpdateStateOfApplicabilityOutput:
|
||||
UpdateStatementOfApplicabilityOutput:
|
||||
type: object
|
||||
required:
|
||||
- state_of_applicability
|
||||
- statement_of_applicability
|
||||
properties:
|
||||
state_of_applicability:
|
||||
$ref: "#/components/schemas/StateOfApplicability"
|
||||
statement_of_applicability:
|
||||
$ref: "#/components/schemas/StatementOfApplicability"
|
||||
|
||||
DeleteStateOfApplicabilityInput:
|
||||
DeleteStatementOfApplicabilityInput:
|
||||
type: object
|
||||
required:
|
||||
- id
|
||||
properties:
|
||||
id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: State of applicability ID
|
||||
description: Statement of applicability ID
|
||||
|
||||
DeleteStateOfApplicabilityOutput:
|
||||
DeleteStatementOfApplicabilityOutput:
|
||||
type: object
|
||||
required:
|
||||
- deleted_state_of_applicability_id
|
||||
- deleted_statement_of_applicability_id
|
||||
properties:
|
||||
deleted_state_of_applicability_id:
|
||||
deleted_statement_of_applicability_id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: Deleted state of applicability ID
|
||||
description: Deleted statement of applicability ID
|
||||
|
||||
ExportStateOfApplicabilityPDFInput:
|
||||
ExportStatementOfApplicabilityPDFInput:
|
||||
type: object
|
||||
required:
|
||||
- id
|
||||
properties:
|
||||
id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: State of applicability ID
|
||||
description: Statement of applicability ID
|
||||
|
||||
ExportStateOfApplicabilityPDFOutput:
|
||||
ExportStatementOfApplicabilityPDFOutput:
|
||||
type: object
|
||||
required:
|
||||
- pdf_base64
|
||||
@@ -6292,7 +6292,7 @@ components:
|
||||
type: object
|
||||
required:
|
||||
- id
|
||||
- state_of_applicability_id
|
||||
- statement_of_applicability_id
|
||||
- control_id
|
||||
- organization_id
|
||||
- applicability
|
||||
@@ -6302,9 +6302,9 @@ components:
|
||||
id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: Applicability statement ID
|
||||
state_of_applicability_id:
|
||||
statement_of_applicability_id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: State of applicability ID
|
||||
description: Statement of applicability ID
|
||||
control_id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: Control ID
|
||||
@@ -6336,11 +6336,11 @@ components:
|
||||
ListApplicabilityStatementsInput:
|
||||
type: object
|
||||
required:
|
||||
- state_of_applicability_id
|
||||
- statement_of_applicability_id
|
||||
properties:
|
||||
state_of_applicability_id:
|
||||
statement_of_applicability_id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: State of applicability ID
|
||||
description: Statement of applicability ID
|
||||
order_by:
|
||||
$ref: "#/components/schemas/ApplicabilityStatementOrderBy"
|
||||
description: Order by
|
||||
@@ -6384,13 +6384,13 @@ components:
|
||||
AddApplicabilityStatementInput:
|
||||
type: object
|
||||
required:
|
||||
- state_of_applicability_id
|
||||
- statement_of_applicability_id
|
||||
- control_id
|
||||
- applicability
|
||||
properties:
|
||||
state_of_applicability_id:
|
||||
statement_of_applicability_id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: State of applicability ID
|
||||
description: Statement of applicability ID
|
||||
control_id:
|
||||
$ref: "#/components/schemas/GID"
|
||||
description: Control ID
|
||||
@@ -8526,60 +8526,60 @@ tools:
|
||||
$ref: "#/components/schemas/ListMeetingAttendeesInput"
|
||||
outputSchema:
|
||||
$ref: "#/components/schemas/ListMeetingAttendeesOutput"
|
||||
- name: listStatesOfApplicability
|
||||
description: List all states of applicability for the organization
|
||||
- name: listStatementsOfApplicability
|
||||
description: List all statements of applicability for the organization
|
||||
hints:
|
||||
readonly: true
|
||||
idempotent: true
|
||||
inputSchema:
|
||||
$ref: "#/components/schemas/ListStatesOfApplicabilityInput"
|
||||
$ref: "#/components/schemas/ListStatementsOfApplicabilityInput"
|
||||
outputSchema:
|
||||
$ref: "#/components/schemas/ListStatesOfApplicabilityOutput"
|
||||
- name: getStateOfApplicability
|
||||
description: Get a state of applicability by ID
|
||||
$ref: "#/components/schemas/ListStatementsOfApplicabilityOutput"
|
||||
- name: getStatementOfApplicability
|
||||
description: Get a statement of applicability by ID
|
||||
hints:
|
||||
readonly: true
|
||||
idempotent: true
|
||||
inputSchema:
|
||||
$ref: "#/components/schemas/GetStateOfApplicabilityInput"
|
||||
$ref: "#/components/schemas/GetStatementOfApplicabilityInput"
|
||||
outputSchema:
|
||||
$ref: "#/components/schemas/GetStateOfApplicabilityOutput"
|
||||
- name: addStateOfApplicability
|
||||
description: Add a new state of applicability to the organization
|
||||
$ref: "#/components/schemas/GetStatementOfApplicabilityOutput"
|
||||
- name: addStatementOfApplicability
|
||||
description: Add a new statement of applicability to the organization
|
||||
hints:
|
||||
readonly: false
|
||||
inputSchema:
|
||||
$ref: "#/components/schemas/AddStateOfApplicabilityInput"
|
||||
$ref: "#/components/schemas/AddStatementOfApplicabilityInput"
|
||||
outputSchema:
|
||||
$ref: "#/components/schemas/AddStateOfApplicabilityOutput"
|
||||
- name: updateStateOfApplicability
|
||||
description: Update an existing state of applicability
|
||||
$ref: "#/components/schemas/AddStatementOfApplicabilityOutput"
|
||||
- name: updateStatementOfApplicability
|
||||
description: Update an existing statement of applicability
|
||||
hints:
|
||||
readonly: false
|
||||
inputSchema:
|
||||
$ref: "#/components/schemas/UpdateStateOfApplicabilityInput"
|
||||
$ref: "#/components/schemas/UpdateStatementOfApplicabilityInput"
|
||||
outputSchema:
|
||||
$ref: "#/components/schemas/UpdateStateOfApplicabilityOutput"
|
||||
- name: deleteStateOfApplicability
|
||||
description: Delete a state of applicability
|
||||
$ref: "#/components/schemas/UpdateStatementOfApplicabilityOutput"
|
||||
- name: deleteStatementOfApplicability
|
||||
description: Delete a statement of applicability
|
||||
hints:
|
||||
readonly: false
|
||||
destructive: true
|
||||
inputSchema:
|
||||
$ref: "#/components/schemas/DeleteStateOfApplicabilityInput"
|
||||
$ref: "#/components/schemas/DeleteStatementOfApplicabilityInput"
|
||||
outputSchema:
|
||||
$ref: "#/components/schemas/DeleteStateOfApplicabilityOutput"
|
||||
- name: exportStateOfApplicabilityPDF
|
||||
description: Export a state of applicability as a PDF document
|
||||
$ref: "#/components/schemas/DeleteStatementOfApplicabilityOutput"
|
||||
- name: exportStatementOfApplicabilityPDF
|
||||
description: Export a statement of applicability as a PDF document
|
||||
hints:
|
||||
readonly: true
|
||||
idempotent: true
|
||||
inputSchema:
|
||||
$ref: "#/components/schemas/ExportStateOfApplicabilityPDFInput"
|
||||
$ref: "#/components/schemas/ExportStatementOfApplicabilityPDFInput"
|
||||
outputSchema:
|
||||
$ref: "#/components/schemas/ExportStateOfApplicabilityPDFOutput"
|
||||
$ref: "#/components/schemas/ExportStatementOfApplicabilityPDFOutput"
|
||||
- name: listApplicabilityStatements
|
||||
description: List all applicability statements for a state of applicability
|
||||
description: List all applicability statements for a statement of applicability
|
||||
hints:
|
||||
readonly: true
|
||||
idempotent: true
|
||||
@@ -8597,7 +8597,7 @@ tools:
|
||||
outputSchema:
|
||||
$ref: "#/components/schemas/GetApplicabilityStatementOutput"
|
||||
- name: addApplicabilityStatement
|
||||
description: Add a control to a state of applicability with an applicability decision
|
||||
description: Add a control to a statement of applicability with an applicability decision
|
||||
hints:
|
||||
readonly: false
|
||||
inputSchema:
|
||||
@@ -8613,7 +8613,7 @@ tools:
|
||||
outputSchema:
|
||||
$ref: "#/components/schemas/UpdateApplicabilityStatementOutput"
|
||||
- name: deleteApplicabilityStatement
|
||||
description: Delete an applicability statement from a state of applicability
|
||||
description: Delete an applicability statement from a statement of applicability
|
||||
hints:
|
||||
readonly: false
|
||||
destructive: true
|
||||
|
||||
@@ -18,8 +18,8 @@ import (
|
||||
"go.probo.inc/probo/pkg/page"
|
||||
)
|
||||
|
||||
func NewStateOfApplicability(s *coredata.StateOfApplicability) *StateOfApplicability {
|
||||
return &StateOfApplicability{
|
||||
func NewStatementOfApplicability(s *coredata.StatementOfApplicability) *StatementOfApplicability {
|
||||
return &StatementOfApplicability{
|
||||
ID: s.ID,
|
||||
OrganizationID: s.OrganizationID,
|
||||
Name: s.Name,
|
||||
@@ -30,33 +30,33 @@ func NewStateOfApplicability(s *coredata.StateOfApplicability) *StateOfApplicabi
|
||||
}
|
||||
}
|
||||
|
||||
func NewListStatesOfApplicabilityOutput(pg *page.Page[*coredata.StateOfApplicability, coredata.StateOfApplicabilityOrderField]) ListStatesOfApplicabilityOutput {
|
||||
items := make([]*StateOfApplicability, 0, len(pg.Data))
|
||||
func NewListStatementsOfApplicabilityOutput(pg *page.Page[*coredata.StatementOfApplicability, coredata.StatementOfApplicabilityOrderField]) ListStatementsOfApplicabilityOutput {
|
||||
items := make([]*StatementOfApplicability, 0, len(pg.Data))
|
||||
for _, v := range pg.Data {
|
||||
items = append(items, NewStateOfApplicability(v))
|
||||
items = append(items, NewStatementOfApplicability(v))
|
||||
}
|
||||
var nextCursor *page.CursorKey
|
||||
if len(pg.Data) > 0 {
|
||||
cursorKey := pg.Data[len(pg.Data)-1].CursorKey(pg.Cursor.OrderBy.Field)
|
||||
nextCursor = &cursorKey
|
||||
}
|
||||
return ListStatesOfApplicabilityOutput{
|
||||
NextCursor: nextCursor,
|
||||
StatesOfApplicability: items,
|
||||
return ListStatementsOfApplicabilityOutput{
|
||||
NextCursor: nextCursor,
|
||||
StatementsOfApplicability: items,
|
||||
}
|
||||
}
|
||||
|
||||
func NewApplicabilityStatement(a *coredata.ApplicabilityStatement) *ApplicabilityStatement {
|
||||
return &ApplicabilityStatement{
|
||||
ID: a.ID,
|
||||
StateOfApplicabilityID: a.StateOfApplicabilityID,
|
||||
ControlID: a.ControlID,
|
||||
OrganizationID: a.OrganizationID,
|
||||
SnapshotID: a.SnapshotID,
|
||||
Applicability: a.Applicability,
|
||||
Justification: a.Justification,
|
||||
CreatedAt: a.CreatedAt,
|
||||
UpdatedAt: a.UpdatedAt,
|
||||
ID: a.ID,
|
||||
StatementOfApplicabilityID: a.StatementOfApplicabilityID,
|
||||
ControlID: a.ControlID,
|
||||
OrganizationID: a.OrganizationID,
|
||||
SnapshotID: a.SnapshotID,
|
||||
Applicability: a.Applicability,
|
||||
Justification: a.Justification,
|
||||
CreatedAt: a.CreatedAt,
|
||||
UpdatedAt: a.UpdatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user