Skip to content

Revisit: The God Provider Is Not Enough #844

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
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
9 changes: 7 additions & 2 deletions .paket/Paket.Restore.targets
Original file line number Diff line number Diff line change
Expand Up @@ -235,14 +235,15 @@
<Splits>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',').Length)</Splits>
<PackageName>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0])</PackageName>
<PackageVersion>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1])</PackageVersion>
<Reference>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[2])</Reference>
<AllPrivateAssets>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4])</AllPrivateAssets>
<CopyLocal Condition="%(PaketReferencesFileLinesInfo.Splits) &gt;= 6">$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[5])</CopyLocal>
<OmitContent Condition="%(PaketReferencesFileLinesInfo.Splits) &gt;= 7">$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[6])</OmitContent>
<ImportTargets Condition="%(PaketReferencesFileLinesInfo.Splits) &gt;= 8">$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[7])</ImportTargets>
<Aliases Condition="%(PaketReferencesFileLinesInfo.Splits) &gt;= 9">$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[8])</Aliases>
</PaketReferencesFileLinesInfo>
<PackageReference Include="%(PaketReferencesFileLinesInfo.PackageName)">
<Version>%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
<PackageReference Condition=" '$(ManagePackageVersionsCentrally)' != 'true' Or '%(PaketReferencesFileLinesInfo.Reference)' == 'Direct' " Include="%(PaketReferencesFileLinesInfo.PackageName)">
<Version Condition=" '$(ManagePackageVersionsCentrally)' != 'true' ">%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
<PrivateAssets Condition=" ('%(PaketReferencesFileLinesInfo.AllPrivateAssets)' == 'true') Or ('$(PackAsTool)' == 'true') ">All</PrivateAssets>
<ExcludeAssets Condition=" %(PaketReferencesFileLinesInfo.CopyLocal) == 'false' or %(PaketReferencesFileLinesInfo.AllPrivateAssets) == 'exclude'">runtime</ExcludeAssets>
<ExcludeAssets Condition=" %(PaketReferencesFileLinesInfo.OmitContent) == 'true'">$(ExcludeAssets);contentFiles</ExcludeAssets>
Expand All @@ -252,6 +253,10 @@
<AllowExplicitVersion>true</AllowExplicitVersion>

</PackageReference>

<PackageVersion Include="%(PaketReferencesFileLinesInfo.PackageName)">
<Version>%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
</PackageVersion>
</ItemGroup>

<PropertyGroup>
Expand Down
Binary file modified .paket/paket.exe
Binary file not shown.
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,17 @@ your program or the program using your library: http://msdn.microsoft.com/en-us/

