package schema

// ManifestTenant mirrors one tenant entry in a migration manifest.
type ManifestTenant struct {
	Tenant          string          `json:"tenant"`
	SourceAddr      string          `json:"sourceAddr"`
	DestinationAddr string          `json:"destinationAddr"`
	Shards          []ManifestShard `json:"shards"`
}

// ManifestShard mirrors one shard entry inside a manifest tenant.
type ManifestShard struct {
	ShardID   string `json:"shardID"`
	TimeStart string `json:"timeStart"`
	TimeEnd   string `json:"timeEnd"`
}

// Manifest is the static migration manifest consumed by migrate/verify.
type Manifest struct {
	Region       string           `json:"region,omitempty"`
	Namespace    string           `json:"namespace,omitempty"`
	Vmcluster    string           `json:"vmcluster,omitempty"`
	Tenants      []ManifestTenant `json:"tenants"`
	StepInterval string           `json:"stepInterval,omitempty"`
}
