From 567530aa65fc45ea684f6ce75d56f01e783c6f8f Mon Sep 17 00:00:00 2001 From: Doron Eli Rachman Date: Sat, 24 Oct 2026 21:56:50 +0300 Subject: [PATCH 1/2] Standardize option names: driverVersion, dapperVersion, useAsyncSuffix, useCancellationToken Old names stay as deprecated aliases; conflicting values are rejected. Co-Authored-By: Claude Sonnet 5.5 --- AGENTS.md | 12 ++-- Drivers/DbDriver.cs | 4 +- Drivers/Generators/CopyFromDeclareGen.cs | 2 +- Drivers/Generators/ExecDeclareGen.cs | 2 +- Drivers/Generators/ExecLastIdDeclareGen.cs | 2 +- Drivers/Generators/ExecRowsDeclareGen.cs | 2 +- Drivers/Generators/ManyDeclareGen.cs | 2 +- Drivers/Generators/OneDeclareGen.cs | 2 +- Drivers/MySqlConnectorDriver.cs | 2 +- Drivers/NpgsqlDriver.cs | 2 +- Drivers/SqliteDriver.cs | 2 +- PluginOptions/Options.cs | 27 ++++++--- PluginOptions/RawOptions.cs | 32 +++++++++-- docs/03_Usage.md | 12 ++-- docs/09_Examples.md | 8 +++ .../MySqlConnectorDapperExample/request.json | 2 +- .../request.message | Bin 26455 -> 26348 bytes .../request.json | 4 +- .../request.message | Bin 26489 -> 26448 bytes examples/MySqlConnectorExample/request.json | 2 +- .../MySqlConnectorExample/request.message | Bin 26439 -> 26332 bytes .../MySqlConnectorLegacyExample/request.json | 4 +- .../request.message | Bin 26473 -> 26536 bytes examples/NpgsqlDapperExample/request.json | 4 +- examples/NpgsqlDapperExample/request.message | 8 +-- .../NpgsqlDapperLegacyExample/request.json | 2 +- .../NpgsqlDapperLegacyExample/request.message | 2 +- examples/NpgsqlExample/request.json | 4 +- examples/NpgsqlExample/request.message | 9 +-- examples/NpgsqlLegacyExample/request.json | 2 +- examples/NpgsqlLegacyExample/request.message | 2 +- examples/QuickStartMySqlDalGen/request.json | 2 +- .../QuickStartMySqlDalGen/request.message | Bin 5948 -> 5841 bytes .../QuickStartPostgresDalGen/request.json | 2 +- .../QuickStartPostgresDalGen/request.message | 2 +- examples/QuickStartSqliteDalGen/request.json | 2 +- .../QuickStartSqliteDalGen/request.message | Bin 5266 -> 5159 bytes examples/SqliteDapperExample/request.json | 2 +- examples/SqliteDapperExample/request.message | Bin 11003 -> 10896 bytes .../SqliteDapperLegacyExample/request.json | 2 +- .../SqliteDapperLegacyExample/request.message | Bin 11037 -> 10930 bytes examples/SqliteExample/request.json | 2 +- examples/SqliteExample/request.message | Bin 10989 -> 10882 bytes examples/SqliteLegacyExample/request.json | 2 +- examples/SqliteLegacyExample/request.message | Bin 11021 -> 10914 bytes sqlc.ci.yaml | 8 +++ sqlc.local.generated.yaml | 8 +++ sqlc.request.generated.yaml | 8 +++ .../CodegenTests/CodegenCancellationTests.cs | 4 +- unit-tests/CodegenTests/OptionsTests.cs | 52 +++++++++++++++--- 50 files changed, 181 insertions(+), 73 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 06657d02..e87440d0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -58,7 +58,7 @@ architecture test in the same change and explain why. A driver that doesn't implement an interface fails at runtime with a wrapped `SystemException`, not at compile time. - **Drivers -> generated code**: drivers return C# source as strings / `MemberDeclarationSyntax`. Hooks return fragments (`ConnectionGenCommands`, `CommandGenCommands`, `GenCommand.WrapBlock`), never whole files. -- **Opt-in contract**: every option that is off by default (e.g. `withCancellationToken`, `useProperSingularization`) +- **Opt-in contract**: every option that is off by default (e.g. `useCancellationToken`, `useProperSingularization`) must leave generated output **byte-identical** when off. `sqlc diff` on the examples is the check. ### Code generation flow @@ -198,18 +198,20 @@ CI fails if any of the generated artifacts above is stale (`sqlc diff`, `git dif | Option | Default | Notes | |-------------------------------|----------------------------------------------------------------|-------| | `targetFramework` | `net8.0` | `netstandard2.0`, `netstandard2.1`, `net8.0`, `net9.0`, `net10.0` | -| `overrideDriverVersion` | `2.4.0` MySqlConnector, `8.0.6` Npgsql, `10.0.13` Microsoft.Data.Sqlite | constants in each driver | +| `driverVersion` | `2.4.0` MySqlConnector, `8.0.6` Npgsql, `10.0.13` Microsoft.Data.Sqlite | constants in each driver | | `generateCsproj` | `true` | | | `namespaceName` | output directory name | | | `useDapper` | `false` | | -| `overrideDapperVersion` | `2.1.66` | `DbDriver.DefaultDapperVersion` | +| `dapperVersion` | `2.1.66` | `DbDriver.DefaultDapperVersion` | | `useCentralPackageManagement` | `false` | omits `Version=` in the generated csproj | -| `withAsyncSuffix` | `true` | | -| `withCancellationToken` | `false` | must be byte-identical when off | +| `useAsyncSuffix` | `true` | | +| `useCancellationToken` | `false` | must be byte-identical when off | | `useProperSingularization` | `false` | renames models when on | | `overrides` | - | `Query:column` / `*:column`, see section 3 | | `debugRequest` | `false` | internal: dumps the request; not allowed with WASM | +**Renamed options:** `overrideDriverVersion` -> `driverVersion`, `overrideDapperVersion` -> `dapperVersion`, `withAsyncSuffix` -> `useAsyncSuffix`, `withCancellationToken` -> `useCancellationToken`. The old names are deprecated but still accepted; setting both spellings to different values is an error. + ### Annotation support | Annotation / macro | PostgreSQL | MySQL | SQLite | Implementation | |--------------------|-----------|-------|--------|----------------| diff --git a/Drivers/DbDriver.cs b/Drivers/DbDriver.cs index 5d49675a..f477f43d 100644 --- a/Drivers/DbDriver.cs +++ b/Drivers/DbDriver.cs @@ -43,7 +43,7 @@ public abstract class DbDriver public Options Options { get; } - public CancellationGen Cancellation => new(Options.WithCancellationToken); + public CancellationGen Cancellation => new(Options.UseCancellationToken); public string DefaultSchema { get; } @@ -158,7 +158,7 @@ private static Dictionary> ConstructTablesLook public virtual IDictionary GetPackageReferences() { return new Dictionary { - { "Dapper", Options.OverrideDapperVersion != string.Empty ? Options.OverrideDapperVersion : DefaultDapperVersion } + { "Dapper", Options.DapperVersion != string.Empty ? Options.DapperVersion : DefaultDapperVersion } } .MergeIf(new Dictionary { diff --git a/Drivers/Generators/CopyFromDeclareGen.cs b/Drivers/Generators/CopyFromDeclareGen.cs index a79ab029..7611ef1c 100644 --- a/Drivers/Generators/CopyFromDeclareGen.cs +++ b/Drivers/Generators/CopyFromDeclareGen.cs @@ -9,7 +9,7 @@ public class CopyFromDeclareGen(DbDriver dbDriver) public MemberDeclarationSyntax Generate(string queryTextConstant, string argInterface, Query query) { return ParseMemberDeclaration($$""" - public async Task {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}(List<{{argInterface}}> args{{dbDriver.Cancellation.TrailingMethodParameter()}}) + public async Task {{query.Name.ToMethodName(dbDriver.Options.UseAsyncSuffix)}}(List<{{argInterface}}> args{{dbDriver.Cancellation.TrailingMethodParameter()}}) { {{((ICopyFrom)dbDriver).GetCopyFromImpl(query, queryTextConstant)}} } diff --git a/Drivers/Generators/ExecDeclareGen.cs b/Drivers/Generators/ExecDeclareGen.cs index 6edcdbf5..a2adcf87 100644 --- a/Drivers/Generators/ExecDeclareGen.cs +++ b/Drivers/Generators/ExecDeclareGen.cs @@ -12,7 +12,7 @@ public MemberDeclarationSyntax Generate(string queryTextConstant, string argInte { var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params, dbDriver.Cancellation.MethodParameter()); return ParseMemberDeclaration($$""" - public async Task {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}({{parametersStr}}) + public async Task {{query.Name.ToMethodName(dbDriver.Options.UseAsyncSuffix)}}({{parametersStr}}) { {{GetMethodBody(queryTextConstant, query)}} } diff --git a/Drivers/Generators/ExecLastIdDeclareGen.cs b/Drivers/Generators/ExecLastIdDeclareGen.cs index 544f3435..ff2536a7 100644 --- a/Drivers/Generators/ExecLastIdDeclareGen.cs +++ b/Drivers/Generators/ExecLastIdDeclareGen.cs @@ -13,7 +13,7 @@ public MemberDeclarationSyntax Generate(string queryTextConstant, string argInte { var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params, dbDriver.Cancellation.MethodParameter()); return ParseMemberDeclaration($$""" - public async Task<{{dbDriver.GetIdColumnType(query)}}> {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}({{parametersStr}}) + public async Task<{{dbDriver.GetIdColumnType(query)}}> {{query.Name.ToMethodName(dbDriver.Options.UseAsyncSuffix)}}({{parametersStr}}) { {{GetMethodBody(queryTextConstant, query)}} } diff --git a/Drivers/Generators/ExecRowsDeclareGen.cs b/Drivers/Generators/ExecRowsDeclareGen.cs index ddf596b6..dcc66a92 100644 --- a/Drivers/Generators/ExecRowsDeclareGen.cs +++ b/Drivers/Generators/ExecRowsDeclareGen.cs @@ -12,7 +12,7 @@ public MemberDeclarationSyntax Generate(string queryTextConstant, string argInte { var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params, dbDriver.Cancellation.MethodParameter()); return ParseMemberDeclaration($$""" - public async Task {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}({{parametersStr}}) + public async Task {{query.Name.ToMethodName(dbDriver.Options.UseAsyncSuffix)}}({{parametersStr}}) { {{GetMethodBody(queryTextConstant, query)}} } diff --git a/Drivers/Generators/ManyDeclareGen.cs b/Drivers/Generators/ManyDeclareGen.cs index 4d667afa..5580385a 100644 --- a/Drivers/Generators/ManyDeclareGen.cs +++ b/Drivers/Generators/ManyDeclareGen.cs @@ -15,7 +15,7 @@ public MemberDeclarationSyntax Generate(string queryTextConstant, string argInte var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params, dbDriver.Cancellation.MethodParameter()); var returnType = $"Task>"; return ParseMemberDeclaration($$""" - public async {{returnType}} {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}({{parametersStr}}) + public async {{returnType}} {{query.Name.ToMethodName(dbDriver.Options.UseAsyncSuffix)}}({{parametersStr}}) { {{GetMethodBody(queryTextConstant, returnInterface, query)}} } diff --git a/Drivers/Generators/OneDeclareGen.cs b/Drivers/Generators/OneDeclareGen.cs index ce2d9599..0f18debd 100644 --- a/Drivers/Generators/OneDeclareGen.cs +++ b/Drivers/Generators/OneDeclareGen.cs @@ -15,7 +15,7 @@ public MemberDeclarationSyntax Generate(string queryTextConstant, string argInte var returnType = $"Task<{dbDriver.AddNullableSuffixIfNeeded(returnInterface, false)}>"; var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params, dbDriver.Cancellation.MethodParameter()); return ParseMemberDeclaration($$""" - public async {{returnType}} {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}({{parametersStr}}) + public async {{returnType}} {{query.Name.ToMethodName(dbDriver.Options.UseAsyncSuffix)}}({{parametersStr}}) { {{GetMethodBody(queryTextConstant, returnInterface, query)}} } diff --git a/Drivers/MySqlConnectorDriver.cs b/Drivers/MySqlConnectorDriver.cs index 18e9fcda..a5faf5e6 100644 --- a/Drivers/MySqlConnectorDriver.cs +++ b/Drivers/MySqlConnectorDriver.cs @@ -236,7 +236,7 @@ public override IDictionary GetPackageReferences() .GetPackageReferences() .Merge(new Dictionary { - { "MySqlConnector", Options.OverrideDriverVersion != string.Empty ? Options.OverrideDriverVersion : DefaultMysqlConnectorVersion } + { "MySqlConnector", Options.DriverVersion != string.Empty ? Options.DriverVersion : DefaultMysqlConnectorVersion } }) .MergeIf(new Dictionary { diff --git a/Drivers/NpgsqlDriver.cs b/Drivers/NpgsqlDriver.cs index 035bc269..5d5e9f92 100644 --- a/Drivers/NpgsqlDriver.cs +++ b/Drivers/NpgsqlDriver.cs @@ -449,7 +449,7 @@ public override IDictionary GetPackageReferences() .GetPackageReferences() .Merge(new Dictionary { - { "Npgsql", Options.OverrideDriverVersion != string.Empty ? Options.OverrideDriverVersion : DefaultNpgsqlVersion } + { "Npgsql", Options.DriverVersion != string.Empty ? Options.DriverVersion : DefaultNpgsqlVersion } }); } diff --git a/Drivers/SqliteDriver.cs b/Drivers/SqliteDriver.cs index ba46984f..b0b43f45 100644 --- a/Drivers/SqliteDriver.cs +++ b/Drivers/SqliteDriver.cs @@ -161,7 +161,7 @@ public override IDictionary GetPackageReferences() .GetPackageReferences() .Merge(new Dictionary { - { "Microsoft.Data.Sqlite", Options.OverrideDriverVersion != string.Empty ? Options.OverrideDriverVersion : DefaultSqliteVersion } + { "Microsoft.Data.Sqlite", Options.DriverVersion != string.Empty ? Options.DriverVersion : DefaultSqliteVersion } }); } diff --git a/PluginOptions/Options.cs b/PluginOptions/Options.cs index d59ed5db..ed20ef3f 100644 --- a/PluginOptions/Options.cs +++ b/PluginOptions/Options.cs @@ -16,15 +16,15 @@ public Options(GenerateRequest generateRequest) var rawOptions = JsonSerializer.Deserialize(text) ?? throw new InvalidOperationException(); DriverName = EngineToDriverMapping[generateRequest.Settings.Engine]; - OverrideDriverVersion = rawOptions.OverrideDriverVersion; + DriverVersion = Resolve(rawOptions.DriverVersion, rawOptions.OverrideDriverVersion, "driverVersion", "overrideDriverVersion") ?? string.Empty; GenerateCsproj = rawOptions.GenerateCsproj; UseDapper = rawOptions.UseDapper; - OverrideDapperVersion = rawOptions.OverrideDapperVersion; + DapperVersion = Resolve(rawOptions.DapperVersion, rawOptions.OverrideDapperVersion, "dapperVersion", "overrideDapperVersion") ?? string.Empty; NamespaceName = rawOptions.NamespaceName; DotnetFramework = DotnetFrameworkExtensions.ParseName(rawOptions.TargetFramework); Overrides = rawOptions.Overrides ?? []; - WithAsyncSuffix = rawOptions.WithAsyncSuffix; - WithCancellationToken = rawOptions.WithCancellationToken; + UseAsyncSuffix = Resolve(rawOptions.UseAsyncSuffix, rawOptions.WithAsyncSuffix, "useAsyncSuffix", "withAsyncSuffix") ?? true; + UseCancellationToken = Resolve(rawOptions.UseCancellationToken, rawOptions.WithCancellationToken, "useCancellationToken", "withCancellationToken") ?? false; UseCentralPackageManagement = rawOptions.UseCentralPackageManagement; UseProperSingularization = rawOptions.UseProperSingularization; @@ -35,7 +35,7 @@ public Options(GenerateRequest generateRequest) public DriverName DriverName { get; } - public string OverrideDriverVersion { get; } + public string DriverVersion { get; } public DotnetFramework DotnetFramework { get; } @@ -43,7 +43,7 @@ public Options(GenerateRequest generateRequest) public bool UseDapper { get; } - public string OverrideDapperVersion { get; } + public string DapperVersion { get; } public string NamespaceName { get; } @@ -57,12 +57,12 @@ public Options(GenerateRequest generateRequest) /// public bool UseCentralPackageManagement { get; } - public bool WithAsyncSuffix { get; } + public bool UseAsyncSuffix { get; } /// /// When true, generated methods take an optional CancellationToken threaded into every async DB call. /// - public bool WithCancellationToken { get; } + public bool UseCancellationToken { get; } /// /// When true, model names are singularized with English grammar rules (policies -> Policy, @@ -79,6 +79,17 @@ public Options(GenerateRequest generateRequest) { "sqlite", DriverName.Sqlite } }; + /// + /// Resolves an option that was renamed: the new name wins, the deprecated name is still honored, + /// and setting both to different values is rejected. + /// + private static T? Resolve(T? current, T? deprecated, string currentName, string deprecatedName) + { + if (current is not null && deprecated is not null && !EqualityComparer.Default.Equals(current, deprecated)) + throw new ArgumentException($"Options '{currentName}' and '{deprecatedName}' (deprecated) are both set with different values"); + return current ?? deprecated; + } + private static bool NoOptionsProvided(string optionsText) { return optionsText.Trim() == string.Empty; diff --git a/PluginOptions/RawOptions.cs b/PluginOptions/RawOptions.cs index bcd1be26..ff1709ae 100644 --- a/PluginOptions/RawOptions.cs +++ b/PluginOptions/RawOptions.cs @@ -5,8 +5,14 @@ namespace SqlcGenCsharp; public record RawOptions { + [JsonPropertyName("driverVersion")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? DriverVersion { get; init; } + + /// Deprecated alias of . [JsonPropertyName("overrideDriverVersion")] - public string OverrideDriverVersion { get; init; } = string.Empty; + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? OverrideDriverVersion { get; init; } [JsonPropertyName("generateCsproj")] public bool GenerateCsproj { get; init; } = true; @@ -20,8 +26,14 @@ public record RawOptions [JsonPropertyName("useDapper")] public bool UseDapper { get; init; } + [JsonPropertyName("dapperVersion")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? DapperVersion { get; init; } + + /// Deprecated alias of . [JsonPropertyName("overrideDapperVersion")] - public string OverrideDapperVersion { get; init; } = string.Empty; + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? OverrideDapperVersion { get; init; } [JsonPropertyName("overrides")] public List? Overrides { get; init; } @@ -32,11 +44,23 @@ public record RawOptions [JsonPropertyName("useCentralPackageManagement")] public bool UseCentralPackageManagement { get; init; } + [JsonPropertyName("useAsyncSuffix")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public bool? UseAsyncSuffix { get; init; } + + /// Deprecated alias of . [JsonPropertyName("withAsyncSuffix")] - public bool WithAsyncSuffix { get; init; } = true; + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public bool? WithAsyncSuffix { get; init; } + + [JsonPropertyName("useCancellationToken")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public bool? UseCancellationToken { get; init; } + /// Deprecated alias of . [JsonPropertyName("withCancellationToken")] - public bool WithCancellationToken { get; init; } + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public bool? WithCancellationToken { get; init; } [JsonPropertyName("useProperSingularization")] public bool UseProperSingularization { get; init; } diff --git a/docs/03_Usage.md b/docs/03_Usage.md index 82f5a472..f6fb55a0 100644 --- a/docs/03_Usage.md +++ b/docs/03_Usage.md @@ -3,17 +3,19 @@ | Option | Possible values | Optional | Info | |-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| overrideDriverVersion | default:
`2.4.0` for MySqlConnector (mysql)
`8.0.6` for Npgsql (postgresql)
`10.0.13` for Microsoft.Data.Sqlite (sqlite)

