diff --git a/packages/provider/src/lib/types/Method.ts b/packages/provider/src/lib/types/Method.ts index a5db416e..3f02e362 100644 --- a/packages/provider/src/lib/types/Method.ts +++ b/packages/provider/src/lib/types/Method.ts @@ -43,6 +43,8 @@ export enum Method { Push = 'push', + Query = 'query', + Random = 'random', RandomKey = 'randomKey', diff --git a/packages/provider/src/lib/types/Payload.ts b/packages/provider/src/lib/types/Payload.ts index 5e76bcc1..19b9b94d 100644 --- a/packages/provider/src/lib/types/Payload.ts +++ b/packages/provider/src/lib/types/Payload.ts @@ -482,6 +482,20 @@ export namespace Payload { value: Value; } + /** + * The payload for {@link Method.Query} + * @since 1.0.0 + */ + export interface Query extends Payload, KeyPath { + method: Method.Query; + + /** + * The built query. + * @since 1.0.0 + */ + query: Query; + } + /** * The payload for {@link Method.Random} * @since 1.0.0 diff --git a/packages/provider/src/lib/types/Query.ts b/packages/provider/src/lib/types/Query.ts new file mode 100644 index 00000000..f48febed --- /dev/null +++ b/packages/provider/src/lib/types/Query.ts @@ -0,0 +1,38 @@ +enum Operators { + Equal = 'equal', + NotEqual = 'notEqual', + GreaterThan = 'greaterThan', + GreaterThanOrEqual = 'greaterThanOrEqual', + LessThan = 'lessThan', + LessThanOrEqual = 'lessThanOrEqual', + In = 'in', + NotIn = 'notIn', + Contains = 'contains', + NotContains = 'notContains', + Regex = 'regex' +} + +export interface QueryOperators { + [Operators.Equal]?: Value; // Not equal + [Operators.NotEqual]?: Value; // Not equal + [Operators.GreaterThan]?: Value; // Greater than + [Operators.GreaterThanOrEqual]?: Value; // Greater than or equal + [Operators.LessThan]?: Value; // Less than + [Operators.LessThanOrEqual]?: Value; // Less than or equal + [Operators.In]?: Value[]; // In + [Operators.NotIn]?: Value[]; // Not in + [Operators.Contains]?: Value; // Contains + [Operators.NotContains]?: Value; // Not contains + [Operators.Regex]?: RegExp; // Regex +} + +export type QueryOptions = + | { + [key in keyof Value]: QueryOptions | Value; + } + | QueryOperators; + +export interface Query { + key?: string | QueryOperators; + value?: StoredValue | QueryOptions; +} diff --git a/packages/provider/src/lib/types/index.ts b/packages/provider/src/lib/types/index.ts index 6116a66e..dae6e909 100644 --- a/packages/provider/src/lib/types/index.ts +++ b/packages/provider/src/lib/types/index.ts @@ -3,5 +3,6 @@ export * from './KeyPath'; export * from './MathOperator'; export * from './Method'; export * from './Payload'; +export * from './Query'; export * from './Semver'; export * from './Trigger';