Conversation
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughMulti-targeting and CI/release workflow were expanded. Numerous SDK model constructors switched to default literals and updated equality checks. Several parameter names changed (e.g., _object→varObject; Nodes→VarNodes). Client gained cross-version concurrency helpers. New LINQ Chunk extension added for legacy frameworks. Exceptions refined for 422/429 and parsing robustness. Tests adapted and broadened. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant App as Application
participant Client as OpenFgaClient
participant Helper as Concurrency Helpers
participant API as OpenFga API
rect rgba(230,245,255,0.5)
note over Client,Helper: Write (NET6+ or legacy path)
App->>Client: Write(request)
Client->>Helper: ProcessWriteChunksAsync(writeChunks)
par For each chunk
Helper->>API: POST /write (chunk)
API-->>Helper: Response (success/error)
end
Helper-->>Client: Per-item results
Client-->>App: Aggregated WriteResponse
end
rect rgba(235,255,235,0.5)
note over Client,Helper: BatchCheck
App->>Client: BatchCheck(requests)
Client->>Helper: ProcessCheckRequestsAsync(items)
par For each item
Helper->>API: POST /check
API-->>Helper: Result (allowed/error)
end
Helper-->>Client: Per-request results
Client-->>App: BatchCheckResponse
end
rect rgba(255,245,230,0.5)
note right of Client: On net48, 422/429 handled via (HttpStatusCode) casts
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
91f1de7 to
84599f1
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #122 +/- ##
==========================================
+ Coverage 31.69% 36.26% +4.56%
==========================================
Files 135 135
Lines 6862 5303 -1559
Branches 900 965 +65
==========================================
- Hits 2175 1923 -252
+ Misses 4499 3200 -1299
+ Partials 188 180 -8 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
84599f1 to
b16315b
Compare
4b77fe9 to
e22259d
Compare
|
@rhamzeh I'll review the changes in this PR. This looks like a significant update that adds multi-targeting support for .NET Standard 2.0 and includes breaking changes from the OpenAPI generator update. I'll analyze the code changes, breaking changes documentation, and provide feedback on the implementation. ✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Pull Request Overview
This PR introduces support for multiple .NET target frameworks and includes significant refactoring in model naming that results in some breaking changes. The SDK now officially supports multi-targeting across several frameworks: .NET Standard 2.0, .NET Framework 4.8, .NET Core 3.1, .NET 8.0, and .NET 9.0.
Key changes:
- Multi-framework support with conditional compilation for compatibility
- Model property renaming from underscore-prefixed to PascalCase (e.g.,
_UserstoVarUsers) - Updated OpenAPI generator from v6.4.0 to v7.11.0
Reviewed Changes
Copilot reviewed 140 out of 140 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
src/OpenFga.Sdk/OpenFga.Sdk.csproj |
Adds multi-targeting configuration with framework-specific dependencies |
src/OpenFga.Sdk/Client/Client.cs |
Adds framework-specific parallel processing implementations |
src/OpenFga.Sdk/Model/*.cs |
Updates model constructors and Equals methods for compatibility |
src/OpenFga.Sdk/Telemetry/Attributes.cs |
Improves path parameter access using TryGetValue |
.github/workflows/main.yaml |
Expands CI to test all target frameworks across platforms |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/OpenFga.Sdk/Model/Status.cs (1)
149-151: Fix GetHashCode to match value-based equality.Same issue as in
Any.cs:Dictionary.GetHashCode()is reference-based, butEqualsperforms value-based comparison ofAdditionalProperties. This violates theGetHashCode/Equalscontract.Apply this diff:
if (this.AdditionalProperties != null) { - hashCode = (hashCode * 9923) + this.AdditionalProperties.GetHashCode(); + foreach (var kvp in this.AdditionalProperties) { + hashCode = (hashCode * 9923) + kvp.Key.GetHashCode(); + if (kvp.Value != null) { + hashCode = (hashCode * 9923) + kvp.Value.GetHashCode(); + } + } }
🧹 Nitpick comments (7)
src/OpenFga.Sdk/Model/AuthErrorCode.cs (1)
14-22: Unused using directives in auto-generated enum.Several using directives appear unused in this enum-only file:
System.Collections.Generic,System.ComponentModel.DataAnnotations,System.Linq, andSystem.Text.Json. Since this is auto-generated code, the generator likely adds a standard set of imports uniformly. While harmless, unused imports add minor cognitive overhead.Consider updating the code generator template to conditionally emit using directives based on file content type (e.g., omit collection/LINQ imports for pure enums).
src/OpenFga.Sdk/Model/NullValue.cs (1)
14-20: Potentially unused using directives.Several of the added using directives (System.Collections.Generic, System.ComponentModel.DataAnnotations, System.Linq, System.Text.Json) don't appear to be used by the NullValue enum itself. Since this is auto-generated code, the generator may include them as a blanket policy across all model files. If the generator supports more granular using inclusion, consider adjusting it to reduce noise.
src/OpenFga.Sdk.Test/OpenFga.Sdk.Test.csproj (1)
29-34: Consider updating System.Memory and System.Threading.Tasks.Extensions to latest stable versions.All packages are free from known security vulnerabilities. System.Text.Json 6.0.10 is the patched version for CVE-2024-43485 and is secure. However, System.Memory (currently 4.5.5) and System.Threading.Tasks.Extensions (currently 4.5.4) have stable updates available (4.6.3) that are compatible with .NET Framework 4.8 and include bug fixes and improvements.
Optional updates:
- System.Memory: 4.5.5 → 4.6.3
- System.Threading.Tasks.Extensions: 4.5.4 → 4.6.3
.github/workflows/main.yaml (2)
259-276: Consider using GitHub Actions instead of curl for asset uploads.The manual curl-based upload for framework-specific ZIPs (Lines 266-272) is more fragile than using
actions/upload-release-asset. If the action doesn't support multiple uploads easily, consider a loop with the action or ensure error handling is robust.Example using the action in a loop:
- name: Upload framework-specific ZIPs run: | for framework in netstandard2.0 net48 net8.0 net9.0; do if [ -f "./release-assets/OpenFga.Sdk-${framework}.zip" ]; then echo "framework=${framework}" >> $GITHUB_OUTPUT fi done # Then use upload-release-asset with matrix or multiple stepsAlternatively, the current curl approach works but ensure the
upload_urlformat is compatible with the query parameter approach.
259-276: Framework-specific ZIPs uploaded correctly.The curl-based upload with
${{ secrets.GITHUB_TOKEN }}is secure (GitHub Actions masks secrets in logs). However, consider usingactions/upload-release-assetfor all uploads instead of mixing curl and GitHub Actions—this would provide more consistent error handling and logging.src/OpenFga.Sdk/Model/CreateStoreRequest.cs (1)
105-105: Consider defensive null check for AdditionalProperties.The updated equality logic is more thorough than the previous Except-based approach, correctly checking both key presence and value equality. However, if
input.AdditionalPropertiesis null (e.g., if modified externally after construction), this line will throwNullReferenceException.While constructors always initialize
AdditionalPropertiesto non-null, consider adding a defensive check:- && (this.AdditionalProperties.Count == input.AdditionalProperties.Count && this.AdditionalProperties.All(kv => input.AdditionalProperties.ContainsKey(kv.Key) && Equals(kv.Value, input.AdditionalProperties[kv.Key]))); + && (this.AdditionalProperties.Count == input.AdditionalProperties?.Count && this.AdditionalProperties.All(kv => input.AdditionalProperties.ContainsKey(kv.Key) && Equals(kv.Value, input.AdditionalProperties[kv.Key])));Or handle null explicitly:
- && (this.AdditionalProperties.Count == input.AdditionalProperties.Count && this.AdditionalProperties.All(kv => input.AdditionalProperties.ContainsKey(kv.Key) && Equals(kv.Value, input.AdditionalProperties[kv.Key]))); + && ((this.AdditionalProperties == null && input.AdditionalProperties == null) || (this.AdditionalProperties != null && input.AdditionalProperties != null && this.AdditionalProperties.Count == input.AdditionalProperties.Count && this.AdditionalProperties.All(kv => input.AdditionalProperties.ContainsKey(kv.Key) && Equals(kv.Value, input.AdditionalProperties[kv.Key]))));src/OpenFga.Sdk/Model/ContextualTupleKeys.cs (1)
106-106: Consider defensive null check for AdditionalProperties.The updated equality logic correctly performs per-key value comparison, which is more robust than the previous Except-based approach. However, the same concern applies here as in CreateStoreRequest.cs: if
input.AdditionalPropertiesis null, this will throwNullReferenceException.Consider adding a defensive null check as suggested in CreateStoreRequest.cs.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (107)
.editorconfig(1 hunks).github/workflows/main.yaml(3 hunks).openapi-generator-ignore(1 hunks).openapi-generator/FILES(1 hunks).openapi-generator/VERSION(1 hunks)OpenFga.Sdk.sln(1 hunks)docs/Nodes.md(1 hunks)docs/Users.md(1 hunks)src/OpenFga.Sdk.Test/Api/OpenFgaApiTests.cs(6 hunks)src/OpenFga.Sdk.Test/Client/OpenFgaClientTests.cs(23 hunks)src/OpenFga.Sdk.Test/Models/ModelTests.cs(1 hunks)src/OpenFga.Sdk.Test/OpenFga.Sdk.Test.csproj(1 hunks)src/OpenFga.Sdk/Api/OpenFgaApi.cs(1 hunks)src/OpenFga.Sdk/ApiClient/ApiClient.cs(1 hunks)src/OpenFga.Sdk/ApiClient/BaseClient.cs(1 hunks)src/OpenFga.Sdk/ApiClient/OAuth2Client.cs(1 hunks)src/OpenFga.Sdk/ApiClient/RequestBuilder.cs(1 hunks)src/OpenFga.Sdk/ApiClient/Utils.cs(1 hunks)src/OpenFga.Sdk/Client/Client.cs(4 hunks)src/OpenFga.Sdk/Client/Extensions/LinqExtensions.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientBatchCheckResponse.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientCheckRequest.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientExpandRequest.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientListObjectsRequest.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientListRelationsRequest.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientListRelationsResponse.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientListStoresRequest.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientListUsersRequest.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientReadChangesRequest.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientTupleKey.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientTupleKeyWithoutCondition.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientWriteAssertionsRequest.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientWriteRequest.cs(1 hunks)src/OpenFga.Sdk/Client/Model/ClientWriteResponse.cs(1 hunks)src/OpenFga.Sdk/Configuration/Configuration.cs(1 hunks)src/OpenFga.Sdk/Configuration/Credentials.cs(1 hunks)src/OpenFga.Sdk/Configuration/TelemetryConfig.cs(1 hunks)src/OpenFga.Sdk/Exceptions/ApiAuthenticationError.cs(1 hunks)src/OpenFga.Sdk/Exceptions/ApiError.cs(2 hunks)src/OpenFga.Sdk/Exceptions/ApiException.cs(2 hunks)src/OpenFga.Sdk/Exceptions/ApiInternalError.cs(1 hunks)src/OpenFga.Sdk/Exceptions/ApiNotFoundError.cs(1 hunks)src/OpenFga.Sdk/Exceptions/ApiValidationError.cs(1 hunks)src/OpenFga.Sdk/Exceptions/GenericError.cs(1 hunks)src/OpenFga.Sdk/Exceptions/Parsers/ApiErrorParser.cs(2 hunks)src/OpenFga.Sdk/Exceptions/Parsers/RateLimitParser.cs(1 hunks)src/OpenFga.Sdk/Exceptions/RateLimitExceededError.cs(1 hunks)src/OpenFga.Sdk/Exceptions/ValidationError.cs(1 hunks)src/OpenFga.Sdk/Model/AbortedMessageResponse.cs(3 hunks)src/OpenFga.Sdk/Model/Any.cs(4 hunks)src/OpenFga.Sdk/Model/Assertion.cs(3 hunks)src/OpenFga.Sdk/Model/AssertionTupleKey.cs(3 hunks)src/OpenFga.Sdk/Model/AuthErrorCode.cs(1 hunks)src/OpenFga.Sdk/Model/AuthorizationModel.cs(3 hunks)src/OpenFga.Sdk/Model/BatchCheckItem.cs(3 hunks)src/OpenFga.Sdk/Model/BatchCheckRequest.cs(3 hunks)src/OpenFga.Sdk/Model/BatchCheckResponse.cs(3 hunks)src/OpenFga.Sdk/Model/BatchCheckSingleResult.cs(3 hunks)src/OpenFga.Sdk/Model/CheckError.cs(3 hunks)src/OpenFga.Sdk/Model/CheckRequest.cs(3 hunks)src/OpenFga.Sdk/Model/CheckRequestTupleKey.cs(4 hunks)src/OpenFga.Sdk/Model/CheckResponse.cs(3 hunks)src/OpenFga.Sdk/Model/Computed.cs(3 hunks)src/OpenFga.Sdk/Model/Condition.cs(3 hunks)src/OpenFga.Sdk/Model/ConditionMetadata.cs(3 hunks)src/OpenFga.Sdk/Model/ConditionParamTypeRef.cs(3 hunks)src/OpenFga.Sdk/Model/ConsistencyPreference.cs(1 hunks)src/OpenFga.Sdk/Model/ContextualTupleKeys.cs(3 hunks)src/OpenFga.Sdk/Model/CreateStoreRequest.cs(3 hunks)src/OpenFga.Sdk/Model/CreateStoreResponse.cs(3 hunks)src/OpenFga.Sdk/Model/Difference.cs(3 hunks)src/OpenFga.Sdk/Model/ErrorCode.cs(1 hunks)src/OpenFga.Sdk/Model/ExpandRequest.cs(3 hunks)src/OpenFga.Sdk/Model/ExpandRequestTupleKey.cs(3 hunks)src/OpenFga.Sdk/Model/ExpandResponse.cs(3 hunks)src/OpenFga.Sdk/Model/FgaObject.cs(3 hunks)src/OpenFga.Sdk/Model/ForbiddenResponse.cs(3 hunks)src/OpenFga.Sdk/Model/GetStoreResponse.cs(3 hunks)src/OpenFga.Sdk/Model/InternalErrorCode.cs(1 hunks)src/OpenFga.Sdk/Model/InternalErrorMessageResponse.cs(3 hunks)src/OpenFga.Sdk/Model/JsonStringEnumMemberConverter.cs(2 hunks)src/OpenFga.Sdk/Model/Leaf.cs(3 hunks)src/OpenFga.Sdk/Model/ListObjectsRequest.cs(3 hunks)src/OpenFga.Sdk/Model/ListObjectsResponse.cs(3 hunks)src/OpenFga.Sdk/Model/ListStoresResponse.cs(3 hunks)src/OpenFga.Sdk/Model/ListUsersRequest.cs(3 hunks)src/OpenFga.Sdk/Model/ListUsersResponse.cs(3 hunks)src/OpenFga.Sdk/Model/Metadata.cs(3 hunks)src/OpenFga.Sdk/Model/Node.cs(3 hunks)src/OpenFga.Sdk/Model/Nodes.cs(4 hunks)src/OpenFga.Sdk/Model/NotFoundErrorCode.cs(1 hunks)src/OpenFga.Sdk/Model/NullValue.cs(1 hunks)src/OpenFga.Sdk/Model/ObjectRelation.cs(3 hunks)src/OpenFga.Sdk/Model/PathUnknownErrorMessageResponse.cs(3 hunks)src/OpenFga.Sdk/Model/ReadAssertionsResponse.cs(3 hunks)src/OpenFga.Sdk/Model/ReadAuthorizationModelResponse.cs(3 hunks)src/OpenFga.Sdk/Model/ReadAuthorizationModelsResponse.cs(3 hunks)src/OpenFga.Sdk/Model/ReadChangesResponse.cs(3 hunks)src/OpenFga.Sdk/Model/ReadRequest.cs(3 hunks)src/OpenFga.Sdk/Model/ReadRequestTupleKey.cs(3 hunks)src/OpenFga.Sdk/Model/ReadResponse.cs(3 hunks)src/OpenFga.Sdk/Model/RelationMetadata.cs(3 hunks)src/OpenFga.Sdk/Model/RelationReference.cs(3 hunks)src/OpenFga.Sdk/Model/RelationshipCondition.cs(3 hunks)src/OpenFga.Sdk/Model/SourceInfo.cs(3 hunks)src/OpenFga.Sdk/Model/Status.cs(3 hunks)src/OpenFga.Sdk/Model/Store.cs(3 hunks)
⛔ Files not processed due to max files limit (33)
- src/OpenFga.Sdk/Model/Tuple.cs
- src/OpenFga.Sdk/Model/TupleChange.cs
- src/OpenFga.Sdk/Model/TupleKey.cs
- src/OpenFga.Sdk/Model/TupleKeyWithoutCondition.cs
- src/OpenFga.Sdk/Model/TupleOperation.cs
- src/OpenFga.Sdk/Model/TupleToUserset.cs
- src/OpenFga.Sdk/Model/TypeDefinition.cs
- src/OpenFga.Sdk/Model/TypeName.cs
- src/OpenFga.Sdk/Model/TypedWildcard.cs
- src/OpenFga.Sdk/Model/UnauthenticatedResponse.cs
- src/OpenFga.Sdk/Model/UnprocessableContentErrorCode.cs
- src/OpenFga.Sdk/Model/UnprocessableContentMessageResponse.cs
- src/OpenFga.Sdk/Model/User.cs
- src/OpenFga.Sdk/Model/UserTypeFilter.cs
- src/OpenFga.Sdk/Model/Users.cs
- src/OpenFga.Sdk/Model/Userset.cs
- src/OpenFga.Sdk/Model/UsersetTree.cs
- src/OpenFga.Sdk/Model/UsersetTreeDifference.cs
- src/OpenFga.Sdk/Model/UsersetTreeTupleToUserset.cs
- src/OpenFga.Sdk/Model/UsersetUser.cs
- src/OpenFga.Sdk/Model/Usersets.cs
- src/OpenFga.Sdk/Model/ValidationErrorMessageResponse.cs
- src/OpenFga.Sdk/Model/WriteAssertionsRequest.cs
- src/OpenFga.Sdk/Model/WriteAuthorizationModelRequest.cs
- src/OpenFga.Sdk/Model/WriteAuthorizationModelResponse.cs
- src/OpenFga.Sdk/Model/WriteRequest.cs
- src/OpenFga.Sdk/Model/WriteRequestDeletes.cs
- src/OpenFga.Sdk/Model/WriteRequestWrites.cs
- src/OpenFga.Sdk/OpenFga.Sdk.csproj
- src/OpenFga.Sdk/Telemetry/Attributes.cs
- src/OpenFga.Sdk/Telemetry/Histograms.cs
- src/OpenFga.Sdk/Telemetry/Meters.cs
- src/OpenFga.Sdk/Telemetry/Metrics.cs
🧰 Additional context used
🪛 GitHub Check: Test net48 on windows-latest
src/OpenFga.Sdk/Model/AbortedMessageResponse.cs
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Any.cs
[warning] 41-41:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Assertion.cs
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
🪛 GitHub Check: Test net8.0 on macos-latest
src/OpenFga.Sdk/Model/AbortedMessageResponse.cs
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/AssertionTupleKey.cs
[warning] 43-43:
Cannot convert null literal to non-nullable reference type.
[warning] 43-43:
Cannot convert null literal to non-nullable reference type.
[warning] 43-43:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Any.cs
[warning] 41-41:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Assertion.cs
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
🪛 GitHub Check: Test net8.0 on ubuntu-latest
src/OpenFga.Sdk/Model/AbortedMessageResponse.cs
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Any.cs
[warning] 41-41:
Cannot convert null literal to non-nullable reference type.
🪛 GitHub Check: Test net8.0 on windows-latest
src/OpenFga.Sdk/Model/AbortedMessageResponse.cs
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Any.cs
[warning] 41-41:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Assertion.cs
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
🪛 GitHub Check: Test net9.0 on ubuntu-latest
src/OpenFga.Sdk/Model/AbortedMessageResponse.cs
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/AssertionTupleKey.cs
[warning] 43-43:
Cannot convert null literal to non-nullable reference type.
[warning] 43-43:
Cannot convert null literal to non-nullable reference type.
[warning] 43-43:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Any.cs
[warning] 41-41:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Assertion.cs
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
🪛 GitHub Check: Test netcoreapp3.1 on windows-latest
src/OpenFga.Sdk/Model/AbortedMessageResponse.cs
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
[warning] 42-42:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/CreateStoreResponse.cs
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Any.cs
[warning] 41-41:
Cannot convert null literal to non-nullable reference type.
src/OpenFga.Sdk/Model/Assertion.cs
[warning] 44-44:
Cannot convert null literal to non-nullable reference type.
🪛 markdownlint-cli2 (0.18.1)
docs/Users.md
7-7: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
(MD055, table-pipe-style)
7-7: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data
(MD056, table-column-count)
docs/Nodes.md
7-7: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
(MD055, table-pipe-style)
7-7: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data
(MD056, table-column-count)
evansims
left a comment
There was a problem hiding this comment.
Looks good; one minor optimization worth considering, but not a blocker.
cc453b3 to
5c9667e
Compare
5c9667e to
976506a
Compare
There was a problem hiding this comment.
CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
7448bac to
a366f29
Compare
0a92edf to
348cd3b
Compare
Description
This PR introduces support for multiple .NET target frameworks and includes significant refactoring in model naming to which results in some breaking changes.
The SDK now officially supports multi-targeting across several frameworks: .NET Standard 2.0, .NET Framework 4.8, .NET Core 3.1, .NET 8.0, and .NET 9.0.
Due to the OpenAPI generator update and standardization of property names, several model fields and enum values have been renamed.
The following properties (previously prefixed with an underscore or implicit constructor arguments) have been renamed across various model classes:
Generated from openfga/sdk-generator#622 using
What problem is being solved?
How is it being solved?
What changes are made to solve it?
References
replaces/closes: #108
closes: #106
Review Checklist
mainSummary by CodeRabbit