public abstract class Migrator


A migrator class to translate GenericDocument from different version of AppSearchSchema

Make non-backwards-compatible changes will delete all stored documents in old schema. You can save your documents by setting Migrator via the setMigrator for each type and target version you want to save.

onDowngrade or onUpgrade will be triggered if the version number of the schema stored in AppSearch is different with the version in the request.

If any error or Exception occurred in the onDowngrade or onUpgrade, all the setSchema request will be rejected unless the schema changes are backwards-compatible, and stored documents won't have any observable changes.

Summary

Public constructors

Public methods

abstract @NonNull GenericDocument
@WorkerThread
onDowngrade(
    int currentVersion,
    int finalVersion,
    @NonNull GenericDocument document
)

Migrates GenericDocument to an older version of AppSearchSchema.

abstract @NonNull GenericDocument
@WorkerThread
onUpgrade(
    int currentVersion,
    int finalVersion,
    @NonNull GenericDocument document
)

Migrates GenericDocument to a newer version of AppSearchSchema.

abstract boolean
shouldMigrate(int currentVersion, int finalVersion)

Returns true if this migrator's source type needs to be migrated to update from currentVersion to finalVersion.

Public constructors

Migrator

Added in 1.1.0-alpha06
public Migrator()

Public methods

onDowngrade

Added in 1.1.0-alpha06
@WorkerThread
public abstract @NonNull GenericDocument onDowngrade(
    int currentVersion,
    int finalVersion,
    @NonNull GenericDocument document
)

Migrates GenericDocument to an older version of AppSearchSchema.

This method will be invoked only if the SetSchemaRequest is setting a lower version number than the current AppSearchSchema saved in AppSearch.

If this Migrator is provided to cover a compatible schema change via setSchemaAsync, documents under the old version won't be removed unless you use the same document ID.

This method will be invoked on the background worker thread.

Parameters
int currentVersion

The current version of the document's schema.

int finalVersion

The final version that documents need to be migrated to.

@NonNull GenericDocument document

The GenericDocument need to be translated to new version.

Returns
@NonNull GenericDocument

A GenericDocument in new version.

onUpgrade

Added in 1.1.0-alpha06
@WorkerThread
public abstract @NonNull GenericDocument onUpgrade(
    int currentVersion,
    int finalVersion,
    @NonNull GenericDocument document
)

Migrates GenericDocument to a newer version of AppSearchSchema.

This method will be invoked only if the SetSchemaRequest is setting a higher version number than the current AppSearchSchema saved in AppSearch.

If this Migrator is provided to cover a compatible schema change via setSchemaAsync, documents under the old version won't be removed unless you use the same document ID.

This method will be invoked on the background worker thread provided via setSchemaAsync.

Parameters
int currentVersion

The current version of the document's schema.

int finalVersion

The final version that documents need to be migrated to.

@NonNull GenericDocument document

The GenericDocument need to be translated to new version.

Returns
@NonNull GenericDocument

A GenericDocument in new version.

shouldMigrate

Added in 1.1.0-alpha06
public abstract boolean shouldMigrate(int currentVersion, int finalVersion)

Returns true if this migrator's source type needs to be migrated to update from currentVersion to finalVersion.

Migration won't be triggered if currentVersion is equal to finalVersion even if shouldMigrate return true;