{"id":15411884,"url":"https://github.com/jodendaal/graphql.sql.builder","last_synced_at":"2025-04-19T11:34:19.318Z","repository":{"id":142845988,"uuid":"421816106","full_name":"jodendaal/GraphQL.SQL.Builder","owner":"jodendaal","description":"SQL Query Builder Utility for .NET","archived":false,"fork":false,"pushed_at":"2023-01-21T16:37:25.000Z","size":72,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T20:43:44.338Z","etag":null,"topics":["csharp","dotnet","dotnet-core","dynamic-sql","generator","graphql","query","query-builder","sql","sqlserver"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jodendaal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-27T12:49:12.000Z","updated_at":"2023-11-24T02:51:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"4896e453-156c-4861-999f-d61c0510b754","html_url":"https://github.com/jodendaal/GraphQL.SQL.Builder","commit_stats":{"total_commits":60,"total_committers":1,"mean_commits":60.0,"dds":0.0,"last_synced_commit":"1f4db316940e3461cd610952e626028f7379a0cc"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jodendaal%2FGraphQL.SQL.Builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jodendaal%2FGraphQL.SQL.Builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jodendaal%2FGraphQL.SQL.Builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jodendaal%2FGraphQL.SQL.Builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jodendaal","download_url":"https://codeload.github.com/jodendaal/GraphQL.SQL.Builder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249685188,"owners_count":21310563,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","dotnet-core","dynamic-sql","generator","graphql","query","query-builder","sql","sqlserver"],"created_at":"2024-10-01T16:50:29.924Z","updated_at":"2025-04-19T11:34:19.297Z","avatar_url":"https://github.com/jodendaal.png","language":"C#","readme":"# GraphQL.SQL.Builder for .NET\n[![.NET](https://github.com/jodendaal/GraphQL.SQL.Builder/actions/workflows/dotnet.yml/badge.svg?branch=main)](https://github.com/jodendaal/GraphQL.SQL.Builder/actions/workflows/dotnet.yml)  [![NuGet Badge](https://buildstats.info/nuget/GraphQL.SQL.Builder)](https://www.nuget.org/packages/GraphQL.SQL.Builder)  [![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/arco-design/arco-design/blob/main/LICENSE)\n\nSQL Query Builder Utility \n\nUseful for scenarios where dynamic SQL is required. Supports multiple condition set logic.\n\nGenerate Select, Insert, Update and Delete statements with parameters.\n\nAdditional features include : Paging, Advanced Condition Sets, Auto Parameter Naming\n\nCurrently used in  [GraphQL.SQL](https://github.com/jodendaal/GraphQL.SQL) for dynamically generating SQL statements.\n\n## Getting Started\n\n#### Install Package\n```\nInstall-Package GraphQL.SQL.Builder\n```\nhttps://www.nuget.org/packages/GraphQL.SQL.Builder/\n## Simple Usage\n   ```csharp\n    public DataTable GetUser(int userId)\n    {\n        var query = new SelectQueryBuilder(\"Users\", \"U\");\n        query.Field(\"UserId\", \"Id\").\n              Field(\"UserName\").\n              Field(\"Password\").\n              Condition(\"U.UserId\", ColumnOperator.Equals, query.AddParam(userId,\"UserId\"));\n        var sqlCommand = query.ToCommand();\n\n        var table = new DataTable();\n        using (var connection = new SqlConnection(\"connection_string\"))\n        {\n            connection.Open();\n            sqlCommand.Connection = connection;\n\n            using (var dataAdapter = new SqlDataAdapter(sqlCommand))\n            {\n                dataAdapter.Fill(table);\n            }\n        }\n\n        return table;\n    }\n   ```\n##### Output\n```sql\n    SELECT\n          UserId AS Id,\n          UserName,\n          Password\n    FROM Users U\n    WHERE U.UserId = @UserId\n    \n    --Parameters\n    @UserId=1\n```\n## Paging\n```csharp\n    var query = new SelectQueryBuilder(\"Users\");\n    query.Field(\"UserId\").\n          Field(\"UserName\").\n          Condition(\"UserId\", ColumnOperator.Equals, query.AddParam(1,\"UserId\")).\n          Page(query.AddParam(1, \"_PageNumber\"), query.AddParam(10, \"_PageSize\"), \"UserId\");\n```    \n##### Output\n```sql\n    SELECT\n        UserId,\n        UserName\n    FROM Users\n    WHERE UserId = @UserId\n    ORDER BY UserId\n    OFFSET @_PageSize * (@_PageNumber - 1)\n    ROWS FETCH NEXT @_PageSize ROWS ONLY\n\n    --Parameters\n    @_PageNumber=1,@_PageSize=10,@UserId=1\n```\n## Condition Sets Usage\n```csharp\n    //Find users who are admins and username is either tim or connor\n      var query = new SelectQueryBuilder(\"Users\");\n      query.Field(\"UserId\").\n            Field(\"UserName\").\n            Field(\"IsAdmin\").\n            Condition(\"IsAdmin\", ColumnOperator.Equals, query.AddParam(true,\"IsAdmin\")).\n            ConditionSet(1, SetOperator.And, (set) =\u003e\n            {\n                set.OrCondition(\"UserName\", ColumnOperator.Equals, query.AddParam(\"tim\")).\n                OrCondition(\"UserName\", ColumnOperator.Equals, query.AddParam(\"connor\"));\n            });\n```    \n##### Output\n```sql\n    SELECT\n         UserId,\n         UserName,\n         IsAdmin\n     FROM Users\n     WHERE (IsAdmin = @IsAdmin) AND (UserName = @p_1 OR UserName = @p_2)\n\n    --Parameters\n    @IsAdmin=1,@p_1='tim',@p_2='connor'\n```\n## Multiple Condition Sets\n\n```csharp  \n    //(Find users who are admins and username is either tim or connor) and password='password'\n    var query = new SelectQueryBuilder(\"Users\");\n    query.Field(\"UserId\").\n            Field(\"UserName\").\n            Field(\"IsAdmin\").\n            Field(\"Password\").\n            ConditionSet(1, SetOperator.And, (set) =\u003e\n            {\n                set.AndCondition(\"IsAdmin\", ColumnOperator.Equals, query.AddParam(true, \"IsAdmin\")).\n                OrCondition(\"UserName\", ColumnOperator.Equals, query.AddParam(\"tim\")).\n                OrCondition(\"UserName\", ColumnOperator.Equals, query.AddParam(\"connor\"));\n            }).\n            ConditionSet(2, SetOperator.And, (set) =\u003e\n            {\n                set.OrCondition(\"Password\", ColumnOperator.Equals, query.AddParam(\"password\")).\n                    OrCondition(\"Password\", ColumnOperator.Equals, query.AddParam(\"Test123\")).\n            });\n```    \n##### Output\n```sql\n    SELECT\n        UserId,\n        UserName,\n        IsAdmin,\n        Password\n    FROM Users\n    WHERE (((IsAdmin = @IsAdmin) AND (UserName = @p_1 OR UserName = @p_2))) AND (Password = @p_3 or Password=@p_4)\n                \n    --Parameters\n    @IsAdmin=1,@p_1='tim',@p_2='connor',@p_3='password'\n```\n## Select\n```csharp\n    var query = new SelectQueryBuilder(\"Users\", \"U\");\n    query.Field(\"UserId\", \"Id\").\n          Field(\"UserName\").\n          Field(\"Password\").\n          Condition(\"U.UserId\", ColumnOperator.Equals, \"1\");\n```\n##### Output\n```sql\n    SELECT\n          UserId AS Id,\n          UserName,\n          Password\n    FROM Users U\n    WHERE U.UserId = 1\n```\n## Insert\n```csharp\n    var insert = new InsertQueryBuilder(\"Users\");\n        insert.Field(\"UserId\", insert.AddParam(\"1\")).\n               Field(\"Password\", insert.AddParam(\"test123\"));\n```\n##### Output\n```sql\n    INSERT INTO Users\n    (\n        UserId,\n        Password\n    )\n    VALUES\n    (\n        @p_0,\n        @p_1\n    )\n```\n\n## Insert From Select\n```csharp\n    var insert = new InsertQueryBuilder(\"Users\");\n        insert.Field(\"UserId\").\n                Field(\"Password\").\n                From(\"Users_Backup\", \"UB\", (query) =\u003e\n                {\n                    query.Field(\"UB.UserId\").\n                            Field(\"UB.Password\").\n                            Condition(\"UB.UserId\", ColumnOperator.Equals, insert.AddParam(1, \"UserId\"));\n                });\n```\n##### Output\n```sql\n    INSERT INTO Users\n    (\n        UserId,\n        Password\n    )\n    SELECT\n        UB.UserId,\n        UB.Password\n    FROM Users_Backup UB\n    WHERE UB.UserId = @UserId\n```\n\n## Update\n```csharp\n    var update = new UpdateQueryBuilder(\"Users\");\n        update.Field(\"UserId\", update.AddParam(10, \"NewUserId\")).\n               Field(\"Password\", update.AddParam(\"3423\", \"Password\")).\n               Condition(\"UserId\", ColumnOperator.Equals, update.AddParam(\"1\", \"UserId\"));\n```\n##### Output\n```sql\n    UPDATE Users\n    SET UserId=@NewUserId,\n        Password=@Password\n    WHERE UserId = @UserId\n```\n\n## Update from Join\n```csharp\n     var update = new UpdateQueryBuilder(\"Users\",\"U\");\n         update.Join(\"User_Backup UB\", JoinType.Inner, \"UB.UserId=U.UserId\").\n                Field(\"Password\", \"UB.Password\").\n                Condition(\"U.UserId\", ColumnOperator.Equals, update.AddParam(\"1\", \"UserId\"));\n```\n##### Output\n```sql\n    UPDATE U\n        SET Password=UB.Password\n    FROM Users U\n    INNER JOIN User_Backup UB ON UB.UserId=U.UserId\n    WHERE U.UserId = @UserId\n```\n\n## Delete\n```csharp\n    var delete = new DeleteQueryBuilder(\"Users\");\n        delete.Condition(\"UserId\", ColumnOperator.Equals, delete.AddParam(\"1\", \"UserId\"));\n```\n##### Output\n```sql\n    DELETE FROM Users\n    WHERE UserId = @UserId\n```\n\n## Delete With Join\n```csharp\n    var delete = new DeleteQueryBuilder(\"Users\",\"U\");\n        delete.Join(\"User_Backup UB\", JoinType.Inner, \"UB.UserId=U.UserId\").\n               Condition(\"U.UserId\", ColumnOperator.Equals, delete.AddParam(\"1\", \"UserId\"));\n```\n##### Output\n```sql\n    DELETE U FROM Users U\n    INNER JOIN User_Backup UB ON UB.UserId=U.UserId\n    WHERE U.UserId = @UserId\n```\n\n## Join\n```csharp\n    var query = new SelectQueryBuilder(\"Users\", \"U\");\n    query.Field(\"U.UserId\", \"Id\").\n          Field(\"U.UserName\").\n          Field(\"U.Password\").\n          Join(\"Preferences P\",JoinType.Inner,\"P.UserId = U.UserId\").\n          Field(\"P.Theme\").\n          Condition(\"U.UserId\", ColumnOperator.Equals, \"1\");\n```\n##### Output\n```sql\n    SELECT\n          U.UserId AS Id,\n          U.UserName,\n          U.Password,\n          P.Theme\n    FROM Users U\n    INNER JOIN Preferences P ON P.UserId = U.UserId\n    WHERE U.UserId = 1\n```\n## Count\n```csharp\n    var query = new SelectQueryBuilder(\"Users\", \"U\");\n    query.Count(\"*\", \"[RecordCount]\").\n          Condition(\"U.UserId\", ColumnOperator.Equals, \"1\");\n```\n##### Output\n```sql\n    SELECT\n        COUNT(*) AS [RecordCount]\n    FROM Users U\n    WHERE U.UserId = 1\n```    \n# Buy me a coffee \nhttps://www.buymeacoffee.com/timdoestech?new=1\n","funding_links":["https://www.buymeacoffee.com/timdoestech?new=1"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjodendaal%2Fgraphql.sql.builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjodendaal%2Fgraphql.sql.builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjodendaal%2Fgraphql.sql.builder/lists"}