// SPDX-FileCopyrightText: 2026 FocusFlow contributors
// SPDX-License-Identifier: AGPL-3.0-only

part of '../../persistence_contract.dart';

/// One field in a declarative index key.
class PersistenceIndexField {
  /// Creates a `PersistenceIndexField` instance with the values required by its invariants.
  /// Callers should pass already-normalized scheduler data because validation and defaulting belong at the model or service boundary, not in arbitrary UI code.
  const PersistenceIndexField(
    this.fieldName, {
    this.direction = PersistenceIndexDirection.ascending,
  });

  /// Stores the `fieldName` value for this object.
  /// This field is part of the explicit state that downstream scheduling, persistence, or UI code reads when composing behavior.
  final String fieldName;

  /// Stores the `direction` value for this object.
  /// This field is part of the explicit state that downstream scheduling, persistence, or UI code reads when composing behavior.
  final PersistenceIndexDirection direction;
}
