<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/datastore/admin/v1/migration.proto

namespace Google\Cloud\Datastore\Admin\V1;

use UnexpectedValueException;

/**
 * Steps in a migration.
 *
 * Protobuf type <code>google.datastore.admin.v1.MigrationStep</code>
 */
class MigrationStep
{
    /**
     * Unspecified.
     *
     * Generated from protobuf enum <code>MIGRATION_STEP_UNSPECIFIED = 0;</code>
     */
    const MIGRATION_STEP_UNSPECIFIED = 0;
    /**
     * Pre-migration: the database is prepared for migration.
     *
     * Generated from protobuf enum <code>PREPARE = 6;</code>
     */
    const PREPARE = 6;
    /**
     * Start of migration.
     *
     * Generated from protobuf enum <code>START = 1;</code>
     */
    const START = 1;
    /**
     * Writes are applied synchronously to at least one replica.
     *
     * Generated from protobuf enum <code>APPLY_WRITES_SYNCHRONOUSLY = 7;</code>
     */
    const APPLY_WRITES_SYNCHRONOUSLY = 7;
    /**
     * Data is copied to Cloud Firestore and then verified to match the data in
     * Cloud Datastore.
     *
     * Generated from protobuf enum <code>COPY_AND_VERIFY = 2;</code>
     */
    const COPY_AND_VERIFY = 2;
    /**
     * Eventually-consistent reads are redirected to Cloud Firestore.
     *
     * Generated from protobuf enum <code>REDIRECT_EVENTUALLY_CONSISTENT_READS = 3;</code>
     */
    const REDIRECT_EVENTUALLY_CONSISTENT_READS = 3;
    /**
     * Strongly-consistent reads are redirected to Cloud Firestore.
     *
     * Generated from protobuf enum <code>REDIRECT_STRONGLY_CONSISTENT_READS = 4;</code>
     */
    const REDIRECT_STRONGLY_CONSISTENT_READS = 4;
    /**
     * Writes are redirected to Cloud Firestore.
     *
     * Generated from protobuf enum <code>REDIRECT_WRITES = 5;</code>
     */
    const REDIRECT_WRITES = 5;

    private static $valueToName = [
        self::MIGRATION_STEP_UNSPECIFIED => 'MIGRATION_STEP_UNSPECIFIED',
        self::PREPARE => 'PREPARE',
        self::START => 'START',
        self::APPLY_WRITES_SYNCHRONOUSLY => 'APPLY_WRITES_SYNCHRONOUSLY',
        self::COPY_AND_VERIFY => 'COPY_AND_VERIFY',
        self::REDIRECT_EVENTUALLY_CONSISTENT_READS => 'REDIRECT_EVENTUALLY_CONSISTENT_READS',
        self::REDIRECT_STRONGLY_CONSISTENT_READS => 'REDIRECT_STRONGLY_CONSISTENT_READS',
        self::REDIRECT_WRITES => 'REDIRECT_WRITES',
    ];

    public static function name($value)
    {
        if (!isset(self::$valueToName[$value])) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no name defined for value %s', __CLASS__, $value));
        }
        return self::$valueToName[$value];
    }


    public static function value($name)
    {
        $const = __CLASS__ . '::' . strtoupper($name);
        if (!defined($const)) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no value defined for name %s', __CLASS__, $name));
        }
        return constant($const);
    }
}

