Correlations: Create paginated API (#65241)
* Add pagination params and apply to sql * Create getCorrelationsResponse that returns metadata * Set up pagination, change correlations fetch to only get source datasource correlations * Move correlations from root to pane, only fetch correlations for one datasource when initialized or datasource is changed * Fix tests * Fix remaining tests * Use functional component to handle state * Remove unneeded mocks, fix tests * Change perPage to limit * Fix Go Tests * Fix linter * Remove parameter * Account for mixed datasources * Delete unused hook * add source UID filter to API, start backing out front end hook changes * add source IDs to API, use when loading or changing datasource * Fix prettier * Mock correlations response * Get correlations for all datasources in mixed scenario * Add documentation for new parameters * Attempt to fix swagger * Fix correlations page * add swagger and openapi docs * Add mocks to failing test * Change API for consistency, remove extra hooks and unused function * Add max to limit and re-gen api docs * Move the page to the previous page if deleting all the rows on the page * Only fetch if remove does not have value * Change page to a reference hook * Fix documentation, a test and some logic thinking page could be 0
This commit is contained in:
@@ -73,11 +73,11 @@ type CorrelationConfig struct {
|
||||
Type CorrelationConfigType `json:"type" binding:"Required"`
|
||||
// Target data query
|
||||
// required:true
|
||||
// example: { "expr": "job=app" }
|
||||
// example: {"prop1":"value1","prop2":"value"}
|
||||
Target map[string]interface{} `json:"target" binding:"Required"`
|
||||
// Source data transformations
|
||||
// required:false
|
||||
// example: [{"type": "logfmt"}]
|
||||
// example: [{"type":"logfmt"}]
|
||||
Transformations Transformations `json:"transformations,omitempty"`
|
||||
}
|
||||
|
||||
@@ -107,10 +107,10 @@ type Correlation struct {
|
||||
// example: 50xhMlg9k
|
||||
UID string `json:"uid" xorm:"pk 'uid'"`
|
||||
// UID of the data source the correlation originates from
|
||||
// example:d0oxYRg4z
|
||||
// example: d0oxYRg4z
|
||||
SourceUID string `json:"sourceUID" xorm:"pk 'source_uid'"`
|
||||
// UID of the data source the correlation points to
|
||||
// example:PE1C5CBDA0504A6A3
|
||||
// example: PE1C5CBDA0504A6A3
|
||||
TargetUID *string `json:"targetUID" xorm:"target_uid"`
|
||||
// Label identifying the correlation
|
||||
// example: My Label
|
||||
@@ -122,6 +122,13 @@ type Correlation struct {
|
||||
Config CorrelationConfig `json:"config" xorm:"jsonb config"`
|
||||
}
|
||||
|
||||
type GetCorrelationsResponseBody struct {
|
||||
Correlations []Correlation `json:"correlations"`
|
||||
TotalCount int64 `json:"totalCount"`
|
||||
Page int64 `json:"page"`
|
||||
Limit int64 `json:"limit"`
|
||||
}
|
||||
|
||||
// CreateCorrelationResponse is the response struct for CreateCorrelationCommand
|
||||
// swagger:model
|
||||
type CreateCorrelationResponseBody struct {
|
||||
@@ -138,7 +145,7 @@ type CreateCorrelationCommand struct {
|
||||
OrgId int64 `json:"-"`
|
||||
SkipReadOnlyCheck bool `json:"-"`
|
||||
// Target data source UID to which the correlation is created. required if config.type = query
|
||||
// example:PE1C5CBDA0504A6A3
|
||||
// example: PE1C5CBDA0504A6A3
|
||||
TargetUID *string `json:"targetUID"`
|
||||
// Optional label identifying the correlation
|
||||
// example: My label
|
||||
@@ -193,7 +200,7 @@ type CorrelationConfigUpdateDTO struct {
|
||||
// Target type
|
||||
Type *CorrelationConfigType `json:"type"`
|
||||
// Target data query
|
||||
// example: { "expr": "job=app" }
|
||||
// example: {"prop1":"value1","prop2":"value"}
|
||||
Target *map[string]interface{} `json:"target"`
|
||||
// Source data transformations
|
||||
// example: [{"type": "logfmt"},{"type":"regex","expression":"(Superman|Batman)", "variable":"name"}]
|
||||
@@ -260,6 +267,21 @@ type GetCorrelationsBySourceUIDQuery struct {
|
||||
// GetCorrelationsQuery is the query to retrieve all correlations
|
||||
type GetCorrelationsQuery struct {
|
||||
OrgId int64 `json:"-"`
|
||||
// Limit the maximum number of correlations to return per page
|
||||
// in:query
|
||||
// required:false
|
||||
// default:100
|
||||
Limit int64 `json:"limit"`
|
||||
// Page index for starting fetching correlations
|
||||
// in:query
|
||||
// required:false
|
||||
// default:1
|
||||
Page int64 `json:"page"`
|
||||
|
||||
// Source datasource UID filter to be applied to correlations
|
||||
// in:query
|
||||
// required:false
|
||||
SourceUIDs []string `json:"sourceuid"`
|
||||
}
|
||||
|
||||
type DeleteCorrelationsBySourceUIDCommand struct {
|
||||
|
||||
Reference in New Issue
Block a user