@antelopejs/interface-data-api 0.2.1 → 0.2.2
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/README.md +131 -21
- package/dist/metadata.d.ts +9 -3
- package/dist/metadata.js +9 -3
- package/dist/metadata.js.map +1 -1
- package/docs/3.routes.md +32 -6
- package/docs/6.listable.md +3 -0
- package/docs/8.filters.md +74 -10
- package/docs/tsconfig.json +12 -0
- package/package.json +21 -15
package/README.md
CHANGED
|
@@ -1,36 +1,146 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @antelopejs/interface-data-api
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
|
-
<a href="https://www.npmjs.com/package/@antelopejs/interface-data-api"><img src="https://img.shields.io/npm/v/@antelopejs/interface-data-api?style=for-the-badge&labelColor=000000&color=000000"
|
|
5
|
-
<a href="./LICENSE"><img alt="License" src="https://img.shields.io/
|
|
6
|
-
<a href="https://discord.gg/sjK28QHrA7"><img src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"
|
|
7
|
-
<a href="
|
|
4
|
+
<a href="https://www.npmjs.com/package/@antelopejs/interface-data-api"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/interface-data-api?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
5
|
+
<a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/interface-data-api?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
6
|
+
<a href="https://discord.gg/sjK28QHrA7"><img alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"></a>
|
|
7
|
+
<a href="https://interfaces.antelopejs.com/docs/data-api"><img alt="Docs" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
CRUD REST endpoints generated from a database table: declare a data controller and its fields, and get `get`, `list`, `new`, `edit` and `delete` routes with access rules, validation and pagination.
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## What it offers
|
|
13
|
+
|
|
14
|
+
- `DataController` and `@RegisterDataController()` turn a table class into a controller with the default routes you pick from `DefaultRoutes`.
|
|
15
|
+
- `@Access`, `@Mandatory` and `@Validator` decide which fields each route reads and writes, and check them.
|
|
16
|
+
- `@Listable`, `@Sortable` and `@Filter` shape the paginated `list` route.
|
|
17
|
+
- `@Foreign`, `@Joined` and `@Computed` resolve references, flatten remote fields and add values computed in the database.
|
|
18
|
+
|
|
19
|
+
## Implementations
|
|
20
|
+
|
|
21
|
+
The package runs in your module and has no implementing module of its own. The project needs modules that implement the interfaces it builds on:
|
|
22
|
+
|
|
23
|
+
| Interface | Module |
|
|
24
|
+
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
25
|
+
| `@antelopejs/interface-api` | [`@antelopejs/api`](https://github.com/AntelopeJS/api) |
|
|
26
|
+
| `@antelopejs/interface-database` | [`@antelopejs/mongodb`](https://github.com/AntelopeJS/mongodb) or [`@antelopejs/rethinkdb`](https://github.com/AntelopeJS/rethinkdb) |
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
Add the package and the interfaces your controllers import to your module:
|
|
13
31
|
|
|
14
32
|
```bash
|
|
15
|
-
|
|
33
|
+
pnpm add @antelopejs/interface-data-api @antelopejs/interface-api @antelopejs/interface-database-decorators
|
|
16
34
|
```
|
|
17
35
|
|
|
36
|
+
Then add the implementations to the project:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
ajs project modules add @antelopejs/api @antelopejs/mongodb
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Quick start
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
import { Controller } from "@antelopejs/interface-api";
|
|
46
|
+
import {
|
|
47
|
+
DataController,
|
|
48
|
+
DefaultRoutes,
|
|
49
|
+
RegisterDataController,
|
|
50
|
+
} from "@antelopejs/interface-data-api";
|
|
51
|
+
import {
|
|
52
|
+
Access,
|
|
53
|
+
AccessMode,
|
|
54
|
+
Listable,
|
|
55
|
+
Mandatory,
|
|
56
|
+
ModelReference,
|
|
57
|
+
Sortable,
|
|
58
|
+
} from "@antelopejs/interface-data-api/metadata";
|
|
59
|
+
import {
|
|
60
|
+
BasicDataModel,
|
|
61
|
+
Field,
|
|
62
|
+
Model,
|
|
63
|
+
RegisterSchema,
|
|
64
|
+
RegisterTable,
|
|
65
|
+
Table,
|
|
66
|
+
} from "@antelopejs/interface-database-decorators";
|
|
67
|
+
|
|
68
|
+
@RegisterTable("tasks", "todo")
|
|
69
|
+
class Task extends Table {
|
|
70
|
+
declare _id: string;
|
|
71
|
+
|
|
72
|
+
@Field("string")
|
|
73
|
+
declare summary: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
class TaskModel extends BasicDataModel(Task, "tasks") {}
|
|
77
|
+
|
|
78
|
+
@RegisterDataController()
|
|
79
|
+
class TaskAPI extends DataController(
|
|
80
|
+
Task,
|
|
81
|
+
DefaultRoutes.All,
|
|
82
|
+
Controller("/tasks"),
|
|
83
|
+
) {
|
|
84
|
+
@ModelReference()
|
|
85
|
+
@Model(TaskModel)
|
|
86
|
+
declare taskModel: TaskModel;
|
|
87
|
+
|
|
88
|
+
@Listable()
|
|
89
|
+
@Access(AccessMode.ReadOnly)
|
|
90
|
+
declare _id: string;
|
|
91
|
+
|
|
92
|
+
@Listable()
|
|
93
|
+
@Sortable()
|
|
94
|
+
@Mandatory("new")
|
|
95
|
+
@Access(AccessMode.ReadWrite)
|
|
96
|
+
declare summary: string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export async function construct() {
|
|
100
|
+
await RegisterSchema("todo");
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
The controller serves `GET /tasks/get?id=`, `GET /tasks/list`, `POST /tasks/new`, `PUT /tasks/edit?id=` and `DELETE /tasks/delete?id=`. Fields without `@Access` stay out of every response.
|
|
105
|
+
|
|
18
106
|
## Documentation
|
|
19
107
|
|
|
20
|
-
|
|
108
|
+
- [Introduction](./docs/1.introduction.md)
|
|
109
|
+
- [Data controllers](./docs/2.data-controllers.md)
|
|
110
|
+
- [Routes and loaded-model guards](./docs/3.routes.md)
|
|
111
|
+
- [Access rights](./docs/4.access-rights.md)
|
|
112
|
+
- [Validators](./docs/5.validators.md)
|
|
113
|
+
- [Listable fields](./docs/6.listable.md)
|
|
114
|
+
- [Foreign keys](./docs/7.foreign-keys.md)
|
|
115
|
+
- [Filters](./docs/8.filters.md)
|
|
116
|
+
- [Modifiers](./docs/9.modifiers.md)
|
|
117
|
+
- [Joined fields](./docs/10.joined.md)
|
|
118
|
+
- [Computed fields](./docs/11.computed.md)
|
|
119
|
+
|
|
120
|
+
## Compatibility
|
|
21
121
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
|
|
122
|
+
Use with `@antelopejs/core` 1.x and the following peer dependencies:
|
|
123
|
+
|
|
124
|
+
<!-- docs-compat: ./package.json#peerDependencies -->
|
|
125
|
+
|
|
126
|
+
| Package | Range |
|
|
127
|
+
| ------------------------------------------- | ----------------- |
|
|
128
|
+
| `@antelopejs/interface-api` | `>=0.0.15 <1.0.0` |
|
|
129
|
+
| `@antelopejs/interface-api-util` | `>=0.1.3 <1.0.0` |
|
|
130
|
+
| `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` |
|
|
131
|
+
| `@antelopejs/interface-database` | `>=0.1.10 <1.0.0` |
|
|
132
|
+
| `@antelopejs/interface-database-decorators` | `>=0.1.9 <1.0.0` |
|
|
133
|
+
|
|
134
|
+
## Contributing
|
|
135
|
+
|
|
136
|
+
Read [CONTRIBUTING.md](./CONTRIBUTING.md) before you open a pull request. The local checks are:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
pnpm install
|
|
140
|
+
pnpm lint
|
|
141
|
+
pnpm test
|
|
142
|
+
```
|
|
33
143
|
|
|
34
144
|
## License
|
|
35
145
|
|
|
36
|
-
|
|
146
|
+
[Apache-2.0](./LICENSE)
|
package/dist/metadata.d.ts
CHANGED
|
@@ -365,11 +365,13 @@ export declare const Access: (mode: AccessMode, overrides?: Record<string, Acces
|
|
|
365
365
|
/**
|
|
366
366
|
* Sets the listable state of a DataAPI field.
|
|
367
367
|
*
|
|
368
|
-
* Listable fields
|
|
368
|
+
* Listable fields are selected only for the named mode; modes do not inherit
|
|
369
|
+
* the default mode's fields. Read access is still required for the response.
|
|
369
370
|
*
|
|
370
|
-
* Listable getters must
|
|
371
|
+
* Listable getters must specify the list of in-database field names they use.
|
|
371
372
|
*
|
|
372
373
|
* @param requiredFields Boolean or table field list
|
|
374
|
+
* @param mode Independent list mode, defaulting to "list"
|
|
373
375
|
*/
|
|
374
376
|
export declare const Listable: (requiredFields?: boolean | string[] | undefined, mode?: string | undefined) => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").MethodDecorator;
|
|
375
377
|
/**
|
|
@@ -441,7 +443,11 @@ export declare const Validator: (validator: FieldValidator) => import("@antelope
|
|
|
441
443
|
/**
|
|
442
444
|
* Creates a field filter.
|
|
443
445
|
*
|
|
444
|
-
* @param func Custom filter function
|
|
446
|
+
* @param func Custom filter function. Raw query values are strings; parse and
|
|
447
|
+
* validate numeric/boolean values here. The default compares strings unchanged.
|
|
448
|
+
* @param useIndex Allow indexed equality lookup when an index exists. Defaults
|
|
449
|
+
* to true for the default filter and false for custom filters. An indexed
|
|
450
|
+
* equality lookup uses the raw string and bypasses the callback.
|
|
445
451
|
*/
|
|
446
452
|
export declare const Filter: <T extends Record<string, any>>(func?: FilterFunction<T, T>, useIndex?: boolean) => (target: T, propertyKey: string | symbol) => void;
|
|
447
453
|
/**
|
package/dist/metadata.js
CHANGED
|
@@ -462,11 +462,13 @@ exports.Access = (0, decorators_1.MakeMethodAndPropertyDecorator)((target, key,
|
|
|
462
462
|
/**
|
|
463
463
|
* Sets the listable state of a DataAPI field.
|
|
464
464
|
*
|
|
465
|
-
* Listable fields
|
|
465
|
+
* Listable fields are selected only for the named mode; modes do not inherit
|
|
466
|
+
* the default mode's fields. Read access is still required for the response.
|
|
466
467
|
*
|
|
467
|
-
* Listable getters must
|
|
468
|
+
* Listable getters must specify the list of in-database field names they use.
|
|
468
469
|
*
|
|
469
470
|
* @param requiredFields Boolean or table field list
|
|
471
|
+
* @param mode Independent list mode, defaulting to "list"
|
|
470
472
|
*/
|
|
471
473
|
exports.Listable = (0, decorators_1.MakeMethodAndPropertyDecorator)((target, key, desc, requiredFields, mode) => {
|
|
472
474
|
(0, interface_core_1.GetMetadata)(target.constructor, DataAPIMeta)
|
|
@@ -575,7 +577,11 @@ const FilterDecoratorFactory = (0, decorators_1.MakePropertyDecorator)((target,
|
|
|
575
577
|
/**
|
|
576
578
|
* Creates a field filter.
|
|
577
579
|
*
|
|
578
|
-
* @param func Custom filter function
|
|
580
|
+
* @param func Custom filter function. Raw query values are strings; parse and
|
|
581
|
+
* validate numeric/boolean values here. The default compares strings unchanged.
|
|
582
|
+
* @param useIndex Allow indexed equality lookup when an index exists. Defaults
|
|
583
|
+
* to true for the default filter and false for custom filters. An indexed
|
|
584
|
+
* equality lookup uses the raw string and bypasses the callback.
|
|
579
585
|
*/
|
|
580
586
|
exports.Filter = FilterDecoratorFactory;
|
|
581
587
|
/**
|
package/dist/metadata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
|
package/docs/3.routes.md
CHANGED
|
@@ -258,12 +258,13 @@ class UserAPI extends DataController(User, routes, Controller("/users")) {
|
|
|
258
258
|
|
|
259
259
|
**List:**
|
|
260
260
|
|
|
261
|
-
| Option | Type
|
|
262
|
-
| ----------- |
|
|
263
|
-
| `maxPage` | `number`
|
|
264
|
-
| `noForeign` | `boolean`
|
|
265
|
-
| `noPluck` | `boolean`
|
|
266
|
-
| `pluckMode` | `string`
|
|
261
|
+
| Option | Type | Description |
|
|
262
|
+
| ----------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
263
|
+
| `maxPage` | `number` | Maximum allowed value for `limit` (caps the page size) |
|
|
264
|
+
| `noForeign` | `boolean` | Skip foreign key resolution |
|
|
265
|
+
| `noPluck` | `boolean` | Return all database fields instead of plucked fields |
|
|
266
|
+
| `pluckMode` | `string` | Select a named pluck mode (see `@Listable`) |
|
|
267
|
+
| `filters` | `Record<string, FilterValue>` | Mandatory filters merged with request filters; route field keys win (see [filters](./8.filters.md#mandatory-route-filters)). |
|
|
267
268
|
|
|
268
269
|
**New:**
|
|
269
270
|
|
|
@@ -278,6 +279,31 @@ class UserAPI extends DataController(User, routes, Controller("/users")) {
|
|
|
278
279
|
| `index` | `string` | Use a secondary index instead of the primary key |
|
|
279
280
|
| `noMandatory` | `string` | Skip mandatory field validation |
|
|
280
281
|
|
|
282
|
+
## Loaded-Model Guards with `WithGetGuard`
|
|
283
|
+
|
|
284
|
+
`DefaultRoutes.WithGetGuard(guard)` returns a Get route that awaits a guard after loading and unlocking the model, but before selecting readable fields and applying response getters. Use it to check a stored discriminator or ownership field that must not appear in the response.
|
|
285
|
+
|
|
286
|
+
```ts docs-check
|
|
287
|
+
import { DefaultRoutes } from "@antelopejs/interface-data-api";
|
|
288
|
+
import { assert } from "@antelopejs/interface-api-util";
|
|
289
|
+
|
|
290
|
+
const invoiceGet = DefaultRoutes.WithGetGuard(
|
|
291
|
+
async function (ctx, current, params) {
|
|
292
|
+
// documentType can be stored without being exposed through @Access.
|
|
293
|
+
assert(current.documentType === "invoice", 404, "Not Found");
|
|
294
|
+
},
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
// Pass this route map to DataController(Document, routes, Controller("/invoices")).
|
|
298
|
+
const routes = {
|
|
299
|
+
get: DefaultRoutes.WithOptions(invoiceGet, { noForeign: "true" }),
|
|
300
|
+
};
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
The `GetGuard` callback receives `(ctx, current, params)` and runs with the controller as `this` when declared as a regular function. `ctx` is the request context, `current` is the loaded model including non-readable fields and the normal Get joined/computed/foreign data, and `params` is `Parameters.GetParameters`. Treat `current` as read-only: it is not the response DTO and is not frozen by the API.
|
|
304
|
+
|
|
305
|
+
Throw an `HTTPResult` (or use `assert`) to deny the read. A normal return permits it; returning `false` is not a denial mechanism. Missing records return `404` without invoking the guard. The guard does not issue a second read, does not change field-access rules, and applies only to the route using it, not list/edit/delete routes.
|
|
306
|
+
|
|
281
307
|
## Custom Routes
|
|
282
308
|
|
|
283
309
|
For operations beyond CRUD, define a custom route callback with `func`, `args`, and `method` properties.
|
package/docs/6.listable.md
CHANGED
|
@@ -101,6 +101,7 @@ class UserAPI extends DataController(User, routes, Controller("/users")) {
|
|
|
101
101
|
declare userModel: UserModel;
|
|
102
102
|
|
|
103
103
|
@Listable()
|
|
104
|
+
@Listable(true, "detailed")
|
|
104
105
|
@Access(AccessMode.ReadOnly)
|
|
105
106
|
declare name: string;
|
|
106
107
|
|
|
@@ -113,6 +114,8 @@ class UserAPI extends DataController(User, routes, Controller("/users")) {
|
|
|
113
114
|
- `GET /users/list` returns only `name`.
|
|
114
115
|
- `GET /users/detailed` returns both `name` and `internalNotes`.
|
|
115
116
|
|
|
117
|
+
Modes are independent field sets: `"detailed"` does not inherit `"list"`. The example includes `name` in both modes explicitly. A registered list route whose `pluckMode` has never been declared returns `400 Bad Request` unless `noPluck` is enabled; an unregistered URL instead returns `404`.
|
|
118
|
+
|
|
116
119
|
### Listable with Getters
|
|
117
120
|
|
|
118
121
|
When a field uses a getter (computed property), the `@Listable` decorator must specify which database fields the getter depends on. This ensures those fields are fetched from the database.
|
package/docs/8.filters.md
CHANGED
|
@@ -8,7 +8,7 @@ The `@Filter` decorator adds filtering capabilities to list endpoints. Filters a
|
|
|
8
8
|
|
|
9
9
|
### Default Filter
|
|
10
10
|
|
|
11
|
-
Apply `@Filter()` without arguments to enable standard comparison filtering on a field.
|
|
11
|
+
Apply `@Filter()` without arguments to enable standard comparison filtering on a string field. Query filter values remain strings: TypeScript annotations, `@Field`, and write validators do not parse them into numbers or booleans.
|
|
12
12
|
|
|
13
13
|
```typescript
|
|
14
14
|
import { Filter } from "@antelopejs/interface-data-api/metadata";
|
|
@@ -30,12 +30,12 @@ class UserAPI extends DataController(
|
|
|
30
30
|
@Listable()
|
|
31
31
|
@Access(AccessMode.ReadWrite)
|
|
32
32
|
@Filter()
|
|
33
|
-
declare
|
|
33
|
+
declare status: string;
|
|
34
34
|
|
|
35
35
|
@Listable()
|
|
36
36
|
@Access(AccessMode.ReadWrite)
|
|
37
37
|
@Filter()
|
|
38
|
-
declare
|
|
38
|
+
declare role: string;
|
|
39
39
|
}
|
|
40
40
|
```
|
|
41
41
|
|
|
@@ -63,24 +63,74 @@ When no operator is specified, `eq` (equal) is used by default.
|
|
|
63
63
|
|
|
64
64
|
### Examples
|
|
65
65
|
|
|
66
|
-
Retrieve users
|
|
66
|
+
Retrieve active users:
|
|
67
67
|
|
|
68
68
|
```http
|
|
69
|
-
GET /users/list?
|
|
69
|
+
GET /users/list?filter_status=active
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
Retrieve
|
|
72
|
+
Retrieve users whose role is not admin:
|
|
73
73
|
|
|
74
74
|
```http
|
|
75
|
-
GET /users/list?
|
|
75
|
+
GET /users/list?filter_role=ne:admin
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
Combine multiple filters
|
|
78
|
+
Combine multiple filters:
|
|
79
79
|
|
|
80
80
|
```http
|
|
81
|
-
GET /users/list?
|
|
81
|
+
GET /users/list?filter_status=active&filter_role=ne:admin
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Numeric and Boolean Filters
|
|
85
|
+
|
|
86
|
+
Parse and validate values explicitly in a custom filter. These filters support the six numeric comparisons and boolean equality/inequality; unsupported input throws an HTTP 400 response.
|
|
87
|
+
|
|
88
|
+
```ts docs-check
|
|
89
|
+
import { assert } from "@antelopejs/interface-api-util";
|
|
90
|
+
import type { FilterFunction } from "@antelopejs/interface-data-api/metadata";
|
|
91
|
+
|
|
92
|
+
export const numberFilter: FilterFunction<Record<string, unknown>> = (
|
|
93
|
+
_context,
|
|
94
|
+
proxy,
|
|
95
|
+
_key,
|
|
96
|
+
raw,
|
|
97
|
+
mode,
|
|
98
|
+
) => {
|
|
99
|
+
const value = Number(raw);
|
|
100
|
+
assert(raw.trim() !== "" && Number.isFinite(value), 400, "Invalid number");
|
|
101
|
+
assert(
|
|
102
|
+
["eq", "ne", "gt", "ge", "lt", "le"].includes(mode),
|
|
103
|
+
400,
|
|
104
|
+
"Invalid comparison",
|
|
105
|
+
);
|
|
106
|
+
return proxy[mode](value);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
export const booleanFilter: FilterFunction<Record<string, unknown>> = (
|
|
110
|
+
_context,
|
|
111
|
+
proxy,
|
|
112
|
+
_key,
|
|
113
|
+
raw,
|
|
114
|
+
mode,
|
|
115
|
+
) => {
|
|
116
|
+
assert(raw === "true" || raw === "false", 400, "Invalid boolean");
|
|
117
|
+
assert(mode === "eq" || mode === "ne", 400, "Invalid comparison");
|
|
118
|
+
return proxy[mode](raw === "true");
|
|
119
|
+
};
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Apply the functions to the corresponding fields in your controller:
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
@Filter(numberFilter, false)
|
|
126
|
+
declare age: number;
|
|
127
|
+
|
|
128
|
+
@Filter(booleanFilter, false)
|
|
129
|
+
declare isActive: boolean;
|
|
82
130
|
```
|
|
83
131
|
|
|
132
|
+
With these custom filters, `?filter_age=gt:30&filter_isActive=true` compares against `30` and `true`, not `"30"` and `"true"`. Keep `useIndex` false for callbacks that parse values: indexed equality uses the raw string directly and bypasses the filter callback.
|
|
133
|
+
|
|
84
134
|
## Custom Filters
|
|
85
135
|
|
|
86
136
|
For filtering logic beyond simple comparisons, pass a custom filter function to `@Filter`.
|
|
@@ -138,7 +188,7 @@ class UserAPI extends DataController(
|
|
|
138
188
|
|
|
139
189
|
@Listable()
|
|
140
190
|
@Access(AccessMode.ReadWrite)
|
|
141
|
-
@Filter()
|
|
191
|
+
@Filter(numberFilter, false)
|
|
142
192
|
declare age: number;
|
|
143
193
|
}
|
|
144
194
|
```
|
|
@@ -168,6 +218,20 @@ When `useIndex` is not specified:
|
|
|
168
218
|
|
|
169
219
|
Index-optimized filters with an `eq` operator perform an indexed lookup instead of a full table scan, which significantly improves performance on large datasets.
|
|
170
220
|
|
|
221
|
+
## Mandatory Route Filters
|
|
222
|
+
|
|
223
|
+
Use `DefaultRoutes.WithOptions` to constrain a list route. The `filters` map contains `[stringValue, comparison]` tuples for fields declared with `@Filter`. Request filters for other fields are retained, but a route filter wins when both specify the same field.
|
|
224
|
+
|
|
225
|
+
```ts docs-check
|
|
226
|
+
import { DefaultRoutes } from "@antelopejs/interface-data-api";
|
|
227
|
+
|
|
228
|
+
const activeUsers = DefaultRoutes.WithOptions(DefaultRoutes.List, {
|
|
229
|
+
filters: { status: ["active", "eq"] },
|
|
230
|
+
});
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
On a controller with a `status` filter, `?filter_status=inactive&filter_role=admin` still restricts `status` to `"active"` while retaining the requested `role`. Route filters are list-query constraints, not authorization for separate get/edit/delete routes.
|
|
234
|
+
|
|
171
235
|
## Modifier Integration
|
|
172
236
|
|
|
173
237
|
The `proxy` parameter in custom filter functions provides the field value after modifier transformations have been applied. For example, if a field uses an encryption modifier, `proxy` contains the decrypted value. This ensures filters work correctly with modifier-protected data.
|
package/package.json
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antelopejs/interface-data-api",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "AntelopeJS interface
|
|
3
|
+
"version": "0.2.2",
|
|
4
|
+
"description": "AntelopeJS interface that generates CRUD REST endpoints from database tables, with access rules, validation and pagination",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"antelopejs",
|
|
7
|
+
"api",
|
|
7
8
|
"crud",
|
|
8
9
|
"data-api",
|
|
9
|
-
"interface"
|
|
10
|
+
"interface",
|
|
11
|
+
"rest"
|
|
10
12
|
],
|
|
13
|
+
"homepage": "https://interfaces.antelopejs.com/docs/data-api",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/AntelopeJS/interface-data-api/issues"
|
|
16
|
+
},
|
|
11
17
|
"license": "Apache-2.0",
|
|
12
18
|
"repository": {
|
|
13
19
|
"type": "git",
|
|
@@ -57,13 +63,13 @@
|
|
|
57
63
|
"knip": "knip"
|
|
58
64
|
},
|
|
59
65
|
"devDependencies": {
|
|
60
|
-
"@antelopejs/core": "^1.
|
|
61
|
-
"@antelopejs/interface-api": "^0.0.
|
|
62
|
-
"@antelopejs/interface-api-util": "^0.1.
|
|
63
|
-
"@antelopejs/interface-core": "^0.
|
|
64
|
-
"@antelopejs/interface-database": "^0.1.
|
|
65
|
-
"@antelopejs/interface-database-decorators": "^0.1.
|
|
66
|
-
"@antelopejs/tooling-configs": "^0.0.
|
|
66
|
+
"@antelopejs/core": "^1.16.0",
|
|
67
|
+
"@antelopejs/interface-api": "^0.0.15",
|
|
68
|
+
"@antelopejs/interface-api-util": "^0.1.3",
|
|
69
|
+
"@antelopejs/interface-core": "^0.2.4",
|
|
70
|
+
"@antelopejs/interface-database": "^0.1.10",
|
|
71
|
+
"@antelopejs/interface-database-decorators": "^0.1.9",
|
|
72
|
+
"@antelopejs/tooling-configs": "^0.0.9",
|
|
67
73
|
"@types/chai": "^4.3.20",
|
|
68
74
|
"@types/mocha": "^10.0.10",
|
|
69
75
|
"@types/node": "^22.19.15",
|
|
@@ -81,11 +87,11 @@
|
|
|
81
87
|
"typescript": "^5.9.3"
|
|
82
88
|
},
|
|
83
89
|
"peerDependencies": {
|
|
84
|
-
"@antelopejs/interface-api": ">=0.0.
|
|
85
|
-
"@antelopejs/interface-api-util": ">=0.1.
|
|
86
|
-
"@antelopejs/interface-core": ">=0.
|
|
87
|
-
"@antelopejs/interface-database": ">=0.1.
|
|
88
|
-
"@antelopejs/interface-database-decorators": ">=0.1.
|
|
90
|
+
"@antelopejs/interface-api": ">=0.0.15 <1.0.0",
|
|
91
|
+
"@antelopejs/interface-api-util": ">=0.1.3 <1.0.0",
|
|
92
|
+
"@antelopejs/interface-core": ">=0.2.4 <1.0.0",
|
|
93
|
+
"@antelopejs/interface-database": ">=0.1.10 <1.0.0",
|
|
94
|
+
"@antelopejs/interface-database-decorators": ">=0.1.9 <1.0.0"
|
|
89
95
|
},
|
|
90
96
|
"packageManager": "pnpm@10.6.5",
|
|
91
97
|
"antelopeJs": {
|