@eienjs/adonisjs-api-query 1.1.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{LICENSE.md → LICENSE} +1 -1
- package/README.md +28 -2
- package/build/configure.d.ts +6 -2
- package/build/configure.js +11 -0
- package/build/index.d.ts +32 -31
- package/build/index.js +31 -153
- package/build/providers/api_query_provider.d.ts +41 -37
- package/build/providers/api_query_provider.js +21 -26
- package/build/src/allowed_filter.d.ts +40 -36
- package/build/src/allowed_filter.js +113 -0
- package/build/src/allowed_include.d.ts +20 -16
- package/build/src/allowed_include.js +48 -0
- package/build/src/allowed_sort.d.ts +21 -17
- package/build/src/allowed_sort.js +50 -0
- package/build/src/api_query_builder_request.d.ts +34 -30
- package/build/src/api_query_builder_request.js +122 -0
- package/build/src/bindings/api_query_request.js +13 -0
- package/build/src/bindings/filters_query.js +40 -0
- package/build/src/bindings/includes_query.js +51 -0
- package/build/src/bindings/sorts_query.js +45 -0
- package/build/src/define_config.d.ts +7 -3
- package/build/src/define_config.js +25 -0
- package/build/src/enums/filter_operator.d.ts +11 -9
- package/build/src/enums/filter_operator.js +12 -0
- package/build/src/enums/sort_direction.d.ts +6 -4
- package/build/src/enums/sort_direction.js +7 -0
- package/build/src/exceptions/allowed_fields_must_be_called_before_allowed_includes.d.ts +9 -5
- package/build/src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js +11 -0
- package/build/src/exceptions/invalid_append_query.d.ts +8 -4
- package/build/src/exceptions/invalid_append_query.js +14 -0
- package/build/src/exceptions/invalid_direction.d.ts +7 -3
- package/build/src/exceptions/invalid_direction.js +10 -0
- package/build/src/exceptions/invalid_filter_query.d.ts +10 -6
- package/build/src/exceptions/invalid_filter_query.js +18 -0
- package/build/src/exceptions/invalid_filter_value.d.ts +7 -3
- package/build/src/exceptions/invalid_filter_value.js +9 -0
- package/build/src/exceptions/invalid_include_query.d.ts +10 -6
- package/build/src/exceptions/invalid_include_query.js +22 -0
- package/build/src/exceptions/invalid_query.d.ts +7 -3
- package/build/src/exceptions/invalid_query.js +7 -0
- package/build/src/exceptions/invalid_sort_query.d.ts +10 -6
- package/build/src/exceptions/invalid_sort_query.js +18 -0
- package/build/src/exceptions/unknown_included_fields_query.d.ts +8 -4
- package/build/src/exceptions/unknown_included_fields_query.js +13 -0
- package/build/src/filters/filters_begin_with_strict.d.ts +10 -6
- package/build/src/filters/filters_begin_with_strict.js +9 -0
- package/build/src/filters/filters_callback.d.ts +10 -6
- package/build/src/filters/filters_callback.js +12 -0
- package/build/src/filters/filters_ends_with_strict.d.ts +10 -6
- package/build/src/filters/filters_ends_with_strict.js +9 -0
- package/build/src/filters/filters_exact.d.ts +15 -11
- package/build/src/filters/filters_exact.js +47 -0
- package/build/src/filters/filters_operator.d.ts +17 -13
- package/build/src/filters/filters_operator.js +53 -0
- package/build/src/filters/filters_partial.d.ts +15 -11
- package/build/src/filters/filters_partial.js +39 -0
- package/build/src/filters/filters_trashed.d.ts +9 -5
- package/build/src/filters/filters_trashed.js +14 -0
- package/build/src/includes/included_callback.d.ts +11 -7
- package/build/src/includes/included_callback.js +12 -0
- package/build/src/includes/included_count.d.ts +8 -4
- package/build/src/includes/included_count.js +11 -0
- package/build/src/includes/included_relationship.d.ts +12 -8
- package/build/src/includes/included_relationship.js +40 -0
- package/build/src/sorts/sorts_callback.d.ts +10 -6
- package/build/src/sorts/sorts_callback.js +12 -0
- package/build/src/sorts/sorts_field.d.ts +8 -4
- package/build/src/sorts/sorts_field.js +8 -0
- package/build/src/utils/helpers.js +26 -0
- package/build/stubs/main.d.ts +4 -1
- package/build/stubs/main.js +4 -0
- package/build/types.d.ts +91 -0
- package/build/types.js +1 -0
- package/package.json +99 -88
- package/build/api_query_request-QXOB4BN6.js +0 -18
- package/build/api_query_request-QXOB4BN6.js.map +0 -1
- package/build/chunk-3ITWUZL5.js +0 -108
- package/build/chunk-3ITWUZL5.js.map +0 -1
- package/build/chunk-54HNQTDY.js +0 -348
- package/build/chunk-54HNQTDY.js.map +0 -1
- package/build/chunk-IV3B5WO7.js +0 -160
- package/build/chunk-IV3B5WO7.js.map +0 -1
- package/build/chunk-MKQ3HMMA.js +0 -198
- package/build/chunk-MKQ3HMMA.js.map +0 -1
- package/build/chunk-XIRHVLVQ.js +0 -10
- package/build/chunk-XIRHVLVQ.js.map +0 -1
- package/build/filters_query-LCFH2F2X.js +0 -55
- package/build/filters_query-LCFH2F2X.js.map +0 -1
- package/build/includes_query-PVONWQMC.js +0 -70
- package/build/includes_query-PVONWQMC.js.map +0 -1
- package/build/index.js.map +0 -1
- package/build/metafile-esm.json +0 -1
- package/build/providers/api_query_provider.js.map +0 -1
- package/build/sorts_query-NJTC5UXX.js +0 -63
- package/build/sorts_query-NJTC5UXX.js.map +0 -1
- package/build/src/bindings/api_query_request.d.ts +0 -2
- package/build/src/bindings/filters_query.d.ts +0 -3
- package/build/src/bindings/includes_query.d.ts +0 -3
- package/build/src/bindings/sorts_query.d.ts +0 -3
- package/build/src/exceptions/invalid_field_query.d.ts +0 -5
- package/build/src/types.d.ts +0 -90
- package/build/src/types.js +0 -1
- package/build/src/types.js.map +0 -1
- package/build/src/utils/helpers.d.ts +0 -3
- /package/build/{config.stub → stubs/config.stub} +0 -0
package/{LICENSE.md → LICENSE}
RENAMED
package/README.md
CHANGED
|
@@ -7,12 +7,38 @@
|
|
|
7
7
|
[![Build Status][badge-build]][build]
|
|
8
8
|
[![Total Downloads][badge-downloads]][downloads]
|
|
9
9
|
|
|
10
|
-
> Easily build Lucid queries from API requests
|
|
10
|
+
> Easily build Lucid queries from API requests for your AdonisJS v7 application.
|
|
11
11
|
|
|
12
12
|
## Introduction
|
|
13
13
|
|
|
14
14
|
This package provides a set of macros on `ModelQueryBuilder` to build [Lucid](https://adonisjs.com/docs/lucid) queries from API requests. Inspired by [Spatie's Laravel Query Builder](https://github.com/spatie/laravel-query-builder).
|
|
15
15
|
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
Install the package using the following command:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
node ace add @eienjs/adonisjs-api-query
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Automatically the command will register the provider. Now you can use with your controller response:
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import type { HttpContext } from '@adonisjs/core/http';
|
|
28
|
+
import User from '#models/user';
|
|
29
|
+
|
|
30
|
+
// inside a controller
|
|
31
|
+
export default class MyController {
|
|
32
|
+
public async handle({ request }: HttpContext) {
|
|
33
|
+
const users = await User.query()
|
|
34
|
+
.withRequest(request) // Pass the request to the query builder if async local storage is not enabled
|
|
35
|
+
.allowedFilters('name')
|
|
36
|
+
.allowedIncludes('posts')
|
|
37
|
+
.allowedSorts('id');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
16
42
|
## Documentation
|
|
17
43
|
|
|
18
44
|
The documentation is available on [EienJS](https://eienjs.com/packages/adonisjs-api-query/getting-started/).
|
|
@@ -30,7 +56,7 @@ The `@eienjs/adonisjs-api-query` library is licensed for use under the MIT Licen
|
|
|
30
56
|
[source]: https://github.com/eienjs/adonisjs-api-query
|
|
31
57
|
[node-version]: https://www.npmjs.com/package/@eienjs/adonisjs-api-query
|
|
32
58
|
[release]: https://www.npmjs.com/package/@eienjs/adonisjs-api-query
|
|
33
|
-
[license]: https://github.com/eienjs/adonisjs-api-query/blob/main/LICENSE
|
|
59
|
+
[license]: https://github.com/eienjs/adonisjs-api-query/blob/main/LICENSE
|
|
34
60
|
[build]: https://github.com/eienjs/adonisjs-api-query/actions/workflows/build.yml?query=branch:main
|
|
35
61
|
[downloads]: https://www.npmjs.com/package/@eienjs/adonisjs-api-query
|
|
36
62
|
[badge-source]: https://img.shields.io/badge/source-eienjs/adonisjs--api--query-blue.svg?logo=github
|
package/build/configure.d.ts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import Configure from "@adonisjs/core/commands/configure";
|
|
2
|
+
|
|
3
|
+
//#region configure.d.ts
|
|
4
|
+
declare const configure: (command: Configure) => Promise<void>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { configure };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { stubsRoot } from "./stubs/main.js";
|
|
2
|
+
//#region configure.ts
|
|
3
|
+
const configure = async (command) => {
|
|
4
|
+
const codemods = await command.createCodemods();
|
|
5
|
+
await codemods.updateRcFile((rcFile) => {
|
|
6
|
+
rcFile.addProvider("@eienjs/adonisjs-api-query/providers/api_query_provider");
|
|
7
|
+
});
|
|
8
|
+
await codemods.makeUsingStub(stubsRoot, "config.stub", {});
|
|
9
|
+
};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { configure };
|
package/build/index.d.ts
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
export
|
|
1
|
+
import { configure } from "./configure.js";
|
|
2
|
+
import { FilterOperator } from "./src/enums/filter_operator.js";
|
|
3
|
+
import { AllowedFilter } from "./src/allowed_filter.js";
|
|
4
|
+
import { AllowedInclude } from "./src/allowed_include.js";
|
|
5
|
+
import { AllowedSort } from "./src/allowed_sort.js";
|
|
6
|
+
import { ApiQueryBuilderRequest } from "./src/api_query_builder_request.js";
|
|
7
|
+
import { defineConfig } from "./src/define_config.js";
|
|
8
|
+
import { SortDirection } from "./src/enums/sort_direction.js";
|
|
9
|
+
import { AllowedFieldsMustBeCalledBeforeAllowedIncludes } from "./src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js";
|
|
10
|
+
import { InvalidQuery } from "./src/exceptions/invalid_query.js";
|
|
11
|
+
import { InvalidAppendQuery } from "./src/exceptions/invalid_append_query.js";
|
|
12
|
+
import { InvalidDirection } from "./src/exceptions/invalid_direction.js";
|
|
13
|
+
import { InvalidFilterQuery } from "./src/exceptions/invalid_filter_query.js";
|
|
14
|
+
import { InvalidFilterValue } from "./src/exceptions/invalid_filter_value.js";
|
|
15
|
+
import { InvalidIncludeQuery } from "./src/exceptions/invalid_include_query.js";
|
|
16
|
+
import { InvalidSortQuery } from "./src/exceptions/invalid_sort_query.js";
|
|
17
|
+
import { UnknownIncludedFieldsQuery } from "./src/exceptions/unknown_included_fields_query.js";
|
|
18
|
+
import { FiltersExact } from "./src/filters/filters_exact.js";
|
|
19
|
+
import { FiltersPartial } from "./src/filters/filters_partial.js";
|
|
20
|
+
import { FiltersBeginWithStrict } from "./src/filters/filters_begin_with_strict.js";
|
|
21
|
+
import { FiltersCallback } from "./src/filters/filters_callback.js";
|
|
22
|
+
import { FiltersEndsWithStrict } from "./src/filters/filters_ends_with_strict.js";
|
|
23
|
+
import { FiltersOperator } from "./src/filters/filters_operator.js";
|
|
24
|
+
import { FiltersTrashed } from "./src/filters/filters_trashed.js";
|
|
25
|
+
import { IncludedCallback } from "./src/includes/included_callback.js";
|
|
26
|
+
import { IncludedCount } from "./src/includes/included_count.js";
|
|
27
|
+
import { IncludedRelationship } from "./src/includes/included_relationship.js";
|
|
28
|
+
import { SortsCallback } from "./src/sorts/sorts_callback.js";
|
|
29
|
+
import { SortsField } from "./src/sorts/sorts_field.js";
|
|
30
|
+
import { stubsRoot } from "./stubs/main.js";
|
|
31
|
+
export * from "collect.js";
|
|
32
|
+
export { AllowedFieldsMustBeCalledBeforeAllowedIncludes, AllowedFilter, AllowedInclude, AllowedSort, ApiQueryBuilderRequest, FilterOperator, FiltersBeginWithStrict, FiltersCallback, FiltersEndsWithStrict, FiltersExact, FiltersOperator, FiltersPartial, FiltersTrashed, IncludedCallback, IncludedCount, IncludedRelationship, InvalidAppendQuery, InvalidDirection, InvalidFilterQuery, InvalidFilterValue, InvalidIncludeQuery, InvalidQuery, InvalidSortQuery, SortDirection, SortsCallback, SortsField, UnknownIncludedFieldsQuery, configure, defineConfig, stubsRoot };
|
package/build/index.js
CHANGED
|
@@ -1,154 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from "./
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
} from "./
|
|
21
|
-
import {
|
|
22
|
-
|
|
23
|
-
} from "./
|
|
24
|
-
import {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
} from "./
|
|
31
|
-
import {
|
|
32
|
-
InvalidQuery
|
|
33
|
-
} from "./chunk-XIRHVLVQ.js";
|
|
34
|
-
|
|
35
|
-
// stubs/main.ts
|
|
36
|
-
import path from "path";
|
|
37
|
-
import { fileURLToPath } from "url";
|
|
38
|
-
var stubsRoot = path.dirname(fileURLToPath(import.meta.url));
|
|
39
|
-
|
|
40
|
-
// configure.ts
|
|
41
|
-
var configure = async (command) => {
|
|
42
|
-
const codemods = await command.createCodemods();
|
|
43
|
-
await codemods.updateRcFile((rcFile) => {
|
|
44
|
-
rcFile.addProvider("@eienjs/adonisjs-api-query/api_query_provider");
|
|
45
|
-
});
|
|
46
|
-
await codemods.makeUsingStub(stubsRoot, "config.stub", {});
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
// src/define_config.ts
|
|
50
|
-
import { configProvider } from "@adonisjs/core";
|
|
51
|
-
var defineConfig = function(config) {
|
|
52
|
-
return configProvider.create(async (_) => {
|
|
53
|
-
return {
|
|
54
|
-
parameters: {
|
|
55
|
-
include: config.parameters?.include ?? "include",
|
|
56
|
-
filter: config.parameters?.filter ?? "filter",
|
|
57
|
-
sort: config.parameters?.sort ?? "sort",
|
|
58
|
-
fields: config.parameters?.fields ?? "fields",
|
|
59
|
-
append: config.parameters?.append ?? "append"
|
|
60
|
-
},
|
|
61
|
-
countSuffix: config.countSuffix ?? "Count",
|
|
62
|
-
existsSuffix: config.existsSuffix ?? "Exists",
|
|
63
|
-
disableInvalidFilterQueryException: config.disableInvalidFilterQueryException ?? false,
|
|
64
|
-
disableInvalidSortQueryException: config.disableInvalidSortQueryException ?? false,
|
|
65
|
-
disableInvalidIncludesQueryException: config.disableInvalidIncludesQueryException ?? false,
|
|
66
|
-
convertRelationNamesToSnakeCasePlural: config.convertRelationNamesToSnakeCasePlural ?? false,
|
|
67
|
-
convertRelationTableNameStrategy: config.convertRelationTableNameStrategy ?? false,
|
|
68
|
-
convertFieldNamesToSnakeCase: config.convertFieldNamesToSnakeCase ?? false
|
|
69
|
-
};
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
// src/exceptions/allowed_fields_must_be_called_before_allowed_includes.ts
|
|
74
|
-
import { Exception } from "@adonisjs/core/exceptions";
|
|
75
|
-
var AllowedFieldsMustBeCalledBeforeAllowedIncludes = class extends Exception {
|
|
76
|
-
static code;
|
|
77
|
-
static status;
|
|
78
|
-
constructor() {
|
|
79
|
-
super("The QueryBuilder's `allowedFields` method must be called before the `allowedIncludes` method");
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
// src/exceptions/invalid_append_query.ts
|
|
84
|
-
import { ResponseStatus } from "@adonisjs/core/http";
|
|
85
|
-
var InvalidAppendQuery = class _InvalidAppendQuery extends InvalidQuery {
|
|
86
|
-
constructor(appendsNotAllowed, allowedAppends) {
|
|
87
|
-
const notAllowed = appendsNotAllowed.join(", ");
|
|
88
|
-
const allowed = allowedAppends.join(", ");
|
|
89
|
-
const message = `Requested append(s) \`${notAllowed}\` are not allowed. Allowed append(s) are \`${allowed}\``;
|
|
90
|
-
super(message, { status: ResponseStatus.BadRequest });
|
|
91
|
-
}
|
|
92
|
-
static appendsNotAllowed(appendsNotAllowed, allowedAppends) {
|
|
93
|
-
return new _InvalidAppendQuery(appendsNotAllowed, allowedAppends);
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
// src/exceptions/invalid_filter_value.ts
|
|
98
|
-
import { Exception as Exception2 } from "@adonisjs/core/exceptions";
|
|
99
|
-
var InvalidFilterValue = class _InvalidFilterValue extends Exception2 {
|
|
100
|
-
static make(value) {
|
|
101
|
-
return new _InvalidFilterValue(`Filter value \`${value}\` is invalid`);
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
// src/exceptions/unknown_included_fields_query.ts
|
|
106
|
-
import { ResponseStatus as ResponseStatus2 } from "@adonisjs/core/http";
|
|
107
|
-
var UnknownIncludedFieldsQuery = class extends InvalidQuery {
|
|
108
|
-
unknownFields;
|
|
109
|
-
constructor(unknownFields) {
|
|
110
|
-
const notAllowed = unknownFields.join(", ");
|
|
111
|
-
const message = [
|
|
112
|
-
`Requested field(s) \`${notAllowed}\` are not allowed (yet). `,
|
|
113
|
-
"If you want to allow these fields, please make sure to call the QueryBuilder's `allowedFields` method before the `allowedIncludes` method"
|
|
114
|
-
].join("");
|
|
115
|
-
super(message, { status: ResponseStatus2.BadRequest });
|
|
116
|
-
this.unknownFields = unknownFields;
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
// index.ts
|
|
1
|
+
import { stubsRoot } from "./stubs/main.js";
|
|
2
|
+
import { configure } from "./configure.js";
|
|
3
|
+
import { ApiQueryBuilderRequest } from "./src/api_query_builder_request.js";
|
|
4
|
+
import { FiltersExact } from "./src/filters/filters_exact.js";
|
|
5
|
+
import { FiltersPartial } from "./src/filters/filters_partial.js";
|
|
6
|
+
import { FiltersBeginWithStrict } from "./src/filters/filters_begin_with_strict.js";
|
|
7
|
+
import { FiltersCallback } from "./src/filters/filters_callback.js";
|
|
8
|
+
import { FiltersEndsWithStrict } from "./src/filters/filters_ends_with_strict.js";
|
|
9
|
+
import { FilterOperator } from "./src/enums/filter_operator.js";
|
|
10
|
+
import { FiltersOperator } from "./src/filters/filters_operator.js";
|
|
11
|
+
import { FiltersTrashed } from "./src/filters/filters_trashed.js";
|
|
12
|
+
import { AllowedFilter } from "./src/allowed_filter.js";
|
|
13
|
+
import { IncludedCallback } from "./src/includes/included_callback.js";
|
|
14
|
+
import { IncludedCount } from "./src/includes/included_count.js";
|
|
15
|
+
import { IncludedRelationship } from "./src/includes/included_relationship.js";
|
|
16
|
+
import { AllowedInclude } from "./src/allowed_include.js";
|
|
17
|
+
import { SortDirection } from "./src/enums/sort_direction.js";
|
|
18
|
+
import { InvalidDirection } from "./src/exceptions/invalid_direction.js";
|
|
19
|
+
import { SortsCallback } from "./src/sorts/sorts_callback.js";
|
|
20
|
+
import { SortsField } from "./src/sorts/sorts_field.js";
|
|
21
|
+
import { AllowedSort } from "./src/allowed_sort.js";
|
|
22
|
+
import { defineConfig } from "./src/define_config.js";
|
|
23
|
+
import { AllowedFieldsMustBeCalledBeforeAllowedIncludes } from "./src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js";
|
|
24
|
+
import { InvalidQuery } from "./src/exceptions/invalid_query.js";
|
|
25
|
+
import { InvalidAppendQuery } from "./src/exceptions/invalid_append_query.js";
|
|
26
|
+
import { InvalidFilterQuery } from "./src/exceptions/invalid_filter_query.js";
|
|
27
|
+
import { InvalidFilterValue } from "./src/exceptions/invalid_filter_value.js";
|
|
28
|
+
import { InvalidIncludeQuery } from "./src/exceptions/invalid_include_query.js";
|
|
29
|
+
import { InvalidSortQuery } from "./src/exceptions/invalid_sort_query.js";
|
|
30
|
+
import { UnknownIncludedFieldsQuery } from "./src/exceptions/unknown_included_fields_query.js";
|
|
121
31
|
export * from "collect.js";
|
|
122
|
-
export {
|
|
123
|
-
AllowedFieldsMustBeCalledBeforeAllowedIncludes,
|
|
124
|
-
AllowedFilter,
|
|
125
|
-
AllowedInclude,
|
|
126
|
-
AllowedSort,
|
|
127
|
-
ApiQueryBuilderRequest,
|
|
128
|
-
FilterOperator,
|
|
129
|
-
FiltersBeginWithStrict,
|
|
130
|
-
FiltersCallback,
|
|
131
|
-
FiltersEndsWithStrict,
|
|
132
|
-
FiltersExact,
|
|
133
|
-
FiltersOperator,
|
|
134
|
-
FiltersPartial,
|
|
135
|
-
FiltersTrashed,
|
|
136
|
-
IncludedCallback,
|
|
137
|
-
IncludedCount,
|
|
138
|
-
IncludedRelationship,
|
|
139
|
-
InvalidAppendQuery,
|
|
140
|
-
InvalidDirection,
|
|
141
|
-
InvalidFilterQuery,
|
|
142
|
-
InvalidFilterValue,
|
|
143
|
-
InvalidIncludeQuery,
|
|
144
|
-
InvalidQuery,
|
|
145
|
-
InvalidSortQuery,
|
|
146
|
-
SortDirection,
|
|
147
|
-
SortsCallback,
|
|
148
|
-
SortsField,
|
|
149
|
-
UnknownIncludedFieldsQuery,
|
|
150
|
-
configure,
|
|
151
|
-
defineConfig,
|
|
152
|
-
stubsRoot
|
|
153
|
-
};
|
|
154
|
-
//# sourceMappingURL=index.js.map
|
|
32
|
+
export { AllowedFieldsMustBeCalledBeforeAllowedIncludes, AllowedFilter, AllowedInclude, AllowedSort, ApiQueryBuilderRequest, FilterOperator, FiltersBeginWithStrict, FiltersCallback, FiltersEndsWithStrict, FiltersExact, FiltersOperator, FiltersPartial, FiltersTrashed, IncludedCallback, IncludedCount, IncludedRelationship, InvalidAppendQuery, InvalidDirection, InvalidFilterQuery, InvalidFilterValue, InvalidIncludeQuery, InvalidQuery, InvalidSortQuery, SortDirection, SortsCallback, SortsField, UnknownIncludedFieldsQuery, configure, defineConfig, stubsRoot };
|
|
@@ -1,42 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { ExtractKeys, HintedString, SortUnionKeyParams } from "../types.js";
|
|
2
|
+
import { AllowedFilter } from "../src/allowed_filter.js";
|
|
3
|
+
import { AllowedInclude } from "../src/allowed_include.js";
|
|
4
|
+
import { AllowedSort } from "../src/allowed_sort.js";
|
|
5
|
+
import { ApiQueryBuilderRequest } from "../src/api_query_builder_request.js";
|
|
6
|
+
import { Collection } from "collect.js";
|
|
7
|
+
import { HttpRequest } from "@adonisjs/core/http";
|
|
8
|
+
import { LucidModel } from "@adonisjs/lucid/types/model";
|
|
9
|
+
import { ExtractModelRelations } from "@adonisjs/lucid/types/relations";
|
|
10
|
+
import { ApplicationService } from "@adonisjs/core/types";
|
|
11
|
+
|
|
12
|
+
//#region providers/api_query_provider.d.ts
|
|
13
|
+
declare class ApiQueryProvider {
|
|
14
|
+
protected app: ApplicationService;
|
|
15
|
+
constructor(app: ApplicationService);
|
|
16
|
+
boot(): Promise<void>;
|
|
15
17
|
}
|
|
16
18
|
declare module '@adonisjs/lucid/orm' {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
interface ModelQueryBuilder {
|
|
20
|
+
withRequest(request: HttpRequest): this;
|
|
21
|
+
$apiQueryBuilderRequest: ApiQueryBuilderRequest;
|
|
22
|
+
allowedSorts(...sorts: (AllowedSort<LucidModel> | string)[]): this;
|
|
23
|
+
allowedSorts(sorts: (AllowedSort<LucidModel> | string)[]): this;
|
|
24
|
+
defaultSort(...sorts: (AllowedSort<LucidModel> | string)[]): this;
|
|
25
|
+
defaultSort(sorts: (AllowedSort<LucidModel> | string)[]): this;
|
|
26
|
+
allowedFilters(...filters: (AllowedFilter<LucidModel> | string)[]): this;
|
|
27
|
+
allowedFilters(filters: (AllowedFilter<LucidModel> | string)[]): this;
|
|
28
|
+
allowedIncludes(...includes: (Collection<AllowedInclude<LucidModel>> | string)[]): this;
|
|
29
|
+
allowedIncludes(includes: (Collection<AllowedInclude<LucidModel>> | string)[]): this;
|
|
30
|
+
}
|
|
29
31
|
}
|
|
30
32
|
declare module '@adonisjs/lucid/types/model' {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
interface ModelQueryBuilderContract<Model extends LucidModel, Result = InstanceType<Model>> {
|
|
34
|
+
withRequest(request: HttpRequest): this;
|
|
35
|
+
allowedSorts(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
|
|
36
|
+
allowedSorts(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
|
|
37
|
+
defaultSort(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
|
|
38
|
+
defaultSort(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
|
|
39
|
+
allowedFilters(...filters: (AllowedFilter<Model> | HintedString<ExtractKeys<ModelAttributes<InstanceType<Model>>>>)[]): this;
|
|
40
|
+
allowedFilters(filters: (AllowedFilter<Model> | HintedString<ExtractKeys<ModelAttributes<InstanceType<Model>>>>)[]): this;
|
|
41
|
+
allowedIncludes(...includes: (Collection<AllowedInclude<Model>> | HintedString<ExtractModelRelations<InstanceType<Model>>>)[]): this;
|
|
42
|
+
allowedIncludes(includes: (Collection<AllowedInclude<Model>> | HintedString<ExtractModelRelations<InstanceType<Model>>>)[]): this;
|
|
43
|
+
}
|
|
42
44
|
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { ApiQueryProvider as default };
|
|
@@ -1,30 +1,25 @@
|
|
|
1
|
-
// providers/api_query_provider.ts
|
|
2
|
-
import { configProvider } from "@adonisjs/core";
|
|
3
1
|
import { RuntimeException } from "@adonisjs/core/exceptions";
|
|
2
|
+
import { configProvider } from "@adonisjs/core";
|
|
4
3
|
import { ModelQueryBuilder } from "@adonisjs/lucid/orm";
|
|
4
|
+
//#region providers/api_query_provider.ts
|
|
5
5
|
var ApiQueryProvider = class {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
extendModelQueryBuilderWithFiltersQuery(ModelQueryBuilder, config);
|
|
24
|
-
extendModelQueryBuilderWithIncludesQuery(ModelQueryBuilder, config);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
export {
|
|
28
|
-
ApiQueryProvider as default
|
|
6
|
+
app;
|
|
7
|
+
constructor(app) {
|
|
8
|
+
this.app = app;
|
|
9
|
+
}
|
|
10
|
+
async boot() {
|
|
11
|
+
const { extendModelQueryBuilderWithRequest } = await import("../src/bindings/api_query_request.js");
|
|
12
|
+
const { extendModelQueryBuilderWithSortsQuery } = await import("../src/bindings/sorts_query.js");
|
|
13
|
+
const { extendModelQueryBuilderWithFiltersQuery } = await import("../src/bindings/filters_query.js");
|
|
14
|
+
const { extendModelQueryBuilderWithIncludesQuery } = await import("../src/bindings/includes_query.js");
|
|
15
|
+
const apiQueryConfigProvider = this.app.config.get("apiquery");
|
|
16
|
+
const config = await configProvider.resolve(this.app, apiQueryConfigProvider);
|
|
17
|
+
if (!config) throw new RuntimeException("Invalid \"config/apiquery.ts\" file. Make sure you are using the \"defineConfig\" method");
|
|
18
|
+
extendModelQueryBuilderWithRequest(ModelQueryBuilder);
|
|
19
|
+
extendModelQueryBuilderWithSortsQuery(ModelQueryBuilder, config);
|
|
20
|
+
extendModelQueryBuilderWithFiltersQuery(ModelQueryBuilder, config);
|
|
21
|
+
extendModelQueryBuilderWithIncludesQuery(ModelQueryBuilder, config);
|
|
22
|
+
}
|
|
29
23
|
};
|
|
30
|
-
//#
|
|
24
|
+
//#endregion
|
|
25
|
+
export { ApiQueryProvider as default };
|
|
@@ -1,37 +1,41 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Collection } from
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
1
|
+
import { FilterOperator } from "./enums/filter_operator.js";
|
|
2
|
+
import { EnumType, ExtractKeys, Filter } from "../types.js";
|
|
3
|
+
import { Collection } from "collect.js";
|
|
4
|
+
import { LucidModel, ModelAttributes, ModelQueryBuilderContract } from "@adonisjs/lucid/types/model";
|
|
5
|
+
import { StrictValuesWithoutRaw } from "@adonisjs/lucid/types/querybuilder";
|
|
6
|
+
|
|
7
|
+
//#region src/allowed_filter.d.ts
|
|
8
|
+
declare class AllowedFilter<Model extends LucidModel> {
|
|
9
|
+
protected name: string;
|
|
10
|
+
protected filterClass: Filter<Model>;
|
|
11
|
+
protected internalName: string;
|
|
12
|
+
protected ignored: Collection<unknown>;
|
|
13
|
+
protected default: unknown;
|
|
14
|
+
protected $hasDefault: boolean;
|
|
15
|
+
protected nullable: boolean;
|
|
16
|
+
constructor(name: string, filterClass: Filter<Model>, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>);
|
|
17
|
+
filter(query: ModelQueryBuilderContract<Model>, value: unknown): void;
|
|
18
|
+
getFilterClass(): Filter<Model>;
|
|
19
|
+
getName(): string;
|
|
20
|
+
isForFilter(filterName: string): boolean;
|
|
21
|
+
ignore(...values: unknown[]): this;
|
|
22
|
+
getIgnored(): unknown[];
|
|
23
|
+
getInternalName(): string;
|
|
24
|
+
setDefault(defaultValue: unknown): this;
|
|
25
|
+
getDefault(): unknown;
|
|
26
|
+
hasDefault(): boolean;
|
|
27
|
+
setNullable(isNullable?: boolean): this;
|
|
28
|
+
unsetDefault(): this;
|
|
29
|
+
protected resolveValueForFiltering(value: unknown): StrictValuesWithoutRaw | null;
|
|
30
|
+
static setFilterArrayValueDelimiter(delimiter?: string): void;
|
|
31
|
+
static exact<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, shouldAddRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
|
|
32
|
+
static partial<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, shouldAddRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
|
|
33
|
+
static beginsWithStrict<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, shouldAddRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
|
|
34
|
+
static endsWithStrict<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, shouldAddRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
|
|
35
|
+
static callback<Model extends LucidModel>(name: string, callback: (query: ModelQueryBuilderContract<Model>, value: unknown, property: string) => void, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, arrayValueDelimiter?: string): AllowedFilter<Model>;
|
|
36
|
+
static trashed<Model extends LucidModel>(name?: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>): AllowedFilter<Model>;
|
|
37
|
+
static custom<Model extends LucidModel>(name: string, filterClass: Filter<Model>, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, arrayValueDelimiter?: string): AllowedFilter<Model>;
|
|
38
|
+
static operator<Model extends LucidModel>(name: string, filterOperator: EnumType<typeof FilterOperator>, boolean?: 'and' | 'or', internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, shouldAddRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
|
|
37
39
|
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { AllowedFilter };
|