Add audits

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-07-22 17:34:43 +02:00
parent 95caa4b630
commit e85a7b4955
37 changed files with 8775 additions and 2 deletions

View File

@@ -127,6 +127,30 @@ enum RiskTreatment
)
}
enum AuditState
@goModel(model: "github.com/getprobo/probo/pkg/coredata.AuditState") {
NOT_STARTED
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.AuditStateNotStarted"
)
IN_PROGRESS
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.AuditStateInProgress"
)
COMPLETED
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.AuditStateCompleted"
)
REJECTED
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.AuditStateRejected"
)
OUTDATED
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.AuditStateOutdated"
)
}
# Order Field Enums
enum UserOrderField
@goModel(model: "github.com/getprobo/probo/pkg/coredata.UserOrderField") {
@@ -521,6 +545,27 @@ enum ControlStatus
value: "github.com/getprobo/probo/pkg/coredata.ControlStatusExcluded"
)
}
enum AuditOrderField
@goModel(model: "github.com/getprobo/probo/pkg/coredata.AuditOrderField") {
CREATED_AT
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.AuditOrderFieldCreatedAt"
)
VALID_FROM
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.AuditOrderFieldValidFrom"
)
VALID_UNTIL
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.AuditOrderFieldValidUntil"
)
STATE
@goEnum(
value: "github.com/getprobo/probo/pkg/coredata.AuditOrderFieldState"
)
}
# Input Types
input UserOrder
@goModel(
@@ -594,6 +639,14 @@ input RiskOrder
field: RiskOrderField!
}
input AuditOrder
@goModel(
model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.AuditOrderBy"
) {
direction: OrderDirection!
field: AuditOrderField!
}
input EvidenceOrder
@goModel(
model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.EvidenceOrderBy"
@@ -755,6 +808,14 @@ type Organization implements Node {
orderBy: DatumOrder
): DatumConnection! @goField(forceResolver: true)
audits(
first: Int
after: CursorKey
last: Int
before: CursorKey
orderBy: AuditOrder
): AuditConnection! @goField(forceResolver: true)
createdAt: Datetime!
updatedAt: Datetime!
}
@@ -1064,6 +1125,30 @@ type Risk implements Node {
updatedAt: Datetime!
}
type Audit implements Node {
id: ID!
organization: Organization! @goField(forceResolver: true)
framework: Framework! @goField(forceResolver: true)
validFrom: Datetime
validUntil: Datetime
report: Report @goField(forceResolver: true)
reportUrl: String @goField(forceResolver: true)
state: AuditState!
createdAt: Datetime!
updatedAt: Datetime!
}
type Report implements Node {
id: ID!
objectKey: String!
mimeType: String!
filename: String!
size: Int!
downloadUrl: String @goField(forceResolver: true)
createdAt: Datetime!
updatedAt: Datetime!
}
type Session {
id: ID!
expiresAt: Datetime!
@@ -1283,6 +1368,20 @@ type DatumEdge {
node: Datum!
}
type AuditConnection
@goModel(
model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.AuditConnection"
) {
totalCount: Int! @goField(forceResolver: true)
edges: [AuditEdge!]!
pageInfo: PageInfo!
}
type AuditEdge {
cursor: CursorKey!
node: Audit!
}
# Root Types
type Query {
node(id: ID!): Node!
@@ -1437,6 +1536,12 @@ type Mutation {
createDatum(input: CreateDatumInput!): CreateDatumPayload!
updateDatum(input: UpdateDatumInput!): UpdateDatumPayload!
deleteDatum(input: DeleteDatumInput!): DeleteDatumPayload!
createAudit(input: CreateAuditInput!): CreateAuditPayload!
updateAudit(input: UpdateAuditInput!): UpdateAuditPayload!
deleteAudit(input: DeleteAuditInput!): DeleteAuditPayload!
uploadAuditReport(input: UploadAuditReportInput!): UploadAuditReportPayload!
deleteAuditReport(input: DeleteAuditReportInput!): DeleteAuditReportPayload!
}
# Input Types
@@ -1778,6 +1883,35 @@ input DeleteControlInput {
controlId: ID!
}
# Audit input types
input CreateAuditInput {
organizationId: ID!
frameworkId: ID!
validFrom: Datetime
validUntil: Datetime
state: AuditState
}
input UpdateAuditInput {
id: ID!
validFrom: Datetime
validUntil: Datetime
state: AuditState
}
input DeleteAuditInput {
auditId: ID!
}
input UploadAuditReportInput {
auditId: ID!
file: Upload!
}
input DeleteAuditReportInput {
auditId: ID!
}
# Payload Types
type CreateOrganizationPayload {
organizationEdge: OrganizationEdge!
@@ -2354,3 +2488,23 @@ type UpdateDatumPayload {
type DeleteDatumPayload {
deletedDatumId: ID!
}
type CreateAuditPayload {
auditEdge: AuditEdge!
}
type UpdateAuditPayload {
audit: Audit!
}
type DeleteAuditPayload {
deletedAuditId: ID!
}
type UploadAuditReportPayload {
audit: Audit!
}
type DeleteAuditReportPayload {
audit: Audit!
}