The default maintainer account for projects under "fsprojects" is [@fsprojectsgit](https://github.com/fsprojectsgit) - F# Community Project Incubation Space (repo management)

## Nuget Packages

Depending on the used provider, the namespace of SqlDataProvider type class may vary.

- [SQLProvider](https://www.nuget.org/packages/SQLProvider) - Generic provider supports all databases, but needs some manual setup of reference assemblies
- [SQLProvider.MsSql](https://www.nuget.org/packages/SQLProvider.MsSql) - Microsoft SQL Server (and SSDT) only, using Microsoft.Data.SqlClient
- [SQLProvider.PostgreSql](https://www.nuget.org/packages/SQLProvider.PostgreSql) - PostgreSQL only
- [SQLProvider.MySql](https://www.nuget.org/packages/SQLProvider.MySql) - MySQL and MariaDB only
- [SQLProvider.FireBird](https://www.nuget.org/packages/SQLProvider.FireBird) - FireBird only
- [SQLProvider.SQLite](https://www.nuget.org/packages/SQLProvider.SQLite) - SQLite only
- [SQLProvider.Oracle](https://www.nuget.org/packages/SQLProvider.Oracle) - Oracle only
- [SQLProvider.Odbc](https://www.nuget.org/packages/SQLProvider.Odbc) - ODBC connections only
- [SQLProvider.DuckDb](https://www.nuget.org/packages/SQLProvider.DuckDb) - DuckDB only

337 changes: 319 additions & 18 deletions SQLProvider.sln

Large diffs are not rendered by default.

68 changes: 54 additions & 14 deletions build.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -95,15 +95,53 @@ let environVarOrDefault varName defaultValue =
// The name of the project
// (used by attributes in AssemblyInfo, name of a NuGet package and directory in 'src')

let project = "SQLProvider"
type Project = {
name:string;
/// Short summary of the project
/// (used as description in AssemblyInfo and as a short summary for NuGet package)
summary:string;
/// Longer description of the project
/// (used as a description for NuGet package; line breaks are automatically cleaned up)
description:string;
/// List of dependencies
dependencies:(string * string) list }

// Short summary of the project
// (used as description in AssemblyInfo and as a short summary for NuGet package)
let summary = "Type providers for SQL database access."
let projects =
[{name="SQLProvider.Common";summary="Type provider for SQL database access, common library";description="Common functionality to all SQL type-providers";dependencies=[]};
{name="SQLProvider.DesignTime";summary="Type providers for any SQL database access.";description="Type providers for SQL database access.";dependencies=[]};
{name="SQLProvider.Runtime";summary="Type providers for any SQL database access.";description="Type providers for SQL database access.";dependencies=[]};

// Longer description of the project
// (used as a description for NuGet package; line breaks are automatically cleaned up)
let description = "Type providers for SQL database access."
{name="SQLProvider.DuckDb.DesignTime";summary="Type providers for DuckDb database access.";description="Type providers for DuckDb database access.";dependencies=[]};
{name="SQLProvider.DuckDb.Runtime";summary="Type providers for DuckDb database access.";description="Type providers for DuckDb database access.";dependencies=[]};

{name="SQLProvider.FireBird.DesignTime";summary="Type providers for FireBird database access.";description="Type providers for FireBird database access.";dependencies=[]};
{name="SQLProvider.FireBird.Runtime";summary="Type providers for FireBird database access.";description="Type providers for FireBird database access.";dependencies=[]};

{name="SQLProvider.MsSql.DesignTime";summary="Type providers for Microsoft SQL Server database access.";description="Type providers for Microsoft SQL Server database access.";dependencies=[]};
{name="SQLProvider.MsSql.Runtime";summary="Type providers for Microsoft SQL Server database access.";description="Type providers for Microsoft SQL Server database access.";dependencies=[]};

{name="SQLProvider.MySql.DesignTime";summary="Type providers for MySSQL database and MariaDB database access.";description="Type providers for MySSQL database and MariaDB database access with the official driver.";dependencies=[]};
{name="SQLProvider.MySql.Runtime";summary="Type providers for MySSQL database and MariaDB database access.";description="Type providers for MySSQL database and MariaDB database access with the official driver.";dependencies=[]};

{name="SQLProvider.MySqlConnector.DesignTime";summary="Type providers for MySSQL database and MariaDB database access via MySqlConnector.";description="Type providers for MySSQL database and MariaDB database access via MySqlConnector.";dependencies=[]};
{name="SQLProvider.MySqlConnector.Runtime";summary="Type providers for MySSQL database and MariaDB database access via MySqlConnector.";description="Type providers for MySSQL database and MariaDB database access via MySqlConnector.";dependencies=[]};

{name="SQLProvider.Odbc.DesignTime";summary="Type providers for any ODBC connection database access.";description="Type providers for any ODBC connection database access.";dependencies=[]};
{name="SQLProvider.Odbc.Runtime";summary="Type providers for any ODBC connection database access.";description="Type providers for any ODBC connection database access.";dependencies=[]};

{name="SQLProvider.Oracle.DesignTime";summary="Type providers for Oracle database access.";description="Type providers for Oracle database access.";dependencies=[]};
{name="SQLProvider.Oracle.Runtime";summary="Type providers for Oracle database access.";description="Type providers for Oracle database access.";dependencies=[]};

{name="SQLProvider.MsAccess.DesignTime";summary="Type providers for Microsoft Access database access.";description="Type providers for Microsoft Access database access.";dependencies=[]};
{name="SQLProvider.MsAccess.Runtime";summary="Type providers for Microsoft Access database access.";description="Type providers for Microsoft Access database access.";dependencies=[]};

{name="SQLProvider.Postgresql.DesignTime";summary="Type providers for PostgreSql database access.";description="Type providers for PostgreSql database access.";dependencies=[]};
{name="SQLProvider.Postgresql.Runtime";summary="Type providers for PostgreSql database access.";description="Type providers for PostgreSql database access.";dependencies=[]};

{name="SQLProvider.SQLite.DesignTime";summary="Type providers for SQLite database access.";description="Type providers for SQLite database access.";dependencies=[]};
{name="SQLProvider.SQLite.Runtime";summary="Type providers for SQLite database access.";description="Type providers for SQLite database access.";dependencies=[]};

]

// List of author names (for NuGet package)
let authors = [ "Ross McKinlay, Colin Bull, Tuomas Hietanen" ]
Expand Down Expand Up @@ -134,13 +172,15 @@ let release = ReleaseNotes.load "docs/RELEASE_NOTES.md"

// Generate assembly info files with the right version & up-to-date information
Target.create "AssemblyInfo" (fun _ ->
let fileName = "src/Common/AssemblyInfo.fs"
Fake.DotNet.AssemblyInfoFile.createFSharp fileName
[ Fake.DotNet.AssemblyInfo.Title project
Fake.DotNet.AssemblyInfo.Product project
Fake.DotNet.AssemblyInfo.Description summary
Fake.DotNet.AssemblyInfo.Version release.AssemblyVersion
Fake.DotNet.AssemblyInfo.FileVersion release.AssemblyVersion ]
projects
|> Seq.iter (fun project ->
let fileName = "src/" + project.name + "/AssemblyInfo.fs"
Fake.DotNet.AssemblyInfoFile.createFSharp fileName
[ Fake.DotNet.AssemblyInfo.Title project.name
Fake.DotNet.AssemblyInfo.Product "SQLProvider"
Fake.DotNet.AssemblyInfo.Description project.summary
Fake.DotNet.AssemblyInfo.Version release.AssemblyVersion
Fake.DotNet.AssemblyInfo.FileVersion release.AssemblyVersion ])
)

// --------------------------------------------------------------------------------------
Expand Down
3 changes: 3 additions & 0 deletions docs/RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
### 1.5.0-alpha3 - 18.04.2025
* Packaging restructure

### 1.4.13 - 08.04.2025
* SSDT: Initial support for SQL functions, PR #781
* Expression.optimizer update
Expand Down
18 changes: 11 additions & 7 deletions paket.dependencies
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ nuget System.Reflection.TypeExtensions
nuget System.Data.Common
nuget System.Data.Odbc
nuget Microsoft.Data.SQLite 2.0
nuget Microsoft.Data.SqlClient framework: net8.0, net6.0, netstandard2.1
nuget Microsoft.Data.SqlClient framework: net462, netstandard2.0, net8.0, net6.0, netstandard2.1
nuget System.Memory
nuget System.Text.Encodings.Web 9.0.4

group Build

Expand Down Expand Up @@ -80,20 +81,23 @@ group Docs

group Tests
source https://api.nuget.org/v3/index.json
frameworks: netcoreapp3.1, net472, net48
frameworks: netcoreapp3.1, net472, net48, net8.0, net6.0, netstandard2.1, netstandard2.0
storage: packages

nuget MySql.Data < 7.0.0
nuget MySqlConnector 2.3.1
nuget Microsoft.NET.Test.Sdk
nuget NUnit3TestAdapter
nuget Newtonsoft.Json
nuget Npgsql < 4.0
nuget Npgsql 8.0.7
nuget NUnit 3.14.0
nuget Oracle.ManagedDataAccess 12.2.1100
nuget FirebirdSql.Data.FirebirdClient 5.12.1
nuget System.Data.SQLite.Core 1.0.105.2
nuget System.Data.SQLite.Linq 1.0.105.2
nuget Oracle.ManagedDataAccess 23.8.0
nuget Oracle.ManagedDataAccess.Core 23.8.0
nuget FirebirdSql.Data.FirebirdClient 10.3.2
nuget System.Data.SQLite.Core 1.0.119
nuget System.Data.SQLite.Linq 1.0.119
nuget SQLitePCLRaw.bundle_green
nuget Microsoft.Data.Sqlite.Core
nuget DuckDB.NET.Bindings.Full
nuget DuckDB.NET.Data.Full
// nuget Microsoft.Data.Sqlite.Core.Backport // Needed if we want currently Core support on Linux.
Loading