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

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

/// Document field names for [ProjectProfile] documents.
abstract final class ProjectDocumentFields {
  /// Stable storage field for `schemaVersion`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const schemaVersion = DocumentFields.schemaVersion;

  /// Stable storage field for `id`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const id = DocumentFields.id;

  /// Stable storage field for `ownerId`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const ownerId = DocumentFields.ownerId;

  /// Stable storage field for `revision`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const revision = DocumentFields.revision;

  /// Stable storage field for `createdAt`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const createdAt = DocumentFields.createdAt;

  /// Stable storage field for `updatedAt`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const updatedAt = DocumentFields.updatedAt;

  /// Stable storage field for `name`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const name = 'name';

  /// Stable storage field for `colorKey`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const colorKey = 'colorKey';

  /// Stable storage field for `defaultPriority`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const defaultPriority = 'defaultPriority';

  /// Stable storage field for `defaultReward`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const defaultReward = 'defaultReward';

  /// Stable storage field for `defaultDifficulty`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const defaultDifficulty = 'defaultDifficulty';

  /// Stable storage field for `defaultReminderProfile`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const defaultReminderProfile = 'defaultReminderProfile';

  /// Stable storage field for `defaultDurationMinutes`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const defaultDurationMinutes = 'defaultDurationMinutes';

  /// Stable storage field for `archivedAt`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const archivedAt = 'archivedAt';

  /// Stable storage field for `all`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const all = <String>{
    ...DocumentFields.common,
    name,
    colorKey,
    defaultPriority,
    defaultReward,
    defaultDifficulty,
    defaultReminderProfile,
    defaultDurationMinutes,
    archivedAt,
  };
}
