Files

46 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

2026-04-17 14:55:32 -04:00
---
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 items 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 items 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<T>`) 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.