Each query consist of Tokens.
Token is a pair of <identifyer>:<value> separated with :.
Following common Identifyers supported:
| Identifyer | Description | 
|---|---|
| storage | storage ID | 
| repository | repository ID | 
| layout | repository layout name | 
| tag | avaliable tag name | 
| from | uploading date from (unicode format) | 
| to | uploading date to (unicode format) | 
| age | constant: day,month,year, etc. | 
| asc | ascending order | 
| desc | descending order | 
Also there is layout specific Identifiers:
| Identifyer | 
|---|
| groupId | 
| artifactId | 
| version | 
| Identifyer | 
|---|
| Id | 
| Version | 
| Identifyer | 
|---|
| scope | 
| name | 
| version | 
Values can be strings:
- quotet with single quotes 'if needed (Valid Examples:storage: storage0,layout: 'Maven 2')
- separated with comma ,(Valid Examples:repository: releases, snapshots,layout: 'Maven 2', NuGet)
- wiledcards supported *(Valid Examples:group: org.carlspring.*)
Values can be dates in unicode format: 2018-03-21 13:00:00
Values can be keywords/constants: day, month, year, etc.
Tokens in query are combined into an expression:
storage:storage0 repository:releases
Expression parts can be surrounded by round brackets.
(storage:storage0)(repository:releases)
means same as
storage:storage0 repository:releases
means same as
((storage:storage0) (repository:releases))
Expression parts can be joined by logical operators:
- ANDis implied by default and means logical conjuncion (equivalent synonymous:- &,- &&)
- ORmeans logical disjunction (equivalent synonymous:- |,- ||)
(storage:storage0)(repository:releases)
means same as
(storage:storage0) AND (repository:releases)
means same as
storage:storage0 && repository:releases
Expression parts can be prefixed with negation or no negation
- +is implied by default and means no negation (by and large does not mean anything, you can use it simply for clarity)
- -means logical negation
+(storage:storage0)+(repository:releases)-(groupId: 'org.carlspring')
means same as
storage:storage0 AND +repository:releases AND NOT groupId: 'org.carlspring'
means same as
storage:storage0 repository:releases NOT groupId: 'org.carlspring'
I've been thinking that we'll need to have a separate field like the
ALIASfor the layout providers that exposes a single word as the layout provider's key, so that you don't have to writeMaven 2(and it will be justmaven).Another thing... it will have to be possible to have all these values as case insensitive for the layout providers (and quite-likely for a lot (if not most) of the other fields).