@forestadmin/agent 1.0.0-beta.34 → 1.0.0-beta.35
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/CHANGELOG.md +15 -0
- package/dist/builder/collection.d.ts +25 -9
- package/dist/builder/collection.js +33 -9
- package/dist/builder/types.d.ts +6 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
# @forestadmin/agent [1.0.0-beta.35](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.34...@forestadmin/agent@1.0.0-beta.35) (2022-06-01)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **builder:** add helper method to create embedded relationships ([#311](https://github.com/ForestAdmin/agent-nodejs/issues/311)) ([662cf58](https://github.com/ForestAdmin/agent-nodejs/commit/662cf5885c8b7c4fa17fed59f20f54625d4e5660))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Dependencies
|
|
13
|
+
|
|
14
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.21
|
|
15
|
+
|
|
1
16
|
# @forestadmin/agent [1.0.0-beta.34](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.33...@forestadmin/agent@1.0.0-beta.34) (2022-05-31)
|
|
2
17
|
|
|
3
18
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ActionDefinition, Operator, OperatorDefinition, PlainSortClause, SearchDefinition, SegmentDefinition, TCollectionName, TColumnName, TFieldName, TSchema, WriteDefinition } from '@forestadmin/datasource-toolkit';
|
|
2
|
-
import { FieldDefinition } from './types';
|
|
2
|
+
import { FieldDefinition, OneToManyEmbeddedDefinition } from './types';
|
|
3
3
|
import DecoratorsStack from './decorators-stack';
|
|
4
4
|
export default class CollectionBuilder<S extends TSchema = TSchema, N extends TCollectionName<S> = TCollectionName<S>> {
|
|
5
5
|
private readonly name;
|
|
@@ -70,9 +70,9 @@ export default class CollectionBuilder<S extends TSchema = TSchema, N extends TC
|
|
|
70
70
|
* @param foreignCollection name of the targeted collection
|
|
71
71
|
* @param options extra information about the relation
|
|
72
72
|
* @example
|
|
73
|
-
* books.
|
|
73
|
+
* books.addManyToOneRelation('myAuthor', 'persons', { foreignKey: 'author_id' })
|
|
74
74
|
*/
|
|
75
|
-
|
|
75
|
+
addManyToOneRelation<T extends TCollectionName<S>>(name: string, foreignCollection: T, options: {
|
|
76
76
|
foreignKey: TColumnName<S, N>;
|
|
77
77
|
foreignKeyTarget?: TColumnName<S, T>;
|
|
78
78
|
}): this;
|
|
@@ -82,9 +82,9 @@ export default class CollectionBuilder<S extends TSchema = TSchema, N extends TC
|
|
|
82
82
|
* @param foreignCollection name of the targeted collection
|
|
83
83
|
* @param options extra information about the relation
|
|
84
84
|
* @example
|
|
85
|
-
* persons.
|
|
85
|
+
* persons.addOneToManyRelation('writtenBooks', 'books', { originKey: 'author_id' })
|
|
86
86
|
*/
|
|
87
|
-
|
|
87
|
+
addOneToManyRelation<T extends TCollectionName<S>>(name: string, foreignCollection: T, options: {
|
|
88
88
|
originKey: TColumnName<S, T>;
|
|
89
89
|
originKeyTarget?: TColumnName<S, N>;
|
|
90
90
|
}): this;
|
|
@@ -94,9 +94,9 @@ export default class CollectionBuilder<S extends TSchema = TSchema, N extends TC
|
|
|
94
94
|
* @param foreignCollection name of the targeted collection
|
|
95
95
|
* @param options extra information about the relation
|
|
96
96
|
* @example
|
|
97
|
-
* persons.
|
|
97
|
+
* persons.addOneToOneRelation('bestFriend', 'persons', { originKey: 'best_friend_id' })
|
|
98
98
|
*/
|
|
99
|
-
|
|
99
|
+
addOneToOneRelation<T extends TCollectionName<S>>(name: string, foreignCollection: T, options: {
|
|
100
100
|
originKey: TColumnName<S, T>;
|
|
101
101
|
originKeyTarget?: TColumnName<S, N>;
|
|
102
102
|
}): this;
|
|
@@ -107,17 +107,33 @@ export default class CollectionBuilder<S extends TSchema = TSchema, N extends TC
|
|
|
107
107
|
* @param throughCollection name of the intermediary collection
|
|
108
108
|
* @param options extra information about the relation
|
|
109
109
|
* @example
|
|
110
|
-
* dvds.
|
|
110
|
+
* dvds.addManyToManyRelation('rentalsOfThisDvd', 'rentals', 'dvd_rentals', {
|
|
111
111
|
* originKey: 'dvd_id',
|
|
112
112
|
* foreignKey: 'rental_id'
|
|
113
113
|
* })
|
|
114
114
|
*/
|
|
115
|
-
|
|
115
|
+
addManyToManyRelation<Foreign extends TCollectionName<S>, Through extends TCollectionName<S>>(name: string, foreignCollection: Foreign, throughCollection: Through, options: {
|
|
116
116
|
originKey: TColumnName<S, Through>;
|
|
117
117
|
foreignKey: TColumnName<S, Through>;
|
|
118
118
|
originKeyTarget?: TColumnName<S, N>;
|
|
119
119
|
foreignKeyTarget?: TColumnName<S, Foreign>;
|
|
120
120
|
}): this;
|
|
121
|
+
/**
|
|
122
|
+
* Add a virtual collection into the related data of a record.
|
|
123
|
+
*
|
|
124
|
+
* @param name name of the relation
|
|
125
|
+
* @param definition the definition of the new relation
|
|
126
|
+
* @example
|
|
127
|
+
* .addExternalRelation('states', {
|
|
128
|
+
* schema: { code: 'Number', name: 'String' },
|
|
129
|
+
* listRecords: ({ id }) => {
|
|
130
|
+
* return record.id == 34 ?
|
|
131
|
+
* [{ code: 'AL', name: 'Alabama' }, { code: 'AK', name: 'Alaska' }] :
|
|
132
|
+
* [{ code: 'AZ', name: 'Arizona' }, { code: 'TX', name: 'Texas' }];
|
|
133
|
+
* }
|
|
134
|
+
* })
|
|
135
|
+
*/
|
|
136
|
+
addExternalRelation(name: string, definition: OneToManyEmbeddedDefinition<S, N>): this;
|
|
121
137
|
/**
|
|
122
138
|
* Add a new segment on the collection.
|
|
123
139
|
* @param name the name of the segment
|
|
@@ -117,9 +117,9 @@ class CollectionBuilder {
|
|
|
117
117
|
* @param foreignCollection name of the targeted collection
|
|
118
118
|
* @param options extra information about the relation
|
|
119
119
|
* @example
|
|
120
|
-
* books.
|
|
120
|
+
* books.addManyToOneRelation('myAuthor', 'persons', { foreignKey: 'author_id' })
|
|
121
121
|
*/
|
|
122
|
-
|
|
122
|
+
addManyToOneRelation(name, foreignCollection, options) {
|
|
123
123
|
this.addRelation(name, {
|
|
124
124
|
type: 'ManyToOne',
|
|
125
125
|
foreignCollection,
|
|
@@ -134,9 +134,9 @@ class CollectionBuilder {
|
|
|
134
134
|
* @param foreignCollection name of the targeted collection
|
|
135
135
|
* @param options extra information about the relation
|
|
136
136
|
* @example
|
|
137
|
-
* persons.
|
|
137
|
+
* persons.addOneToManyRelation('writtenBooks', 'books', { originKey: 'author_id' })
|
|
138
138
|
*/
|
|
139
|
-
|
|
139
|
+
addOneToManyRelation(name, foreignCollection, options) {
|
|
140
140
|
this.addRelation(name, {
|
|
141
141
|
type: 'OneToMany',
|
|
142
142
|
foreignCollection,
|
|
@@ -151,9 +151,9 @@ class CollectionBuilder {
|
|
|
151
151
|
* @param foreignCollection name of the targeted collection
|
|
152
152
|
* @param options extra information about the relation
|
|
153
153
|
* @example
|
|
154
|
-
* persons.
|
|
154
|
+
* persons.addOneToOneRelation('bestFriend', 'persons', { originKey: 'best_friend_id' })
|
|
155
155
|
*/
|
|
156
|
-
|
|
156
|
+
addOneToOneRelation(name, foreignCollection, options) {
|
|
157
157
|
this.addRelation(name, {
|
|
158
158
|
type: 'OneToOne',
|
|
159
159
|
foreignCollection,
|
|
@@ -169,12 +169,12 @@ class CollectionBuilder {
|
|
|
169
169
|
* @param throughCollection name of the intermediary collection
|
|
170
170
|
* @param options extra information about the relation
|
|
171
171
|
* @example
|
|
172
|
-
* dvds.
|
|
172
|
+
* dvds.addManyToManyRelation('rentalsOfThisDvd', 'rentals', 'dvd_rentals', {
|
|
173
173
|
* originKey: 'dvd_id',
|
|
174
174
|
* foreignKey: 'rental_id'
|
|
175
175
|
* })
|
|
176
176
|
*/
|
|
177
|
-
|
|
177
|
+
addManyToManyRelation(name, foreignCollection, throughCollection, options) {
|
|
178
178
|
this.addRelation(name, {
|
|
179
179
|
type: 'ManyToMany',
|
|
180
180
|
foreignCollection,
|
|
@@ -186,6 +186,30 @@ class CollectionBuilder {
|
|
|
186
186
|
});
|
|
187
187
|
return this;
|
|
188
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Add a virtual collection into the related data of a record.
|
|
191
|
+
*
|
|
192
|
+
* @param name name of the relation
|
|
193
|
+
* @param definition the definition of the new relation
|
|
194
|
+
* @example
|
|
195
|
+
* .addExternalRelation('states', {
|
|
196
|
+
* schema: { code: 'Number', name: 'String' },
|
|
197
|
+
* listRecords: ({ id }) => {
|
|
198
|
+
* return record.id == 34 ?
|
|
199
|
+
* [{ code: 'AL', name: 'Alabama' }, { code: 'AK', name: 'Alaska' }] :
|
|
200
|
+
* [{ code: 'AZ', name: 'Arizona' }, { code: 'TX', name: 'Texas' }];
|
|
201
|
+
* }
|
|
202
|
+
* })
|
|
203
|
+
*/
|
|
204
|
+
addExternalRelation(name, definition) {
|
|
205
|
+
const { schema } = this.stack.action.getCollection(this.name);
|
|
206
|
+
const primaryKeys = datasource_toolkit_1.SchemaUtils.getPrimaryKeys(schema);
|
|
207
|
+
return this.addField(name, {
|
|
208
|
+
dependencies: definition.dependencies ?? primaryKeys,
|
|
209
|
+
columnType: [definition.schema],
|
|
210
|
+
getValues: async (records, context) => Promise.all(records.map(async (record) => definition.listRecords(record, context))),
|
|
211
|
+
});
|
|
212
|
+
}
|
|
189
213
|
/**
|
|
190
214
|
* Add a new segment on the collection.
|
|
191
215
|
* @param name the name of the segment
|
|
@@ -328,4 +352,4 @@ class CollectionBuilder {
|
|
|
328
352
|
}
|
|
329
353
|
}
|
|
330
354
|
exports.default = CollectionBuilder;
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
355
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyL2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFpQnlDO0FBR3pDLHlGQUE4RTtBQUU5RSxNQUFxQixpQkFBaUI7SUFPcEMsWUFBWSxLQUFzQixFQUFFLElBQVk7UUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWTtRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFaEYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFdBQVcsQ0FBQyxJQUFZLEVBQUUsT0FBOEQ7UUFDdEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxvQ0FBZSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBaUIsQ0FBQztRQUV4RixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtZQUNsQixlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7WUFDeEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNqQyxZQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVB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
|
package/dist/builder/types.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { ComputedDefinition, TCollectionName, TSchema } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
import { CollectionCustomizationContext, ComputedDefinition, PrimitiveTypes, TCollectionName, TFieldName, TRow, TSchema } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
import { IncomingMessage, ServerResponse } from 'http';
|
|
4
4
|
export declare type FieldDefinition<S extends TSchema = TSchema, N extends TCollectionName<S> = TCollectionName<S>> = ComputedDefinition<S, N> & {
|
|
5
5
|
beforeRelations?: boolean;
|
|
6
6
|
};
|
|
7
|
+
export declare type OneToManyEmbeddedDefinition<S extends TSchema = TSchema, N extends TCollectionName<S> = TCollectionName<S>> = {
|
|
8
|
+
schema: Record<string, PrimitiveTypes>;
|
|
9
|
+
dependencies?: TFieldName<S, N>[];
|
|
10
|
+
listRecords(records: TRow<S, N>, context: CollectionCustomizationContext<S, N>): Promise<unknown[]> | unknown[];
|
|
11
|
+
};
|
|
7
12
|
export declare type HttpCallback = (req: IncomingMessage, res: ServerResponse) => void;
|
|
8
13
|
//# sourceMappingURL=types.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/agent",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.35",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@fast-csv/format": "^4.3.5",
|
|
16
16
|
"@fastify/express": "^1.1.0",
|
|
17
|
-
"@forestadmin/datasource-toolkit": "1.0.0-beta.
|
|
17
|
+
"@forestadmin/datasource-toolkit": "1.0.0-beta.21",
|
|
18
18
|
"@koa/cors": "^3.3.0",
|
|
19
19
|
"@koa/router": "^10.1.1",
|
|
20
20
|
"forest-ip-utils": "^1.0.1",
|