From e59c84cb5d2de84c6ff695f5deb7746ed5f46a5d Mon Sep 17 00:00:00 2001 From: Doron Eli Rachman Date: Sat, 24 Oct 2026 09:57:56 +0300 Subject: [PATCH 1/5] feat: upgrade plugin to .NET 10 and support net9.0 / net10.0 generated code Plugin - All plugin, test, docs and benchmark projects now target net10.0; global.json pins the .NET 10 SDK. - The WASM plugin is still built as a wasip1 core module: the .NET 10 WASI SDK hardcodes wasip2 and links a component-model world, which sqlc (wazero) rejects with "invalid version header". WasmRunner.csproj overrides the compile/link steps, and roots PluginOptions so the trimmer keeps RawOptions' constructor (System.Text.Json). - WASI SDK bumped 22 -> 25 in the build workflow. Generated code - targetFramework accepts net9.0 and net10.0 (default stays net8.0, so existing projects do not change). - Unsupported values now fail with a message listing the supported ones. - The core examples in sqlc.ci.yaml are spread over net8.0 / net9.0 / net10.0 so every framework is built and tested end-to-end. CI / docs - Workflows take the SDK from global.json (unit-tests job gained a setup-dotnet step); the Windows .NET Framework job stays on the .NET 8 SDK. - Docs and AGENTS.md updated: stale driver/Dapper default versions, make targets, prerequisites, a target-framework section, and why the WASM plugin targets wasip1. README regenerated. - Ignore sqlc's plugin cache (/plugins/). Co-Authored-By: Claude Sonnet 5.5 --- .env | 4 +- .github/workflows/benchmark.yml | 15 ++--- .github/workflows/build.yml | 6 +- .github/workflows/docs.yml | 3 +- .github/workflows/legacy-tests.yml | 9 ++- .github/workflows/tests.yml | 8 ++- .gitignore | 4 +- AGENTS.md | 35 +++++++---- CodeGenerator/CodeGenerator.csproj | 2 +- Drivers/Drivers.csproj | 2 +- Extensions/Extensions.csproj | 2 +- GeneratedProtobuf/GeneratedProtobuf.csproj | 2 +- LocalRunner/LocalRunner.csproj | 2 +- PluginOptions/DotnetFramework.cs | 15 +++-- PluginOptions/PluginOptions.csproj | 2 +- README.md | 56 +++++++++++++----- SqlcGenCsharp/SqlcGenCsharp.csproj | 2 +- WasmRunner/WasmRunner.csproj | 29 ++++++++- .../BenchmarkRunner/BenchmarkRunner.csproj | 2 +- .../MysqlEFCoreImpl/MysqlEFCoreImpl.csproj | 2 +- benchmark/MysqlSqlcImpl/MysqlSqlcImpl.csproj | 2 +- .../PostgresqlEFCoreImpl.csproj | 2 +- .../PostgresqlSqlcImpl.csproj | 2 +- .../SqliteEFCoreImpl/SqliteEFCoreImpl.csproj | 2 +- .../SqliteSqlcImpl/SqliteSqlcImpl.csproj | 2 +- docs/03_Usage.md | 17 +++++- docs/08_Contributing.md | 31 +++++++--- docs/09_Examples.md | 8 +-- docs/ExamplesDocGen/ExampleDocGen.csproj | 2 +- .../EndToEndScaffold/EndToEndScaffold.csproj | 2 +- end2end/EndToEndTests/EndToEndTests.csproj | 2 +- .../MySqlConnectorExample.csproj | 2 +- examples/MySqlConnectorExample/request.json | 4 +- .../MySqlConnectorExample/request.message | Bin 26439 -> 26439 bytes .../NpgsqlDapperExample.csproj | 2 +- examples/NpgsqlDapperExample/request.json | 4 +- examples/NpgsqlDapperExample/request.message | 8 +-- .../SqliteDapperExample.csproj | 2 +- examples/SqliteDapperExample/request.json | 4 +- examples/SqliteDapperExample/request.message | Bin 11003 -> 11003 bytes examples/SqliteExample/SqliteExample.csproj | 2 +- examples/SqliteExample/request.json | 4 +- examples/SqliteExample/request.message | Bin 10987 -> 10989 bytes global.json | 3 +- sqlc.ci.yaml | 8 +-- sqlc.local.generated.yaml | 8 +-- sqlc.request.generated.yaml | 8 +-- unit-tests/CodegenTests/CodegenCsprojTests.cs | 37 ++++++++++++ unit-tests/CodegenTests/CodegenTests.csproj | 2 +- .../RepositoryTests/RepositoryTests.csproj | 2 +- 50 files changed, 259 insertions(+), 115 deletions(-) diff --git a/.env b/.env index bb0ac6cc..e8c9f7b9 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ -SOURCE_WASM_FILE_UBUNTU="WasmRunner/obj/release/net8.0/wasi-wasm/wasm/for-publish/WasmRunner.wasm" -SOURCE_WASM_FILE="WasmRunner/bin/Release/net8.0/wasi-wasm/AppBundle/WasmRunner.wasm" +SOURCE_WASM_FILE_UBUNTU="WasmRunner/obj/release/net10.0/wasi-wasm/wasm/for-publish/WasmRunner.wasm" +SOURCE_WASM_FILE="WasmRunner/obj/release/net10.0/wasi-wasm/wasm/for-publish/WasmRunner.wasm" SQLITE_CONNECTION_STRING="Data Source=tests.db;Mode=ReadWrite" MYSQL_CONNECTION_STRING="server=localhost;database=tests;user=root;AllowLoadLocalInfile=true;ConvertZeroDateTime=True" diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 191346a6..3e2a65ce 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -7,9 +7,6 @@ permissions: contents: write pull-requests: write -env: - DOTNET_VERSION: '8.0.x' - on: release: types: [ published ] @@ -29,7 +26,7 @@ jobs: - name: Set up .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: ${{ env.DOTNET_VERSION }} + global-json-file: global.json - name: Load .env file uses: xom9ikk/dotenv@v2.3.0 @@ -65,7 +62,7 @@ jobs: - name: Set up .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: ${{ env.DOTNET_VERSION }} + global-json-file: global.json - name: Load .env file uses: xom9ikk/dotenv@v2.3.0 @@ -101,7 +98,7 @@ jobs: - name: Set up .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: ${{ env.DOTNET_VERSION }} + global-json-file: global.json - name: Load .env file uses: xom9ikk/dotenv@v2.3.0 @@ -137,7 +134,7 @@ jobs: - name: Set up .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: ${{ env.DOTNET_VERSION }} + global-json-file: global.json - name: Load .env file uses: xom9ikk/dotenv@v2.3.0 @@ -173,7 +170,7 @@ jobs: - name: Set up .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: ${{ env.DOTNET_VERSION }} + global-json-file: global.json - name: Load .env file uses: xom9ikk/dotenv@v2.3.0 @@ -204,7 +201,7 @@ jobs: - name: Set up .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: ${{ env.DOTNET_VERSION }} + global-json-file: global.json - name: Load .env file uses: xom9ikk/dotenv@v2.3.0 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9657ffd0..76bcabb1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,7 @@ defaults: env: SQLC_VERSION: 1.30.0 - WASI_SDK_VERSION: 22 + WASI_SDK_VERSION: 25 on: push: @@ -40,8 +40,8 @@ jobs: - name: Setup Derived Variables run: | - echo "WASI_SDK_FOLDER_NAME=wasi-sdk-${{ env.WASI_SDK_VERSION }}.0" >> $GITHUB_ENV - echo "WASI_SDK_FILENAME=wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-linux.tar.gz" >> $GITHUB_ENV + echo "WASI_SDK_FOLDER_NAME=wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-linux" >> $GITHUB_ENV + echo "WASI_SDK_FILENAME=wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-linux.tar.gz" >> $GITHUB_ENV - name: Download Wasi SDK run: | diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index bfa2e1e0..244903a4 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -11,7 +11,6 @@ permissions: pull-requests: write env: - DOTNET_VERSION: '8.0.x' on: workflow_dispatch: @@ -29,7 +28,7 @@ jobs: - name: Set up .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: ${{ env.DOTNET_VERSION }} + global-json-file: global.json - name: Regenerate docs run: ./docs/scripts/generate_all_docs.sh diff --git a/.github/workflows/legacy-tests.yml b/.github/workflows/legacy-tests.yml index d791e5f2..1b0472fd 100644 --- a/.github/workflows/legacy-tests.yml +++ b/.github/workflows/legacy-tests.yml @@ -22,10 +22,15 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Set up .NET from global.json + # The .NET Framework projects are built with the Visual Studio MSBuild, which is not guaranteed to support + # the newest .NET SDK that the rest of the repository is pinned to by global.json - so build them with .NET 8 + - name: Set up .NET 8 uses: actions/setup-dotnet@v4 with: - global-json-file: global.json + dotnet-version: '8.0.x' + + - name: Ignore global.json (pinned to the newer SDK) + run: rm global.json - name: Load .env file uses: xom9ikk/dotenv@v2.3.0 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3a60f2d3..c2a9c90e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,7 +4,6 @@ defaults: shell: bash env: - DOTNET_VERSION: '8.0.x' SQLC_VERSION: 1.30.0 on: @@ -28,6 +27,11 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Set up .NET from global.json + uses: actions/setup-dotnet@v4 + with: + global-json-file: global.json + - uses: sqlc-dev/setup-sqlc@v4 with: sqlc-version: '${{ env.SQLC_VERSION }}' @@ -53,7 +57,7 @@ jobs: - name: Set up .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: ${{ env.DOTNET_VERSION }} + global-json-file: global.json - name: Load .env file uses: xom9ikk/dotenv@v2.3.0 diff --git a/.gitignore b/.gitignore index e0820e4c..cc0153c5 100644 --- a/.gitignore +++ b/.gitignore @@ -142,4 +142,6 @@ plugin.wasm .env.bak **/.env.bak -**/*.wasm \ No newline at end of file +**/*.wasm +# sqlc plugin cache (Makefile sets SQLCCACHE=./) +/plugins/ diff --git a/AGENTS.md b/AGENTS.md index c9256687..e5173382 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -40,6 +40,14 @@ --- +## 🧩 Target Frameworks +- The **plugin** (all projects but `examples`) targets `net10.0`; the SDK is pinned in `global.json`. +- The **generated code** targets the `targetFramework` option: `netstandard2.0`, `netstandard2.1`, `net8.0` (default), `net9.0`, `net10.0`. `DotnetFramework.IsDotnetCore()` is true for every `net*` value; `netstandard*` is "legacy" output. +- The core examples in `sqlc.ci.yaml` are spread over net8.0 / net9.0 / net10.0 so that every framework is built and tested end-to-end. +- The WASM plugin is built as `wasip1` (core module) via overrides in `WasmRunner/WasmRunner.csproj`, because the .NET 10 WASI SDK emits a wasip2 component that sqlc (wazero) cannot load. Re-verify with `sqlc -f sqlc.ci.yaml diff` after SDK upgrades. + +--- + ## �� Code Generation Flow ``` @@ -97,8 +105,8 @@ DbDriver InstantiateDriver() | Option | Default | Description | |--------|---------|-------------| -| `overrideDriverVersion` | 2.3.6 (MySql), 8.0.3 (Npgsql), 8.0.10 (Sqlite) | Override DB driver version | -| `targetFramework` | net8.0 | .NET Standard 2.0/2.1 or .NET 8.0 | +| `overrideDriverVersion` | 2.4.0 (MySql), 8.0.6 (Npgsql), 9.0.0 (Sqlite) | Override DB driver version | +| `targetFramework` | net8.0 | .NET Standard 2.0/2.1, .NET 8.0, 9.0 or 10.0 (the plugin itself runs on .NET 10, independent of this option) | | `generateCsproj` | true | Generate .csproj file | | `namespaceName` | Project name | Override generated namespace | | `useDapper` | false | Use Dapper wrapper | @@ -175,20 +183,21 @@ public partial class Author ### Local Development ```bash # Prerequisites -dotnet --version # .NET 8.0 +dotnet --version # .NET 10 SDK (pinned in global.json) buf --version -# WASM libs for .NET WASI (see WASM docs) +# WASM build: `dotnet workload install wasi-experimental` + WASI SDK 25 exposed via WASI_SDK_PATH (see docs/08_Contributing.md) # Generate protobuf -make protobuf-generate +make generate-protobuf # Generate code -make sqlc-generate-process -make sqlc-generate-wasm +make sqlc-generate # process plugin +make setup-wasm-plugin # WASM plugin -> dist/plugin.wasm # Test plugins -make test-process-plugin -make test-wasm-plugin +make unit-tests +make test-plugin +sqlc -f sqlc.ci.yaml diff # WASM plugin output must equal the committed examples ``` ### Pre-commit Setup @@ -249,14 +258,14 @@ for (int i = 0; i < paramArray.Length; i++) ### Generate Code ```bash -make sqlc-generate-process # Process-based plugin -make sqlc-generate-wasm # WASM plugin +make sqlc-generate # Process-based plugin +make setup-wasm-plugin # WASM plugin ``` ### Test ```bash -make test-process-plugin -make test-wasm-plugin +make unit-tests +make test-plugin ``` ### Release diff --git a/CodeGenerator/CodeGenerator.csproj b/CodeGenerator/CodeGenerator.csproj index 354d4b95..d9a23958 100644 --- a/CodeGenerator/CodeGenerator.csproj +++ b/CodeGenerator/CodeGenerator.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 enable SqlcGenCsharp diff --git a/Drivers/Drivers.csproj b/Drivers/Drivers.csproj index 0b47e221..2dbd1227 100644 --- a/Drivers/Drivers.csproj +++ b/Drivers/Drivers.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 enable SqlcGenCsharp.Drivers diff --git a/Extensions/Extensions.csproj b/Extensions/Extensions.csproj index c09b9c37..11255f4f 100644 --- a/Extensions/Extensions.csproj +++ b/Extensions/Extensions.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 enable enable SqlcGenCsharp diff --git a/GeneratedProtobuf/GeneratedProtobuf.csproj b/GeneratedProtobuf/GeneratedProtobuf.csproj index 73ac6eac..2ef38f05 100644 --- a/GeneratedProtobuf/GeneratedProtobuf.csproj +++ b/GeneratedProtobuf/GeneratedProtobuf.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 enable SqlcGenCsharp diff --git a/LocalRunner/LocalRunner.csproj b/LocalRunner/LocalRunner.csproj index de7b21c0..476b36df 100644 --- a/LocalRunner/LocalRunner.csproj +++ b/LocalRunner/LocalRunner.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 true osx-arm64;linux-x64 SqlcGenCsharp diff --git a/PluginOptions/DotnetFramework.cs b/PluginOptions/DotnetFramework.cs index df75a5f1..2878ab02 100644 --- a/PluginOptions/DotnetFramework.cs +++ b/PluginOptions/DotnetFramework.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; @@ -6,6 +7,8 @@ namespace SqlcGenCsharp; public enum DotnetFramework { Dotnet80, + Dotnet90, + Dotnet100, DotnetStandard20, DotnetStandard21 } @@ -15,6 +18,8 @@ public static class DotnetFrameworkExtensions private static readonly Dictionary EnumToString = new() { { DotnetFramework.Dotnet80, "net8.0" }, + { DotnetFramework.Dotnet90, "net9.0" }, + { DotnetFramework.Dotnet100, "net10.0" }, { DotnetFramework.DotnetStandard21, "netstandard2.1" }, { DotnetFramework.DotnetStandard20, "netstandard2.0" } }; @@ -26,14 +31,16 @@ public static string ToName(this DotnetFramework me) public static DotnetFramework ParseName(string dotnetFramework) { - return EnumToString - .ToDictionary(x => x.Value, x => x.Key) - [dotnetFramework]; + var nameToEnum = EnumToString.ToDictionary(x => x.Value, x => x.Key); + if (nameToEnum.TryGetValue(dotnetFramework, out var parsed)) + return parsed; + throw new ArgumentException( + $"Unsupported targetFramework '{dotnetFramework}', supported values: {string.Join(", ", nameToEnum.Keys)}"); } public static bool IsDotnetCore(this DotnetFramework me) { - return me == DotnetFramework.Dotnet80; + return me is DotnetFramework.Dotnet80 or DotnetFramework.Dotnet90 or DotnetFramework.Dotnet100; } public static bool IsDotnetLegacy(this DotnetFramework me) diff --git a/PluginOptions/PluginOptions.csproj b/PluginOptions/PluginOptions.csproj index d7bd9779..c507afab 100644 --- a/PluginOptions/PluginOptions.csproj +++ b/PluginOptions/PluginOptions.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 enable SqlcGenCsharp diff --git a/README.md b/README.md index 92afdbc4..3af3a5ac 100644 --- a/README.md +++ b/README.md @@ -42,18 +42,29 @@ sql: | Option | Possible values | Optional | Info | |-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| overrideDriverVersion | default:
`2.3.6` for MySqlConnector (mysql)
`8.0.3` for Npgsql (postgresql)
`8.0.10` 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` | 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). | +| overrideDriverVersion | default:
`2.4.0` for MySqlConnector (mysql)
`8.0.6` for Npgsql (postgresql)
`9.0.0` 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.35`
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. | +| 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. | | 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. | +### Target framework +`targetFramework` sets the framework of the generated `.csproj`, and is independent of the .NET version the plugin itself runs on. + +| Value | Notes | +|-------|-------| +| `net8.0` (default) | Nullable reference types enabled, file-scoped namespaces | +| `net9.0`, `net10.0` | Same generated code as `net8.0`, only the `` differs | +| `netstandard2.1`, `netstandard2.0` | Legacy output - nullable reference types disabled, block-scoped namespaces | + +The default stays `net8.0` so that upgrading the plugin never changes the target of existing projects. + ### Override option Override for a specific query: ```yaml @@ -445,9 +456,25 @@ amount of data types that are supported by SQLite. The supported overrides are s Make sure that the following applications are installed and added to your path. Follow the instructions in each of these: -- Dotnet CLI - [Dotnet Installation](https://github.com/dotnet/sdk) - use version `.NET 8.0 (latest)`
+- Dotnet CLI - [Dotnet Installation](https://github.com/dotnet/sdk) - the SDK version pinned in `global.json` (`.NET 10`)
- Buf build - [Buf Build](https://buf.build/docs/installation)
-- WASM (follow this guide) - [WASM libs](https://www.strathweb.com/2023/09/dotnet-wasi-applications-in-net-8-0/) +- sqlc - [sqlc Installation](https://docs.sqlc.dev/en/latest/overview/install.html)
+- Docker - for running the end-to-end tests against real PostgreSQL / MySQL instances
+- WASM build tooling (only needed for building the WASM plugin): + - the `wasi-experimental` workload - `dotnet workload install wasi-experimental` + - [WASI SDK](https://github.com/WebAssembly/wasi-sdk/releases) version `25`, extracted somewhere and exposed through the `WASI_SDK_PATH` environment variable + +### Target frameworks +Two different .NET versions are involved, and they are independent of each other: +- The **plugin itself** (all projects except `examples`) targets `net10.0`. +- The **generated code** targets whatever `targetFramework` is configured - `netstandard2.0`, `netstandard2.1`, `net8.0` (default), `net9.0` or `net10.0`. + The `examples` cover every supported value (see `sqlc.ci.yaml`) and are built and tested against real databases in CI. + +### Why the WASM plugin targets `wasip1` +sqlc runs WASM plugins with [wazero](https://wazero.io/), which can load core modules (`wasm32-wasip1`) but not WebAssembly components. +The .NET 10 WASI SDK hardcodes `wasm32-unknown-wasip2` and links a component-model world, which produces a component that sqlc rejects (`invalid version header`). +`WasmRunner/WasmRunner.csproj` therefore overrides the compile and link steps to produce a `wasip1` core module. +These overrides rely on private item names of the WASI SDK, so after any .NET SDK or WASI SDK upgrade, verify the plugin with `make setup-wasm-plugin && sqlc -f sqlc.ci.yaml diff`. ## Pre-commit Setup This repository uses [pre-commit](https://pre-commit.com/). To set up pre-commit hooks, run: @@ -461,21 +488,22 @@ pre-commit install SQLC protobuf are defined in sqlc-dev/sqlc repository. Generating C# code from protocol buffer files: ``` -make protobuf-generate +make generate-protobuf ``` ### Generating code SQLC utilizes our process / WASM plugin to generate code: ``` -make sqlc-generate-process -make sqlc-generate-wasm +make sqlc-generate # process plugin - regenerates the examples and the codegen requests +make setup-wasm-plugin # builds the WASM plugin into dist/plugin.wasm +sqlc -f sqlc.ci.yaml diff # verifies the WASM plugin generates exactly the committed examples ``` ### Testing generated code Testing the SQLC generated code via a predefined flow: ``` -make test-process-plugin -make test-wasm-plugin +make unit-tests # codegen and repository unit tests +make test-plugin # regenerates everything, builds the solution and runs the end-to-end tests (needs Docker) ``` ## Release flow @@ -602,7 +630,7 @@ overrides: ### Config ```yaml useDapper: true -targetFramework: net8.0 +targetFramework: net10.0 generateCsproj: true namespaceName: NpgsqlDapperExampleGen overrides: @@ -758,7 +786,7 @@ overrides: ### Config ```yaml useDapper: false -targetFramework: net8.0 +targetFramework: net9.0 generateCsproj: true namespaceName: MySqlConnectorExampleGen overrides: @@ -902,7 +930,7 @@ overrides: ### Config ```yaml useDapper: false -targetFramework: net8.0 +targetFramework: net10.0 generateCsproj: true namespaceName: SqliteExampleGen overrides: @@ -945,7 +973,7 @@ overrides: ### Config ```yaml useDapper: true -targetFramework: net8.0 +targetFramework: net9.0 generateCsproj: true namespaceName: SqliteDapperExampleGen overrides: diff --git a/SqlcGenCsharp/SqlcGenCsharp.csproj b/SqlcGenCsharp/SqlcGenCsharp.csproj index 1c4a022b..2e8b23e3 100644 --- a/SqlcGenCsharp/SqlcGenCsharp.csproj +++ b/SqlcGenCsharp/SqlcGenCsharp.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 enable enable SqlcGenCsharp diff --git a/WasmRunner/WasmRunner.csproj b/WasmRunner/WasmRunner.csproj index 1a6ba729..565ab5ce 100644 --- a/WasmRunner/WasmRunner.csproj +++ b/WasmRunner/WasmRunner.csproj @@ -1,6 +1,6 @@ - net8.0 + net10.0 SqlcGenCsharp Exe wasi-wasm @@ -17,6 +17,33 @@ + + + + + + + <_WasiClangCommonFlags Remove="--target=wasm32-unknown-wasip2" /> + <_WasiClangLDFlags Remove="--target=wasm32-unknown-wasip2" /> + <_WasiClangCommonFlags Include="--target=wasm32-wasip1" /> + <_WasiClangLDFlags Include="--target=wasm32-wasip1" /> + + + + + + <_WasmLinkStepArgs Remove="@(_WasmLinkStepArgs)" Condition="$([System.String]::new('%(Identity)').Contains('--component-type'))" /> + <_WasmLinkStepArgs Remove="@(_WasmLinkStepArgs)" Condition="$([System.String]::new('%(Identity)').Contains('wasm32-wasip2'))" /> + <_WasmLinkStepArgs Include=""$(WasiSysRoot.Replace('\', '/'))/lib/wasm32-wasip1/libc++.a"" /> + <_WasmLinkStepArgs Include=""$(WasiSysRoot.Replace('\', '/'))/lib/wasm32-wasip1/libc++abi.a"" /> + + + diff --git a/benchmark/BenchmarkRunner/BenchmarkRunner.csproj b/benchmark/BenchmarkRunner/BenchmarkRunner.csproj index 15ae3926..3e8bae0e 100644 --- a/benchmark/BenchmarkRunner/BenchmarkRunner.csproj +++ b/benchmark/BenchmarkRunner/BenchmarkRunner.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable diff --git a/benchmark/MysqlEFCoreImpl/MysqlEFCoreImpl.csproj b/benchmark/MysqlEFCoreImpl/MysqlEFCoreImpl.csproj index 4d338e1b..22d11501 100644 --- a/benchmark/MysqlEFCoreImpl/MysqlEFCoreImpl.csproj +++ b/benchmark/MysqlEFCoreImpl/MysqlEFCoreImpl.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 enable enable diff --git a/benchmark/MysqlSqlcImpl/MysqlSqlcImpl.csproj b/benchmark/MysqlSqlcImpl/MysqlSqlcImpl.csproj index 5fe7c21c..c3144be6 100644 --- a/benchmark/MysqlSqlcImpl/MysqlSqlcImpl.csproj +++ b/benchmark/MysqlSqlcImpl/MysqlSqlcImpl.csproj @@ -5,7 +5,7 @@ - net8.0 + net10.0 MysqlSqlcImpl Library enable diff --git a/benchmark/PostgresqlEFCoreImpl/PostgresqlEFCoreImpl.csproj b/benchmark/PostgresqlEFCoreImpl/PostgresqlEFCoreImpl.csproj index b1b1df88..d58803d3 100644 --- a/benchmark/PostgresqlEFCoreImpl/PostgresqlEFCoreImpl.csproj +++ b/benchmark/PostgresqlEFCoreImpl/PostgresqlEFCoreImpl.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 PostgresEFCoreImpl Library enable diff --git a/benchmark/PostgresqlSqlcImpl/PostgresqlSqlcImpl.csproj b/benchmark/PostgresqlSqlcImpl/PostgresqlSqlcImpl.csproj index d764b85f..d561931c 100644 --- a/benchmark/PostgresqlSqlcImpl/PostgresqlSqlcImpl.csproj +++ b/benchmark/PostgresqlSqlcImpl/PostgresqlSqlcImpl.csproj @@ -5,7 +5,7 @@ - net8.0 + net10.0 PostgresSqlcImpl Library enable diff --git a/benchmark/SqliteEFCoreImpl/SqliteEFCoreImpl.csproj b/benchmark/SqliteEFCoreImpl/SqliteEFCoreImpl.csproj index af310d07..2d4325f7 100644 --- a/benchmark/SqliteEFCoreImpl/SqliteEFCoreImpl.csproj +++ b/benchmark/SqliteEFCoreImpl/SqliteEFCoreImpl.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 SqliteEFCoreImpl Library enable diff --git a/benchmark/SqliteSqlcImpl/SqliteSqlcImpl.csproj b/benchmark/SqliteSqlcImpl/SqliteSqlcImpl.csproj index 17a66c91..f8219020 100644 --- a/benchmark/SqliteSqlcImpl/SqliteSqlcImpl.csproj +++ b/benchmark/SqliteSqlcImpl/SqliteSqlcImpl.csproj @@ -5,7 +5,7 @@ - net8.0 + net10.0 SqliteSqlcImpl Library enable diff --git a/docs/03_Usage.md b/docs/03_Usage.md index e465aeea..946e7539 100644 --- a/docs/03_Usage.md +++ b/docs/03_Usage.md @@ -3,18 +3,29 @@ | Option | Possible values | Optional | Info | |-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| overrideDriverVersion | default:
`2.3.6` for MySqlConnector (mysql)
`8.0.3` for Npgsql (postgresql)
`8.0.10` 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` | 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). | +| overrideDriverVersion | default:
`2.4.0` for MySqlConnector (mysql)
`8.0.6` for Npgsql (postgresql)
`9.0.0` 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.35`
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. | +| 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. | | 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. | +### Target framework +`targetFramework` sets the framework of the generated `.csproj`, and is independent of the .NET version the plugin itself runs on. + +| Value | Notes | +|-------|-------| +| `net8.0` (default) | Nullable reference types enabled, file-scoped namespaces | +| `net9.0`, `net10.0` | Same generated code as `net8.0`, only the `` differs | +| `netstandard2.1`, `netstandard2.0` | Legacy output - nullable reference types disabled, block-scoped namespaces | + +The default stays `net8.0` so that upgrading the plugin never changes the target of existing projects. + ### Override option Override for a specific query: ```yaml diff --git a/docs/08_Contributing.md b/docs/08_Contributing.md index f334dd4d..0aa0e1f8 100644 --- a/docs/08_Contributing.md +++ b/docs/08_Contributing.md @@ -4,9 +4,25 @@ Make sure that the following applications are installed and added to your path. Follow the instructions in each of these: -- Dotnet CLI - [Dotnet Installation](https://github.com/dotnet/sdk) - use version `.NET 8.0 (latest)`
+- Dotnet CLI - [Dotnet Installation](https://github.com/dotnet/sdk) - the SDK version pinned in `global.json` (`.NET 10`)
- Buf build - [Buf Build](https://buf.build/docs/installation)
-- WASM (follow this guide) - [WASM libs](https://www.strathweb.com/2023/09/dotnet-wasi-applications-in-net-8-0/) +- sqlc - [sqlc Installation](https://docs.sqlc.dev/en/latest/overview/install.html)
+- Docker - for running the end-to-end tests against real PostgreSQL / MySQL instances
+- WASM build tooling (only needed for building the WASM plugin): + - the `wasi-experimental` workload - `dotnet workload install wasi-experimental` + - [WASI SDK](https://github.com/WebAssembly/wasi-sdk/releases) version `25`, extracted somewhere and exposed through the `WASI_SDK_PATH` environment variable + +### Target frameworks +Two different .NET versions are involved, and they are independent of each other: +- The **plugin itself** (all projects except `examples`) targets `net10.0`. +- The **generated code** targets whatever `targetFramework` is configured - `netstandard2.0`, `netstandard2.1`, `net8.0` (default), `net9.0` or `net10.0`. + The `examples` cover every supported value (see `sqlc.ci.yaml`) and are built and tested against real databases in CI. + +### Why the WASM plugin targets `wasip1` +sqlc runs WASM plugins with [wazero](https://wazero.io/), which can load core modules (`wasm32-wasip1`) but not WebAssembly components. +The .NET 10 WASI SDK hardcodes `wasm32-unknown-wasip2` and links a component-model world, which produces a component that sqlc rejects (`invalid version header`). +`WasmRunner/WasmRunner.csproj` therefore overrides the compile and link steps to produce a `wasip1` core module. +These overrides rely on private item names of the WASI SDK, so after any .NET SDK or WASI SDK upgrade, verify the plugin with `make setup-wasm-plugin && sqlc -f sqlc.ci.yaml diff`. ## Pre-commit Setup This repository uses [pre-commit](https://pre-commit.com/). To set up pre-commit hooks, run: @@ -20,21 +36,22 @@ pre-commit install SQLC protobuf are defined in sqlc-dev/sqlc repository. Generating C# code from protocol buffer files: ``` -make protobuf-generate +make generate-protobuf ``` ### Generating code SQLC utilizes our process / WASM plugin to generate code: ``` -make sqlc-generate-process -make sqlc-generate-wasm +make sqlc-generate # process plugin - regenerates the examples and the codegen requests +make setup-wasm-plugin # builds the WASM plugin into dist/plugin.wasm +sqlc -f sqlc.ci.yaml diff # verifies the WASM plugin generates exactly the committed examples ``` ### Testing generated code Testing the SQLC generated code via a predefined flow: ``` -make test-process-plugin -make test-wasm-plugin +make unit-tests # codegen and repository unit tests +make test-plugin # regenerates everything, builds the solution and runs the end-to-end tests (needs Docker) ``` ## Release flow diff --git a/docs/09_Examples.md b/docs/09_Examples.md index a6ae5bf5..66145071 100644 --- a/docs/09_Examples.md +++ b/docs/09_Examples.md @@ -92,7 +92,7 @@ overrides: ### Config ```yaml useDapper: true -targetFramework: net8.0 +targetFramework: net10.0 generateCsproj: true namespaceName: NpgsqlDapperExampleGen overrides: @@ -248,7 +248,7 @@ overrides: ### Config ```yaml useDapper: false -targetFramework: net8.0 +targetFramework: net9.0 generateCsproj: true namespaceName: MySqlConnectorExampleGen overrides: @@ -392,7 +392,7 @@ overrides: ### Config ```yaml useDapper: false -targetFramework: net8.0 +targetFramework: net10.0 generateCsproj: true namespaceName: SqliteExampleGen overrides: @@ -435,7 +435,7 @@ overrides: ### Config ```yaml useDapper: true -targetFramework: net8.0 +targetFramework: net9.0 generateCsproj: true namespaceName: SqliteDapperExampleGen overrides: diff --git a/docs/ExamplesDocGen/ExampleDocGen.csproj b/docs/ExamplesDocGen/ExampleDocGen.csproj index 3ce92306..a47f11f7 100644 --- a/docs/ExamplesDocGen/ExampleDocGen.csproj +++ b/docs/ExamplesDocGen/ExampleDocGen.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable DocsGenerator diff --git a/end2end/EndToEndScaffold/EndToEndScaffold.csproj b/end2end/EndToEndScaffold/EndToEndScaffold.csproj index c01ee097..3ec3013b 100644 --- a/end2end/EndToEndScaffold/EndToEndScaffold.csproj +++ b/end2end/EndToEndScaffold/EndToEndScaffold.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 Exe diff --git a/end2end/EndToEndTests/EndToEndTests.csproj b/end2end/EndToEndTests/EndToEndTests.csproj index a8a8e10f..3ab6815e 100644 --- a/end2end/EndToEndTests/EndToEndTests.csproj +++ b/end2end/EndToEndTests/EndToEndTests.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 enable EndToEndTests diff --git a/examples/MySqlConnectorExample/MySqlConnectorExample.csproj b/examples/MySqlConnectorExample/MySqlConnectorExample.csproj index 8ce47c52..496ab3d1 100644 --- a/examples/MySqlConnectorExample/MySqlConnectorExample.csproj +++ b/examples/MySqlConnectorExample/MySqlConnectorExample.csproj @@ -5,7 +5,7 @@ - net8.0 + net9.0 MySqlConnectorExampleGen Library enable diff --git a/examples/MySqlConnectorExample/request.json b/examples/MySqlConnectorExample/request.json index 574babe0..bf239b28 100644 --- a/examples/MySqlConnectorExample/request.json +++ b/examples/MySqlConnectorExample/request.json @@ -13,7 +13,7 @@ "codegen": { "out": "examples/MySqlConnectorExample", "plugin": "csharp", - "options": "eyJkZWJ1Z1JlcXVlc3QiOnRydWUsImdlbmVyYXRlQ3Nwcm9qIjp0cnVlLCJuYW1lc3BhY2VOYW1lIjoiTXlTcWxDb25uZWN0b3JFeGFtcGxlR2VuIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfaW50IiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6ZmFsc2UsInR5cGUiOiJpbnQifX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7Im5vdE51bGwiOmZhbHNlLCJ0eXBlIjoic3RyaW5nIn19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7Im5vdE51bGwiOnRydWUsInR5cGUiOiJEYXRlVGltZSJ9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7Im5vdE51bGwiOmZhbHNlLCJ0eXBlIjoic3RyaW5nIn19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJub3ROdWxsIjpmYWxzZSwidHlwZSI6Ikluc3RhbnQifX1dLCJ0YXJnZXRGcmFtZXdvcmsiOiJuZXQ4LjAiLCJ1c2VEYXBwZXIiOmZhbHNlfQ==", + "options": "eyJkZWJ1Z1JlcXVlc3QiOnRydWUsImdlbmVyYXRlQ3Nwcm9qIjp0cnVlLCJuYW1lc3BhY2VOYW1lIjoiTXlTcWxDb25uZWN0b3JFeGFtcGxlR2VuIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfaW50IiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6ZmFsc2UsInR5cGUiOiJpbnQifX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7Im5vdE51bGwiOmZhbHNlLCJ0eXBlIjoic3RyaW5nIn19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7Im5vdE51bGwiOnRydWUsInR5cGUiOiJEYXRlVGltZSJ9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7Im5vdE51bGwiOmZhbHNlLCJ0eXBlIjoic3RyaW5nIn19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJub3ROdWxsIjpmYWxzZSwidHlwZSI6Ikluc3RhbnQifX1dLCJ0YXJnZXRGcmFtZXdvcmsiOiJuZXQ5LjAiLCJ1c2VEYXBwZXIiOmZhbHNlfQ==", "process": { "cmd": "./dist/LocalRunner" } @@ -3807,5 +3807,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik15U3FsQ29ubmVjdG9yRXhhbXBsZUdlbiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X2ludCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJpbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF90aW1lc3RhbXAiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjp0cnVlfX0seyJjb2x1bW4iOiIqOmNfanNvbl9zdHJpbmdfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190aW1lc3RhbXBfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlLCJ1c2VQcm9wZXJTaW5ndWxhcml6YXRpb24iOmZhbHNlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OS4wIiwibmFtZXNwYWNlTmFtZSI6Ik15U3FsQ29ubmVjdG9yRXhhbXBsZUdlbiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X2ludCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJpbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF90aW1lc3RhbXAiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjp0cnVlfX0seyJjb2x1bW4iOiIqOmNfanNvbl9zdHJpbmdfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190aW1lc3RhbXBfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlLCJ1c2VQcm9wZXJTaW5ndWxhcml6YXRpb24iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/MySqlConnectorExample/request.message b/examples/MySqlConnectorExample/request.message index abe526eff8d6db07f3d383362323864ae8a63746..b28485aa4065ab717ae0d659d51c70d7b32c6017 100644 GIT binary patch delta 23 dcmX?pj`8?8#tkyejFy{anX?mtRA - net8.0 + net10.0 NpgsqlDapperExampleGen Library enable diff --git a/examples/NpgsqlDapperExample/request.json b/examples/NpgsqlDapperExample/request.json index a54a0145..57529ac4 100644 --- a/examples/NpgsqlDapperExample/request.json +++ b/examples/NpgsqlDapperExample/request.json @@ -13,7 +13,7 @@ "codegen": { "out": "examples/NpgsqlDapperExample", "plugin": "csharp", - "options": "eyJkZWJ1Z1JlcXVlc3QiOnRydWUsImdlbmVyYXRlQ3Nwcm9qIjp0cnVlLCJuYW1lc3BhY2VOYW1lIjoiTnBnc3FsRGFwcGVyRXhhbXBsZUdlbiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJub3ROdWxsIjpmYWxzZSwidHlwZSI6ImludCJ9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6ZmFsc2UsInR5cGUiOiJzdHJpbmcifX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6dHJ1ZSwidHlwZSI6IkRhdGVUaW1lIn19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNTcGVjaWFsVHlwZXNDbnQ6Y19qc29uIiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6ZmFsc2UsInR5cGUiOiJKc29uRWxlbWVudCJ9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbmIiLCJjc2hhcnBfdHlwZSI6eyJub3ROdWxsIjpmYWxzZSwidHlwZSI6Ikpzb25FbGVtZW50In19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6ZmFsc2UsInR5cGUiOiJzdHJpbmcifX0seyJjb2x1bW4iOiIqOmNfeG1sX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7Im5vdE51bGwiOmZhbHNlLCJ0eXBlIjoic3RyaW5nIn19LHsiY29sdW1uIjoiKjpjX21hY2FkZHI4IiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6ZmFsc2UsInR5cGUiOiJzdHJpbmcifX0seyJjb2x1bW4iOiIqOmNfdGltZXN0YW1wX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7Im5vdE51bGwiOmZhbHNlLCJ0eXBlIjoiSW5zdGFudCJ9fV0sInRhcmdldEZyYW1ld29yayI6Im5ldDguMCIsInVzZURhcHBlciI6dHJ1ZX0=", + "options": "eyJkZWJ1Z1JlcXVlc3QiOnRydWUsImdlbmVyYXRlQ3Nwcm9qIjp0cnVlLCJuYW1lc3BhY2VOYW1lIjoiTnBnc3FsRGFwcGVyRXhhbXBsZUdlbiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJub3ROdWxsIjpmYWxzZSwidHlwZSI6ImludCJ9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6ZmFsc2UsInR5cGUiOiJzdHJpbmcifX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6dHJ1ZSwidHlwZSI6IkRhdGVUaW1lIn19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNTcGVjaWFsVHlwZXNDbnQ6Y19qc29uIiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6ZmFsc2UsInR5cGUiOiJKc29uRWxlbWVudCJ9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbmIiLCJjc2hhcnBfdHlwZSI6eyJub3ROdWxsIjpmYWxzZSwidHlwZSI6Ikpzb25FbGVtZW50In19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6ZmFsc2UsInR5cGUiOiJzdHJpbmcifX0seyJjb2x1bW4iOiIqOmNfeG1sX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7Im5vdE51bGwiOmZhbHNlLCJ0eXBlIjoic3RyaW5nIn19LHsiY29sdW1uIjoiKjpjX21hY2FkZHI4IiwiY3NoYXJwX3R5cGUiOnsibm90TnVsbCI6ZmFsc2UsInR5cGUiOiJzdHJpbmcifX0seyJjb2x1bW4iOiIqOmNfdGltZXN0YW1wX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7Im5vdE51bGwiOmZhbHNlLCJ0eXBlIjoiSW5zdGFudCJ9fV0sInRhcmdldEZyYW1ld29yayI6Im5ldDEwLjAiLCJ1c2VEYXBwZXIiOnRydWV9", "process": { "cmd": "./dist/LocalRunner" } @@ -36265,5 +36265,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik5wZ3NxbERhcHBlckV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOnRydWUsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6dHJ1ZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNTcGVjaWFsVHlwZXNDbnQ6Y19qc29uIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikpzb25FbGVtZW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbmIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSnNvbkVsZW1lbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfeG1sX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX21hY2FkZHI4IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGltZXN0YW1wX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2UsInVzZUNlbnRyYWxQYWNrYWdlTWFuYWdlbWVudCI6ZmFsc2UsIndpdGhBc3luY1N1ZmZpeCI6dHJ1ZSwid2l0aENhbmNlbGxhdGlvblRva2VuIjpmYWxzZSwidXNlUHJvcGVyU2luZ3VsYXJpemF0aW9uIjpmYWxzZX0=" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0MTAuMCIsIm5hbWVzcGFjZU5hbWUiOiJOcGdzcWxEYXBwZXJFeGFtcGxlR2VuIiwidXNlRGFwcGVyIjp0cnVlLCJvdmVycmlkZURhcHBlclZlcnNpb24iOiIiLCJvdmVycmlkZXMiOlt7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbiIsImNzaGFycF90eXBlIjp7InR5cGUiOiJKc29uRWxlbWVudCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc1NwZWNpYWxUeXBlc0NudDpjX2pzb25iIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikpzb25FbGVtZW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3htbF9zdHJpbmdfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19tYWNhZGRyOCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWUsIndpdGhDYW5jZWxsYXRpb25Ub2tlbiI6ZmFsc2UsInVzZVByb3BlclNpbmd1bGFyaXphdGlvbiI6ZmFsc2V9" } \ No newline at end of file diff --git a/examples/NpgsqlDapperExample/request.message b/examples/NpgsqlDapperExample/request.message index 369a4741..29308934 100644 --- a/examples/NpgsqlDapperExample/request.message +++ b/examples/NpgsqlDapperExample/request.message @@ -1,8 +1,8 @@ -Ï +Ð 2 -postgresql-examples/config/postgresql/authors/schema.sql+examples/config/postgresql/types/schema.sql",examples/config/postgresql/authors/query.sql"*examples/config/postgresql/types/query.sqlb‡ -examples/NpgsqlDapperExamplecsharpÈ{"debugRequest":true,"generateCsproj":true,"namespaceName":"NpgsqlDapperExampleGen","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"notNull":false,"type":"int"}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"notNull":false,"type":"string"}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"notNull":true,"type":"DateTime"}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"*:c_json_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_xml_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_macaddr8","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"notNull":false,"type":"Instant"}}],"targetFramework":"net8.0","useDapper":true}* +postgresql-examples/config/postgresql/authors/schema.sql+examples/config/postgresql/types/schema.sql",examples/config/postgresql/authors/query.sql"*examples/config/postgresql/types/query.sqlbˆ +examples/NpgsqlDapperExamplecsharpÉ{"debugRequest":true,"generateCsproj":true,"namespaceName":"NpgsqlDapperExampleGen","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"notNull":false,"type":"int"}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"notNull":false,"type":"string"}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"notNull":true,"type":"DateTime"}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"*:c_json_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_xml_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_macaddr8","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"notNull":false,"type":"Instant"}}],"targetFramework":"net10.0","useDapper":true}* ./dist/LocalRunnerìî public"®publicƒ authors) id0ÿÿÿÿÿÿÿÿÿR authorsb  bigserial& @@ -10923,4 +10923,4 @@ hSELECT c_point, c_line, c_lseg, c_box, c_path, c_polygon, c_circle FROM postgre c_path0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesbpathzc_path"H c_polygon0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesb polygonz c_polygon"E c_circle0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesbcirclezc_circle: query.sqlU -'TRUNCATE TABLE postgres_geometric_typesTruncatePostgresGeoTypes:exec: query.sql"v1.30.0*ù{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"NpgsqlDapperExampleGen","useDapper":true,"overrideDapperVersion":"","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"type":"int","notNull":false}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"type":"string","notNull":false}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"type":"DateTime","notNull":true}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"*:c_json_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_xml_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_macaddr8","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"type":"Instant","notNull":false}}],"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false,"useProperSingularization":false} \ No newline at end of file +'TRUNCATE TABLE postgres_geometric_typesTruncatePostgresGeoTypes:exec: query.sql"v1.30.0*ú{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net10.0","namespaceName":"NpgsqlDapperExampleGen","useDapper":true,"overrideDapperVersion":"","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"type":"int","notNull":false}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"type":"string","notNull":false}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"type":"DateTime","notNull":true}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"*:c_json_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_xml_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_macaddr8","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"type":"Instant","notNull":false}}],"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false,"useProperSingularization":false} \ No newline at end of file diff --git a/examples/SqliteDapperExample/SqliteDapperExample.csproj b/examples/SqliteDapperExample/SqliteDapperExample.csproj index efce62bc..40476d89 100644 --- a/examples/SqliteDapperExample/SqliteDapperExample.csproj +++ b/examples/SqliteDapperExample/SqliteDapperExample.csproj @@ -5,7 +5,7 @@ - net8.0 + net9.0 SqliteDapperExampleGen Library enable diff --git a/examples/SqliteDapperExample/request.json b/examples/SqliteDapperExample/request.json index e5e539c5..8285d5f2 100644 --- a/examples/SqliteDapperExample/request.json +++ b/examples/SqliteDapperExample/request.json @@ -13,7 +13,7 @@ "codegen": { "out": "examples/SqliteDapperExample", "plugin": "csharp", - "options": "eyJkZWJ1Z1JlcXVlc3QiOnRydWUsImdlbmVyYXRlQ3Nwcm9qIjp0cnVlLCJuYW1lc3BhY2VOYW1lIjoiU3FsaXRlRGFwcGVyRXhhbXBsZUdlbiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCJ9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmcifX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3JlYWwiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiZGVjaW1hbCJ9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIn19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUifX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wifX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wifX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCJ9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50In19XSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwidXNlRGFwcGVyIjp0cnVlfQ==", + "options": "eyJkZWJ1Z1JlcXVlc3QiOnRydWUsImdlbmVyYXRlQ3Nwcm9qIjp0cnVlLCJuYW1lc3BhY2VOYW1lIjoiU3FsaXRlRGFwcGVyRXhhbXBsZUdlbiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCJ9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmcifX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3JlYWwiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiZGVjaW1hbCJ9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIn19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUifX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wifX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wifX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCJ9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50In19XSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OS4wIiwidXNlRGFwcGVyIjp0cnVlfQ==", "process": { "cmd": "./dist/LocalRunner" } @@ -1463,5 +1463,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IlNxbGl0ZURhcHBlckV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOnRydWUsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfcmVhbCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJkZWNpbWFsIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlLCJ1c2VQcm9wZXJTaW5ndWxhcml6YXRpb24iOmZhbHNlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OS4wIiwibmFtZXNwYWNlTmFtZSI6IlNxbGl0ZURhcHBlckV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOnRydWUsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfcmVhbCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJkZWNpbWFsIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlLCJ1c2VQcm9wZXJTaW5ndWxhcml6YXRpb24iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/SqliteDapperExample/request.message b/examples/SqliteDapperExample/request.message index 4a4e11cd71a8ed0bae8f5ae0a17ef777442e632a..9b7bc0f537f6e2e9ff762cd2993ebaf742a974ef 100644 GIT binary patch delta 21 bcmewz`a5*PCuT;=&7YZ{D*>t7Y6>g>cKZoL delta 21 bcmewz`a5*PCuT;A&7YZ{D*>t7Y6>g>cIXL0 diff --git a/examples/SqliteExample/SqliteExample.csproj b/examples/SqliteExample/SqliteExample.csproj index e1e93526..eb7c4a3f 100644 --- a/examples/SqliteExample/SqliteExample.csproj +++ b/examples/SqliteExample/SqliteExample.csproj @@ -5,7 +5,7 @@ - net8.0 + net10.0 SqliteExampleGen Library enable diff --git a/examples/SqliteExample/request.json b/examples/SqliteExample/request.json index 665aef3b..8af2e56e 100644 --- a/examples/SqliteExample/request.json +++ b/examples/SqliteExample/request.json @@ -13,7 +13,7 @@ "codegen": { "out": "examples/SqliteExample", "plugin": "csharp", - "options": "eyJkZWJ1Z1JlcXVlc3QiOnRydWUsImdlbmVyYXRlQ3Nwcm9qIjp0cnVlLCJuYW1lc3BhY2VOYW1lIjoiU3FsaXRlRXhhbXBsZUdlbiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCJ9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmcifX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3JlYWwiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiZGVjaW1hbCJ9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIn19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUifX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wifX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wifX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCJ9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50In19XSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwidXNlRGFwcGVyIjpmYWxzZX0=", + "options": "eyJkZWJ1Z1JlcXVlc3QiOnRydWUsImdlbmVyYXRlQ3Nwcm9qIjp0cnVlLCJuYW1lc3BhY2VOYW1lIjoiU3FsaXRlRXhhbXBsZUdlbiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCJ9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmcifX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3JlYWwiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiZGVjaW1hbCJ9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIn19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUifX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wifX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wifX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCJ9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50In19XSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0MTAuMCIsInVzZURhcHBlciI6ZmFsc2V9", "process": { "cmd": "./dist/LocalRunner" } @@ -1463,5 +1463,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IlNxbGl0ZUV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOmZhbHNlLCJvdmVycmlkZURhcHBlclZlcnNpb24iOiIiLCJvdmVycmlkZXMiOlt7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfaW50ZWdlciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJpbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3JlYWwiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiZGVjaW1hbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9kYXRldGltZV9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9kYXRldGltZV9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfYm9vbF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJib29sIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2UsInVzZUNlbnRyYWxQYWNrYWdlTWFuYWdlbWVudCI6ZmFsc2UsIndpdGhBc3luY1N1ZmZpeCI6dHJ1ZSwid2l0aENhbmNlbGxhdGlvblRva2VuIjpmYWxzZSwidXNlUHJvcGVyU2luZ3VsYXJpemF0aW9uIjpmYWxzZX0=" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0MTAuMCIsIm5hbWVzcGFjZU5hbWUiOiJTcWxpdGVFeGFtcGxlR2VuIiwidXNlRGFwcGVyIjpmYWxzZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9yZWFsIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImRlY2ltYWwiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfYm9vbF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJib29sIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWUsIndpdGhDYW5jZWxsYXRpb25Ub2tlbiI6ZmFsc2UsInVzZVByb3BlclNpbmd1bGFyaXphdGlvbiI6ZmFsc2V9" } \ No newline at end of file diff --git a/examples/SqliteExample/request.message b/examples/SqliteExample/request.message index 953b752f3acf7ce4202456d1c6edfa0ea0398352..14261e634e2321e9bf433766fd310d6e75b3804e 100644 GIT binary patch delta 43 ycmaDI`Zkn_YvM$v&5U;^Zc}1hvhgM_Gn1jg=I6}wlo+2*Zd3CF@h+%Ivj6~ud=Nzd delta 41 xcmaDG`Z|<}Yr;gP&5U;@Zc}1hyzwS4Go!`k7tHgN7@tgTSMvmNE~!bg003yU5Ags1 diff --git a/global.json b/global.json index 3d946171..6c0dfb50 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,6 @@ { "sdk": { - "version": "8.0.416" + "version": "10.0.402", + "rollForward": "latestFeature" } } \ No newline at end of file diff --git a/sqlc.ci.yaml b/sqlc.ci.yaml index 663969bf..9ea51fca 100644 --- a/sqlc.ci.yaml +++ b/sqlc.ci.yaml @@ -81,7 +81,7 @@ sql: out: examples/NpgsqlDapperExample options: useDapper: true - targetFramework: net8.0 + targetFramework: net10.0 generateCsproj: true namespaceName: NpgsqlDapperExampleGen overrides: @@ -226,7 +226,7 @@ sql: out: examples/MySqlConnectorExample options: useDapper: false - targetFramework: net8.0 + targetFramework: net9.0 generateCsproj: true namespaceName: MySqlConnectorExampleGen overrides: @@ -355,7 +355,7 @@ sql: out: examples/SqliteExample options: useDapper: false - targetFramework: net8.0 + targetFramework: net10.0 generateCsproj: true namespaceName: SqliteExampleGen overrides: @@ -394,7 +394,7 @@ sql: out: examples/SqliteDapperExample options: useDapper: true - targetFramework: net8.0 + targetFramework: net9.0 generateCsproj: true namespaceName: SqliteDapperExampleGen overrides: diff --git a/sqlc.local.generated.yaml b/sqlc.local.generated.yaml index d9bb0753..c52ed759 100644 --- a/sqlc.local.generated.yaml +++ b/sqlc.local.generated.yaml @@ -81,7 +81,7 @@ sql: out: examples/NpgsqlDapperExample options: useDapper: true - targetFramework: net8.0 + targetFramework: net10.0 generateCsproj: true namespaceName: NpgsqlDapperExampleGen overrides: @@ -226,7 +226,7 @@ sql: out: examples/MySqlConnectorExample options: useDapper: false - targetFramework: net8.0 + targetFramework: net9.0 generateCsproj: true namespaceName: MySqlConnectorExampleGen overrides: @@ -356,7 +356,7 @@ sql: out: examples/SqliteExample options: useDapper: false - targetFramework: net8.0 + targetFramework: net10.0 generateCsproj: true namespaceName: SqliteExampleGen overrides: @@ -395,7 +395,7 @@ sql: out: examples/SqliteDapperExample options: useDapper: true - targetFramework: net8.0 + targetFramework: net9.0 generateCsproj: true namespaceName: SqliteDapperExampleGen overrides: diff --git a/sqlc.request.generated.yaml b/sqlc.request.generated.yaml index 66b4e901..26a3c908 100644 --- a/sqlc.request.generated.yaml +++ b/sqlc.request.generated.yaml @@ -88,7 +88,7 @@ sql: out: examples/NpgsqlDapperExample options: useDapper: true - targetFramework: net8.0 + targetFramework: net10.0 generateCsproj: true namespaceName: NpgsqlDapperExampleGen overrides: @@ -236,7 +236,7 @@ sql: out: examples/MySqlConnectorExample options: useDapper: false - targetFramework: net8.0 + targetFramework: net9.0 generateCsproj: true namespaceName: MySqlConnectorExampleGen overrides: @@ -370,7 +370,7 @@ sql: out: examples/SqliteExample options: useDapper: false - targetFramework: net8.0 + targetFramework: net10.0 generateCsproj: true namespaceName: SqliteExampleGen overrides: @@ -410,7 +410,7 @@ sql: out: examples/SqliteDapperExample options: useDapper: true - targetFramework: net8.0 + targetFramework: net9.0 generateCsproj: true namespaceName: SqliteDapperExampleGen overrides: diff --git a/unit-tests/CodegenTests/CodegenCsprojTests.cs b/unit-tests/CodegenTests/CodegenCsprojTests.cs index 63a1c3fa..58312e81 100644 --- a/unit-tests/CodegenTests/CodegenCsprojTests.cs +++ b/unit-tests/CodegenTests/CodegenCsprojTests.cs @@ -58,6 +58,43 @@ public void TestCsprojFileNotGenerated() Assert.That(actual.Result.Files.Any(f => f.Name == $"{request.Settings.Codegen.Out}.csproj"), Is.False); } + [TestCase("net8.0", true)] + [TestCase("net9.0", true)] + [TestCase("net10.0", true)] + [TestCase("netstandard2.1", false)] + [TestCase("netstandard2.0", false)] + public void TestTargetFramework(string targetFramework, bool isNullableEnabled) + { + var request = new GenerateRequest + { + Settings = _mysqlSettings, + Catalog = _emptyCatalog, + PluginOptions = ByteString.CopyFrom("{\"targetFramework\": \"" + targetFramework + "\"}", Encoding.UTF8) + }; + + var response = CodeGenerator.Generate(request); + var csprojFile = response.Result.Files.First(f => f.Name == $"{request.Settings.Codegen.Out}.csproj"); + var doc = new XmlDocument(); + doc.LoadXml(csprojFile.Contents.ToStringUtf8()); + + Assert.That(doc.SelectSingleNode("//TargetFramework")!.InnerText, Is.EqualTo(targetFramework)); + Assert.That(doc.SelectSingleNode("//Nullable") is not null, Is.EqualTo(isNullableEnabled)); + } + + [Test] + public void TestUnsupportedTargetFramework() + { + var request = new GenerateRequest + { + Settings = _mysqlSettings, + Catalog = _emptyCatalog, + PluginOptions = ByteString.CopyFrom("{\"targetFramework\": \"net7.0\"}", Encoding.UTF8) + }; + + var exception = Assert.Throws(() => _ = CodeGenerator.Generate(request)); + Assert.That(exception.Message, Does.Contain("net7.0").And.Contain("net10.0")); + } + [Test] public void TestOverrideDriverVersion() { diff --git a/unit-tests/CodegenTests/CodegenTests.csproj b/unit-tests/CodegenTests/CodegenTests.csproj index 3c017aa0..b005946b 100644 --- a/unit-tests/CodegenTests/CodegenTests.csproj +++ b/unit-tests/CodegenTests/CodegenTests.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 enable enable false diff --git a/unit-tests/RepositoryTests/RepositoryTests.csproj b/unit-tests/RepositoryTests/RepositoryTests.csproj index 2e72f096..03e502b4 100644 --- a/unit-tests/RepositoryTests/RepositoryTests.csproj +++ b/unit-tests/RepositoryTests/RepositoryTests.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 enable enable false From 8bad1f1fcfc20fd2c6cbc4e04c512aef01322cf0 Mon Sep 17 00:00:00 2001 From: Doron Eli Rachman Date: Sat, 24 Oct 2026 13:57:37 +0300 Subject: [PATCH 2/5] docs: leave README.md to the release flow README.md is regenerated from docs/ on release, so only the docs sources carry the changes. Co-Authored-By: Claude Sonnet 5.5 --- README.md | 56 ++++++++++++++----------------------------------------- 1 file changed, 14 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 3af3a5ac..92afdbc4 100644 --- a/README.md +++ b/README.md @@ -42,29 +42,18 @@ sql: | Option | Possible values | Optional | Info | |-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| overrideDriverVersion | default:
`2.4.0` for MySqlConnector (mysql)
`8.0.6` for Npgsql (postgresql)
`9.0.0` 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). | +| overrideDriverVersion | default:
`2.3.6` for MySqlConnector (mysql)
`8.0.3` for Npgsql (postgresql)
`8.0.10` 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` | 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. | +| overrideDapperVersion | default:
`2.1.35`
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. | -### Target framework -`targetFramework` sets the framework of the generated `.csproj`, and is independent of the .NET version the plugin itself runs on. - -| Value | Notes | -|-------|-------| -| `net8.0` (default) | Nullable reference types enabled, file-scoped namespaces | -| `net9.0`, `net10.0` | Same generated code as `net8.0`, only the `` differs | -| `netstandard2.1`, `netstandard2.0` | Legacy output - nullable reference types disabled, block-scoped namespaces | - -The default stays `net8.0` so that upgrading the plugin never changes the target of existing projects. - ### Override option Override for a specific query: ```yaml @@ -456,25 +445,9 @@ amount of data types that are supported by SQLite. The supported overrides are s Make sure that the following applications are installed and added to your path. Follow the instructions in each of these: -- Dotnet CLI - [Dotnet Installation](https://github.com/dotnet/sdk) - the SDK version pinned in `global.json` (`.NET 10`)
+- Dotnet CLI - [Dotnet Installation](https://github.com/dotnet/sdk) - use version `.NET 8.0 (latest)`
- Buf build - [Buf Build](https://buf.build/docs/installation)
-- sqlc - [sqlc Installation](https://docs.sqlc.dev/en/latest/overview/install.html)
-- Docker - for running the end-to-end tests against real PostgreSQL / MySQL instances
-- WASM build tooling (only needed for building the WASM plugin): - - the `wasi-experimental` workload - `dotnet workload install wasi-experimental` - - [WASI SDK](https://github.com/WebAssembly/wasi-sdk/releases) version `25`, extracted somewhere and exposed through the `WASI_SDK_PATH` environment variable - -### Target frameworks -Two different .NET versions are involved, and they are independent of each other: -- The **plugin itself** (all projects except `examples`) targets `net10.0`. -- The **generated code** targets whatever `targetFramework` is configured - `netstandard2.0`, `netstandard2.1`, `net8.0` (default), `net9.0` or `net10.0`. - The `examples` cover every supported value (see `sqlc.ci.yaml`) and are built and tested against real databases in CI. - -### Why the WASM plugin targets `wasip1` -sqlc runs WASM plugins with [wazero](https://wazero.io/), which can load core modules (`wasm32-wasip1`) but not WebAssembly components. -The .NET 10 WASI SDK hardcodes `wasm32-unknown-wasip2` and links a component-model world, which produces a component that sqlc rejects (`invalid version header`). -`WasmRunner/WasmRunner.csproj` therefore overrides the compile and link steps to produce a `wasip1` core module. -These overrides rely on private item names of the WASI SDK, so after any .NET SDK or WASI SDK upgrade, verify the plugin with `make setup-wasm-plugin && sqlc -f sqlc.ci.yaml diff`. +- WASM (follow this guide) - [WASM libs](https://www.strathweb.com/2023/09/dotnet-wasi-applications-in-net-8-0/) ## Pre-commit Setup This repository uses [pre-commit](https://pre-commit.com/). To set up pre-commit hooks, run: @@ -488,22 +461,21 @@ pre-commit install SQLC protobuf are defined in sqlc-dev/sqlc repository. Generating C# code from protocol buffer files: ``` -make generate-protobuf +make protobuf-generate ``` ### Generating code SQLC utilizes our process / WASM plugin to generate code: ``` -make sqlc-generate # process plugin - regenerates the examples and the codegen requests -make setup-wasm-plugin # builds the WASM plugin into dist/plugin.wasm -sqlc -f sqlc.ci.yaml diff # verifies the WASM plugin generates exactly the committed examples +make sqlc-generate-process +make sqlc-generate-wasm ``` ### Testing generated code Testing the SQLC generated code via a predefined flow: ``` -make unit-tests # codegen and repository unit tests -make test-plugin # regenerates everything, builds the solution and runs the end-to-end tests (needs Docker) +make test-process-plugin +make test-wasm-plugin ``` ## Release flow @@ -630,7 +602,7 @@ overrides: ### Config ```yaml useDapper: true -targetFramework: net10.0 +targetFramework: net8.0 generateCsproj: true namespaceName: NpgsqlDapperExampleGen overrides: @@ -786,7 +758,7 @@ overrides: ### Config ```yaml useDapper: false -targetFramework: net9.0 +targetFramework: net8.0 generateCsproj: true namespaceName: MySqlConnectorExampleGen overrides: @@ -930,7 +902,7 @@ overrides: ### Config ```yaml useDapper: false -targetFramework: net10.0 +targetFramework: net8.0 generateCsproj: true namespaceName: SqliteExampleGen overrides: @@ -973,7 +945,7 @@ overrides: ### Config ```yaml useDapper: true -targetFramework: net9.0 +targetFramework: net8.0 generateCsproj: true namespaceName: SqliteDapperExampleGen overrides: From 322faf0acd95255f8c468f23ac0ffb8d3077ebf0 Mon Sep 17 00:00:00 2001 From: Doron Eli Rachman Date: Sat, 24 Oct 2026 15:38:28 +0300 Subject: [PATCH 3/5] fix: drop CS9057 suppression on .NET 10 SDK and align tests with ArgumentException Co-Authored-By: Claude Sonnet 5.5 --- Directory.Build.props | 6 ------ unit-tests/CodegenTests/ExtensionsTests.cs | 2 +- unit-tests/CodegenTests/OptionsTests.cs | 2 +- 3 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 Directory.Build.props diff --git a/Directory.Build.props b/Directory.Build.props deleted file mode 100644 index 09608ab2..00000000 --- a/Directory.Build.props +++ /dev/null @@ -1,6 +0,0 @@ - - - - $(NoWarn);CS9057 - - diff --git a/unit-tests/CodegenTests/ExtensionsTests.cs b/unit-tests/CodegenTests/ExtensionsTests.cs index 14f6c219..3dbf48da 100644 --- a/unit-tests/CodegenTests/ExtensionsTests.cs +++ b/unit-tests/CodegenTests/ExtensionsTests.cs @@ -155,7 +155,7 @@ public void TestDotnetFrameworkNameRoundTrip(DotnetFramework framework, string n [Test] public void TestParseUnknownFrameworkThrows() { - Assert.Throws(() => DotnetFrameworkExtensions.ParseName("net6.0")); + Assert.Throws(() => DotnetFrameworkExtensions.ParseName("net6.0")); } [TestCase(DotnetFramework.Dotnet80, true)] diff --git a/unit-tests/CodegenTests/OptionsTests.cs b/unit-tests/CodegenTests/OptionsTests.cs index f2a9c94e..66534254 100644 --- a/unit-tests/CodegenTests/OptionsTests.cs +++ b/unit-tests/CodegenTests/OptionsTests.cs @@ -99,7 +99,7 @@ public void TestAllOptionsAreParsed() [Test] public void TestUnknownTargetFrameworkThrows() { - Assert.Throws(() => + Assert.Throws(() => new Options(CreateRequest("sqlite", """{"targetFramework": "net6.0"}"""))); } From 76d4b48e4369aac35823abd2a25de4d245e21e46 Mon Sep 17 00:00:00 2001 From: Doron Eli Rachman Date: Sat, 24 Oct 2026 15:39:51 +0300 Subject: [PATCH 4/5] chore(deps): bump Microsoft.Data.Sqlite to 10.0.13 in net10.0 end2end tests Co-Authored-By: Claude Sonnet 5.5 --- end2end/EndToEndTests/EndToEndTests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/end2end/EndToEndTests/EndToEndTests.csproj b/end2end/EndToEndTests/EndToEndTests.csproj index 3ab6815e..c18929b7 100644 --- a/end2end/EndToEndTests/EndToEndTests.csproj +++ b/end2end/EndToEndTests/EndToEndTests.csproj @@ -22,7 +22,7 @@ - + From ce16efeca249bdcff18970398dbc4be0df7cdc3d Mon Sep 17 00:00:00 2001 From: Doron Eli Rachman Date: Sat, 24 Oct 2026 15:42:30 +0300 Subject: [PATCH 5/5] feat: default Microsoft.Data.Sqlite driver version to 10.0.13 Co-Authored-By: Claude Sonnet 5.5 --- AGENTS.md | 2 +- Drivers/SqliteDriver.cs | 2 +- benchmark/BenchmarkRunner/BenchmarkRunner.csproj | 2 +- benchmark/SqliteSqlcImpl/SqliteSqlcImpl.csproj | 2 +- docs/03_Usage.md | 2 +- end2end/EndToEndCommon/EndToEndCommon.csproj | 2 +- end2end/EndToEndTestsLegacy/EndToEndTestsLegacy.csproj | 2 +- examples/QuickStartSqliteDalGen/QuickStartSqliteDalGen.csproj | 2 +- examples/SqliteDapperExample/SqliteDapperExample.csproj | 2 +- .../SqliteDapperLegacyExample/SqliteDapperLegacyExample.csproj | 2 +- examples/SqliteExample/SqliteExample.csproj | 2 +- examples/SqliteLegacyExample/SqliteLegacyExample.csproj | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index e5173382..e7615d7e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -105,7 +105,7 @@ DbDriver InstantiateDriver() | Option | Default | Description | |--------|---------|-------------| -| `overrideDriverVersion` | 2.4.0 (MySql), 8.0.6 (Npgsql), 9.0.0 (Sqlite) | Override DB driver version | +| `overrideDriverVersion` | 2.4.0 (MySql), 8.0.6 (Npgsql), 10.0.13 (Sqlite) | Override DB driver version | | `targetFramework` | net8.0 | .NET Standard 2.0/2.1, .NET 8.0, 9.0 or 10.0 (the plugin itself runs on .NET 10, independent of this option) | | `generateCsproj` | true | Generate .csproj file | | `namespaceName` | Project name | Override generated namespace | diff --git a/Drivers/SqliteDriver.cs b/Drivers/SqliteDriver.cs index 7b5c7a8e..ba46984f 100644 --- a/Drivers/SqliteDriver.cs +++ b/Drivers/SqliteDriver.cs @@ -14,7 +14,7 @@ public sealed partial class SqliteDriver( IList queries) : DbDriver(options, catalog, queries), IOne, IMany, IExec, IExecRows, IExecLastId, ICopyFrom { - private const string DefaultSqliteVersion = "9.0.0"; + private const string DefaultSqliteVersion = "10.0.13"; private static readonly HashSet IntegerDbTypes = ["integer", "integernotnulldefaultunixepoch"]; diff --git a/benchmark/BenchmarkRunner/BenchmarkRunner.csproj b/benchmark/BenchmarkRunner/BenchmarkRunner.csproj index 3e8bae0e..4a9864aa 100644 --- a/benchmark/BenchmarkRunner/BenchmarkRunner.csproj +++ b/benchmark/BenchmarkRunner/BenchmarkRunner.csproj @@ -21,7 +21,7 @@ - + diff --git a/benchmark/SqliteSqlcImpl/SqliteSqlcImpl.csproj b/benchmark/SqliteSqlcImpl/SqliteSqlcImpl.csproj index f8219020..40f77dc0 100644 --- a/benchmark/SqliteSqlcImpl/SqliteSqlcImpl.csproj +++ b/benchmark/SqliteSqlcImpl/SqliteSqlcImpl.csproj @@ -14,7 +14,7 @@ - +
\ No newline at end of file diff --git a/docs/03_Usage.md b/docs/03_Usage.md index 946e7539..82f5a472 100644 --- a/docs/03_Usage.md +++ b/docs/03_Usage.md @@ -3,7 +3,7 @@ | Option | Possible values | Optional | Info | |-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| overrideDriverVersion | default:
`2.4.0` for MySqlConnector (mysql)
`8.0.6` for Npgsql (postgresql)
`9.0.0` for Microsoft.Data.Sqlite (sqlite)

values: The desired driver version | Yes | Allows you to override the version of DB driver to be used. | +| 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. | | 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 | diff --git a/end2end/EndToEndCommon/EndToEndCommon.csproj b/end2end/EndToEndCommon/EndToEndCommon.csproj index e254c45c..91a12126 100644 --- a/end2end/EndToEndCommon/EndToEndCommon.csproj +++ b/end2end/EndToEndCommon/EndToEndCommon.csproj @@ -7,7 +7,7 @@ - + diff --git a/end2end/EndToEndTestsLegacy/EndToEndTestsLegacy.csproj b/end2end/EndToEndTestsLegacy/EndToEndTestsLegacy.csproj index c20bbe10..8bfdb44c 100644 --- a/end2end/EndToEndTestsLegacy/EndToEndTestsLegacy.csproj +++ b/end2end/EndToEndTestsLegacy/EndToEndTestsLegacy.csproj @@ -21,7 +21,7 @@ - + diff --git a/examples/QuickStartSqliteDalGen/QuickStartSqliteDalGen.csproj b/examples/QuickStartSqliteDalGen/QuickStartSqliteDalGen.csproj index 9482e7ee..b91a9c71 100644 --- a/examples/QuickStartSqliteDalGen/QuickStartSqliteDalGen.csproj +++ b/examples/QuickStartSqliteDalGen/QuickStartSqliteDalGen.csproj @@ -14,7 +14,7 @@ - +
\ No newline at end of file diff --git a/examples/SqliteDapperExample/SqliteDapperExample.csproj b/examples/SqliteDapperExample/SqliteDapperExample.csproj index 40476d89..2d93f999 100644 --- a/examples/SqliteDapperExample/SqliteDapperExample.csproj +++ b/examples/SqliteDapperExample/SqliteDapperExample.csproj @@ -15,7 +15,7 @@ - +
\ No newline at end of file diff --git a/examples/SqliteDapperLegacyExample/SqliteDapperLegacyExample.csproj b/examples/SqliteDapperLegacyExample/SqliteDapperLegacyExample.csproj index 0bea2091..19244ff5 100644 --- a/examples/SqliteDapperLegacyExample/SqliteDapperLegacyExample.csproj +++ b/examples/SqliteDapperLegacyExample/SqliteDapperLegacyExample.csproj @@ -14,7 +14,7 @@ - +
\ No newline at end of file diff --git a/examples/SqliteExample/SqliteExample.csproj b/examples/SqliteExample/SqliteExample.csproj index eb7c4a3f..a817de9d 100644 --- a/examples/SqliteExample/SqliteExample.csproj +++ b/examples/SqliteExample/SqliteExample.csproj @@ -15,7 +15,7 @@ - +
\ No newline at end of file diff --git a/examples/SqliteLegacyExample/SqliteLegacyExample.csproj b/examples/SqliteLegacyExample/SqliteLegacyExample.csproj index 8c8f7794..634a902f 100644 --- a/examples/SqliteLegacyExample/SqliteLegacyExample.csproj +++ b/examples/SqliteLegacyExample/SqliteLegacyExample.csproj @@ -14,7 +14,7 @@ - +
\ No newline at end of file