--- source_files: - DataPRO/Modules/TestSetups/CachedItemsList/Model/CachedItem.cs generated_at: "2026-04-16T04:52:12.109191+00:00" model: "Qwen/Qwen3-Coder-Next-FP8" schema_version: 1 sha256: "13d6de34ad0e45b6" --- # Model ## 1. Purpose This module defines the `CachedItem` class, a concrete implementation of the `ICachedItem` interface, representing metadata for an item stored in a caching layer (likely associated with test setups). It encapsulates the item’s identity (`Name`, `ObjectType`), when it was cached (`CacheTime`), and the timestamp of its last modification in the underlying database (`DBTime`). Its role is to provide a consistent, immutable snapshot of cached item state for use in UI or business logic that needs to reason about cache freshness and database synchronization. ## 2. Public Interface - **`CachedItem(string name, string objectType, DateTime cacheTime, DateTime dbTime)`** Constructor. Initializes all properties. All parameters are required and stored as read-only values (via `private set` accessors). - **`string Name { get; }`** Read-only property. The logical name of the cached item (e.g., test setup name). - **`string ObjectType { get; }`** Read-only property. A string indicating the type of object being cached (e.g., `"TestSetup"`, `"Scenario"`). - **`DateTime CacheTime { get; }`** Read-only property. The timestamp when the item was last loaded into the cache. - **`DateTime DBTime { get; }`** Read-only property. The timestamp of the item’s last modification in the database. **Special semantics**: `DateTime.MinValue` indicates the item no longer exists in the database; any other value is the actual `LastModified` time from the database. ## 3. Invariants - All properties are immutable after construction (`private set` ensures no external mutation). - `DBTime == DateTime.MinValue` is a sentinel value meaning the item is *no longer present* in the database; all other `DBTime` values represent valid database timestamps. - No validation is performed on input parameters (e.g., empty `Name` or `ObjectType` is allowed by the constructor). - `CacheTime` and `DBTime` may be equal, but `CacheTime` is not guaranteed to be ≥ `DBTime` (no ordering invariant enforced). ## 4. Dependencies - **Depends on**: - `DTS.Common.Interface.TestSetups.CachedItemsList` (specifically, the `ICachedItem` interface). - `System` (for `DateTime`). - **Depended on by**: - Any consumer of the `ICachedItem` interface (e.g., UI components, cache invalidation logic, comparison services) — inferred from the namespace `CachedItemsList.Model` and interface implementation. - Likely used by modules in `TestSetups` or `CachedItemsList` layers (not visible in this file but implied by the namespace structure). ## 5. Gotchas - **`DBTime == DateTime.MinValue` is a sentinel**, not a valid database timestamp. Misinterpreting this as a real modification time could lead to incorrect assumptions (e.g., treating it as a recent item). - The class is fully immutable, but callers must be aware that `DBTime.MinValue` carries special meaning — this is documented only in XML comments, not enforced. - No equality semantics (`Equals`, `GetHashCode`, or `IEquatable`) are defined; reference equality is used by default. - No validation on `Name` or `ObjectType` — empty strings or `null` are permitted, which may cause downstream issues if not handled. - None identified beyond the above.