values: The desired driver version | Yes | Allows you to override the version of DB driver to be used. | +| driverVersion | default:
`2.4.0` for MySqlConnector (mysql)
`8.0.6` for Npgsql (postgresql)
`10.0.13` for Microsoft.Data.Sqlite (sqlite)

values: The desired driver version | Yes | Allows you to override the version of DB driver to be used. | | targetFramework | default: `net8.0`
values: `netstandard2.0`, `netstandard2.1`, `net8.0`, `net9.0`, `net10.0` | Yes | Determines the target framework for your generated code, meaning the generated code will be compiled to the specified runtime.
For more information and help deciding on the right value, refer to the [Microsoft .NET Standard documentation](https://learn.microsoft.com/en-us/dotnet/standard/net-standard?tabs=net-standard-1-0). | | generateCsproj | default: `true`
values: `false`,`true` | Yes | Assists you with the integration of SQLC and csharp by generating a `.csproj` file. This converts the generated output to a .dll, a project that you can easily incorporate into your build process. | | namespaceName | default: the generated project name | Yes | Allows you to override the namespace name to be different than the project name | | useDapper | default: `false`
values: `false`,`true` | Yes | Enables Dapper as a thin wrapper for the generated code. For more information, please refer to the [Dapper documentation](https://github.com/DapperLib/Dapper). | -| overrideDapperVersion | default:
`2.1.66`
values: The desired Dapper version | Yes | If `useDapper` is set to `true`, this option allows you to override the version of Dapper to be used. | +| dapperVersion | default:
`2.1.66`
values: The desired Dapper version | Yes | If `useDapper` is set to `true`, this option allows you to override the version of Dapper to be used. | | Override | values: A nested override value like [this](#override-option). | Yes | Allows you to override the generated C# data types for specific columns in specific queries. This option accepts a `query_name:column_name` mapping and the overriden data type. | | | useCentralPackageManagement | default: `false`
values: `false`,`true` | Yes | If true, the code is generated to support central package management. | | useProperSingularization | default: `false`
values: `false`,`true` | Yes | When true, model names are singularized using English grammar rules (`policies` -> `Policy`, `statuses` -> `Status`). Defaults to the legacy behavior of trimming trailing `s` characters, which mangles some names (`policies` -> `Policie`). Opt-in because enabling it renames existing generated classes. | -| withAsyncSuffix | default: `true`
values: `false`,`true` | Yes | When true, async methods will have the "Async" suffix appended to their names (e.g., `GetAuthorAsync`). When false, async methods will not have the suffix (e.g., `GetAuthor`). | -| withCancellationToken | default: `false`
values: `false`,`true` | Yes | When true, every generated method takes an optional trailing `CancellationToken cancellationToken = default`, threaded into every async DB call so in-flight queries can be cancelled. See [Cancellation](#cancellation). When false (default), generated output is unchanged. | +| useAsyncSuffix | default: `true`
values: `false`,`true` | Yes | When true, async methods will have the "Async" suffix appended to their names (e.g., `GetAuthorAsync`). When false, async methods will not have the suffix (e.g., `GetAuthor`). | +| useCancellationToken | default: `false`
values: `false`,`true` | Yes | When true, every generated method takes an optional trailing `CancellationToken cancellationToken = default`, threaded into every async DB call so in-flight queries can be cancelled. See [Cancellation](#cancellation). When false (default), generated output is unchanged. | + +**Renamed options:** `overrideDriverVersion` -> `driverVersion`, `overrideDapperVersion` -> `dapperVersion`, `withAsyncSuffix` -> `useAsyncSuffix`, `withCancellationToken` -> `useCancellationToken`. The old names are deprecated but still accepted; setting both spellings to different values is an error. ### Target framework `targetFramework` sets the framework of the generated `.csproj`, and is independent of the .NET version the plugin itself runs on. @@ -133,7 +135,7 @@ public async Task ExampleTransaction(IDbConnection connection) More info can be found in [here](https://docs.sqlc.dev/en/stable/howto/transactions.html). ### Cancellation -Set `withCancellationToken: true` to make every generated method accept an optional +Set `useCancellationToken: true` to make every generated method accept an optional `CancellationToken`. The token is threaded into every async database call, so a cancelled token interrupts the in-flight query and releases the locks that statement holds. The option is off by default; when off, generated output is identical to before. diff --git a/docs/09_Examples.md b/docs/09_Examples.md index 66145071..700f5368 100644 --- a/docs/09_Examples.md +++ b/docs/09_Examples.md @@ -39,6 +39,9 @@ ### [Schema](examples/config/postgresql/authors/schema.sql) | [Queries](examples/config/postgresql/authors/query.sql) | [End2End Test](end2end/EndToEndTests/NpgsqlTester.cs) ### Config ```yaml +driverVersion: 8.0.6 +useAsyncSuffix: true +useCancellationToken: false useDapper: false targetFramework: net8.0 generateCsproj: true @@ -91,6 +94,7 @@ overrides: ### [Schema](examples/config/postgresql/authors/schema.sql) | [Queries](examples/config/postgresql/authors/query.sql) | [End2End Test](end2end/EndToEndTests/NpgsqlDapperTester.cs) ### Config ```yaml +dapperVersion: 2.1.66 useDapper: true targetFramework: net10.0 generateCsproj: true @@ -319,6 +323,9 @@ overrides: ### [Schema](examples/config/mysql/authors/schema.sql) | [Queries](examples/config/mysql/authors/query.sql) | [End2End Test](end2end/EndToEndTestsLegacy/MySqlConnectorTester.cs) ### Config ```yaml +overrideDriverVersion: 2.4.0 +withAsyncSuffix: true +withCancellationToken: false useDapper: false targetFramework: netstandard2.0 generateCsproj: true @@ -355,6 +362,7 @@ overrides: ### [Schema](examples/config/mysql/authors/schema.sql) | [Queries](examples/config/mysql/authors/query.sql) | [End2End Test](end2end/EndToEndTestsLegacy/MySqlConnectorDapperTester.cs) ### Config ```yaml +overrideDapperVersion: 2.1.66 useDapper: true targetFramework: netstandard2.0 generateCsproj: true diff --git a/examples/MySqlConnectorDapperExample/request.json b/examples/MySqlConnectorDapperExample/request.json index 63d0c1fa..6bb41767 100644 --- a/examples/MySqlConnectorDapperExample/request.json +++ b/examples/MySqlConnectorDapperExample/request.json @@ -3807,5 +3807,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik15U3FsQ29ubmVjdG9yRGFwcGVyRXhhbXBsZUdlbiIsInVzZURhcHBlciI6dHJ1ZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfaW50IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWUsIndpdGhDYW5jZWxsYXRpb25Ub2tlbiI6ZmFsc2UsInVzZVByb3BlclNpbmd1bGFyaXphdGlvbiI6ZmFsc2V9" + "plugin_options": "eyJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik15U3FsQ29ubmVjdG9yRGFwcGVyRXhhbXBsZUdlbiIsInVzZURhcHBlciI6dHJ1ZSwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfaW50IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ1c2VQcm9wZXJTaW5ndWxhcml6YXRpb24iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/MySqlConnectorDapperExample/request.message b/examples/MySqlConnectorDapperExample/request.message index 7a8fd3be989600d8979bff5ff7b6938e50c53958..dbf144304fbba581d089df0211ddce2120c16838 100644 GIT binary patch delta 34 qcmcb9j`7V|#toh+%nMnoC#R>>O!i>3nmi$ueY1V)VaCbk=?VY`v<=Mw delta 116 zcmaEJmht*I#toh+ay@L-O8I4}MMaq@sV+sCKvr04QE_H|o|2W4lFnqGlo~;o#DW48 z;m!L}_?UFcGfOfYi!1YzgGHvDBRxYs qGqcT}j3UX*7g(z&{u7@(DWw@IJlT`cbuxb%`{u;d!;F(7(-i<#eI2?0 delta 137 zcmca`j`8O?Mt-iRY+Q^+Lae!!#f3Ri8WR)cCh9gbZkxE#jOiuI#FyEVbyBT1uV*}; zBsYt#S}DIQwWugFCDo-U6UYinEh^5;&r`BeQqq~+m@;d#Vk$qAPI+cYhGTJMUUG10 mT3Tj>l2u7jX{wGANZ2_sFF7?QC$R*mDhv`LC7&0ISyvDgXcg delta 114 zcmdlKIyY>?5;eK+9MwwsWvN9)nJK9*MVUZWSZYymW`3TMm6DRq#1t`Ls z<<*Osb;>hKG8~I5^OA#0)6z04l&ngMN>g=|K*G+6dC93cIf*4eb3*d7Q}ZTwYH0!h DylN`1 diff --git a/examples/SqliteExample/request.json b/examples/SqliteExample/request.json index 8af2e56e..68027b28 100644 --- a/examples/SqliteExample/request.json +++ b/examples/SqliteExample/request.json @@ -1463,5 +1463,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0MTAuMCIsIm5hbWVzcGFjZU5hbWUiOiJTcWxpdGVFeGFtcGxlR2VuIiwidXNlRGFwcGVyIjpmYWxzZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9yZWFsIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImRlY2ltYWwiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfYm9vbF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJib29sIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWUsIndpdGhDYW5jZWxsYXRpb25Ub2tlbiI6ZmFsc2UsInVzZVByb3BlclNpbmd1bGFyaXphdGlvbiI6ZmFsc2V9" + "plugin_options": "eyJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0MTAuMCIsIm5hbWVzcGFjZU5hbWUiOiJTcWxpdGVFeGFtcGxlR2VuIiwidXNlRGFwcGVyIjpmYWxzZSwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9yZWFsIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImRlY2ltYWwiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfYm9vbF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJib29sIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ1c2VQcm9wZXJTaW5ndWxhcml6YXRpb24iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/SqliteExample/request.message b/examples/SqliteExample/request.message index 14261e634e2321e9bf433766fd310d6e75b3804e..d7826220038a851a2f6be25474dbd4139f9e259a 100644 GIT binary patch delta 31 ncmaDG+7!B>O^x{%d-cTk;*)o)MNT$k^x9mhF3&vqtd;@*-5(5x delta 116 zcmZn)eH*%=O-=SGN3~LZS!z*HW=g6{Q6`WTmReMtnV+X*rKB|Roy6n?YLS92i3J5H z5}V(v6*KFUXO?6*7FXsa2bZR$WmYIzl@yhx>L`JPofGqtQ*&|>OMoVY new Options(CreateRequest("sqlite", json))); + } + + [TestCase("""{"driverVersion": "1.0", "overrideDriverVersion": "2.0"}""")] + [TestCase("""{"dapperVersion": "1.0", "overrideDapperVersion": "2.0"}""")] + [TestCase("""{"useAsyncSuffix": true, "withAsyncSuffix": false}""")] + [TestCase("""{"useCancellationToken": true, "withCancellationToken": false}""")] + public void TestRenamedAndDeprecatedOptionsWithDifferentValuesThrow(string json) + { + Assert.Throws(() => new Options(CreateRequest("sqlite", json))); + } + [Test] public void TestUnknownTargetFrameworkThrows() { From 036b029e3773c3189ac811c81caee340eb3d57d1 Mon Sep 17 00:00:00 2001 From: Doron Eli Rachman Date: Sat, 24 Oct 2026 22:11:12 +0300 Subject: [PATCH 2/2] Regenerate unit-test requests with the current plugin build Co-Authored-By: Claude Sonnet 5.5 --- .../CodegenTests/test-requests/DefaultSchemaEnum/request.json | 2 +- .../test-requests/DefaultSchemaEnum/request.message | 2 +- .../CodegenTests/test-requests/SchemaScopedEnum/request.json | 2 +- .../CodegenTests/test-requests/SchemaScopedEnum/request.message | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.json b/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.json index c2294305..d029e213 100644 --- a/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.json +++ b/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.json @@ -101,5 +101,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlLCJ1c2VQcm9wZXJTaW5ndWxhcml6YXRpb24iOmZhbHNlfQ==" + "plugin_options": "eyJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwidXNlQXN5bmNFbnVtZXJhYmxlIjpmYWxzZSwidXNlUHJvcGVyU2luZ3VsYXJpemF0aW9uIjpmYWxzZX0=" } \ No newline at end of file diff --git a/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.message b/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.message index 00692b02..f4cbce8b 100644 --- a/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.message +++ b/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.message @@ -10,4 +10,4 @@ dummy_column0R  dummy_tablebdummy_table_dummy_columnz dummy_column: query.sqlЗ 1INSERT INTO dummy_table (dummy_column) VALUES (?) TestInsert:exec*UQ - dummy_column0Rpublic dummy_tablebdummy_table_dummy_columnz dummy_column: query.sqlB  dummy_table"v1.30.0*­{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrideDapperVersion":"","overrides":null,"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false,"useProperSingularization":false} \ No newline at end of file + dummy_column0Rpublic dummy_tablebdummy_table_dummy_columnz dummy_column: query.sqlB  dummy_table"v1.30.0*н{"generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrides":null,"debugRequest":false,"useCentralPackageManagement":false,"useAsyncEnumerable":false,"useProperSingularization":false} \ No newline at end of file diff --git a/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.json b/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.json index d04d712a..1c6a7ba8 100644 --- a/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.json +++ b/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.json @@ -81,5 +81,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlLCJ1c2VQcm9wZXJTaW5ndWxhcml6YXRpb24iOmZhbHNlfQ==" + "plugin_options": "eyJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwidXNlQXN5bmNFbnVtZXJhYmxlIjpmYWxzZSwidXNlUHJvcGVyU2luZ3VsYXJpemF0aW9uIjpmYWxzZX0=" } \ No newline at end of file diff --git a/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.message b/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.message index eac8e338..4a6f3665 100644 --- a/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.message +++ b/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.message @@ -7,4 +7,4 @@  dummy_schema dummy_tableI dummy_column0R dummy_schema dummy_tablebdummy_table_dummy_columnЋ 9SELECT dummy_column FROM dummy_schema.dummy_table LIMIT 1Test:one"W - dummy_column0R dummy_schema dummy_tablebdummy_table_dummy_columnz dummy_column: query.sql"v1.30.0*­{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrideDapperVersion":"","overrides":null,"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false,"useProperSingularization":false} \ No newline at end of file + dummy_column0R dummy_schema dummy_tablebdummy_table_dummy_columnz dummy_column: query.sql"v1.30.0*н{"generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrides":null,"debugRequest":false,"useCentralPackageManagement":false,"useAsyncEnumerable":false,"useProperSingularization":false} \ No newline at end of file