@kaspernj/api-maker 1.0.130 → 1.0.133

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/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  ]
17
17
  },
18
18
  "name": "@kaspernj/api-maker",
19
- "version": "1.0.130",
19
+ "version": "1.0.133",
20
20
  "description": "",
21
21
  "main": "index.js",
22
22
  "repository": {
@@ -6,7 +6,6 @@ const {digg} = require("diggerize")
6
6
  const FormDataObjectizer = require("form-data-objectizer")
7
7
  const inflection = require("inflection")
8
8
  const ModelName = require("./model-name.cjs")
9
- const ModelsResponseReader = require("./models-response-reader.cjs")
10
9
  const NotLoadedError = require("./not-loaded-error.cjs")
11
10
  const objectToFormData = require("object-to-formdata").serialize
12
11
  const Services = require("./services.cjs")
@@ -15,7 +14,7 @@ const {ValidationErrors} = require("./validation-errors.cjs")
15
14
 
16
15
  const shared = {}
17
16
 
18
- module.exports = class BaseModel {
17
+ class BaseModel {
19
18
  static modelClassData () {
20
19
  throw new Error("modelClassData should be overriden by child")
21
20
  }
@@ -826,3 +825,7 @@ module.exports = class BaseModel {
826
825
  }
827
826
  }
828
827
  }
828
+
829
+ BaseModel.apiMakerType = "BaseModel"
830
+
831
+ module.exports = BaseModel
@@ -5,7 +5,7 @@ const inflection = require("inflection")
5
5
  const {merge} = require("./merge.cjs")
6
6
  const Result = require("./result.cjs")
7
7
 
8
- module.exports = class ApiMakerCollection {
8
+ class ApiMakerCollection {
9
9
  constructor (args, queryArgs = {}) {
10
10
  this.queryArgs = queryArgs
11
11
  this.args = args
@@ -37,7 +37,7 @@ module.exports = class ApiMakerCollection {
37
37
  async count () {
38
38
  const response = await this.clone()._merge({count: true})._response()
39
39
 
40
- return response.count
40
+ return digg(response, "count")
41
41
  }
42
42
 
43
43
  distinct () {
@@ -146,7 +146,11 @@ module.exports = class ApiMakerCollection {
146
146
  async result () {
147
147
  const response = await this._response()
148
148
  const models = digg(response, "collection")
149
+
150
+ this._addCollectionToModels(models)
151
+
149
152
  const result = new Result({collection: this, models, response})
153
+
150
154
  return result
151
155
  }
152
156
 
@@ -200,10 +204,7 @@ module.exports = class ApiMakerCollection {
200
204
  const response = await this._response()
201
205
  const models = digg(response, "collection")
202
206
 
203
- // This is needed when reloading a version of the model with the same selected attributes and preloads
204
- for(const model of models) {
205
- model.collection = this
206
- }
207
+ this._addCollectionToModels(models)
207
208
 
208
209
  return models
209
210
  }
@@ -220,6 +221,13 @@ module.exports = class ApiMakerCollection {
220
221
  return new ApiMakerCollection(this.args, clonedQueryArgs)
221
222
  }
222
223
 
224
+ // This is needed when reloading a version of the model with the same selected attributes and preloads
225
+ _addCollectionToModels(models) {
226
+ for(const model of models) {
227
+ model.collection = this
228
+ }
229
+ }
230
+
223
231
  _merge (newQueryArgs) {
224
232
  merge(this.queryArgs, newQueryArgs)
225
233
 
@@ -240,3 +248,7 @@ module.exports = class ApiMakerCollection {
240
248
  )
241
249
  }
242
250
  }
251
+
252
+ ApiMakerCollection.apiMakerType = "Collection"
253
+
254
+ module.exports = ApiMakerCollection
package/src/devise.cjs CHANGED
@@ -49,18 +49,10 @@ module.exports = class ApiMakerDevise {
49
49
 
50
50
  const postData = {username, password, args}
51
51
  const response = await Services.current().sendRequest("Devise::SignIn", postData)
52
- const modelClass = digg(require("@kaspernj/api-maker/src/models"), inflection.camelize(args.scope))
53
- const modelInstance = new modelClass(digg(response, "model_data"))
54
52
 
55
- let model
53
+ let model = response.model
56
54
 
57
- if (args.loadQuery) {
58
- model = await args.loadQuery.clone().ransack({id_eq: modelInstance.id()}).first()
59
-
60
- if (!model) throw new Error(`Couldn't read user with ID ${modelInstance.id()}`)
61
- } else {
62
- model = modelInstance
63
- }
55
+ if (Array.isArray(model)) model = model[0]
64
56
 
65
57
  await CanCan.current().resetAbilities()
66
58
 
@@ -16,7 +16,7 @@ module.exports = class Serializer {
16
16
  }
17
17
 
18
18
  serializeArgument (arg) {
19
- if (typeof arg == "function" && arg.modelClassData && arg.modelName) {
19
+ if (typeof arg == "function" && arg.apiMakerType == "BaseModel") {
20
20
  return {
21
21
  api_maker_type: "resource",
22
22
  name: digg(arg.modelClassData(), "name")
@@ -38,6 +38,11 @@ module.exports = class Serializer {
38
38
  }
39
39
  } else if (Array.isArray(arg)) {
40
40
  return this.serializeArray(arg)
41
+ } else if (typeof arg == "object" && arg.constructor && arg.constructor.apiMakerType == "Collection") {
42
+ return {
43
+ api_maker_type: "collection",
44
+ value: this.serializeObject(arg)
45
+ }
41
46
  } else if (typeof arg == "object" && arg !== null && arg.constructor.name == "Object") {
42
47
  return this.serializeObject(arg)
43
48
  } else {