JQLBuilder 1.1.0
See the version list below for details.
dotnet add package JQLBuilder --version 1.1.0
NuGet\Install-Package JQLBuilder -Version 1.1.0
<PackageReference Include="JQLBuilder" Version="1.1.0" />
paket add JQLBuilder --version 1.1.0
#r "nuget: JQLBuilder, 1.1.0"
// Install JQLBuilder as a Cake Addin #addin nuget:?package=JQLBuilder&version=1.1.0 // Install JQLBuilder as a Cake Tool #tool nuget:?package=JQLBuilder&version=1.1.0
JQL Builder
NOTE: In its current state, the package is in the beta phase, providing partial implementation for specified fields along with support for all functions and operators.
Introduction
This repository houses a C# library designed to provide a JQL (Jira Query Language) builder, aiding programmers in constructing JQL queries programmatically.
The JqlBuilder library provides a fluent interface for constructing Jira Query Language (JQL) queries in a flexible and expressive manner.
For more details about JQL, please refer to the wiki.
Getting Started
To start building JQL queries, use the JqlBuilder.Query
entry point. The library follows a fluent API design,
allowing you to chain methods to construct complex queries.
JqlBuilder.Query
.Where(f => f.Project == "example")
.And(f => f.Assignee == "john.doe")
.OrderBy(f => f.Project)
.ThenByDescending(f => f.Priority)
.ToString();
Query Construction
The library provides extension methods for constructing various parts of a JQL query:
Filtering
- Where: Start the query with a filter condition.
- And: Add an AND condition to the existing filter.
- Or: Add an OR condition to the existing filter.
JqlBuilder.Query
.Where(f => f.Project == "example")
.And(f => f.Assignee == "john.doe")
.Or(f => f.Status == "In Progress");
Ordering
- OrderBy: Specify the primary ordering field.
- OrderByDescending: Specify the primary ordering field in descending order.
- ThenBy: Add secondary ordering fields.
- ThenByDescending: Add secondary ordering fields in descending order.
JqlBuilder.Query
.OrderBy(f => f.Project)
.ThenByDescending(f => f.Priority)
.ThenBy(f => f.Assignee);
Building
The ToString
method is used to obtain the final JQL query string.
JqlBuilder.Query
.Where(f => f.Project == "example")
.And(f => f.Assignee == "john.doe")
.OrderBy(f => f.Project)
.ThenByDescending(f => f.Priority)
.ToString();
Supported JQL
The following table lists the supported fields and their corresponding types, along with the supported functions and operations grouped by type
Supported Fields
Fields | TYPE |
---|---|
AffectedVersion | VERSION |
Assignee | HISTORICAL_USER |
Attachment | ATTACHMENT |
Category | CATEGORY |
Component | COMPONENT |
Creator | USER |
Due | DATE |
DueDate | DATE |
FixVersion | VERSION |
Id | ISSUE |
Issue | ISSUE |
IssueKey | ISSUE |
IssueType | TYPE |
Key | ISSUE |
Labels | LABELS |
Parent | PARENT |
Priority | PRIORITY |
Project | PROJECT |
Reporter | HISTORICAL_USER |
Sprint | SPRINT |
Status | STATUS |
Summary | TEXT |
Type | TYPE |
Voter | USER |
Watcher | USER |
Supported Operators
Fields | TYPE |
---|---|
VERSION | = , != , > , >= , < , ⇐, IS, IS NOT, IN, NOT IN |
HISTORICAL_USER | = , !=, IS, IS NOT, IN, NOT IN, WAS, WAS IN, WAS NOT, WAS NOT IN, CHANGED |
ATTACHMENT | IS, IS NOT |
CATEGORY | =, !=, IS, IS NOT, IN, NOT IN |
TEXT | ~ , !~ |
COMPONENT | = , !=, IS , IS NOT , IN , NOT IN |
DATE | = , != , > , >= , < , ⇐ IS , IS NOT , IN , NOT IN |
USER | ~ , !~ , > , >= , < , ⇐ CHANGED, WAS, WAS IN, WAS NOT, WAS NOT IN |
ISSUE | = , != , > , >= , < , ⇐, IN, NOT IN |
LABELS | = , !=, IS, IS NOT, IN, NOT IN |
PARENT | =, !=, IN, NOT IN |
PRIORITY | = , != , > , >= , < , ⇐ IS , IS NOT, IN , NOT IN , WAS, WAS IN, WAS NOT, WAS NOT IN , CHANGED |
PROJECT | = , !=, IS , IS NOT, IN , NOT IN |
SPRINT | = , !=, IS , IS NOT, IN , NOT IN |
STATUS | = , != , > , >= , < , ⇐ IS , IS NOT, IN , NOT IN , WAS, WAS IN, WAS NOT, WAS NOT IN , CHANGED |
Type | = , !=, IS , IS NOT , IN , NOT IN |
Supported Functions
Type | Functions |
---|---|
DATE | now, currentLogin, lastLogin, startOfDay, startOfWeek, startOfMonth, startOfYear, endOfDay, endOfWeek, endOfMonth, endOfYear |
PROJECT | projectsLeadByUser, projectsWhereUserHasPermission, projectsWhereUserHasRole |
VERSION | latestReleasedVersion, latestUnreleasedVersion, releasedVersions, unreleasedVersions |
ISSUE | issueHistory, votedIssues, watchedIssues, linkedIssues |
USER | membersOf, currentUser |
HISTORICAL_USER | membersOf, currentUser |
SPRINT | openSprints, closedSprints |
COMPONENT | componentsLeadByUser |
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- JQLBuilder.Render (>= 1.1.0)
- JQLBuilder.Types (>= 1.1.0)
-
net7.0
- JQLBuilder.Render (>= 1.1.0)
- JQLBuilder.Types (>= 1.1.0)
-
net8.0
- JQLBuilder.Render (>= 1.1.0)
- JQLBuilder.Types (>= 1.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
1.3.0 | 287 | 2/18/2024 | |
1.3.0-pre.77b50f4 | 58 | 2/18/2024 | |
1.2.0 | 118 | 1/30/2024 | |
1.1.5 | 114 | 1/28/2024 | |
1.1.4 | 106 | 1/28/2024 | |
1.1.3 | 117 | 1/28/2024 | |
1.1.2 | 116 | 1/28/2024 | |
1.1.1 | 122 | 1/28/2024 | |
1.1.0 | 144 | 1/28/2024 | |
1.0.92 | 131 | 1/20/2024 | |
1.0.92-alpha1.0.d94cc32 | 66 | 1/20/2024 | |
1.0.91 | 190 | 12/23/2023 | |
1.0.91-alpha1.0.80949c7 | 100 | 12/23/2023 | |
1.0.90 | 134 | 12/23/2023 | |
1.0.90-alpha1.0.7d5d4e8 | 78 | 12/23/2023 | |
1.0.80 | 141 | 12/23/2023 | |
1.0.80-alpha1.2.7d5d4e8 | 90 | 12/23/2023 | |
1.0.80-alpha1.0.66c47d0 | 89 | 12/23/2023 | |
1.0.72 | 126 | 12/23/2023 | |
1.0.72-alpha.e6eaa37 | 87 | 12/23/2023 | |
1.0.71-rc.ffc43be | 84 | 12/23/2023 | |
1.0.70-rc.f8a64fd | 89 | 12/23/2023 | |
1.0.60-rc.48b70041a5d29a1b4... | 90 | 12/23/2023 | |
1.0.50-rc | 117 | 12/23/2023 | |
1.0.43-pre | 107 | 12/23/2023 | |
1.0.42 | 141 | 12/23/2023 | |
1.0.41 | 134 | 12/23/2023 | |
1.0.40 | 153 | 12/23/2023 | |
1.0.20 | 148 | 12/22/2023 | |
1.0.19 | 136 | 12/22/2023 | |
1.0.10 | 158 | 12/22/2023 | |
1.0.9 | 140 | 12/22/2023 | |
1.0.8 | 146 | 12/22/2023 | |
1.0.7 | 135 | 12/22/2023 | |
1.0.1 | 149 | 12/22/2023 | |
1.0.0 | 130 | 12/21/2023 |