mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
Add namespaceType to SavedObjectModelTransformationContext (#168489)
## Summary Required for https://github.com/elastic/kibana/issues/161002 Add `namespaceType` to the SO migration context that is passed down to MV transformation functions --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
2df247a75b
commit
3afef435de
6 changed files with 22 additions and 33 deletions
|
@ -22,6 +22,7 @@ describe('buildModelVersionTransformFn', () => {
|
|||
const createContext = (): SavedObjectModelTransformationContext => ({
|
||||
log: loggerMock.create(),
|
||||
modelVersion: 42,
|
||||
namespaceType: 'single',
|
||||
});
|
||||
|
||||
const createDoc = <T = any>(attributes: T = {} as T): SavedObjectModelTransformationDoc<T> => ({
|
||||
|
|
|
@ -112,6 +112,7 @@ describe('convertModelVersionTransformFn', () => {
|
|||
};
|
||||
|
||||
it('generates a transform function calling the model transform', () => {
|
||||
const typeDefinition = createType({});
|
||||
const upTransform = createModelTransformFn();
|
||||
|
||||
const definition: SavedObjectsModelVersion = {
|
||||
|
@ -127,13 +128,14 @@ describe('convertModelVersionTransformFn', () => {
|
|||
log,
|
||||
modelVersion: 1,
|
||||
virtualVersion: '10.1.0',
|
||||
definition,
|
||||
modelVersionDefinition: definition,
|
||||
typeDefinition,
|
||||
});
|
||||
|
||||
expect(upTransform).not.toHaveBeenCalled();
|
||||
|
||||
const doc = createDoc();
|
||||
const context = { log, modelVersion: 1 };
|
||||
const context = { log, modelVersion: 1, namespaceType: typeDefinition.namespaceType };
|
||||
|
||||
transform(doc);
|
||||
|
||||
|
@ -142,6 +144,7 @@ describe('convertModelVersionTransformFn', () => {
|
|||
});
|
||||
|
||||
it('generates a transform function calling all model transforms of the version', () => {
|
||||
const typeDefinition = createType({});
|
||||
const upTransform1 = createModelTransformFn();
|
||||
const upTransform2 = createModelTransformFn();
|
||||
|
||||
|
@ -162,11 +165,12 @@ describe('convertModelVersionTransformFn', () => {
|
|||
log,
|
||||
modelVersion: 1,
|
||||
virtualVersion: '10.1.0',
|
||||
definition,
|
||||
typeDefinition,
|
||||
modelVersionDefinition: definition,
|
||||
});
|
||||
|
||||
const doc = createDoc();
|
||||
const context = { log, modelVersion: 1 };
|
||||
const context = { log, modelVersion: 1, namespaceType: typeDefinition.namespaceType };
|
||||
|
||||
transform(doc);
|
||||
|
||||
|
|
|
@ -61,10 +61,11 @@ export const getModelVersionTransforms = ({
|
|||
return {
|
||||
version: virtualVersion,
|
||||
transform: convertModelVersionTransformFn({
|
||||
typeDefinition,
|
||||
log,
|
||||
modelVersion,
|
||||
virtualVersion,
|
||||
definition,
|
||||
modelVersionDefinition: definition,
|
||||
}),
|
||||
transformType: TransformType.Migrate,
|
||||
};
|
||||
|
@ -72,21 +73,24 @@ export const getModelVersionTransforms = ({
|
|||
};
|
||||
|
||||
export const convertModelVersionTransformFn = ({
|
||||
typeDefinition,
|
||||
virtualVersion,
|
||||
modelVersion,
|
||||
definition,
|
||||
modelVersionDefinition,
|
||||
log,
|
||||
}: {
|
||||
typeDefinition: SavedObjectsType;
|
||||
virtualVersion: string;
|
||||
modelVersion: number;
|
||||
definition: SavedObjectsModelVersion;
|
||||
modelVersionDefinition: SavedObjectsModelVersion;
|
||||
log: Logger;
|
||||
}): TransformFn => {
|
||||
const context: SavedObjectModelTransformationContext = {
|
||||
log,
|
||||
modelVersion,
|
||||
namespaceType: typeDefinition.namespaceType,
|
||||
};
|
||||
const modelTransformFn = buildModelVersionTransformFn(definition.changes);
|
||||
const modelTransformFn = buildModelVersionTransformFn(modelVersionDefinition.changes);
|
||||
|
||||
return function convertedTransform(doc: SavedObjectUnsanitizedDoc) {
|
||||
try {
|
||||
|
|
|
@ -133,7 +133,6 @@ export type {
|
|||
SavedObjectModelTransformationDoc,
|
||||
SavedObjectModelTransformationContext,
|
||||
SavedObjectModelTransformationFn,
|
||||
SavedObjectModelBidirectionalTransformation,
|
||||
SavedObjectModelTransformationResult,
|
||||
SavedObjectModelDataBackfillFn,
|
||||
SavedObjectModelDataBackfillResult,
|
||||
|
|
|
@ -25,7 +25,6 @@ export type {
|
|||
SavedObjectModelTransformationDoc,
|
||||
SavedObjectModelTransformationContext,
|
||||
SavedObjectModelTransformationFn,
|
||||
SavedObjectModelBidirectionalTransformation,
|
||||
SavedObjectModelTransformationResult,
|
||||
SavedObjectModelDataBackfillFn,
|
||||
SavedObjectModelDataBackfillResult,
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import type { SavedObjectsNamespaceType } from '@kbn/core-saved-objects-common';
|
||||
import type { SavedObjectUnsanitizedDoc } from '../serialization';
|
||||
import type { SavedObjectsMigrationLogger } from '../migration';
|
||||
|
||||
|
@ -30,6 +31,10 @@ export interface SavedObjectModelTransformationContext {
|
|||
* The model version this migration is registered for
|
||||
*/
|
||||
readonly modelVersion: number;
|
||||
/**
|
||||
* The namespace type of the savedObject type this migration is registered for
|
||||
*/
|
||||
readonly namespaceType: SavedObjectsNamespaceType;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -57,29 +62,6 @@ export type SavedObjectModelTransformationFn<
|
|||
context: SavedObjectModelTransformationContext
|
||||
) => SavedObjectModelTransformationResult<OutputAttributes>;
|
||||
|
||||
/**
|
||||
* A bidirectional transformation.
|
||||
*
|
||||
* Bidirectional transformations define migration functions that can be used to
|
||||
* transform a document from the lower version to the higher one (`up`), and
|
||||
* the other way around, from the higher version to the lower one (`down`)
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export interface SavedObjectModelBidirectionalTransformation<
|
||||
PreviousAttributes = unknown,
|
||||
NewAttributes = unknown
|
||||
> {
|
||||
/**
|
||||
* The upward (previous=>next) transformation.
|
||||
*/
|
||||
up: SavedObjectModelTransformationFn<PreviousAttributes, NewAttributes>;
|
||||
/**
|
||||
* The downward (next=>previous) transformation.
|
||||
*/
|
||||
down: SavedObjectModelTransformationFn<NewAttributes, PreviousAttributes>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return type for the {@link SavedObjectModelTransformationFn | transformation functions}
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue