Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defaults:
shell: bash

env:
SQLC_VERSION: 1.27.0
SQLC_VERSION: 1.30.0
WASI_SDK_VERSION: 22
DOTNET_VERSION: '8.0.x'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ defaults:

env:
DOTNET_VERSION: '8.0.x'
SQLC_VERSION: 1.27.0
SQLC_VERSION: 1.30.0

on:
push:
Expand Down
2 changes: 1 addition & 1 deletion CodegenTests/test-requests/DefaultSchemaEnum/request.json
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,6 @@
}
}
],
"sqlc_version": "v1.27.0",
"sqlc_version": "v1.30.0",
"plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZX0="
}
Original file line number Diff line number Diff line change
Expand Up @@ -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.27.0*³{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrideDapperVersion":"","overrides":null,"debugRequest":false}
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}
Expand Down
2 changes: 1 addition & 1 deletion CodegenTests/test-requests/SchemaScopedEnum/request.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,6 @@
"filename": "query.sql"
}
],
"sqlc_version": "v1.27.0",
"sqlc_version": "v1.30.0",
"plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZX0="
}
Original file line number Diff line number Diff line change
Expand Up @@ -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.27.0*³{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrideDapperVersion":"","overrides":null,"debugRequest":false}
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}
28 changes: 18 additions & 10 deletions Drivers/ColumnMapping.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,30 @@ namespace SqlcGenCsharp.Drivers;

public record DbTypeInfo(int? Length = null, string? NpgsqlTypeOverride = null);

public delegate string ReaderFn(int ordinal);

public delegate string WriterFn(string el, bool notNull, bool isDapper);

public delegate string ConvertFunc(string el);

public delegate string SqlMapperImplFunc(bool isDotnetCore);

public class ColumnMapping(
Dictionary<string, DbTypeInfo> dbTypes,
Func<int, string> readerFn,
Func<int, string>? readerArrayFn = null,
ReaderFn readerFn,
ReaderFn? readerArrayFn = null,
string? usingDirective = null,
Func<string, bool, bool, string>? writerFn = null,
Func<string, string>? convertFunc = null,
WriterFn? writerFn = null,
ConvertFunc? convertFunc = null,
string? sqlMapper = null,
Func<bool, string>? sqlMapperImpl = null)
SqlMapperImplFunc? sqlMapperImpl = null)
{
public Dictionary<string, DbTypeInfo> DbTypes { get; } = dbTypes;
public Func<int, string> ReaderFn { get; } = readerFn;
public Func<int, string>? ReaderArrayFn { get; } = readerArrayFn;
public ReaderFn ReaderFn { get; } = readerFn;
public ReaderFn? ReaderArrayFn { get; } = readerArrayFn;
public string? UsingDirective { get; } = usingDirective;
public Func<string, bool, bool, string>? WriterFn { get; } = writerFn;
public Func<string, string>? ConvertFunc { get; } = convertFunc;
public WriterFn? WriterFn { get; } = writerFn;
public ConvertFunc? ConvertFunc { get; } = convertFunc;
public string? SqlMapper { get; } = sqlMapper;
public Func<bool, string>? SqlMapperImpl { get; } = sqlMapperImpl;
public SqlMapperImplFunc? SqlMapperImpl { get; } = sqlMapperImpl;
}
2 changes: 1 addition & 1 deletion Drivers/DbDriver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ private static bool DoesColumnMappingApply(ColumnMapping columnMapping, Column c
return typeInfo.Length.Value == column.Length;
}

public virtual Func<string, bool, bool, string>? GetWriterFn(Column column, Query query)
public virtual WriterFn? GetWriterFn(Column column, Query query)
{
var csharpType = GetCsharpTypeWithoutNullableSuffix(column, query);
var writerFn = ColumnMappings.GetValueOrDefault(csharpType)?.WriterFn;
Expand Down
4 changes: 2 additions & 2 deletions Drivers/MySqlConnectorDriver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ public sealed partial class MySqlConnectorDriver(

public override string TransactionClassName => "MySqlTransaction";

private static readonly Func<bool, string> JsonElementTypeHandler = _ => $$"""
private static readonly SqlMapperImplFunc JsonElementTypeHandler = _ => $$"""
private class JsonElementTypeHandler : SqlMapper.TypeHandler<JsonElement>
{
public override JsonElement Parse(object value)
Expand Down Expand Up @@ -613,7 +613,7 @@ private bool IsSetDataType(Column column)
return enumType is not null && IsSetDataType(column, enumType);
}

public override Func<string, bool, bool, string>? GetWriterFn(Column column, Query query)
public override WriterFn? GetWriterFn(Column column, Query query)
{
var csharpType = GetCsharpTypeWithoutNullableSuffix(column, query);
var writerFn = ColumnMappings.GetValueOrDefault(csharpType)?.WriterFn;
Expand Down
6 changes: 3 additions & 3 deletions Drivers/NpgsqlDriver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ public NpgsqlDriver(

public override string TransactionClassName => "NpgsqlTransaction";

private static readonly Func<bool, string> JsonElementTypeHandler = _ => $$"""
private static readonly SqlMapperImplFunc JsonElementTypeHandler = _ => $$"""
private class JsonElementTypeHandler : SqlMapper.TypeHandler<JsonElement>
{
public override JsonElement Parse(object value)
Expand All @@ -362,7 +362,7 @@ public override void SetValue(IDbDataParameter parameter, JsonElement value)
}
""";

private static readonly Func<bool, string> XmlDocumentTypeHandler = isDotnetCore => $$"""
private static readonly SqlMapperImplFunc XmlDocumentTypeHandler = isDotnetCore => $$"""
private class XmlDocumentTypeHandler : SqlMapper.TypeHandler<XmlDocument>
{
public override XmlDocument Parse(object value)
Expand Down Expand Up @@ -597,7 +597,7 @@ string AddRowsToCopyCommand()
}
}

public override Func<string, bool, bool, string>? GetWriterFn(Column column, Query query)
public override WriterFn? GetWriterFn(Column column, Query query)
{
var csharpType = GetCsharpTypeWithoutNullableSuffix(column, query);
var writerFn = ColumnMappings.GetValueOrDefault(csharpType)?.WriterFn;
Expand Down
2 changes: 1 addition & 1 deletion examples/MySqlConnectorDapperExample/request.json
Original file line number Diff line number Diff line change
Expand Up @@ -3770,6 +3770,6 @@
"filename": "query.sql"
}
],
"sqlc_version": "v1.27.0",
"sqlc_version": "v1.30.0",
"plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik15U3FsQ29ubmVjdG9yRGFwcGVyRXhhbXBsZUdlbiIsInVzZURhcHBlciI6dHJ1ZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfaW50IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZX0="
}
Binary file modified examples/MySqlConnectorDapperExample/request.message
Binary file not shown.
2 changes: 1 addition & 1 deletion examples/MySqlConnectorDapperLegacyExample/request.json
Original file line number Diff line number Diff line change
Expand Up @@ -3770,6 +3770,6 @@
"filename": "query.sql"
}
],
"sqlc_version": "v1.27.0",
"sqlc_version": "v1.30.0",
"plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiTXlTcWxDb25uZWN0b3JEYXBwZXJMZWdhY3lFeGFtcGxlR2VuIiwidXNlRGFwcGVyIjp0cnVlLCJvdmVycmlkZURhcHBlclZlcnNpb24iOiIiLCJvdmVycmlkZXMiOlt7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF9pbnQiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6dHJ1ZX19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlfQ=="
}
Binary file modified examples/MySqlConnectorDapperLegacyExample/request.message
Binary file not shown.
2 changes: 1 addition & 1 deletion examples/MySqlConnectorExample/request.json
Original file line number Diff line number Diff line change
Expand Up @@ -3770,6 +3770,6 @@
"filename": "query.sql"
}
],
"sqlc_version": "v1.27.0",
"sqlc_version": "v1.30.0",
"plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik15U3FsQ29ubmVjdG9yRXhhbXBsZUdlbiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X2ludCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJpbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF90aW1lc3RhbXAiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjp0cnVlfX0seyJjb2x1bW4iOiIqOmNfanNvbl9zdHJpbmdfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2V9"
}
Binary file modified examples/MySqlConnectorExample/request.message
Binary file not shown.
2 changes: 1 addition & 1 deletion examples/MySqlConnectorLegacyExample/request.json
Original file line number Diff line number Diff line change
Expand Up @@ -3770,6 +3770,6 @@
"filename": "query.sql"
}
],
"sqlc_version": "v1.27.0",
"sqlc_version": "v1.30.0",
"plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiTXlTcWxDb25uZWN0b3JMZWdhY3lFeGFtcGxlR2VuIiwidXNlRGFwcGVyIjpmYWxzZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfaW50IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZX0="
}
Binary file modified examples/MySqlConnectorLegacyExample/request.message
Binary file not shown.
12 changes: 9 additions & 3 deletions examples/NpgsqlDapperExample/request.json
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,7 @@
"name": "postgres_special_types"
},
"type": {
"schema": "pg_catalog",
"name": "json"
}
},
Expand All @@ -611,6 +612,7 @@
"name": "postgres_special_types"
},
"type": {
"schema": "pg_catalog",
"name": "json"
}
},
Expand Down Expand Up @@ -35047,7 +35049,7 @@
"name": "postgres_special_types"
},
"type": {
"name": "json"
"name": "pg_catalog.json"
},
"originalName": "c_json"
}
Expand All @@ -35058,6 +35060,7 @@
"name": "c_json_string_override",
"length": -1,
"type": {
"schema": "pg_catalog",
"name": "json"
}
}
Expand Down Expand Up @@ -35155,6 +35158,7 @@
"name": "postgres_special_types"
},
"type": {
"schema": "pg_catalog",
"name": "json"
},
"originalName": "c_json"
Expand All @@ -35166,6 +35170,7 @@
"name": "postgres_special_types"
},
"type": {
"schema": "pg_catalog",
"name": "json"
},
"originalName": "c_json_string_override"
Expand Down Expand Up @@ -35275,7 +35280,7 @@
"name": "postgres_special_types"
},
"type": {
"name": "json"
"name": "pg_catalog.json"
},
"originalName": "c_json"
}
Expand Down Expand Up @@ -35322,6 +35327,7 @@
"notNull": true,
"length": -1,
"type": {
"schema": "pg_catalog",
"name": "json"
}
},
Expand Down Expand Up @@ -36121,6 +36127,6 @@
"filename": "query.sql"
}
],
"sqlc_version": "v1.27.0",
"sqlc_version": "v1.30.0",
"plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik5wZ3NxbERhcHBlckV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOnRydWUsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6dHJ1ZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNTcGVjaWFsVHlwZXNDbnQ6Y19qc29uIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikpzb25FbGVtZW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbmIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSnNvbkVsZW1lbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfeG1sX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX21hY2FkZHI4IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlfQ=="
}
Loading
Loading