Add control importance

Signed-off-by: gearnode <bryan@frimin.fr>
This commit is contained in:
gearnode
2025-03-13 08:46:51 +01:00
parent 4ede969b04
commit d4280b1111
16 changed files with 1162 additions and 186 deletions

View File

@@ -70,6 +70,22 @@ enum PeopleKind
)
}
enum ControlImportance
@goModel(model: "github.com/getprobo/probo/pkg/coredata.ControlImportance") {
MANDATORY
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.ControlImportanceMandatory"
)
PREFERRED
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.ControlImportancePreferred"
)
ADVANCED
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.ControlImportanceAdvanced"
)
}
type PageInfo {
hasNextPage: Boolean!
hasPreviousPage: Boolean!
@@ -216,6 +232,7 @@ type Control implements Node {
name: String!
description: String!
state: ControlState!
importance: ControlImportance!
tasks(
first: Int
@@ -308,24 +325,35 @@ type Mutation {
createVendor(input: CreateVendorInput!): CreateVendorPayload!
updateVendor(input: UpdateVendorInput!): UpdateVendorPayload!
deleteVendor(input: DeleteVendorInput!): DeleteVendorPayload!
createPeople(input: CreatePeopleInput!): CreatePeoplePayload!
updatePeople(input: UpdatePeopleInput!): UpdatePeoplePayload!
deletePeople(input: DeletePeopleInput!): DeletePeoplePayload!
createOrganization(
input: CreateOrganizationInput!
): CreateOrganizationPayload!
updateOrganization(
input: UpdateOrganizationInput!
): UpdateOrganizationPayload!
deleteOrganization(
input: DeleteOrganizationInput!
): DeleteOrganizationPayload!
createTask(input: CreateTaskInput!): CreateTaskPayload!
updateTask(input: UpdateTaskInput!): UpdateTaskPayload!
deleteTask(input: DeleteTaskInput!): DeleteTaskPayload!
createFramework(input: CreateFrameworkInput!): CreateFrameworkPayload!
createControl(input: CreateControlInput!): CreateControlPayload!
updateFramework(input: UpdateFrameworkInput!): UpdateFrameworkPayload!
importFramework(input: ImportFrameworkInput!): ImportFrameworkPayload!
createControl(input: CreateControlInput!): CreateControlPayload!
updateControl(input: UpdateControlInput!): UpdateControlPayload!
uploadEvidence(input: UploadEvidenceInput!): UploadEvidencePayload!
deleteEvidence(input: DeleteEvidenceInput!): DeleteEvidencePayload!
createPolicy(input: CreatePolicyInput!): CreatePolicyPayload!
updatePolicy(input: UpdatePolicyInput!): UpdatePolicyPayload!
deletePolicy(input: DeletePolicyInput!): DeletePolicyPayload!
@@ -431,6 +459,12 @@ input CreateOrganizationInput {
name: String!
}
input UpdateOrganizationInput {
organizationId: ID!
name: String
logoUrl: String
}
input DeleteOrganizationInput {
organizationId: ID!
}
@@ -439,6 +473,10 @@ type CreateOrganizationPayload {
organizationEdge: OrganizationEdge!
}
type UpdateOrganizationPayload {
organization: Organization!
}
type DeleteOrganizationPayload {
deletedOrganizationId: ID!
}
@@ -483,6 +521,7 @@ input CreateControlInput {
name: String!
description: String!
category: String!
importance: ControlImportance!
}
type CreateControlPayload {
@@ -508,6 +547,7 @@ input UpdateControlInput {
description: String
category: String
state: ControlState
importance: ControlImportance
}
type UpdateControlPayload {
@@ -616,3 +656,12 @@ input ConfirmEmailInput {
type ConfirmEmailPayload {
success: Boolean!
}
input ImportFrameworkInput {
organizationId: ID!
file: Upload!
}
type ImportFrameworkPayload {
frameworkEdge: FrameworkEdge!
}

File diff suppressed because it is too large Load Diff

View File

@@ -47,6 +47,7 @@ func NewControl(c *coredata.Control) *Control {
Name: c.Name,
Description: c.Description,
State: c.State,
Importance: c.Importance,
CreatedAt: c.CreatedAt,
UpdatedAt: c.UpdatedAt,
}

View File

@@ -25,15 +25,16 @@ type ConfirmEmailPayload struct {
}
type Control struct {
ID gid.GID `json:"id"`
Version int `json:"version"`
Category string `json:"category"`
Name string `json:"name"`
Description string `json:"description"`
State coredata.ControlState `json:"state"`
Tasks *TaskConnection `json:"tasks"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
ID gid.GID `json:"id"`
Version int `json:"version"`
Category string `json:"category"`
Name string `json:"name"`
Description string `json:"description"`
State coredata.ControlState `json:"state"`
Importance coredata.ControlImportance `json:"importance"`
Tasks *TaskConnection `json:"tasks"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
func (Control) IsNode() {}
@@ -50,10 +51,11 @@ type ControlEdge struct {
}
type CreateControlInput struct {
FrameworkID gid.GID `json:"frameworkId"`
Name string `json:"name"`
Description string `json:"description"`
Category string `json:"category"`
FrameworkID gid.GID `json:"frameworkId"`
Name string `json:"name"`
Description string `json:"description"`
Category string `json:"category"`
Importance coredata.ControlImportance `json:"importance"`
}
type CreateControlPayload struct {
@@ -225,6 +227,15 @@ type FrameworkEdge struct {
Node *Framework `json:"node"`
}
type ImportFrameworkInput struct {
OrganizationID gid.GID `json:"organizationId"`
File graphql.Upload `json:"file"`
}
type ImportFrameworkPayload struct {
FrameworkEdge *FrameworkEdge `json:"frameworkEdge"`
}
type Mutation struct {
}
@@ -342,12 +353,13 @@ type TaskEdge struct {
}
type UpdateControlInput struct {
ID gid.GID `json:"id"`
ExpectedVersion int `json:"expectedVersion"`
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
Category *string `json:"category,omitempty"`
State *coredata.ControlState `json:"state,omitempty"`
ID gid.GID `json:"id"`
ExpectedVersion int `json:"expectedVersion"`
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
Category *string `json:"category,omitempty"`
State *coredata.ControlState `json:"state,omitempty"`
Importance *coredata.ControlImportance `json:"importance,omitempty"`
}
type UpdateControlPayload struct {
@@ -365,6 +377,16 @@ type UpdateFrameworkPayload struct {
Framework *Framework `json:"framework"`
}
type UpdateOrganizationInput struct {
OrganizationID gid.GID `json:"organizationId"`
Name *string `json:"name,omitempty"`
LogoURL *string `json:"logoUrl,omitempty"`
}
type UpdateOrganizationPayload struct {
Organization *Organization `json:"organization"`
}
type UpdatePeopleInput struct {
ID gid.GID `json:"id"`
ExpectedVersion int `json:"expectedVersion"`

View File

@@ -321,6 +321,7 @@ func (r *mutationResolver) UpdateControl(ctx context.Context, input types.Update
Description: input.Description,
Category: input.Category,
State: input.State,
Importance: input.Importance,
})
if err != nil {
return nil, fmt.Errorf("cannot update control: %w", err)