diff --git a/pkg/server/api/console/v1/schema.graphql b/pkg/server/api/console/v1/schema.graphql index 13337c4d8..afc5589f9 100644 --- a/pkg/server/api/console/v1/schema.graphql +++ b/pkg/server/api/console/v1/schema.graphql @@ -118,6 +118,7 @@ type Organization implements Node { after: CursorKey last: Int before: CursorKey + orderBy: UserOrder ): UserConnection! @goField(forceResolver: true) frameworks( @@ -125,6 +126,7 @@ type Organization implements Node { after: CursorKey last: Int before: CursorKey + orderBy: FrameworkOrder ): FrameworkConnection! @goField(forceResolver: true) vendors( @@ -132,6 +134,7 @@ type Organization implements Node { after: CursorKey last: Int before: CursorKey + orderBy: VendorOrder ): VendorConnection! @goField(forceResolver: true) peoples( @@ -139,6 +142,7 @@ type Organization implements Node { after: CursorKey last: Int before: CursorKey + orderBy: PeopleOrder ): PeopleConnection! @goField(forceResolver: true) policies( @@ -146,12 +150,119 @@ type Organization implements Node { after: CursorKey last: Int before: CursorKey + orderBy: PolicyOrder ): PolicyConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } +enum OrderDirection + @goModel(model: "github.com/getprobo/probo/pkg/page.OrderDirection") { + ASC @goEnum(value: "github.com/getprobo/probo/pkg/page.OrderDirectionAsc") + DESC @goEnum(value: "github.com/getprobo/probo/pkg/page.OrderDirectionDesc") +} + +enum PeopleOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.PeopleOrderField") { + FULL_NAME + @goEnum( + value: "github.com/getprobo/probo/pkg/coredata.PeopleOrderFieldFullName" + ) + CREATED_AT + @goEnum( + value: "github.com/getprobo/probo/pkg/coredata.PeopleOrderFieldCreatedAt" + ) +} + +enum VendorOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.VendorOrderField") { + NAME +} + +enum FrameworkOrderField + @goModel( + model: "github.com/getprobo/probo/pkg/coredata.FrameworkOrderField" + ) { + NAME +} + +enum ControlOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.ControlOrderField") { + NAME +} + +enum TaskOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.TaskOrderField") { + CREATED_AT +} + +enum PolicyOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.PolicyOrderField") { + NAME +} + +enum EvidenceOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.EvidenceOrderField") { + CREATED_AT +} + +input PeopleOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.PeopleOrderBy" + ) { + direction: OrderDirection! + field: PeopleOrderField! +} + +input VendorOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.VendorOrderBy" + ) { + direction: OrderDirection! + field: VendorOrderField! +} + +input FrameworkOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.FrameworkOrderBy" + ) { + direction: OrderDirection! + field: FrameworkOrderField! +} + +input ControlOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.ControlOrderBy" + ) { + direction: OrderDirection! + field: ControlOrderField! +} + +input TaskOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.TaskOrderBy" + ) { + direction: OrderDirection! + field: TaskOrderField! +} + +input PolicyOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.PolicyOrderBy" + ) { + direction: OrderDirection! + field: PolicyOrderField! +} + +input EvidenceOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.EvidenceOrderBy" + ) { + direction: OrderDirection! + field: EvidenceOrderField! +} + type PeopleConnection { edges: [PeopleEdge!]! pageInfo: PageInfo! @@ -221,6 +332,7 @@ type Framework implements Node { after: CursorKey last: Int before: CursorKey + orderBy: ControlOrder ): ControlConnection! @goField(forceResolver: true) createdAt: Datetime! @@ -251,6 +363,7 @@ type Control implements Node { after: CursorKey last: Int before: CursorKey + orderBy: TaskOrder ): TaskConnection! @goField(forceResolver: true) createdAt: Datetime! @@ -281,6 +394,7 @@ type Task implements Node { after: CursorKey last: Int before: CursorKey + orderBy: EvidenceOrder ): EvidenceConnection! @goField(forceResolver: true) createdAt: Datetime! @@ -347,6 +461,7 @@ type Viewer { after: CursorKey last: Int before: CursorKey + orderBy: OrganizationOrder ): OrganizationConnection! @goField(forceResolver: true) } @@ -737,3 +852,30 @@ input RemoveUserInput { type RemoveUserPayload { success: Boolean! } + +enum OrganizationOrderField { + NAME + CREATED_AT + UPDATED_AT +} + +input OrganizationOrder { + direction: OrderDirection! + field: OrganizationOrderField! +} + +enum UserOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.UserOrderField") { + CREATED_AT + @goEnum( + value: "github.com/getprobo/probo/pkg/coredata.UserOrderFieldCreatedAt" + ) +} + +input UserOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.UserOrderBy" + ) { + direction: OrderDirection! + field: UserOrderField! +} diff --git a/pkg/server/api/console/v1/schema/schema.go b/pkg/server/api/console/v1/schema/schema.go index 311fba689..84a3d7a93 100644 --- a/pkg/server/api/console/v1/schema/schema.go +++ b/pkg/server/api/console/v1/schema/schema.go @@ -73,7 +73,7 @@ type ComplexityRoot struct { Importance func(childComplexity int) int Name func(childComplexity int) int State func(childComplexity int) int - Tasks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int + Tasks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.TaskOrderBy) int UpdatedAt func(childComplexity int) int Version func(childComplexity int) int } @@ -162,7 +162,7 @@ type ComplexityRoot struct { } Framework struct { - Controls func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int + Controls func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ControlOrderBy) int CreatedAt func(childComplexity int) int Description func(childComplexity int) int ID func(childComplexity int) int @@ -221,15 +221,15 @@ type ComplexityRoot struct { Organization struct { CreatedAt func(childComplexity int) int - Frameworks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int + Frameworks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.FrameworkOrderBy) int ID func(childComplexity int) int LogoURL func(childComplexity int) int Name func(childComplexity int) int - Peoples func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int - Policies func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int + Peoples func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.PeopleOrderBy) int + Policies func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.PolicyOrderBy) int UpdatedAt func(childComplexity int) int - Users func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int - Vendors func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int + Users func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.UserOrderBy) int + Vendors func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.VendorOrderBy) int } OrganizationConnection struct { @@ -310,7 +310,7 @@ type ComplexityRoot struct { AssignedTo func(childComplexity int) int CreatedAt func(childComplexity int) int Description func(childComplexity int) int - Evidences func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int + Evidences func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.EvidenceOrderBy) int ID func(childComplexity int) int Name func(childComplexity int) int State func(childComplexity int) int @@ -411,19 +411,19 @@ type ComplexityRoot struct { Viewer struct { ID func(childComplexity int) int - Organizations func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int + Organizations func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrganizationOrder) int User func(childComplexity int) int } } type ControlResolver interface { - Tasks(ctx context.Context, obj *types.Control, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.TaskConnection, error) + Tasks(ctx context.Context, obj *types.Control, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.TaskOrderBy) (*types.TaskConnection, error) } type EvidenceResolver interface { FileURL(ctx context.Context, obj *types.Evidence) (string, error) } type FrameworkResolver interface { - Controls(ctx context.Context, obj *types.Framework, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.ControlConnection, error) + Controls(ctx context.Context, obj *types.Framework, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ControlOrderBy) (*types.ControlConnection, error) } type MutationResolver interface { CreateVendor(ctx context.Context, input types.CreateVendorInput) (*types.CreateVendorPayload, error) @@ -456,11 +456,11 @@ type MutationResolver interface { } type OrganizationResolver interface { LogoURL(ctx context.Context, obj *types.Organization) (*string, error) - Users(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.UserConnection, error) - Frameworks(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.FrameworkConnection, error) - Vendors(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.VendorConnection, error) - Peoples(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.PeopleConnection, error) - Policies(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.PolicyConnection, error) + Users(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.UserOrderBy) (*types.UserConnection, error) + Frameworks(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.FrameworkOrderBy) (*types.FrameworkConnection, error) + Vendors(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.VendorOrderBy) (*types.VendorConnection, error) + Peoples(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.PeopleOrderBy) (*types.PeopleConnection, error) + Policies(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.PolicyOrderBy) (*types.PolicyConnection, error) } type PolicyResolver interface { Owner(ctx context.Context, obj *types.Policy) (*types.People, error) @@ -471,10 +471,10 @@ type QueryResolver interface { } type TaskResolver interface { AssignedTo(ctx context.Context, obj *types.Task) (*types.People, error) - Evidences(ctx context.Context, obj *types.Task, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.EvidenceConnection, error) + Evidences(ctx context.Context, obj *types.Task, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.EvidenceOrderBy) (*types.EvidenceConnection, error) } type ViewerResolver interface { - Organizations(ctx context.Context, obj *types.Viewer, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.OrganizationConnection, error) + Organizations(ctx context.Context, obj *types.Viewer, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrganizationOrder) (*types.OrganizationConnection, error) } type executableSchema struct { @@ -569,7 +569,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.Control.Tasks(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey)), true + return e.complexity.Control.Tasks(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.TaskOrderBy)), true case "Control.updatedAt": if e.complexity.Control.UpdatedAt == nil { @@ -798,7 +798,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.Framework.Controls(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey)), true + return e.complexity.Framework.Controls(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.ControlOrderBy)), true case "Framework.createdAt": if e.complexity.Framework.CreatedAt == nil { @@ -1225,7 +1225,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.Organization.Frameworks(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey)), true + return e.complexity.Organization.Frameworks(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.FrameworkOrderBy)), true case "Organization.id": if e.complexity.Organization.ID == nil { @@ -1258,7 +1258,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.Organization.Peoples(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey)), true + return e.complexity.Organization.Peoples(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.PeopleOrderBy)), true case "Organization.policies": if e.complexity.Organization.Policies == nil { @@ -1270,7 +1270,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.Organization.Policies(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey)), true + return e.complexity.Organization.Policies(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.PolicyOrderBy)), true case "Organization.updatedAt": if e.complexity.Organization.UpdatedAt == nil { @@ -1289,7 +1289,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.Organization.Users(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey)), true + return e.complexity.Organization.Users(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.UserOrderBy)), true case "Organization.vendors": if e.complexity.Organization.Vendors == nil { @@ -1301,7 +1301,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.Organization.Vendors(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey)), true + return e.complexity.Organization.Vendors(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.VendorOrderBy)), true case "OrganizationConnection.edges": if e.complexity.OrganizationConnection.Edges == nil { @@ -1605,7 +1605,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.Task.Evidences(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey)), true + return e.complexity.Task.Evidences(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.EvidenceOrderBy)), true case "Task.id": if e.complexity.Task.ID == nil { @@ -1939,7 +1939,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.Viewer.Organizations(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey)), true + return e.complexity.Viewer.Organizations(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.OrganizationOrder)), true case "Viewer.user": if e.complexity.Viewer.User == nil { @@ -1958,6 +1958,7 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler { inputUnmarshalMap := graphql.BuildUnmarshalerMap( ec.unmarshalInputAssignTaskInput, ec.unmarshalInputConfirmEmailInput, + ec.unmarshalInputControlOrder, ec.unmarshalInputCreateControlInput, ec.unmarshalInputCreateFrameworkInput, ec.unmarshalInputCreateOrganizationInput, @@ -1971,9 +1972,15 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler { ec.unmarshalInputDeletePolicyInput, ec.unmarshalInputDeleteTaskInput, ec.unmarshalInputDeleteVendorInput, + ec.unmarshalInputEvidenceOrder, + ec.unmarshalInputFrameworkOrder, ec.unmarshalInputImportFrameworkInput, ec.unmarshalInputInviteUserInput, + ec.unmarshalInputOrganizationOrder, + ec.unmarshalInputPeopleOrder, + ec.unmarshalInputPolicyOrder, ec.unmarshalInputRemoveUserInput, + ec.unmarshalInputTaskOrder, ec.unmarshalInputUnassignTaskInput, ec.unmarshalInputUpdateControlInput, ec.unmarshalInputUpdateFrameworkInput, @@ -1983,6 +1990,8 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler { ec.unmarshalInputUpdateTaskInput, ec.unmarshalInputUpdateVendorInput, ec.unmarshalInputUploadEvidenceInput, + ec.unmarshalInputUserOrder, + ec.unmarshalInputVendorOrder, ) first := true @@ -2200,6 +2209,7 @@ type Organization implements Node { after: CursorKey last: Int before: CursorKey + orderBy: UserOrder ): UserConnection! @goField(forceResolver: true) frameworks( @@ -2207,6 +2217,7 @@ type Organization implements Node { after: CursorKey last: Int before: CursorKey + orderBy: FrameworkOrder ): FrameworkConnection! @goField(forceResolver: true) vendors( @@ -2214,6 +2225,7 @@ type Organization implements Node { after: CursorKey last: Int before: CursorKey + orderBy: VendorOrder ): VendorConnection! @goField(forceResolver: true) peoples( @@ -2221,6 +2233,7 @@ type Organization implements Node { after: CursorKey last: Int before: CursorKey + orderBy: PeopleOrder ): PeopleConnection! @goField(forceResolver: true) policies( @@ -2228,12 +2241,119 @@ type Organization implements Node { after: CursorKey last: Int before: CursorKey + orderBy: PolicyOrder ): PolicyConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } +enum OrderDirection + @goModel(model: "github.com/getprobo/probo/pkg/page.OrderDirection") { + ASC @goEnum(value: "github.com/getprobo/probo/pkg/page.OrderDirectionAsc") + DESC @goEnum(value: "github.com/getprobo/probo/pkg/page.OrderDirectionDesc") +} + +enum PeopleOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.PeopleOrderField") { + FULL_NAME + @goEnum( + value: "github.com/getprobo/probo/pkg/coredata.PeopleOrderFieldFullName" + ) + CREATED_AT + @goEnum( + value: "github.com/getprobo/probo/pkg/coredata.PeopleOrderFieldCreatedAt" + ) +} + +enum VendorOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.VendorOrderField") { + NAME +} + +enum FrameworkOrderField + @goModel( + model: "github.com/getprobo/probo/pkg/coredata.FrameworkOrderField" + ) { + NAME +} + +enum ControlOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.ControlOrderField") { + NAME +} + +enum TaskOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.TaskOrderField") { + CREATED_AT +} + +enum PolicyOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.PolicyOrderField") { + NAME +} + +enum EvidenceOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.EvidenceOrderField") { + CREATED_AT +} + +input PeopleOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.PeopleOrderBy" + ) { + direction: OrderDirection! + field: PeopleOrderField! +} + +input VendorOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.VendorOrderBy" + ) { + direction: OrderDirection! + field: VendorOrderField! +} + +input FrameworkOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.FrameworkOrderBy" + ) { + direction: OrderDirection! + field: FrameworkOrderField! +} + +input ControlOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.ControlOrderBy" + ) { + direction: OrderDirection! + field: ControlOrderField! +} + +input TaskOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.TaskOrderBy" + ) { + direction: OrderDirection! + field: TaskOrderField! +} + +input PolicyOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.PolicyOrderBy" + ) { + direction: OrderDirection! + field: PolicyOrderField! +} + +input EvidenceOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.EvidenceOrderBy" + ) { + direction: OrderDirection! + field: EvidenceOrderField! +} + type PeopleConnection { edges: [PeopleEdge!]! pageInfo: PageInfo! @@ -2303,6 +2423,7 @@ type Framework implements Node { after: CursorKey last: Int before: CursorKey + orderBy: ControlOrder ): ControlConnection! @goField(forceResolver: true) createdAt: Datetime! @@ -2333,6 +2454,7 @@ type Control implements Node { after: CursorKey last: Int before: CursorKey + orderBy: TaskOrder ): TaskConnection! @goField(forceResolver: true) createdAt: Datetime! @@ -2363,6 +2485,7 @@ type Task implements Node { after: CursorKey last: Int before: CursorKey + orderBy: EvidenceOrder ): EvidenceConnection! @goField(forceResolver: true) createdAt: Datetime! @@ -2429,6 +2552,7 @@ type Viewer { after: CursorKey last: Int before: CursorKey + orderBy: OrganizationOrder ): OrganizationConnection! @goField(forceResolver: true) } @@ -2819,6 +2943,33 @@ input RemoveUserInput { type RemoveUserPayload { success: Boolean! } + +enum OrganizationOrderField { + NAME + CREATED_AT + UPDATED_AT +} + +input OrganizationOrder { + direction: OrderDirection! + field: OrganizationOrderField! +} + +enum UserOrderField + @goModel(model: "github.com/getprobo/probo/pkg/coredata.UserOrderField") { + CREATED_AT + @goEnum( + value: "github.com/getprobo/probo/pkg/coredata.UserOrderFieldCreatedAt" + ) +} + +input UserOrder + @goModel( + model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.UserOrderBy" + ) { + direction: OrderDirection! + field: UserOrderField! +} `, BuiltIn: false}, } var parsedSchema = gqlparser.MustLoadSchema(sources...) @@ -2850,6 +3001,11 @@ func (ec *executionContext) field_Control_tasks_args(ctx context.Context, rawArg return nil, err } args["before"] = arg3 + arg4, err := ec.field_Control_tasks_argsOrderBy(ctx, rawArgs) + if err != nil { + return nil, err + } + args["orderBy"] = arg4 return args, nil } func (ec *executionContext) field_Control_tasks_argsFirst( @@ -2904,6 +3060,19 @@ func (ec *executionContext) field_Control_tasks_argsBefore( return zeroVal, nil } +func (ec *executionContext) field_Control_tasks_argsOrderBy( + ctx context.Context, + rawArgs map[string]any, +) (*types.TaskOrderBy, error) { + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + if tmp, ok := rawArgs["orderBy"]; ok { + return ec.unmarshalOTaskOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐTaskOrderBy(ctx, tmp) + } + + var zeroVal *types.TaskOrderBy + return zeroVal, nil +} + func (ec *executionContext) field_Framework_controls_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) { var err error args := map[string]any{} @@ -2927,6 +3096,11 @@ func (ec *executionContext) field_Framework_controls_args(ctx context.Context, r return nil, err } args["before"] = arg3 + arg4, err := ec.field_Framework_controls_argsOrderBy(ctx, rawArgs) + if err != nil { + return nil, err + } + args["orderBy"] = arg4 return args, nil } func (ec *executionContext) field_Framework_controls_argsFirst( @@ -2981,6 +3155,19 @@ func (ec *executionContext) field_Framework_controls_argsBefore( return zeroVal, nil } +func (ec *executionContext) field_Framework_controls_argsOrderBy( + ctx context.Context, + rawArgs map[string]any, +) (*types.ControlOrderBy, error) { + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + if tmp, ok := rawArgs["orderBy"]; ok { + return ec.unmarshalOControlOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐControlOrderBy(ctx, tmp) + } + + var zeroVal *types.ControlOrderBy + return zeroVal, nil +} + func (ec *executionContext) field_Mutation_assignTask_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) { var err error args := map[string]any{} @@ -3625,6 +3812,11 @@ func (ec *executionContext) field_Organization_frameworks_args(ctx context.Conte return nil, err } args["before"] = arg3 + arg4, err := ec.field_Organization_frameworks_argsOrderBy(ctx, rawArgs) + if err != nil { + return nil, err + } + args["orderBy"] = arg4 return args, nil } func (ec *executionContext) field_Organization_frameworks_argsFirst( @@ -3679,6 +3871,19 @@ func (ec *executionContext) field_Organization_frameworks_argsBefore( return zeroVal, nil } +func (ec *executionContext) field_Organization_frameworks_argsOrderBy( + ctx context.Context, + rawArgs map[string]any, +) (*types.FrameworkOrderBy, error) { + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + if tmp, ok := rawArgs["orderBy"]; ok { + return ec.unmarshalOFrameworkOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐFrameworkOrderBy(ctx, tmp) + } + + var zeroVal *types.FrameworkOrderBy + return zeroVal, nil +} + func (ec *executionContext) field_Organization_peoples_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) { var err error args := map[string]any{} @@ -3702,6 +3907,11 @@ func (ec *executionContext) field_Organization_peoples_args(ctx context.Context, return nil, err } args["before"] = arg3 + arg4, err := ec.field_Organization_peoples_argsOrderBy(ctx, rawArgs) + if err != nil { + return nil, err + } + args["orderBy"] = arg4 return args, nil } func (ec *executionContext) field_Organization_peoples_argsFirst( @@ -3756,6 +3966,19 @@ func (ec *executionContext) field_Organization_peoples_argsBefore( return zeroVal, nil } +func (ec *executionContext) field_Organization_peoples_argsOrderBy( + ctx context.Context, + rawArgs map[string]any, +) (*types.PeopleOrderBy, error) { + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + if tmp, ok := rawArgs["orderBy"]; ok { + return ec.unmarshalOPeopleOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPeopleOrderBy(ctx, tmp) + } + + var zeroVal *types.PeopleOrderBy + return zeroVal, nil +} + func (ec *executionContext) field_Organization_policies_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) { var err error args := map[string]any{} @@ -3779,6 +4002,11 @@ func (ec *executionContext) field_Organization_policies_args(ctx context.Context return nil, err } args["before"] = arg3 + arg4, err := ec.field_Organization_policies_argsOrderBy(ctx, rawArgs) + if err != nil { + return nil, err + } + args["orderBy"] = arg4 return args, nil } func (ec *executionContext) field_Organization_policies_argsFirst( @@ -3833,6 +4061,19 @@ func (ec *executionContext) field_Organization_policies_argsBefore( return zeroVal, nil } +func (ec *executionContext) field_Organization_policies_argsOrderBy( + ctx context.Context, + rawArgs map[string]any, +) (*types.PolicyOrderBy, error) { + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + if tmp, ok := rawArgs["orderBy"]; ok { + return ec.unmarshalOPolicyOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPolicyOrderBy(ctx, tmp) + } + + var zeroVal *types.PolicyOrderBy + return zeroVal, nil +} + func (ec *executionContext) field_Organization_users_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) { var err error args := map[string]any{} @@ -3856,6 +4097,11 @@ func (ec *executionContext) field_Organization_users_args(ctx context.Context, r return nil, err } args["before"] = arg3 + arg4, err := ec.field_Organization_users_argsOrderBy(ctx, rawArgs) + if err != nil { + return nil, err + } + args["orderBy"] = arg4 return args, nil } func (ec *executionContext) field_Organization_users_argsFirst( @@ -3910,6 +4156,19 @@ func (ec *executionContext) field_Organization_users_argsBefore( return zeroVal, nil } +func (ec *executionContext) field_Organization_users_argsOrderBy( + ctx context.Context, + rawArgs map[string]any, +) (*types.UserOrderBy, error) { + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + if tmp, ok := rawArgs["orderBy"]; ok { + return ec.unmarshalOUserOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUserOrderBy(ctx, tmp) + } + + var zeroVal *types.UserOrderBy + return zeroVal, nil +} + func (ec *executionContext) field_Organization_vendors_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) { var err error args := map[string]any{} @@ -3933,6 +4192,11 @@ func (ec *executionContext) field_Organization_vendors_args(ctx context.Context, return nil, err } args["before"] = arg3 + arg4, err := ec.field_Organization_vendors_argsOrderBy(ctx, rawArgs) + if err != nil { + return nil, err + } + args["orderBy"] = arg4 return args, nil } func (ec *executionContext) field_Organization_vendors_argsFirst( @@ -3987,6 +4251,19 @@ func (ec *executionContext) field_Organization_vendors_argsBefore( return zeroVal, nil } +func (ec *executionContext) field_Organization_vendors_argsOrderBy( + ctx context.Context, + rawArgs map[string]any, +) (*types.VendorOrderBy, error) { + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + if tmp, ok := rawArgs["orderBy"]; ok { + return ec.unmarshalOVendorOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐVendorOrderBy(ctx, tmp) + } + + var zeroVal *types.VendorOrderBy + return zeroVal, nil +} + func (ec *executionContext) field_Query___type_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) { var err error args := map[string]any{} @@ -4056,6 +4333,11 @@ func (ec *executionContext) field_Task_evidences_args(ctx context.Context, rawAr return nil, err } args["before"] = arg3 + arg4, err := ec.field_Task_evidences_argsOrderBy(ctx, rawArgs) + if err != nil { + return nil, err + } + args["orderBy"] = arg4 return args, nil } func (ec *executionContext) field_Task_evidences_argsFirst( @@ -4110,6 +4392,19 @@ func (ec *executionContext) field_Task_evidences_argsBefore( return zeroVal, nil } +func (ec *executionContext) field_Task_evidences_argsOrderBy( + ctx context.Context, + rawArgs map[string]any, +) (*types.EvidenceOrderBy, error) { + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + if tmp, ok := rawArgs["orderBy"]; ok { + return ec.unmarshalOEvidenceOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐEvidenceOrderBy(ctx, tmp) + } + + var zeroVal *types.EvidenceOrderBy + return zeroVal, nil +} + func (ec *executionContext) field_Viewer_organizations_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) { var err error args := map[string]any{} @@ -4133,6 +4428,11 @@ func (ec *executionContext) field_Viewer_organizations_args(ctx context.Context, return nil, err } args["before"] = arg3 + arg4, err := ec.field_Viewer_organizations_argsOrderBy(ctx, rawArgs) + if err != nil { + return nil, err + } + args["orderBy"] = arg4 return args, nil } func (ec *executionContext) field_Viewer_organizations_argsFirst( @@ -4187,6 +4487,19 @@ func (ec *executionContext) field_Viewer_organizations_argsBefore( return zeroVal, nil } +func (ec *executionContext) field_Viewer_organizations_argsOrderBy( + ctx context.Context, + rawArgs map[string]any, +) (*types.OrganizationOrder, error) { + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + if tmp, ok := rawArgs["orderBy"]; ok { + return ec.unmarshalOOrganizationOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐOrganizationOrder(ctx, tmp) + } + + var zeroVal *types.OrganizationOrder + return zeroVal, nil +} + func (ec *executionContext) field___Directive_args_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) { var err error args := map[string]any{} @@ -4659,7 +4972,7 @@ func (ec *executionContext) _Control_tasks(ctx context.Context, field graphql.Co ctx = graphql.WithFieldContext(ctx, fc) resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Control().Tasks(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey)) + return ec.resolvers.Control().Tasks(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.TaskOrderBy)) }) if err != nil { ec.Error(ctx, err) @@ -6152,7 +6465,7 @@ func (ec *executionContext) _Framework_controls(ctx context.Context, field graph ctx = graphql.WithFieldContext(ctx, fc) resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Framework().Controls(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey)) + return ec.resolvers.Framework().Controls(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.ControlOrderBy)) }) if err != nil { ec.Error(ctx, err) @@ -7923,7 +8236,7 @@ func (ec *executionContext) _Organization_users(ctx context.Context, field graph ctx = graphql.WithFieldContext(ctx, fc) resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Organization().Users(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey)) + return ec.resolvers.Organization().Users(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.UserOrderBy)) }) if err != nil { ec.Error(ctx, err) @@ -7972,7 +8285,7 @@ func (ec *executionContext) _Organization_frameworks(ctx context.Context, field ctx = graphql.WithFieldContext(ctx, fc) resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Organization().Frameworks(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey)) + return ec.resolvers.Organization().Frameworks(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.FrameworkOrderBy)) }) if err != nil { ec.Error(ctx, err) @@ -8021,7 +8334,7 @@ func (ec *executionContext) _Organization_vendors(ctx context.Context, field gra ctx = graphql.WithFieldContext(ctx, fc) resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Organization().Vendors(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey)) + return ec.resolvers.Organization().Vendors(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.VendorOrderBy)) }) if err != nil { ec.Error(ctx, err) @@ -8070,7 +8383,7 @@ func (ec *executionContext) _Organization_peoples(ctx context.Context, field gra ctx = graphql.WithFieldContext(ctx, fc) resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Organization().Peoples(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey)) + return ec.resolvers.Organization().Peoples(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.PeopleOrderBy)) }) if err != nil { ec.Error(ctx, err) @@ -8119,7 +8432,7 @@ func (ec *executionContext) _Organization_policies(ctx context.Context, field gr ctx = graphql.WithFieldContext(ctx, fc) resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Organization().Policies(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey)) + return ec.resolvers.Organization().Policies(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.PolicyOrderBy)) }) if err != nil { ec.Error(ctx, err) @@ -10212,7 +10525,7 @@ func (ec *executionContext) _Task_evidences(ctx context.Context, field graphql.C ctx = graphql.WithFieldContext(ctx, fc) resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Task().Evidences(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey)) + return ec.resolvers.Task().Evidences(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.EvidenceOrderBy)) }) if err != nil { ec.Error(ctx, err) @@ -12181,7 +12494,7 @@ func (ec *executionContext) _Viewer_organizations(ctx context.Context, field gra ctx = graphql.WithFieldContext(ctx, fc) resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Viewer().Organizations(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey)) + return ec.resolvers.Viewer().Organizations(rctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.OrganizationOrder)) }) if err != nil { ec.Error(ctx, err) @@ -13982,6 +14295,40 @@ func (ec *executionContext) unmarshalInputConfirmEmailInput(ctx context.Context, return it, nil } +func (ec *executionContext) unmarshalInputControlOrder(ctx context.Context, obj any) (types.ControlOrderBy, error) { + var it types.ControlOrderBy + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"direction", "field"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "direction": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) + data, err := ec.unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v) + if err != nil { + return it, err + } + it.Direction = data + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNControlOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐControlOrderField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + } + } + + return it, nil +} + func (ec *executionContext) unmarshalInputCreateControlInput(ctx context.Context, obj any) (types.CreateControlInput, error) { var it types.CreateControlInput asMap := map[string]any{} @@ -14529,6 +14876,74 @@ func (ec *executionContext) unmarshalInputDeleteVendorInput(ctx context.Context, return it, nil } +func (ec *executionContext) unmarshalInputEvidenceOrder(ctx context.Context, obj any) (types.EvidenceOrderBy, error) { + var it types.EvidenceOrderBy + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"direction", "field"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "direction": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) + data, err := ec.unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v) + if err != nil { + return it, err + } + it.Direction = data + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNEvidenceOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐEvidenceOrderField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputFrameworkOrder(ctx context.Context, obj any) (types.FrameworkOrderBy, error) { + var it types.FrameworkOrderBy + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"direction", "field"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "direction": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) + data, err := ec.unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v) + if err != nil { + return it, err + } + it.Direction = data + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNFrameworkOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐFrameworkOrderField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + } + } + + return it, nil +} + func (ec *executionContext) unmarshalInputImportFrameworkInput(ctx context.Context, obj any) (types.ImportFrameworkInput, error) { var it types.ImportFrameworkInput asMap := map[string]any{} @@ -14604,6 +15019,108 @@ func (ec *executionContext) unmarshalInputInviteUserInput(ctx context.Context, o return it, nil } +func (ec *executionContext) unmarshalInputOrganizationOrder(ctx context.Context, obj any) (types.OrganizationOrder, error) { + var it types.OrganizationOrder + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"direction", "field"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "direction": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) + data, err := ec.unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v) + if err != nil { + return it, err + } + it.Direction = data + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNOrganizationOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐOrganizationOrderField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputPeopleOrder(ctx context.Context, obj any) (types.PeopleOrderBy, error) { + var it types.PeopleOrderBy + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"direction", "field"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "direction": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) + data, err := ec.unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v) + if err != nil { + return it, err + } + it.Direction = data + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNPeopleOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPeopleOrderField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputPolicyOrder(ctx context.Context, obj any) (types.PolicyOrderBy, error) { + var it types.PolicyOrderBy + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"direction", "field"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "direction": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) + data, err := ec.unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v) + if err != nil { + return it, err + } + it.Direction = data + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNPolicyOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPolicyOrderField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + } + } + + return it, nil +} + func (ec *executionContext) unmarshalInputRemoveUserInput(ctx context.Context, obj any) (types.RemoveUserInput, error) { var it types.RemoveUserInput asMap := map[string]any{} @@ -14638,6 +15155,40 @@ func (ec *executionContext) unmarshalInputRemoveUserInput(ctx context.Context, o return it, nil } +func (ec *executionContext) unmarshalInputTaskOrder(ctx context.Context, obj any) (types.TaskOrderBy, error) { + var it types.TaskOrderBy + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"direction", "field"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "direction": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) + data, err := ec.unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v) + if err != nil { + return it, err + } + it.Direction = data + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNTaskOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐTaskOrderField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + } + } + + return it, nil +} + func (ec *executionContext) unmarshalInputUnassignTaskInput(ctx context.Context, obj any) (types.UnassignTaskInput, error) { var it types.UnassignTaskInput asMap := map[string]any{} @@ -15154,6 +15705,74 @@ func (ec *executionContext) unmarshalInputUploadEvidenceInput(ctx context.Contex return it, nil } +func (ec *executionContext) unmarshalInputUserOrder(ctx context.Context, obj any) (types.UserOrderBy, error) { + var it types.UserOrderBy + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"direction", "field"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "direction": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) + data, err := ec.unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v) + if err != nil { + return it, err + } + it.Direction = data + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNUserOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐUserOrderField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputVendorOrder(ctx context.Context, obj any) (types.VendorOrderBy, error) { + var it types.VendorOrderBy + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"direction", "field"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "direction": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) + data, err := ec.unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx, v) + if err != nil { + return it, err + } + it.Direction = data + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNVendorOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐVendorOrderField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + } + } + + return it, nil +} + // endregion **************************** input.gotpl ***************************** // region ************************** interface.gotpl *************************** @@ -19047,6 +19666,22 @@ var ( } ) +func (ec *executionContext) unmarshalNControlOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐControlOrderField(ctx context.Context, v any) (coredata.ControlOrderField, error) { + tmp, err := graphql.UnmarshalString(v) + res := coredata.ControlOrderField(tmp) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNControlOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐControlOrderField(ctx context.Context, sel ast.SelectionSet, v coredata.ControlOrderField) graphql.Marshaler { + res := graphql.MarshalString(string(v)) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + func (ec *executionContext) unmarshalNControlState2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐControlState(ctx context.Context, v any) (coredata.ControlState, error) { tmp, err := graphql.UnmarshalString(v) res := unmarshalNControlState2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐControlState[tmp] @@ -19442,6 +20077,22 @@ func (ec *executionContext) marshalNEvidenceEdge2ᚖgithubᚗcomᚋgetproboᚋpr return ec._EvidenceEdge(ctx, sel, v) } +func (ec *executionContext) unmarshalNEvidenceOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐEvidenceOrderField(ctx context.Context, v any) (coredata.EvidenceOrderField, error) { + tmp, err := graphql.UnmarshalString(v) + res := coredata.EvidenceOrderField(tmp) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNEvidenceOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐEvidenceOrderField(ctx context.Context, sel ast.SelectionSet, v coredata.EvidenceOrderField) graphql.Marshaler { + res := graphql.MarshalString(string(v)) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + func (ec *executionContext) unmarshalNEvidenceState2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐEvidenceState(ctx context.Context, v any) (coredata.EvidenceState, error) { tmp, err := graphql.UnmarshalString(v) res := unmarshalNEvidenceState2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐEvidenceState[tmp] @@ -19543,6 +20194,22 @@ func (ec *executionContext) marshalNFrameworkEdge2ᚖgithubᚗcomᚋgetproboᚋp return ec._FrameworkEdge(ctx, sel, v) } +func (ec *executionContext) unmarshalNFrameworkOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐFrameworkOrderField(ctx context.Context, v any) (coredata.FrameworkOrderField, error) { + tmp, err := graphql.UnmarshalString(v) + res := coredata.FrameworkOrderField(tmp) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNFrameworkOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐFrameworkOrderField(ctx context.Context, sel ast.SelectionSet, v coredata.FrameworkOrderField) graphql.Marshaler { + res := graphql.MarshalString(string(v)) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + func (ec *executionContext) unmarshalNID2githubᚗcomᚋgetproboᚋproboᚋpkgᚋgidᚐGID(ctx context.Context, v any) (gid.GID, error) { res, err := types.UnmarshalGIDScalar(v) return res, graphql.ErrorOnPath(ctx, err) @@ -19621,6 +20288,33 @@ func (ec *executionContext) marshalNNode2githubᚗcomᚋgetproboᚋproboᚋpkg return ec._Node(ctx, sel, v) } +func (ec *executionContext) unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx context.Context, v any) (page.OrderDirection, error) { + tmp, err := graphql.UnmarshalString(v) + res := unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection[tmp] + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection(ctx context.Context, sel ast.SelectionSet, v page.OrderDirection) graphql.Marshaler { + res := graphql.MarshalString(marshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection[v]) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + +var ( + unmarshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection = map[string]page.OrderDirection{ + "ASC": page.OrderDirectionAsc, + "DESC": page.OrderDirectionDesc, + } + marshalNOrderDirection2githubᚗcomᚋgetproboᚋproboᚋpkgᚋpageᚐOrderDirection = map[page.OrderDirection]string{ + page.OrderDirectionAsc: "ASC", + page.OrderDirectionDesc: "DESC", + } +) + func (ec *executionContext) marshalNOrganization2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐOrganization(ctx context.Context, sel ast.SelectionSet, v *types.Organization) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { @@ -19693,6 +20387,16 @@ func (ec *executionContext) marshalNOrganizationEdge2ᚖgithubᚗcomᚋgetprobo return ec._OrganizationEdge(ctx, sel, v) } +func (ec *executionContext) unmarshalNOrganizationOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐOrganizationOrderField(ctx context.Context, v any) (types.OrganizationOrderField, error) { + var res types.OrganizationOrderField + err := res.UnmarshalGQL(v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNOrganizationOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐOrganizationOrderField(ctx context.Context, sel ast.SelectionSet, v types.OrganizationOrderField) graphql.Marshaler { + return v +} + func (ec *executionContext) marshalNPageInfo2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPageInfo(ctx context.Context, sel ast.SelectionSet, v *types.PageInfo) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { @@ -19808,6 +20512,33 @@ var ( } ) +func (ec *executionContext) unmarshalNPeopleOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPeopleOrderField(ctx context.Context, v any) (coredata.PeopleOrderField, error) { + tmp, err := graphql.UnmarshalString(v) + res := unmarshalNPeopleOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPeopleOrderField[tmp] + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNPeopleOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPeopleOrderField(ctx context.Context, sel ast.SelectionSet, v coredata.PeopleOrderField) graphql.Marshaler { + res := graphql.MarshalString(marshalNPeopleOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPeopleOrderField[v]) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + +var ( + unmarshalNPeopleOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPeopleOrderField = map[string]coredata.PeopleOrderField{ + "FULL_NAME": coredata.PeopleOrderFieldFullName, + "CREATED_AT": coredata.PeopleOrderFieldCreatedAt, + } + marshalNPeopleOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPeopleOrderField = map[coredata.PeopleOrderField]string{ + coredata.PeopleOrderFieldFullName: "FULL_NAME", + coredata.PeopleOrderFieldCreatedAt: "CREATED_AT", + } +) + func (ec *executionContext) marshalNPolicy2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPolicy(ctx context.Context, sel ast.SelectionSet, v *types.Policy) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { @@ -19880,6 +20611,22 @@ func (ec *executionContext) marshalNPolicyEdge2ᚖgithubᚗcomᚋgetproboᚋprob return ec._PolicyEdge(ctx, sel, v) } +func (ec *executionContext) unmarshalNPolicyOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPolicyOrderField(ctx context.Context, v any) (coredata.PolicyOrderField, error) { + tmp, err := graphql.UnmarshalString(v) + res := coredata.PolicyOrderField(tmp) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNPolicyOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPolicyOrderField(ctx context.Context, sel ast.SelectionSet, v coredata.PolicyOrderField) graphql.Marshaler { + res := graphql.MarshalString(string(v)) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + func (ec *executionContext) unmarshalNPolicyStatus2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPolicyStatus(ctx context.Context, v any) (coredata.PolicyStatus, error) { tmp, err := graphql.UnmarshalString(v) res := unmarshalNPolicyStatus2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPolicyStatus[tmp] @@ -20103,6 +20850,22 @@ func (ec *executionContext) marshalNTaskEdge2ᚖgithubᚗcomᚋgetproboᚋprobo return ec._TaskEdge(ctx, sel, v) } +func (ec *executionContext) unmarshalNTaskOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐTaskOrderField(ctx context.Context, v any) (coredata.TaskOrderField, error) { + tmp, err := graphql.UnmarshalString(v) + res := coredata.TaskOrderField(tmp) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNTaskOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐTaskOrderField(ctx context.Context, sel ast.SelectionSet, v coredata.TaskOrderField) graphql.Marshaler { + res := graphql.MarshalString(string(v)) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + func (ec *executionContext) unmarshalNTaskState2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐTaskState(ctx context.Context, v any) (coredata.TaskState, error) { tmp, err := graphql.UnmarshalString(v) res := unmarshalNTaskState2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐTaskState[tmp] @@ -20388,6 +21151,31 @@ func (ec *executionContext) marshalNUserEdge2ᚖgithubᚗcomᚋgetproboᚋprobo return ec._UserEdge(ctx, sel, v) } +func (ec *executionContext) unmarshalNUserOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐUserOrderField(ctx context.Context, v any) (coredata.UserOrderField, error) { + tmp, err := graphql.UnmarshalString(v) + res := unmarshalNUserOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐUserOrderField[tmp] + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNUserOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐUserOrderField(ctx context.Context, sel ast.SelectionSet, v coredata.UserOrderField) graphql.Marshaler { + res := graphql.MarshalString(marshalNUserOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐUserOrderField[v]) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + +var ( + unmarshalNUserOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐUserOrderField = map[string]coredata.UserOrderField{ + "CREATED_AT": coredata.UserOrderFieldCreatedAt, + } + marshalNUserOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐUserOrderField = map[coredata.UserOrderField]string{ + coredata.UserOrderFieldCreatedAt: "CREATED_AT", + } +) + func (ec *executionContext) marshalNVendor2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐVendor(ctx context.Context, sel ast.SelectionSet, v *types.Vendor) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { @@ -20460,6 +21248,22 @@ func (ec *executionContext) marshalNVendorEdge2ᚖgithubᚗcomᚋgetproboᚋprob return ec._VendorEdge(ctx, sel, v) } +func (ec *executionContext) unmarshalNVendorOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐVendorOrderField(ctx context.Context, v any) (coredata.VendorOrderField, error) { + tmp, err := graphql.UnmarshalString(v) + res := coredata.VendorOrderField(tmp) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNVendorOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐVendorOrderField(ctx context.Context, sel ast.SelectionSet, v coredata.VendorOrderField) graphql.Marshaler { + res := graphql.MarshalString(string(v)) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + func (ec *executionContext) marshalNViewer2githubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐViewer(ctx context.Context, sel ast.SelectionSet, v types.Viewer) graphql.Marshaler { return ec._Viewer(ctx, sel, &v) } @@ -20759,6 +21563,14 @@ var ( } ) +func (ec *executionContext) unmarshalOControlOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐControlOrderBy(ctx context.Context, v any) (*types.ControlOrderBy, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputControlOrder(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + func (ec *executionContext) unmarshalOControlState2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐControlState(ctx context.Context, v any) (*coredata.ControlState, error) { if v == nil { return nil, nil @@ -20839,6 +21651,22 @@ func (ec *executionContext) marshalODuration2ᚖtimeᚐDuration(ctx context.Cont return res } +func (ec *executionContext) unmarshalOEvidenceOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐEvidenceOrderBy(ctx context.Context, v any) (*types.EvidenceOrderBy, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputEvidenceOrder(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) unmarshalOFrameworkOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐFrameworkOrderBy(ctx context.Context, v any) (*types.FrameworkOrderBy, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputFrameworkOrder(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + func (ec *executionContext) unmarshalOID2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋgidᚐGID(ctx context.Context, v any) (*gid.GID, error) { if v == nil { return nil, nil @@ -20871,6 +21699,14 @@ func (ec *executionContext) marshalOInt2ᚖint(ctx context.Context, sel ast.Sele return res } +func (ec *executionContext) unmarshalOOrganizationOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐOrganizationOrder(ctx context.Context, v any) (*types.OrganizationOrder, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputOrganizationOrder(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + func (ec *executionContext) marshalOPeople2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPeople(ctx context.Context, sel ast.SelectionSet, v *types.People) graphql.Marshaler { if v == nil { return graphql.Null @@ -20908,6 +21744,22 @@ var ( } ) +func (ec *executionContext) unmarshalOPeopleOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPeopleOrderBy(ctx context.Context, v any) (*types.PeopleOrderBy, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputPeopleOrder(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) unmarshalOPolicyOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPolicyOrderBy(ctx context.Context, v any) (*types.PolicyOrderBy, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputPolicyOrder(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + func (ec *executionContext) unmarshalOPolicyStatus2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐPolicyStatus(ctx context.Context, v any) (*coredata.PolicyStatus, error) { if v == nil { return nil, nil @@ -21050,6 +21902,14 @@ func (ec *executionContext) marshalOString2ᚖstring(ctx context.Context, sel as return res } +func (ec *executionContext) unmarshalOTaskOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐTaskOrderBy(ctx context.Context, v any) (*types.TaskOrderBy, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputTaskOrder(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + func (ec *executionContext) unmarshalOTaskState2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐTaskState(ctx context.Context, v any) (*coredata.TaskState, error) { if v == nil { return nil, nil @@ -21094,6 +21954,22 @@ func (ec *executionContext) marshalOUpload2ᚖgithubᚗcomᚋ99designsᚋgqlgen return res } +func (ec *executionContext) unmarshalOUserOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐUserOrderBy(ctx context.Context, v any) (*types.UserOrderBy, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputUserOrder(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) unmarshalOVendorOrder2ᚖgithubᚗcomᚋgetproboᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐVendorOrderBy(ctx context.Context, v any) (*types.VendorOrderBy, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputVendorOrder(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + func (ec *executionContext) marshalO__EnumValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValueᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.EnumValue) graphql.Marshaler { if v == nil { return graphql.Null diff --git a/pkg/server/api/console/v1/types/control.go b/pkg/server/api/console/v1/types/control.go index 32f15d622..f518fd8e7 100644 --- a/pkg/server/api/console/v1/types/control.go +++ b/pkg/server/api/console/v1/types/control.go @@ -19,7 +19,11 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewControlConnection(p *page.Page[*coredata.Control]) *ControlConnection { +type ( + ControlOrderBy OrderBy[coredata.ControlOrderField] +) + +func NewControlConnection(p *page.Page[*coredata.Control, coredata.ControlOrderField]) *ControlConnection { var edges = make([]*ControlEdge, len(p.Data)) for i := range edges { @@ -32,7 +36,7 @@ func NewControlConnection(p *page.Page[*coredata.Control]) *ControlConnection { } } -func NewControlEdge(c *coredata.Control, orderBy page.OrderField) *ControlEdge { +func NewControlEdge(c *coredata.Control, orderBy coredata.ControlOrderField) *ControlEdge { return &ControlEdge{ Cursor: c.CursorKey(orderBy), Node: NewControl(c), diff --git a/pkg/server/api/console/v1/types/cursorkey.go b/pkg/server/api/console/v1/types/cursorkey.go index cfd2c1255..00acf530f 100644 --- a/pkg/server/api/console/v1/types/cursorkey.go +++ b/pkg/server/api/console/v1/types/cursorkey.go @@ -23,38 +23,13 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewCursor( +func NewCursor[O page.OrderField]( first *int, after *page.CursorKey, last *int, before *page.CursorKey, -) *page.Cursor { - var ( - size int - from *page.CursorKey - direction = page.Head - ) - - if first != nil { - size = *first - direction = page.Head - from = after - } else if last != nil { - size = *last - direction = page.Tail - from = before - } - - return page.NewCursor(size, from, direction, nil) -} - -func NewCursorWithOrder( - first *int, - after *page.CursorKey, - last *int, - before *page.CursorKey, - orderBy *page.OrderBy, -) *page.Cursor { + orderBy page.OrderBy[O], +) *page.Cursor[O] { var ( size int from *page.CursorKey diff --git a/pkg/server/api/console/v1/types/evidence.go b/pkg/server/api/console/v1/types/evidence.go index 7cace7510..68d8bffeb 100644 --- a/pkg/server/api/console/v1/types/evidence.go +++ b/pkg/server/api/console/v1/types/evidence.go @@ -19,7 +19,11 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewEvidenceConnection(p *page.Page[*coredata.Evidence]) *EvidenceConnection { +type ( + EvidenceOrderBy OrderBy[coredata.EvidenceOrderField] +) + +func NewEvidenceConnection(p *page.Page[*coredata.Evidence, coredata.EvidenceOrderField]) *EvidenceConnection { var edges = make([]*EvidenceEdge, len(p.Data)) for i := range edges { @@ -32,7 +36,7 @@ func NewEvidenceConnection(p *page.Page[*coredata.Evidence]) *EvidenceConnection } } -func NewEvidenceEdge(e *coredata.Evidence, orderBy page.OrderField) *EvidenceEdge { +func NewEvidenceEdge(e *coredata.Evidence, orderBy coredata.EvidenceOrderField) *EvidenceEdge { return &EvidenceEdge{ Cursor: e.CursorKey(orderBy), Node: NewEvidence(e), diff --git a/pkg/server/api/console/v1/types/framework.go b/pkg/server/api/console/v1/types/framework.go index 42163a087..2167306d9 100644 --- a/pkg/server/api/console/v1/types/framework.go +++ b/pkg/server/api/console/v1/types/framework.go @@ -19,7 +19,11 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewFrameworkConnection(p *page.Page[*coredata.Framework]) *FrameworkConnection { +type ( + FrameworkOrderBy OrderBy[coredata.FrameworkOrderField] +) + +func NewFrameworkConnection(p *page.Page[*coredata.Framework, coredata.FrameworkOrderField]) *FrameworkConnection { var edges = make([]*FrameworkEdge, len(p.Data)) for i := range edges { @@ -32,7 +36,7 @@ func NewFrameworkConnection(p *page.Page[*coredata.Framework]) *FrameworkConnect } } -func NewFrameworkEdge(f *coredata.Framework, orderBy page.OrderField) *FrameworkEdge { +func NewFrameworkEdge(f *coredata.Framework, orderBy coredata.FrameworkOrderField) *FrameworkEdge { return &FrameworkEdge{ Cursor: f.CursorKey(orderBy), Node: NewFramework(f), diff --git a/pkg/server/api/console/v1/types/order_by.go b/pkg/server/api/console/v1/types/order_by.go new file mode 100644 index 000000000..5f13a67b0 --- /dev/null +++ b/pkg/server/api/console/v1/types/order_by.go @@ -0,0 +1,24 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package types + +import "github.com/getprobo/probo/pkg/page" + +type ( + OrderBy[T page.OrderField] struct { + Field T + Direction page.OrderDirection + } +) diff --git a/pkg/server/api/console/v1/types/organization.go b/pkg/server/api/console/v1/types/organization.go index 073f92504..18e853db5 100644 --- a/pkg/server/api/console/v1/types/organization.go +++ b/pkg/server/api/console/v1/types/organization.go @@ -19,7 +19,11 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewOrganizationConnection(page *page.Page[*coredata.Organization]) *OrganizationConnection { +type ( + OrganizationOrderBy OrderBy[coredata.OrganizationOrderField] +) + +func NewOrganizationConnection(page *page.Page[*coredata.Organization, coredata.OrganizationOrderField]) *OrganizationConnection { var edges = make([]*OrganizationEdge, len(page.Data)) for i := range edges { @@ -32,7 +36,7 @@ func NewOrganizationConnection(page *page.Page[*coredata.Organization]) *Organiz } } -func NewOrganizationEdge(o *coredata.Organization, orderBy page.OrderField) *OrganizationEdge { +func NewOrganizationEdge(o *coredata.Organization, orderBy coredata.OrganizationOrderField) *OrganizationEdge { return &OrganizationEdge{ Cursor: o.CursorKey(orderBy), Node: NewOrganization(o), diff --git a/pkg/server/api/console/v1/types/pageinfo.go b/pkg/server/api/console/v1/types/pageinfo.go index 902cb50ff..982ce3495 100644 --- a/pkg/server/api/console/v1/types/pageinfo.go +++ b/pkg/server/api/console/v1/types/pageinfo.go @@ -19,7 +19,7 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewPageInfo[T page.Paginable](p *page.Page[T]) *PageInfo { +func NewPageInfo[T page.Paginable[O], O page.OrderField](p *page.Page[T, O]) *PageInfo { var ( startCursor *page.CursorKey endCursor *page.CursorKey diff --git a/pkg/server/api/console/v1/types/people.go b/pkg/server/api/console/v1/types/people.go index d90966e8a..8f77adf91 100644 --- a/pkg/server/api/console/v1/types/people.go +++ b/pkg/server/api/console/v1/types/people.go @@ -19,7 +19,11 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewPeopleConnection(p *page.Page[*coredata.People]) *PeopleConnection { +type ( + PeopleOrderBy OrderBy[coredata.PeopleOrderField] +) + +func NewPeopleConnection(p *page.Page[*coredata.People, coredata.PeopleOrderField]) *PeopleConnection { var edges = make([]*PeopleEdge, len(p.Data)) for i := range edges { @@ -32,7 +36,7 @@ func NewPeopleConnection(p *page.Page[*coredata.People]) *PeopleConnection { } } -func NewPeopleEdge(p *coredata.People, orderBy page.OrderField) *PeopleEdge { +func NewPeopleEdge(p *coredata.People, orderBy coredata.PeopleOrderField) *PeopleEdge { return &PeopleEdge{ Cursor: p.CursorKey(orderBy), Node: NewPeople(p), diff --git a/pkg/server/api/console/v1/types/policy.go b/pkg/server/api/console/v1/types/policy.go index 643f53204..3a9bff228 100644 --- a/pkg/server/api/console/v1/types/policy.go +++ b/pkg/server/api/console/v1/types/policy.go @@ -19,7 +19,11 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewPolicyConnection(page *page.Page[*coredata.Policy]) *PolicyConnection { +type ( + PolicyOrderBy OrderBy[coredata.PolicyOrderField] +) + +func NewPolicyConnection(page *page.Page[*coredata.Policy, coredata.PolicyOrderField]) *PolicyConnection { edges := make([]*PolicyEdge, len(page.Data)) for i, policy := range page.Data { edges[i] = NewPolicyEdge(policy, page.Cursor.OrderBy.Field) @@ -31,7 +35,7 @@ func NewPolicyConnection(page *page.Page[*coredata.Policy]) *PolicyConnection { } } -func NewPolicyEdge(policy *coredata.Policy, orderBy page.OrderField) *PolicyEdge { +func NewPolicyEdge(policy *coredata.Policy, orderBy coredata.PolicyOrderField) *PolicyEdge { return &PolicyEdge{ Cursor: policy.CursorKey(orderBy), Node: NewPolicy(policy), diff --git a/pkg/server/api/console/v1/types/task.go b/pkg/server/api/console/v1/types/task.go index f5311a54f..f33c59c5e 100644 --- a/pkg/server/api/console/v1/types/task.go +++ b/pkg/server/api/console/v1/types/task.go @@ -19,7 +19,11 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewTaskConnection(p *page.Page[*coredata.Task]) *TaskConnection { +type ( + TaskOrderBy OrderBy[coredata.TaskOrderField] +) + +func NewTaskConnection(p *page.Page[*coredata.Task, coredata.TaskOrderField]) *TaskConnection { var edges = make([]*TaskEdge, len(p.Data)) for i := range edges { @@ -32,7 +36,7 @@ func NewTaskConnection(p *page.Page[*coredata.Task]) *TaskConnection { } } -func NewTaskEdge(t *coredata.Task, orderBy page.OrderField) *TaskEdge { +func NewTaskEdge(t *coredata.Task, orderBy coredata.TaskOrderField) *TaskEdge { return &TaskEdge{ Cursor: t.CursorKey(orderBy), Node: NewTask(t), diff --git a/pkg/server/api/console/v1/types/types.go b/pkg/server/api/console/v1/types/types.go index d72450c60..4f1810efe 100644 --- a/pkg/server/api/console/v1/types/types.go +++ b/pkg/server/api/console/v1/types/types.go @@ -62,11 +62,6 @@ type ControlEdge struct { Node *Control `json:"node"` } -type ControlOrder struct { - Direction page.OrderDirection `json:"direction"` - Field page.GenericOrderField `json:"field"` -} - type CreateControlInput struct { FrameworkID gid.GID `json:"frameworkId"` Name string `json:"name"` @@ -223,11 +218,6 @@ type EvidenceEdge struct { Node *Evidence `json:"node"` } -type EvidenceOrder struct { - Direction page.OrderDirection `json:"direction"` - Field page.GenericOrderField `json:"field"` -} - type Framework struct { ID gid.GID `json:"id"` Version int `json:"version"` @@ -251,11 +241,6 @@ type FrameworkEdge struct { Node *Framework `json:"node"` } -type FrameworkOrder struct { - Direction page.OrderDirection `json:"direction"` - Field page.GenericOrderField `json:"field"` -} - type ImportFrameworkInput struct { OrganizationID gid.GID `json:"organizationId"` File graphql.Upload `json:"file"` @@ -365,11 +350,6 @@ type PolicyEdge struct { Node *Policy `json:"node"` } -type PolicyOrder struct { - Direction page.OrderDirection `json:"direction"` - Field page.GenericOrderField `json:"field"` -} - type Query struct { } @@ -413,11 +393,6 @@ type TaskEdge struct { Node *Task `json:"node"` } -type TaskOrder struct { - Direction page.OrderDirection `json:"direction"` - Field page.GenericOrderField `json:"field"` -} - type UnassignTaskInput struct { TaskID gid.GID `json:"taskId"` } @@ -550,11 +525,6 @@ type UserEdge struct { Node *User `json:"node"` } -type UserOrder struct { - Direction page.OrderDirection `json:"direction"` - Field UserOrderField `json:"field"` -} - type Vendor struct { ID gid.GID `json:"id"` Name string `json:"name"` @@ -632,48 +602,3 @@ func (e *OrganizationOrderField) UnmarshalGQL(v any) error { func (e OrganizationOrderField) MarshalGQL(w io.Writer) { fmt.Fprint(w, strconv.Quote(e.String())) } - -type UserOrderField string - -const ( - UserOrderFieldFullName UserOrderField = "FULL_NAME" - UserOrderFieldEmail UserOrderField = "EMAIL" - UserOrderFieldCreatedAt UserOrderField = "CREATED_AT" - UserOrderFieldUpdatedAt UserOrderField = "UPDATED_AT" -) - -var AllUserOrderField = []UserOrderField{ - UserOrderFieldFullName, - UserOrderFieldEmail, - UserOrderFieldCreatedAt, - UserOrderFieldUpdatedAt, -} - -func (e UserOrderField) IsValid() bool { - switch e { - case UserOrderFieldFullName, UserOrderFieldEmail, UserOrderFieldCreatedAt, UserOrderFieldUpdatedAt: - return true - } - return false -} - -func (e UserOrderField) String() string { - return string(e) -} - -func (e *UserOrderField) UnmarshalGQL(v any) error { - str, ok := v.(string) - if !ok { - return fmt.Errorf("enums must be strings") - } - - *e = UserOrderField(str) - if !e.IsValid() { - return fmt.Errorf("%s is not a valid UserOrderField", str) - } - return nil -} - -func (e UserOrderField) MarshalGQL(w io.Writer) { - fmt.Fprint(w, strconv.Quote(e.String())) -} diff --git a/pkg/server/api/console/v1/types/user.go b/pkg/server/api/console/v1/types/user.go index 7a288fcd0..36130a221 100644 --- a/pkg/server/api/console/v1/types/user.go +++ b/pkg/server/api/console/v1/types/user.go @@ -19,7 +19,11 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewUserConnection(p *page.Page[*coredata.User]) *UserConnection { +type ( + UserOrderBy OrderBy[coredata.UserOrderField] +) + +func NewUserConnection(p *page.Page[*coredata.User, coredata.UserOrderField]) *UserConnection { var edges = make([]*UserEdge, len(p.Data)) for i := range edges { @@ -32,7 +36,7 @@ func NewUserConnection(p *page.Page[*coredata.User]) *UserConnection { } } -func NewUserEdge(user *coredata.User, orderBy page.OrderField) *UserEdge { +func NewUserEdge(user *coredata.User, orderBy coredata.UserOrderField) *UserEdge { return &UserEdge{ Cursor: user.CursorKey(orderBy), Node: NewUser(user), diff --git a/pkg/server/api/console/v1/types/vendor.go b/pkg/server/api/console/v1/types/vendor.go index 130bec999..05b594d16 100644 --- a/pkg/server/api/console/v1/types/vendor.go +++ b/pkg/server/api/console/v1/types/vendor.go @@ -19,7 +19,11 @@ import ( "github.com/getprobo/probo/pkg/page" ) -func NewVendorConnection(p *page.Page[*coredata.Vendor]) *VendorConnection { +type ( + VendorOrderBy OrderBy[coredata.VendorOrderField] +) + +func NewVendorConnection(p *page.Page[*coredata.Vendor, coredata.VendorOrderField]) *VendorConnection { var edges = make([]*VendorEdge, len(p.Data)) for i := range edges { @@ -32,7 +36,7 @@ func NewVendorConnection(p *page.Page[*coredata.Vendor]) *VendorConnection { } } -func NewVendorEdge(v *coredata.Vendor, orderBy page.OrderField) *VendorEdge { +func NewVendorEdge(v *coredata.Vendor, orderBy coredata.VendorOrderField) *VendorEdge { return &VendorEdge{ Cursor: v.CursorKey(orderBy), Node: NewVendor(v), diff --git a/pkg/server/api/console/v1/v1_resolver.go b/pkg/server/api/console/v1/v1_resolver.go index bcab1f9cf..50f8b6f5b 100644 --- a/pkg/server/api/console/v1/v1_resolver.go +++ b/pkg/server/api/console/v1/v1_resolver.go @@ -20,9 +20,21 @@ import ( ) // Tasks is the resolver for the tasks field. -func (r *controlResolver) Tasks(ctx context.Context, obj *types.Control, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.TaskOrder) (*types.TaskConnection, error) { +func (r *controlResolver) Tasks(ctx context.Context, obj *types.Control, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.TaskOrderBy) (*types.TaskConnection, error) { svc := r.GetTenantServiceIfAuthorized(ctx, obj.ID.TenantID()) - cursor := types.NewCursor(first, after, last, before) + + pageOrderBy := page.OrderBy[coredata.TaskOrderField]{ + Field: coredata.TaskOrderFieldCreatedAt, + Direction: page.OrderDirectionDesc, + } + if orderBy != nil { + pageOrderBy = page.OrderBy[coredata.TaskOrderField]{ + Field: orderBy.Field, + Direction: orderBy.Direction, + } + } + + cursor := types.NewCursor(first, after, last, before, pageOrderBy) page, err := svc.Tasks.ListForControlID(ctx, obj.ID, cursor) if err != nil { @@ -45,9 +57,21 @@ func (r *evidenceResolver) FileURL(ctx context.Context, obj *types.Evidence) (st } // Controls is the resolver for the controls field. -func (r *frameworkResolver) Controls(ctx context.Context, obj *types.Framework, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ControlOrder) (*types.ControlConnection, error) { +func (r *frameworkResolver) Controls(ctx context.Context, obj *types.Framework, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ControlOrderBy) (*types.ControlConnection, error) { svc := r.GetTenantServiceIfAuthorized(ctx, obj.ID.TenantID()) - cursor := types.NewCursor(first, after, last, before) + + pageOrderBy := page.OrderBy[coredata.ControlOrderField]{ + Field: coredata.ControlOrderFieldCreatedAt, + Direction: page.OrderDirectionDesc, + } + if orderBy != nil { + pageOrderBy = page.OrderBy[coredata.ControlOrderField]{ + Field: orderBy.Field, + Direction: orderBy.Direction, + } + } + + cursor := types.NewCursor(first, after, last, before, pageOrderBy) page, err := svc.Controls.ListForFrameworkID(ctx, obj.ID, cursor) if err != nil { @@ -77,7 +101,7 @@ func (r *mutationResolver) CreateVendor(ctx context.Context, input types.CreateV return nil, fmt.Errorf("cannot create vendor: %w", err) } return &types.CreateVendorPayload{ - VendorEdge: types.NewVendorEdge(vendor, nil), + VendorEdge: types.NewVendorEdge(vendor, coredata.VendorOrderFieldCreatedAt), }, nil } @@ -138,7 +162,7 @@ func (r *mutationResolver) CreatePeople(ctx context.Context, input types.CreateP } return &types.CreatePeoplePayload{ - PeopleEdge: types.NewPeopleEdge(people, nil), + PeopleEdge: types.NewPeopleEdge(people, coredata.PeopleOrderFieldCreatedAt), }, nil } @@ -197,7 +221,7 @@ func (r *mutationResolver) CreateOrganization(ctx context.Context, input types.C *tenantIDs = append(*tenantIDs, organization.ID.TenantID()) return &types.CreateOrganizationPayload{ - OrganizationEdge: types.NewOrganizationEdge(organization, nil), + OrganizationEdge: types.NewOrganizationEdge(organization, coredata.OrganizationOrderFieldCreatedAt), }, nil } @@ -244,7 +268,7 @@ func (r *mutationResolver) CreateTask(ctx context.Context, input types.CreateTas } return &types.CreateTaskPayload{ - TaskEdge: types.NewTaskEdge(task, nil), + TaskEdge: types.NewTaskEdge(task, coredata.TaskOrderFieldCreatedAt), }, nil } @@ -324,7 +348,7 @@ func (r *mutationResolver) CreateFramework(ctx context.Context, input types.Crea } return &types.CreateFrameworkPayload{ - FrameworkEdge: types.NewFrameworkEdge(framework, nil), + FrameworkEdge: types.NewFrameworkEdge(framework, coredata.FrameworkOrderFieldCreatedAt), }, nil } @@ -362,7 +386,7 @@ func (r *mutationResolver) ImportFramework(ctx context.Context, input types.Impo } return &types.ImportFrameworkPayload{ - FrameworkEdge: types.NewFrameworkEdge(framework, nil), + FrameworkEdge: types.NewFrameworkEdge(framework, coredata.FrameworkOrderFieldCreatedAt), }, nil } @@ -382,7 +406,7 @@ func (r *mutationResolver) CreateControl(ctx context.Context, input types.Create } return &types.CreateControlPayload{ - ControlEdge: types.NewControlEdge(control, nil), + ControlEdge: types.NewControlEdge(control, coredata.ControlOrderFieldCreatedAt), }, nil } @@ -424,7 +448,7 @@ func (r *mutationResolver) UploadEvidence(ctx context.Context, input types.Uploa } return &types.UploadEvidencePayload{ - EvidenceEdge: types.NewEvidenceEdge(evidence, nil), + EvidenceEdge: types.NewEvidenceEdge(evidence, coredata.EvidenceOrderFieldCreatedAt), }, nil } @@ -459,7 +483,7 @@ func (r *mutationResolver) CreatePolicy(ctx context.Context, input types.CreateP } return &types.CreatePolicyPayload{ - PolicyEdge: types.NewPolicyEdge(policy, nil), + PolicyEdge: types.NewPolicyEdge(policy, coredata.PolicyOrderFieldCreatedAt), }, nil } @@ -564,8 +588,19 @@ func (r *organizationResolver) LogoURL(ctx context.Context, obj *types.Organizat } // Users is the resolver for the users field. -func (r *organizationResolver) Users(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.UserOrder) (*types.UserConnection, error) { - cursor := types.NewCursor(first, after, last, before) +func (r *organizationResolver) Users(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.UserOrderBy) (*types.UserConnection, error) { + pageOrderBy := page.OrderBy[coredata.UserOrderField]{ + Field: coredata.UserOrderFieldCreatedAt, + Direction: page.OrderDirectionDesc, + } + if orderBy != nil { + pageOrderBy = page.OrderBy[coredata.UserOrderField]{ + Field: orderBy.Field, + Direction: orderBy.Direction, + } + } + + cursor := types.NewCursor(first, after, last, before, pageOrderBy) page, err := r.usrmgrSvc.ListUsersForTenant(ctx, obj.ID, cursor) if err != nil { @@ -576,10 +611,21 @@ func (r *organizationResolver) Users(ctx context.Context, obj *types.Organizatio } // Frameworks is the resolver for the frameworks field. -func (r *organizationResolver) Frameworks(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.FrameworkOrder) (*types.FrameworkConnection, error) { +func (r *organizationResolver) Frameworks(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.FrameworkOrderBy) (*types.FrameworkConnection, error) { svc := r.GetTenantServiceIfAuthorized(ctx, obj.ID.TenantID()) - cursor := types.NewCursor(first, after, last, before) + pageOrderBy := page.OrderBy[coredata.FrameworkOrderField]{ + Field: coredata.FrameworkOrderFieldCreatedAt, + Direction: page.OrderDirectionDesc, + } + if orderBy != nil { + pageOrderBy = page.OrderBy[coredata.FrameworkOrderField]{ + Field: orderBy.Field, + Direction: orderBy.Direction, + } + } + + cursor := types.NewCursor(first, after, last, before, pageOrderBy) page, err := svc.Frameworks.ListForOrganizationID(ctx, obj.ID, cursor) if err != nil { @@ -590,10 +636,21 @@ func (r *organizationResolver) Frameworks(ctx context.Context, obj *types.Organi } // Vendors is the resolver for the vendors field. -func (r *organizationResolver) Vendors(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *page.OrderBy) (*types.VendorConnection, error) { +func (r *organizationResolver) Vendors(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.VendorOrderBy) (*types.VendorConnection, error) { svc := r.GetTenantServiceIfAuthorized(ctx, obj.ID.TenantID()) - cursor := types.NewCursorWithOrder(first, after, last, before, orderBy) + pageOrderBy := page.OrderBy[coredata.VendorOrderField]{ + Field: coredata.VendorOrderFieldCreatedAt, + Direction: page.OrderDirectionDesc, + } + if orderBy != nil { + pageOrderBy = page.OrderBy[coredata.VendorOrderField]{ + Field: orderBy.Field, + Direction: orderBy.Direction, + } + } + + cursor := types.NewCursor(first, after, last, before, pageOrderBy) page, err := svc.Vendors.ListForOrganizationID(ctx, obj.ID, cursor) if err != nil { @@ -604,10 +661,22 @@ func (r *organizationResolver) Vendors(ctx context.Context, obj *types.Organizat } // Peoples is the resolver for the peoples field. -func (r *organizationResolver) Peoples(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *page.OrderBy) (*types.PeopleConnection, error) { +func (r *organizationResolver) Peoples(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.PeopleOrderBy) (*types.PeopleConnection, error) { svc := r.GetTenantServiceIfAuthorized(ctx, obj.ID.TenantID()) - cursor := types.NewCursorWithOrder(first, after, last, before, orderBy) + pageOrderBy := page.OrderBy[coredata.PeopleOrderField]{ + Field: coredata.PeopleOrderFieldCreatedAt, + Direction: page.OrderDirectionDesc, + } + if orderBy != nil { + pageOrderBy = page.OrderBy[coredata.PeopleOrderField]{ + Field: orderBy.Field, + Direction: orderBy.Direction, + } + } + + cursor := types.NewCursor(first, after, last, before, pageOrderBy) + page, err := svc.Peoples.ListForOrganizationID(ctx, obj.ID, cursor) if err != nil { return nil, fmt.Errorf("cannot list organization peoples: %w", err) @@ -617,10 +686,21 @@ func (r *organizationResolver) Peoples(ctx context.Context, obj *types.Organizat } // Policies is the resolver for the policies field. -func (r *organizationResolver) Policies(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.PolicyOrder) (*types.PolicyConnection, error) { +func (r *organizationResolver) Policies(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.PolicyOrderBy) (*types.PolicyConnection, error) { svc := r.GetTenantServiceIfAuthorized(ctx, obj.ID.TenantID()) - cursor := types.NewCursor(first, after, last, before) + pageOrderBy := page.OrderBy[coredata.PolicyOrderField]{ + Field: coredata.PolicyOrderFieldName, + Direction: page.OrderDirectionDesc, + } + if orderBy != nil { + pageOrderBy = page.OrderBy[coredata.PolicyOrderField]{ + Field: orderBy.Field, + Direction: orderBy.Direction, + } + } + + cursor := types.NewCursor(first, after, last, before, pageOrderBy) page, err := svc.Policies.ListByOrganizationID(ctx, obj.ID, cursor) if err != nil { @@ -747,10 +827,21 @@ func (r *taskResolver) AssignedTo(ctx context.Context, obj *types.Task) (*types. } // Evidences is the resolver for the evidences field. -func (r *taskResolver) Evidences(ctx context.Context, obj *types.Task, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.EvidenceOrder) (*types.EvidenceConnection, error) { +func (r *taskResolver) Evidences(ctx context.Context, obj *types.Task, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.EvidenceOrderBy) (*types.EvidenceConnection, error) { svc := r.GetTenantServiceIfAuthorized(ctx, obj.ID.TenantID()) - cursor := types.NewCursor(first, after, last, before) + pageOrderBy := page.OrderBy[coredata.EvidenceOrderField]{ + Field: coredata.EvidenceOrderFieldCreatedAt, + Direction: page.OrderDirectionDesc, + } + if orderBy != nil { + pageOrderBy = page.OrderBy[coredata.EvidenceOrderField]{ + Field: orderBy.Field, + Direction: orderBy.Direction, + } + } + + cursor := types.NewCursor(first, after, last, before, pageOrderBy) page, err := svc.Evidences.ListForTaskID(ctx, obj.ID, cursor) if err != nil { panic(fmt.Errorf("failed to list task evidences: %w", err)) @@ -771,7 +862,7 @@ func (r *viewerResolver) Organizations(ctx context.Context, obj *types.Viewer, f var edges []*types.OrganizationEdge for _, organization := range organizations { - edges = append(edges, types.NewOrganizationEdge(organization, nil)) + edges = append(edges, types.NewOrganizationEdge(organization, coredata.OrganizationOrderFieldCreatedAt)) } // The simple implementation doesn't handle pagination yet @@ -820,23 +911,3 @@ type policyResolver struct{ *Resolver } type queryResolver struct{ *Resolver } type taskResolver struct{ *Resolver } type viewerResolver struct{ *Resolver } - -// !!! WARNING !!! -// The code below was going to be deleted when updating resolvers. It has been copied here so you have -// one last chance to move it out of harms way if you want. There are two reasons this happens: -// - When renaming or deleting a resolver the old code will be put in here. You can safely delete -// it when you're done. -// - You have helper methods in this file. Move them out to keep these resolver files clean. -/* - func (r *peopleOrderResolver) Field(ctx context.Context, obj *page.OrderBy, data page.GenericOrderField) error { - panic(fmt.Errorf("not implemented: Field - field")) -} -func (r *vendorOrderResolver) Field(ctx context.Context, obj *page.OrderBy, data page.GenericOrderField) error { - obj.Field = data - return nil -} -func (r *Resolver) PeopleOrder() schema.PeopleOrderResolver { return &peopleOrderResolver{r} } -func (r *Resolver) VendorOrder() schema.VendorOrderResolver { return &vendorOrderResolver{r} } -type peopleOrderResolver struct{ *Resolver } -type vendorOrderResolver struct{ *Resolver } -*/