@spinajs/orm-api 2.0.102
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 +11 -0
- package/lib/cjs/PlainJsonCollectionTransformer.d.ts +9 -0
- package/lib/cjs/PlainJsonCollectionTransformer.d.ts.map +1 -0
- package/lib/cjs/PlainJsonCollectionTransformer.js +30 -0
- package/lib/cjs/PlainJsonCollectionTransformer.js.map +1 -0
- package/lib/cjs/config/orm-http.d.ts +17 -0
- package/lib/cjs/config/orm-http.d.ts.map +1 -0
- package/lib/cjs/config/orm-http.js +23 -0
- package/lib/cjs/config/orm-http.js.map +1 -0
- package/lib/cjs/controllers/Collections.d.ts +33 -0
- package/lib/cjs/controllers/Collections.d.ts.map +1 -0
- package/lib/cjs/controllers/Collections.js +415 -0
- package/lib/cjs/controllers/Collections.js.map +1 -0
- package/lib/cjs/controllers/JsonApi.d.ts +1 -0
- package/lib/cjs/controllers/JsonApi.d.ts.map +1 -0
- package/lib/cjs/controllers/JsonApi.js +245 -0
- package/lib/cjs/controllers/JsonApi.js.map +1 -0
- package/lib/cjs/dto/QueryArgs.d.ts +9 -0
- package/lib/cjs/dto/QueryArgs.d.ts.map +1 -0
- package/lib/cjs/dto/QueryArgs.js +28 -0
- package/lib/cjs/dto/QueryArgs.js.map +1 -0
- package/lib/cjs/dto/QueryFilter.d.ts +5 -0
- package/lib/cjs/dto/QueryFilter.d.ts.map +1 -0
- package/lib/cjs/dto/QueryFilter.js +25 -0
- package/lib/cjs/dto/QueryFilter.js.map +1 -0
- package/lib/cjs/dto/QueryIncludes.d.ts +5 -0
- package/lib/cjs/dto/QueryIncludes.d.ts.map +1 -0
- package/lib/cjs/dto/QueryIncludes.js +25 -0
- package/lib/cjs/dto/QueryIncludes.js.map +1 -0
- package/lib/cjs/hydrators/QueryFilterHydrator.d.ts +5 -0
- package/lib/cjs/hydrators/QueryFilterHydrator.d.ts.map +1 -0
- package/lib/cjs/hydrators/QueryFilterHydrator.js +15 -0
- package/lib/cjs/hydrators/QueryFilterHydrator.js.map +1 -0
- package/lib/cjs/hydrators/QueryIncludesHydrator.d.ts +5 -0
- package/lib/cjs/hydrators/QueryIncludesHydrator.d.ts.map +1 -0
- package/lib/cjs/hydrators/QueryIncludesHydrator.js +21 -0
- package/lib/cjs/hydrators/QueryIncludesHydrator.js.map +1 -0
- package/lib/cjs/index.d.ts +29 -0
- package/lib/cjs/index.d.ts.map +1 -0
- package/lib/cjs/index.js +101 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/interfaces.d.ts +27 -0
- package/lib/cjs/interfaces.d.ts.map +1 -0
- package/lib/cjs/interfaces.js +32 -0
- package/lib/cjs/interfaces.js.map +1 -0
- package/lib/cjs/middleware.d.ts +22 -0
- package/lib/cjs/middleware.d.ts.map +1 -0
- package/lib/cjs/middleware.js +31 -0
- package/lib/cjs/middleware.js.map +1 -0
- package/lib/cjs/package.json +1 -0
- package/lib/cjs/policies/FindModelType.d.ts +8 -0
- package/lib/cjs/policies/FindModelType.d.ts.map +1 -0
- package/lib/cjs/policies/FindModelType.js +43 -0
- package/lib/cjs/policies/FindModelType.js.map +1 -0
- package/lib/cjs/route-args/ModelType.d.ts +13 -0
- package/lib/cjs/route-args/ModelType.d.ts.map +1 -0
- package/lib/cjs/route-args/ModelType.js +39 -0
- package/lib/cjs/route-args/ModelType.js.map +1 -0
- package/lib/cjs/schemas/QueryArgs.schema.d.ts +20 -0
- package/lib/cjs/schemas/QueryArgs.schema.d.ts.map +1 -0
- package/lib/cjs/schemas/QueryArgs.schema.js +13 -0
- package/lib/cjs/schemas/QueryArgs.schema.js.map +1 -0
- package/lib/mjs/PlainJsonCollectionTransformer.d.ts +9 -0
- package/lib/mjs/PlainJsonCollectionTransformer.d.ts.map +1 -0
- package/lib/mjs/PlainJsonCollectionTransformer.js +27 -0
- package/lib/mjs/PlainJsonCollectionTransformer.js.map +1 -0
- package/lib/mjs/config/orm-http.d.ts +17 -0
- package/lib/mjs/config/orm-http.d.ts.map +1 -0
- package/lib/mjs/config/orm-http.js +21 -0
- package/lib/mjs/config/orm-http.js.map +1 -0
- package/lib/mjs/controllers/Collections.d.ts +33 -0
- package/lib/mjs/controllers/Collections.d.ts.map +1 -0
- package/lib/mjs/controllers/Collections.js +412 -0
- package/lib/mjs/controllers/Collections.js.map +1 -0
- package/lib/mjs/controllers/JsonApi.d.ts +2 -0
- package/lib/mjs/controllers/JsonApi.d.ts.map +1 -0
- package/lib/mjs/controllers/JsonApi.js +246 -0
- package/lib/mjs/controllers/JsonApi.js.map +1 -0
- package/lib/mjs/dto/QueryArgs.d.ts +9 -0
- package/lib/mjs/dto/QueryArgs.d.ts.map +1 -0
- package/lib/mjs/dto/QueryArgs.js +22 -0
- package/lib/mjs/dto/QueryArgs.js.map +1 -0
- package/lib/mjs/dto/QueryFilter.d.ts +5 -0
- package/lib/mjs/dto/QueryFilter.d.ts.map +1 -0
- package/lib/mjs/dto/QueryFilter.js +22 -0
- package/lib/mjs/dto/QueryFilter.js.map +1 -0
- package/lib/mjs/dto/QueryIncludes.d.ts +5 -0
- package/lib/mjs/dto/QueryIncludes.d.ts.map +1 -0
- package/lib/mjs/dto/QueryIncludes.js +22 -0
- package/lib/mjs/dto/QueryIncludes.js.map +1 -0
- package/lib/mjs/hydrators/QueryFilterHydrator.d.ts +5 -0
- package/lib/mjs/hydrators/QueryFilterHydrator.d.ts.map +1 -0
- package/lib/mjs/hydrators/QueryFilterHydrator.js +11 -0
- package/lib/mjs/hydrators/QueryFilterHydrator.js.map +1 -0
- package/lib/mjs/hydrators/QueryIncludesHydrator.d.ts +5 -0
- package/lib/mjs/hydrators/QueryIncludesHydrator.d.ts.map +1 -0
- package/lib/mjs/hydrators/QueryIncludesHydrator.js +14 -0
- package/lib/mjs/hydrators/QueryIncludesHydrator.js.map +1 -0
- package/lib/mjs/index.d.ts +29 -0
- package/lib/mjs/index.d.ts.map +1 -0
- package/lib/mjs/index.js +95 -0
- package/lib/mjs/index.js.map +1 -0
- package/lib/mjs/interfaces.d.ts +27 -0
- package/lib/mjs/interfaces.d.ts.map +1 -0
- package/lib/mjs/interfaces.js +28 -0
- package/lib/mjs/interfaces.js.map +1 -0
- package/lib/mjs/middleware.d.ts +22 -0
- package/lib/mjs/middleware.d.ts.map +1 -0
- package/lib/mjs/middleware.js +27 -0
- package/lib/mjs/middleware.js.map +1 -0
- package/lib/mjs/package.json +1 -0
- package/lib/mjs/policies/FindModelType.d.ts +8 -0
- package/lib/mjs/policies/FindModelType.d.ts.map +1 -0
- package/lib/mjs/policies/FindModelType.js +40 -0
- package/lib/mjs/policies/FindModelType.js.map +1 -0
- package/lib/mjs/route-args/ModelType.d.ts +13 -0
- package/lib/mjs/route-args/ModelType.d.ts.map +1 -0
- package/lib/mjs/route-args/ModelType.js +35 -0
- package/lib/mjs/route-args/ModelType.js.map +1 -0
- package/lib/mjs/schemas/QueryArgs.schema.d.ts +20 -0
- package/lib/mjs/schemas/QueryArgs.schema.d.ts.map +1 -0
- package/lib/mjs/schemas/QueryArgs.schema.js +11 -0
- package/lib/mjs/schemas/QueryArgs.schema.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -0
- package/lib/tsconfig.mjs.tsbuildinfo +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
// import { Autoinject, Constructor, DI, Inject } from '@spinajs/di';
|
|
2
|
+
// import { BaseController, ArgHydrator, Hydrator, Ok, Del, Post, Query, Req } from '@spinajs/http';
|
|
3
|
+
// import { BasePath, Get, Param, Body, Patch } from '@spinajs/http';
|
|
4
|
+
// import { extractModelDescriptor, ModelBase, SelectQueryBuilder, Orm, DeleteQueryBuilder, createQuery, UpdateQueryBuilder, InsertQueryBuilder, IModelDescriptor, RelationType } from '@spinajs/orm';
|
|
5
|
+
// import _ from 'lodash';
|
|
6
|
+
// import * as express from 'express';
|
|
7
|
+
// import { RepositoryMiddleware } from '../middleware.js';
|
|
8
|
+
// import { JsonApiIncomingObject } from '../interfaces.js';
|
|
9
|
+
// class IncludesHydrator extends ArgHydrator {
|
|
10
|
+
// public async hydrate(input: any): Promise<any> {
|
|
11
|
+
// return new Includes(input ? input.split(',').map((x: string) => x.split('.')) : []);
|
|
12
|
+
// }
|
|
13
|
+
// }
|
|
14
|
+
// class FiltersHydrator extends ArgHydrator {
|
|
15
|
+
// public async hydrate(input: any): Promise<any> {
|
|
16
|
+
// return new Filters(input ? JSON.parse(input) : []);
|
|
17
|
+
// }
|
|
18
|
+
// }
|
|
19
|
+
// class ModelParamHydrator extends ArgHydrator {
|
|
20
|
+
// @Autoinject(Orm)
|
|
21
|
+
// protected Orm: Orm;
|
|
22
|
+
// public async hydrate(input: string): Promise<any> {
|
|
23
|
+
// const model = this.Orm.Models.find((x) => x.name.toLowerCase() === input.toLowerCase());
|
|
24
|
+
// if (!model) {
|
|
25
|
+
// return null;
|
|
26
|
+
// }
|
|
27
|
+
// const desc = extractModelDescriptor(model.type);
|
|
28
|
+
// const param = new Model();
|
|
29
|
+
// param.Descriptor = desc;
|
|
30
|
+
// param.Type = model.type;
|
|
31
|
+
// return param;
|
|
32
|
+
// }
|
|
33
|
+
// }
|
|
34
|
+
// function dehydrate(model: ModelBase, omit?: string[]) {
|
|
35
|
+
// const dObj = {
|
|
36
|
+
// type: model.constructor.name,
|
|
37
|
+
// id: model.PrimaryKeyValue,
|
|
38
|
+
// attributes: model.dehydrate(omit),
|
|
39
|
+
// relationships: _.mapValues(_.groupBy(model.getFlattenRelationModels(false), '__relationKey__'), (x) => {
|
|
40
|
+
// return x.map((xx) => {
|
|
41
|
+
// return {
|
|
42
|
+
// type: xx.constructor.name,
|
|
43
|
+
// id: xx.PrimaryKeyValue,
|
|
44
|
+
// };
|
|
45
|
+
// });
|
|
46
|
+
// }),
|
|
47
|
+
// };
|
|
48
|
+
// return dObj;
|
|
49
|
+
// }
|
|
50
|
+
// function modelToJsonApi(model: ModelBase | ModelBase[]) {
|
|
51
|
+
// return {
|
|
52
|
+
// data: Array.isArray(model) ? model.map((m) => dehydrate(m)) : dehydrate(model),
|
|
53
|
+
// included: Array.isArray(model) ? _.flatMap(model, extractIncluded) : extractIncluded(model),
|
|
54
|
+
// };
|
|
55
|
+
// }
|
|
56
|
+
// function extractIncluded(model: ModelBase) {
|
|
57
|
+
// return model.getFlattenRelationModels(true).map((m) => dehydrate(m));
|
|
58
|
+
// }
|
|
59
|
+
// function applyQueryIncludes(includes: Includes, query: SelectQueryBuilder<any>) {
|
|
60
|
+
// let currQuery: SelectQueryBuilder<any> = null;
|
|
61
|
+
// includes.Param.forEach((i) => {
|
|
62
|
+
// currQuery = query;
|
|
63
|
+
// i.forEach((ii: string) => {
|
|
64
|
+
// currQuery.populate(ii, function () {
|
|
65
|
+
// currQuery = this;
|
|
66
|
+
// });
|
|
67
|
+
// });
|
|
68
|
+
// });
|
|
69
|
+
// }
|
|
70
|
+
// @Hydrator(IncludesHydrator)
|
|
71
|
+
// class Includes {
|
|
72
|
+
// constructor(public Param: string[][]) {}
|
|
73
|
+
// }
|
|
74
|
+
// @Hydrator(FiltersHydrator)
|
|
75
|
+
// class Filters {
|
|
76
|
+
// constructor(public Param: any) {}
|
|
77
|
+
// }
|
|
78
|
+
// @Hydrator(ModelParamHydrator)
|
|
79
|
+
// class Model {
|
|
80
|
+
// public Type: Constructor<ModelBase>;
|
|
81
|
+
// public Descriptor: IModelDescriptor;
|
|
82
|
+
// public get SelectQuery() {
|
|
83
|
+
// return createQuery(this.Type, SelectQueryBuilder).query as SelectQueryBuilder<ModelBase>;
|
|
84
|
+
// }
|
|
85
|
+
// public get InserQuery() {
|
|
86
|
+
// return createQuery(this.Type, InsertQueryBuilder).query;
|
|
87
|
+
// }
|
|
88
|
+
// public get DeleteQuery() {
|
|
89
|
+
// return createQuery(this.Type, DeleteQueryBuilder).query;
|
|
90
|
+
// }
|
|
91
|
+
// public get UpdateQueryBuilder() {
|
|
92
|
+
// return createQuery(this.Type, UpdateQueryBuilder).query;
|
|
93
|
+
// }
|
|
94
|
+
// }
|
|
95
|
+
// const PrimaryKeySchema = {
|
|
96
|
+
// $id: 'JsonApiPrimaryKeySchema',
|
|
97
|
+
// title: 'Json api primary key schema for id parameter',
|
|
98
|
+
// anyOf: [
|
|
99
|
+
// { type: 'string', minLength: 0, maxLength: 16 },
|
|
100
|
+
// { type: 'number', minimum: 0 },
|
|
101
|
+
// { type: 'string', pattern: '^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$', minLength: 32, maxLength: 36 },
|
|
102
|
+
// ],
|
|
103
|
+
// };
|
|
104
|
+
// const modelSchema = {
|
|
105
|
+
// $id: 'JsonApiModelSchema',
|
|
106
|
+
// title: 'Json api modele/resource schema',
|
|
107
|
+
// type: 'string',
|
|
108
|
+
// minLength: 0,
|
|
109
|
+
// maxLength: 32,
|
|
110
|
+
// };
|
|
111
|
+
// const genericStringSchema = {
|
|
112
|
+
// $id: 'JsonApiIncludeSchema',
|
|
113
|
+
// title: 'Json api modele/resource schema',
|
|
114
|
+
// type: 'string',
|
|
115
|
+
// minLength: 0,
|
|
116
|
+
// maxLength: 256,
|
|
117
|
+
// };
|
|
118
|
+
// @BasePath('repository')
|
|
119
|
+
// @Inject(Orm)
|
|
120
|
+
// export class JsonApi extends BaseController {
|
|
121
|
+
// protected Middlewares: RepositoryMiddleware[];
|
|
122
|
+
// constructor(protected Orm: Orm) {
|
|
123
|
+
// super();
|
|
124
|
+
// }
|
|
125
|
+
// public async resolve(): Promise<void> {
|
|
126
|
+
// super.resolve();
|
|
127
|
+
// this.Middlewares = await DI.resolve(Array.ofType(RepositoryMiddleware));
|
|
128
|
+
// }
|
|
129
|
+
// @Get(':model/:id', {
|
|
130
|
+
// model: modelSchema,
|
|
131
|
+
// id: PrimaryKeySchema,
|
|
132
|
+
// include: genericStringSchema,
|
|
133
|
+
// _filters: genericStringSchema,
|
|
134
|
+
// })
|
|
135
|
+
// public async get(@Param() model: Model, @Param() id: string | number, @Query() include: Includes, @Query() _filters: Filters, @Req() req: express.Request) {
|
|
136
|
+
// await Promise.all(this.Middlewares.map((m) => m.onGetMiddlewareStart(id, req)));
|
|
137
|
+
// const query = model.SelectQuery.select('*').where(model.Descriptor.PrimaryKey, id);
|
|
138
|
+
// applyQueryIncludes(include, query);
|
|
139
|
+
// this.Middlewares.forEach((m) => m.onGetMiddlewareQuery(query, model.Type, req));
|
|
140
|
+
// const result = await query.firstOrFail();
|
|
141
|
+
// let jResult = modelToJsonApi(result);
|
|
142
|
+
// this.Middlewares.forEach((m) => {
|
|
143
|
+
// jResult = m.onGetMiddlewareResult(jResult, req);
|
|
144
|
+
// });
|
|
145
|
+
// return new Ok(jResult);
|
|
146
|
+
// }
|
|
147
|
+
// @Get(':model', {
|
|
148
|
+
// model: modelSchema,
|
|
149
|
+
// include: genericStringSchema,
|
|
150
|
+
// _filters: genericStringSchema,
|
|
151
|
+
// })
|
|
152
|
+
// public async getAll(@Param() model: Model, @Query() page: number, @Query() perPage: number, @Query() order: string, @Query() orderDirection: 'ASC' | 'DESC', @Query() include: Includes, @Query() _filters: Filters, @Req() req: express.Request) {
|
|
153
|
+
// await Promise.all(this.Middlewares.map((m) => m.onGetAllMiddlewareStart(req)));
|
|
154
|
+
// const query = model.SelectQuery.select('*')
|
|
155
|
+
// .take(perPage)
|
|
156
|
+
// .skip(page * perPage);
|
|
157
|
+
// if (order) {
|
|
158
|
+
// query.order(order, orderDirection ?? 'ASC');
|
|
159
|
+
// }
|
|
160
|
+
// applyQueryIncludes(include, query);
|
|
161
|
+
// this.Middlewares.forEach((m) => m.onGetAllMiddlewareQuery(query, model.Type, req));
|
|
162
|
+
// const result = await query;
|
|
163
|
+
// let jResult = modelToJsonApi(result);
|
|
164
|
+
// this.Middlewares.forEach((m) => {
|
|
165
|
+
// jResult = m.onGetAllMiddlewareResult(jResult, req);
|
|
166
|
+
// });
|
|
167
|
+
// return new Ok(jResult);
|
|
168
|
+
// }
|
|
169
|
+
// @Del(':model/:id', {
|
|
170
|
+
// model: modelSchema,
|
|
171
|
+
// id: PrimaryKeySchema,
|
|
172
|
+
// })
|
|
173
|
+
// public async del(@Param() model: Model, @Param() id: string | number, @Req() req: express.Request) {
|
|
174
|
+
// await Promise.all(this.Middlewares.map((m) => m.onDeleteMiddlewareStart(id, req)));
|
|
175
|
+
// const entity: ModelBase = await model.SelectQuery.where(model.Descriptor.PrimaryKey, id).firstOrFail();
|
|
176
|
+
// await entity.destroy();
|
|
177
|
+
// this.Middlewares.forEach((m) => m.onDeleteMiddlewareResult(req));
|
|
178
|
+
// return new Ok();
|
|
179
|
+
// }
|
|
180
|
+
// @Patch(':model/:id', {
|
|
181
|
+
// model: modelSchema,
|
|
182
|
+
// id: PrimaryKeySchema,
|
|
183
|
+
// })
|
|
184
|
+
// public async patch(@Param() model: Model, @Param() id: string | number, @Body() incoming: JsonApiIncomingObject, @Req() req: express.Request) {
|
|
185
|
+
// await Promise.all(this.Middlewares.map((m) => m.onUpdateMiddlewareStart(id, incoming, req)));
|
|
186
|
+
// const entity: ModelBase = await model.SelectQuery.where(model.Descriptor.PrimaryKey, id).firstOrFail();
|
|
187
|
+
// await this.updateOneToOneRelations(incoming, model, entity);
|
|
188
|
+
// if (incoming.data.attributes) {
|
|
189
|
+
// entity.hydrate(incoming.data.attributes);
|
|
190
|
+
// }
|
|
191
|
+
// await entity.update();
|
|
192
|
+
// await this.updateOneToMany(incoming, model, entity);
|
|
193
|
+
// let jResult = modelToJsonApi(entity);
|
|
194
|
+
// this.Middlewares.forEach((m) => {
|
|
195
|
+
// jResult = m.onUpdateMiddlewareResult(jResult, req);
|
|
196
|
+
// });
|
|
197
|
+
// return new Ok(jResult);
|
|
198
|
+
// }
|
|
199
|
+
// @Post(':model', {
|
|
200
|
+
// model: modelSchema,
|
|
201
|
+
// })
|
|
202
|
+
// public async insert(@Param() model: Model, @Body() incoming: JsonApiIncomingObject, @Req() req: express.Request) {
|
|
203
|
+
// await Promise.all(this.Middlewares.map((m) => m.onInsertMiddlewareStart(incoming, req)));
|
|
204
|
+
// const entity: ModelBase = new model.Type();
|
|
205
|
+
// entity.hydrate(incoming.data.attributes);
|
|
206
|
+
// await this.updateOneToOneRelations(incoming, model, entity);
|
|
207
|
+
// await entity.insert();
|
|
208
|
+
// await this.updateOneToMany(incoming, model, entity);
|
|
209
|
+
// let jResult = modelToJsonApi(entity);
|
|
210
|
+
// this.Middlewares.forEach((m) => {
|
|
211
|
+
// jResult = m.onInsertMiddlewareResult(jResult, req);
|
|
212
|
+
// });
|
|
213
|
+
// return new Ok(jResult);
|
|
214
|
+
// }
|
|
215
|
+
// protected async updateOneToOneRelations(incoming: JsonApiIncomingObject, model: Model, entity: ModelBase) {
|
|
216
|
+
// // fillout one to one relations if possible
|
|
217
|
+
// if (incoming.data.relationships) {
|
|
218
|
+
// for (const key in incoming.data.relationships) {
|
|
219
|
+
// const relation = model.Descriptor.Relations.get(key);
|
|
220
|
+
// if (relation.Type === RelationType.One) {
|
|
221
|
+
// (entity as any)[relation.ForeignKey] = incoming.data.relationships[key].data.id;
|
|
222
|
+
// }
|
|
223
|
+
// }
|
|
224
|
+
// }
|
|
225
|
+
// }
|
|
226
|
+
// protected async updateOneToMany(incoming: JsonApiIncomingObject, model: Model, entity: ModelBase) {
|
|
227
|
+
// if (incoming.data.relationships) {
|
|
228
|
+
// for (const key in incoming.data.relationships) {
|
|
229
|
+
// const relation = model.Descriptor.Relations.get(key);
|
|
230
|
+
// if (relation.Type === RelationType.Many) {
|
|
231
|
+
// const rQuery = createQuery(relation.TargetModel, UpdateQueryBuilder).query;
|
|
232
|
+
// await rQuery
|
|
233
|
+
// .update({
|
|
234
|
+
// [relation.ForeignKey]: entity.PrimaryKeyValue,
|
|
235
|
+
// })
|
|
236
|
+
// .whereIn(
|
|
237
|
+
// relation.PrimaryKey,
|
|
238
|
+
// incoming.data.relationships[key].data.map((x: any) => x.id),
|
|
239
|
+
// );
|
|
240
|
+
// }
|
|
241
|
+
// }
|
|
242
|
+
// }
|
|
243
|
+
// }
|
|
244
|
+
// }
|
|
245
|
+
//# sourceMappingURL=JsonApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonApi.js","sourceRoot":"","sources":["../../../src/controllers/JsonApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryArgs.d.ts","sourceRoot":"","sources":["../../../src/dto/QueryArgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,qBACa,SAAS;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,GAAG;CAGtB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.QueryArgs = void 0;
|
|
16
|
+
const validation_1 = require("@spinajs/validation");
|
|
17
|
+
const QueryArgs_schema_js_1 = __importDefault(require("../schemas/QueryArgs.schema.js"));
|
|
18
|
+
let QueryArgs = class QueryArgs {
|
|
19
|
+
constructor(data) {
|
|
20
|
+
Object.assign(this, data);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
QueryArgs = __decorate([
|
|
24
|
+
(0, validation_1.Schema)(QueryArgs_schema_js_1.default),
|
|
25
|
+
__metadata("design:paramtypes", [Object])
|
|
26
|
+
], QueryArgs);
|
|
27
|
+
exports.QueryArgs = QueryArgs;
|
|
28
|
+
//# sourceMappingURL=QueryArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryArgs.js","sourceRoot":"","sources":["../../../src/dto/QueryArgs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,oDAA6C;AAC7C,yFAA6D;AAGtD,IAAM,SAAS,GAAf,MAAM,SAAS;IAMpB,YAAY,IAAS;QACnB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF,CAAA;AATY,SAAS;IADrB,IAAA,mBAAM,EAAC,6BAAe,CAAC;;GACX,SAAS,CASrB;AATY,8BAAS"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryFilter.d.ts","sourceRoot":"","sources":["../../../src/dto/QueryFilter.ts"],"names":[],"mappings":"AAGA,qBACa,WAAW;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;gBAEP,IAAI,EAAE,GAAG;CAGxB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.QueryFilter = void 0;
|
|
13
|
+
const http_1 = require("@spinajs/http");
|
|
14
|
+
const QueryFilterHydrator_js_1 = require("../hydrators/QueryFilterHydrator.js");
|
|
15
|
+
let QueryFilter = class QueryFilter {
|
|
16
|
+
constructor(data) {
|
|
17
|
+
Object.assign(this, data);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
QueryFilter = __decorate([
|
|
21
|
+
(0, http_1.Hydrator)(QueryFilterHydrator_js_1.GetFilterHydrator),
|
|
22
|
+
__metadata("design:paramtypes", [Object])
|
|
23
|
+
], QueryFilter);
|
|
24
|
+
exports.QueryFilter = QueryFilter;
|
|
25
|
+
//# sourceMappingURL=QueryFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryFilter.js","sourceRoot":"","sources":["../../../src/dto/QueryFilter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAyC;AACzC,gFAAwE;AAGjE,IAAM,WAAW,GAAjB,MAAM,WAAW;IAGpB,YAAY,IAAS;QACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAA;AANY,WAAW;IADvB,IAAA,eAAQ,EAAC,0CAAiB,CAAC;;GACf,WAAW,CAMvB;AANY,kCAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryIncludes.d.ts","sourceRoot":"","sources":["../../../src/dto/QueryIncludes.ts"],"names":[],"mappings":"AAGA,qBACa,aAAa;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;gBAEjB,IAAI,EAAE,GAAG;CAGxB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.QueryIncludes = void 0;
|
|
13
|
+
const http_1 = require("@spinajs/http");
|
|
14
|
+
const QueryIncludesHydrator_js_1 = require("../hydrators/QueryIncludesHydrator.js");
|
|
15
|
+
let QueryIncludes = class QueryIncludes {
|
|
16
|
+
constructor(data) {
|
|
17
|
+
Object.assign(this, data);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
QueryIncludes = __decorate([
|
|
21
|
+
(0, http_1.Hydrator)(QueryIncludesHydrator_js_1.QueryIncludesHydrator),
|
|
22
|
+
__metadata("design:paramtypes", [Object])
|
|
23
|
+
], QueryIncludes);
|
|
24
|
+
exports.QueryIncludes = QueryIncludes;
|
|
25
|
+
//# sourceMappingURL=QueryIncludes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryIncludes.js","sourceRoot":"","sources":["../../../src/dto/QueryIncludes.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAyC;AACzC,oFAA8E;AAGvE,IAAM,aAAa,GAAnB,MAAM,aAAa;IAGtB,YAAY,IAAS;QACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAA;AANY,aAAa;IADzB,IAAA,eAAQ,EAAC,gDAAqB,CAAC;;GACnB,aAAa,CAMzB;AANY,sCAAa"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryFilterHydrator.d.ts","sourceRoot":"","sources":["../../../src/hydrators/QueryFilterHydrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,qBAAa,iBAAkB,SAAQ,WAAW;IACjC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAMlD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetFilterHydrator = void 0;
|
|
4
|
+
const http_1 = require("@spinajs/http");
|
|
5
|
+
const QueryFilter_js_1 = require("../dto/QueryFilter.js");
|
|
6
|
+
class GetFilterHydrator extends http_1.ArgHydrator {
|
|
7
|
+
async hydrate(input) {
|
|
8
|
+
if (input) {
|
|
9
|
+
return new QueryFilter_js_1.QueryFilter(JSON.parse(input));
|
|
10
|
+
}
|
|
11
|
+
return new QueryFilter_js_1.QueryFilter({});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.GetFilterHydrator = GetFilterHydrator;
|
|
15
|
+
//# sourceMappingURL=QueryFilterHydrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryFilterHydrator.js","sourceRoot":"","sources":["../../../src/hydrators/QueryFilterHydrator.ts"],"names":[],"mappings":";;;AAAA,wCAA4C;AAC5C,0DAAoD;AAEpD,MAAa,iBAAkB,SAAQ,kBAAW;IACvC,KAAK,CAAC,OAAO,CAAC,KAAa;QAChC,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,4BAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,4BAAW,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;CACF;AAPH,8CAOG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryIncludesHydrator.d.ts","sourceRoot":"","sources":["../../../src/hydrators/QueryIncludesHydrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,qBAAa,qBAAsB,SAAQ,WAAW;IACvC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAWlD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.QueryIncludesHydrator = void 0;
|
|
7
|
+
const http_1 = require("@spinajs/http");
|
|
8
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
+
class QueryIncludesHydrator extends http_1.ArgHydrator {
|
|
10
|
+
async hydrate(input) {
|
|
11
|
+
if (input) {
|
|
12
|
+
const paths = input.split(',');
|
|
13
|
+
const object = {};
|
|
14
|
+
paths.forEach((x) => lodash_1.default.set(object, x, {}));
|
|
15
|
+
return object;
|
|
16
|
+
}
|
|
17
|
+
return {};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.QueryIncludesHydrator = QueryIncludesHydrator;
|
|
21
|
+
//# sourceMappingURL=QueryIncludesHydrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryIncludesHydrator.js","sourceRoot":"","sources":["../../../src/hydrators/QueryIncludesHydrator.ts"],"names":[],"mappings":";;;;;;AAAA,wCAA4C;AAC5C,oDAAuB;AAEvB,MAAa,qBAAsB,SAAQ,kBAAW;IAC7C,KAAK,CAAC,OAAO,CAAC,KAAa;QAChC,IAAI,KAAK,EAAE;YACT,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,EAAE,CAAC;YAElB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO,MAAM,CAAC;SACf;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAZD,sDAYC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Orm, ModelBase } from '@spinajs/orm';
|
|
2
|
+
import { IRouteParameter, IRouteCall, ParameterType, ArgHydrator, Request as sRequest, RouteArgs } from '@spinajs/http';
|
|
3
|
+
import { IContainer, Bootstrapper } from '@spinajs/di';
|
|
4
|
+
export declare class AsDbModel extends RouteArgs {
|
|
5
|
+
get SupportedType(): string;
|
|
6
|
+
extract(callData: IRouteCall, param: IRouteParameter, req: sRequest): Promise<{
|
|
7
|
+
CallData: IRouteCall;
|
|
8
|
+
Args: ModelBase<unknown>;
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
|
+
export declare class FromDbModel extends RouteArgs {
|
|
12
|
+
protected Container: IContainer;
|
|
13
|
+
protected Orm: Orm;
|
|
14
|
+
resolve(): Promise<void>;
|
|
15
|
+
get SupportedType(): string;
|
|
16
|
+
extract(callData: IRouteCall, param: IRouteParameter, req: sRequest): Promise<{
|
|
17
|
+
CallData: IRouteCall;
|
|
18
|
+
Args: any;
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
21
|
+
export declare class DbModelHydrator extends ArgHydrator {
|
|
22
|
+
hydrate(input: any, parameter: IRouteParameter): Promise<any>;
|
|
23
|
+
}
|
|
24
|
+
export declare function AsModel(field?: string, type?: ParameterType): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
|
|
25
|
+
export declare function FromModel(field?: string, type?: ParameterType): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
|
|
26
|
+
export declare class OrmHttpBootstrapper extends Bootstrapper {
|
|
27
|
+
bootstrap(): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAoB,aAAa,EAAE,WAAW,EAAE,OAAO,IAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1I,OAAO,EAAE,UAAU,EAAqC,YAAY,EAAM,MAAM,aAAa,CAAC;AAE9F,qBACa,SAAU,SAAQ,SAAS;IACtC,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ;;;;CAKjF;AAED,qBACa,WAAY,SAAQ,SAAS;IAExC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAGhC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ;;;;CAsBjF;AAED,qBAAa,eAAgB,SAAQ,WAAW;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;CAS3E;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,yGAE3D;AAED,wBAAgB,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,yGAE7D;AAED,qBACa,mBAAoB,SAAQ,YAAY;IACtC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAQxC"}
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.OrmHttpBootstrapper = exports.FromModel = exports.AsModel = exports.DbModelHydrator = exports.FromDbModel = exports.AsDbModel = void 0;
|
|
13
|
+
const orm_1 = require("@spinajs/orm");
|
|
14
|
+
const http_1 = require("@spinajs/http");
|
|
15
|
+
const di_1 = require("@spinajs/di");
|
|
16
|
+
let AsDbModel = class AsDbModel extends http_1.RouteArgs {
|
|
17
|
+
get SupportedType() {
|
|
18
|
+
return 'AsDbModel';
|
|
19
|
+
}
|
|
20
|
+
async extract(callData, param, req) {
|
|
21
|
+
const result = new param.RuntimeType();
|
|
22
|
+
result.hydrate(req.body[param.Options.field ?? param.Name]);
|
|
23
|
+
return { CallData: callData, Args: result };
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
AsDbModel = __decorate([
|
|
27
|
+
(0, di_1.Injectable)()
|
|
28
|
+
], AsDbModel);
|
|
29
|
+
exports.AsDbModel = AsDbModel;
|
|
30
|
+
let FromDbModel = class FromDbModel extends http_1.RouteArgs {
|
|
31
|
+
async resolve() { }
|
|
32
|
+
get SupportedType() {
|
|
33
|
+
return 'FromDB';
|
|
34
|
+
}
|
|
35
|
+
async extract(callData, param, req) {
|
|
36
|
+
let p = null;
|
|
37
|
+
switch (param.Options.type) {
|
|
38
|
+
case http_1.ParameterType.FromQuery:
|
|
39
|
+
p = req.query[param.Options.field ?? param.Name];
|
|
40
|
+
break;
|
|
41
|
+
case http_1.ParameterType.FromBody:
|
|
42
|
+
p = req.body[param.Options.field ?? param.Name];
|
|
43
|
+
break;
|
|
44
|
+
case http_1.ParameterType.FromHeader:
|
|
45
|
+
p = req.headers[param.Options.field ?? param.Name.toLowerCase()];
|
|
46
|
+
break;
|
|
47
|
+
case http_1.ParameterType.FromParams:
|
|
48
|
+
default:
|
|
49
|
+
p = req.params[param.Options.field ?? param.Name];
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
const result = await param.RuntimeType['getOrFail'](p);
|
|
53
|
+
return { CallData: callData, Args: result };
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, di_1.Autoinject)(di_1.Container),
|
|
58
|
+
__metadata("design:type", Object)
|
|
59
|
+
], FromDbModel.prototype, "Container", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, di_1.Autoinject)(orm_1.Orm),
|
|
62
|
+
__metadata("design:type", orm_1.Orm)
|
|
63
|
+
], FromDbModel.prototype, "Orm", void 0);
|
|
64
|
+
FromDbModel = __decorate([
|
|
65
|
+
(0, di_1.Injectable)()
|
|
66
|
+
], FromDbModel);
|
|
67
|
+
exports.FromDbModel = FromDbModel;
|
|
68
|
+
class DbModelHydrator extends http_1.ArgHydrator {
|
|
69
|
+
async hydrate(input, parameter) {
|
|
70
|
+
if (input === null) {
|
|
71
|
+
throw new orm_1.OrmException('primary key cannot be null');
|
|
72
|
+
}
|
|
73
|
+
const model = new parameter.RuntimeType();
|
|
74
|
+
model.hydrate(input);
|
|
75
|
+
return model;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.DbModelHydrator = DbModelHydrator;
|
|
79
|
+
function AsModel(field, type) {
|
|
80
|
+
return (0, http_1.Route)((0, http_1.Parameter)('AsDbModel', null, { field, type }));
|
|
81
|
+
}
|
|
82
|
+
exports.AsModel = AsModel;
|
|
83
|
+
function FromModel(field, type) {
|
|
84
|
+
return (0, http_1.Route)((0, http_1.Parameter)('FromDbModel', null, { field, type }));
|
|
85
|
+
}
|
|
86
|
+
exports.FromModel = FromModel;
|
|
87
|
+
let OrmHttpBootstrapper = class OrmHttpBootstrapper extends di_1.Bootstrapper {
|
|
88
|
+
async bootstrap() {
|
|
89
|
+
di_1.DI.once('di.resolved.Orm', (_, orm) => {
|
|
90
|
+
// set default route parameter hydrator for all loaded models
|
|
91
|
+
orm.Models.forEach((m) => {
|
|
92
|
+
Reflect.defineMetadata('custom:arg_hydrator', { hydrator: DbModelHydrator }, m.type);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
OrmHttpBootstrapper = __decorate([
|
|
98
|
+
(0, di_1.Injectable)(di_1.Bootstrapper)
|
|
99
|
+
], OrmHttpBootstrapper);
|
|
100
|
+
exports.OrmHttpBootstrapper = OrmHttpBootstrapper;
|
|
101
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Class } from '@spinajs/di';
|
|
2
|
+
import { ModelBase, SortOrder } from '@spinajs/orm';
|
|
3
|
+
export declare class JsonApiIncomingObject {
|
|
4
|
+
data: {
|
|
5
|
+
type: string;
|
|
6
|
+
id: string;
|
|
7
|
+
attributes: any;
|
|
8
|
+
relationships: any;
|
|
9
|
+
};
|
|
10
|
+
constructor(data: any);
|
|
11
|
+
}
|
|
12
|
+
export interface ITransformOptions {
|
|
13
|
+
totalCount?: number;
|
|
14
|
+
currentPage?: number;
|
|
15
|
+
order?: SortOrder;
|
|
16
|
+
orderBy?: string;
|
|
17
|
+
perPage?: number;
|
|
18
|
+
model: Class<ModelBase<unknown>>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Data collection transformer. Used to transform collection of models to specific api format eg. json api
|
|
22
|
+
* By default transforms to simple json representation
|
|
23
|
+
*/
|
|
24
|
+
export declare abstract class CollectionApiTransformer {
|
|
25
|
+
abstract transform(data: ModelBase<unknown>[] | ModelBase<unknown>, options?: ITransformOptions): unknown;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpD,qBACa,qBAAqB;IACzB,IAAI,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,GAAG,CAAC;QAChB,aAAa,EAAE,GAAG,CAAC;KACpB,CAAQ;gBAEG,IAAI,EAAE,GAAG;CAGtB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,8BAAsB,wBAAwB;aAC5B,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO;CACjH"}
|