Skip to content

Add batch and cache DataLoader interfaces - #10305

Merged
michaelstaib merged 25 commits into
mainfrom
mst/generic-dataloader
Aug 28, 2026
Merged

michaelstaib merged 25 commits into
mainfrom
mst/generic-dataloader

Conversation

@michaelstaib

Copy link
Copy Markdown
Member

No description provided.

Copilot AI lite review requested due to automatic review settings August 27, 2026 17:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds “kind” marker interfaces for GreenDonut data loaders (batch vs. cache) and introduces a generic DataLoaderAttribute<T> variant, with tests to lock in the intended API surface.

Changes:

  • Add IBatchDataLoader<TKey, TValue> and ICacheDataLoader<TKey, TValue> marker interfaces in GreenDonut.Abstractions.
  • Update BatchDataLoader/StatefulBatchDataLoader and CacheDataLoader/StatefulCacheDataLoader to implement the corresponding marker interfaces.
  • Add DataLoaderAttribute<T> plus unit tests validating interface implementation and attribute property behavior.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/GreenDonut/test/GreenDonut.Tests/DataLoaderKindInterfaceTests.cs Adds tests asserting batch/cache loader base types implement the new marker interfaces.
src/GreenDonut/test/GreenDonut.Tests/DataLoaderAttributeTests.cs Adds tests for DataLoaderAttribute<T> property configuration and defaults.
src/GreenDonut/src/GreenDonut/CacheDataLoader.cs Implements ICacheDataLoader<TKey, TValue> on cache data loader base types.
src/GreenDonut/src/GreenDonut/BatchDataLoader.cs Implements IBatchDataLoader<TKey, TValue> on batch data loader base types.
src/GreenDonut/src/GreenDonut.Abstractions/ICacheDataLoader.cs Introduces cache “kind” marker interface.
src/GreenDonut/src/GreenDonut.Abstractions/IBatchDataLoader.cs Introduces batch “kind” marker interface.
src/GreenDonut/src/GreenDonut.Abstractions/Attributes/DataLoaderAttribute~1.cs Adds generic DataLoaderAttribute<T> for generator-facing metadata.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@github-actions

github-actions Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Patch coverage

93.1% of changed lines covered (1386/1488)

File Covered Changed Patch %
…/src/Types.Analyzers/Helpers/DataLoaderAttributeHelper.cs 11 14 78.6% 🔴
…/Core/src/Types.Analyzers/Models/GenericDataLoaderInfo.cs 226 269 84.0% 🟡
…/DataLoaderMultipleAttributesCodeFixProvider.cs 56 62 90.3% 🟡
…/DataLoaderMissingInterfaceImplementationAnalyzer.cs 227 247 91.9% 🟡
…/src/Types.Analyzers/DataLoaderKeyParameterCodeFixProvider.cs 53 57 93.0% 🟡
…/Core/src/Types.Analyzers/GenericDataLoaderAnalyzerHelper.cs 174 187 93.0% 🟡
…/src/Types.Analyzers/Generators/DataLoaderModuleGenerator.cs 29 31 93.5% 🟡
…/src/Types.Analyzers/DataLoaderReturnTypeCodeFixProvider.cs 64 68 94.1% 🟡
…/Core/src/Types.Analyzers/GenericDataLoaderMethodAnalyzer.cs 32 34 94.1% 🟡
…/Core/src/Types.Analyzers/DataLoaderReturnTypeAnalyzer.cs 39 41 95.1% 🟡
…/Core/src/Types.Analyzers/DataLoaderKeyParameterAnalyzer.cs 41 43 95.3% 🟡
…/Core/src/Types.Analyzers/Inspectors/DataLoaderInspector.cs 27 28 96.4% 🟡
…/GreenDonut.Abstractions/Attributes/DataLoaderAttribute~1.cs 6 6 100.0% 🟢
…/Core/src/Types.Analyzers/DataLoaderDuplicateTypeAnalyzer.cs 91 91 100.0% 🟢
…/src/Types.Analyzers/DataLoaderMultipleAttributesAnalyzer.cs 21 21 100.0% 🟢
…/src/Types.Analyzers/DataLoaderParameterModifierAnalyzer.cs 29 29 100.0% 🟢
…/DataLoaderPublicInterfaceAccessModifierAnalyzer.cs 34 34 100.0% 🟢
…/Core/src/Types.Analyzers/DataLoaderTypeAnalyzer.cs 28 28 100.0% 🟢
src/HotChocolate/Core/src/Types.Analyzers/Errors.cs 95 95 100.0% 🟢
…/src/Types.Analyzers/FileBuilders/DataLoaderFileBuilder.cs 1 1 100.0% 🟢

+2 more changed files; see the JSON below for uncovered lines.

Uncovered changed lines (JSON)
{
  "sha": "e6a1aaab9c57eaba496010c00c4bff9eb25c2a18",
  "files": [
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/Helpers/DataLoaderAttributeHelper.cs", "ranges": [[297, 297], [304, 304], [306, 306]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/Models/GenericDataLoaderInfo.cs", "ranges": [[63, 63], [75, 75], [77, 77], [79, 79], [83, 83], [93, 93], [106, 106], [108, 119], [121, 127], [129, 129], [275, 275], [278, 278], [386, 386], [389, 389], [392, 392], [395, 398], [401, 403], [406, 409]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/DataLoaderMultipleAttributesCodeFixProvider.cs", "ranges": [[34, 35], [45, 46], [66, 67]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/DataLoaderMissingInterfaceImplementationAnalyzer.cs", "ranges": [[92, 93], [100, 101], [113, 114], [122, 123], [147, 148], [227, 232], [256, 257], [264, 264], [354, 354]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/DataLoaderKeyParameterCodeFixProvider.cs", "ranges": [[18, 18], [22, 22], [59, 60]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/GenericDataLoaderAnalyzerHelper.cs", "ranges": [[22, 23], [67, 68], [128, 129], [197, 198], [255, 256], [258, 258], [277, 278]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/Generators/DataLoaderModuleGenerator.cs", "ranges": [[24, 25]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/DataLoaderReturnTypeCodeFixProvider.cs", "ranges": [[18, 18], [22, 22], [60, 61]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/GenericDataLoaderMethodAnalyzer.cs", "ranges": [[31, 32]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/DataLoaderReturnTypeAnalyzer.cs", "ranges": [[31, 32]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/DataLoaderKeyParameterAnalyzer.cs", "ranges": [[31, 32]] },
    { "path": "src/HotChocolate/Core/src/Types.Analyzers/Inspectors/DataLoaderInspector.cs", "ranges": [[44, 44]] }
  ]
}

Project coverage: 57.6% (285257/494960 lines)

@github-actions github-actions Bot added the 📚 documentation This issue is about working on our documentation. label Aug 28, 2026
@michaelstaib
michaelstaib merged commit 817f956 into main Aug 28, 2026
149 checks passed
@michaelstaib
michaelstaib deleted the mst/generic-dataloader branch August 28, 2026 21:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📚 documentation This issue is about working on our documentation. 🌶️ green donut 🌶️ hot chocolate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants