api_maker 0.0.1

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.
Files changed (103) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +476 -0
  4. data/Rakefile +27 -0
  5. data/app/channels/api_maker/subscriptions_channel.rb +80 -0
  6. data/app/controllers/api_maker/base_controller.rb +32 -0
  7. data/app/controllers/api_maker/commands_controller.rb +26 -0
  8. data/app/controllers/api_maker/devise_controller.rb +60 -0
  9. data/app/controllers/api_maker/session_statuses_controller.rb +33 -0
  10. data/app/services/api_maker/application_service.rb +7 -0
  11. data/app/services/api_maker/collection_command_service.rb +24 -0
  12. data/app/services/api_maker/command_response.rb +67 -0
  13. data/app/services/api_maker/command_service.rb +31 -0
  14. data/app/services/api_maker/create_command.rb +62 -0
  15. data/app/services/api_maker/create_command_service.rb +18 -0
  16. data/app/services/api_maker/destroy_command.rb +39 -0
  17. data/app/services/api_maker/destroy_command_service.rb +22 -0
  18. data/app/services/api_maker/generate_react_native_api_service.rb +61 -0
  19. data/app/services/api_maker/index_command.rb +96 -0
  20. data/app/services/api_maker/index_command_service.rb +22 -0
  21. data/app/services/api_maker/js_method_namer_service.rb +11 -0
  22. data/app/services/api_maker/member_command_service.rb +25 -0
  23. data/app/services/api_maker/model_content_generator_service.rb +108 -0
  24. data/app/services/api_maker/models_finder_service.rb +22 -0
  25. data/app/services/api_maker/models_generator_service.rb +104 -0
  26. data/app/services/api_maker/update_command.rb +43 -0
  27. data/app/services/api_maker/update_command_service.rb +21 -0
  28. data/app/services/api_maker/valid_command.rb +35 -0
  29. data/app/services/api_maker/valid_command_service.rb +21 -0
  30. data/app/views/api_maker/_data.html.erb +15 -0
  31. data/config/rails_best_practices.yml +55 -0
  32. data/config/routes.rb +7 -0
  33. data/lib/api_maker.rb +36 -0
  34. data/lib/api_maker/ability.rb +39 -0
  35. data/lib/api_maker/ability_loader.rb +21 -0
  36. data/lib/api_maker/action_controller_base_extensions.rb +5 -0
  37. data/lib/api_maker/base_command.rb +81 -0
  38. data/lib/api_maker/base_resource.rb +78 -0
  39. data/lib/api_maker/collection_serializer.rb +69 -0
  40. data/lib/api_maker/command_spec_helper.rb +57 -0
  41. data/lib/api_maker/configuration.rb +34 -0
  42. data/lib/api_maker/engine.rb +5 -0
  43. data/lib/api_maker/individual_command.rb +37 -0
  44. data/lib/api_maker/javascript/api.js +92 -0
  45. data/lib/api_maker/javascript/base-model.js +543 -0
  46. data/lib/api_maker/javascript/bootstrap/attribute-row.jsx +16 -0
  47. data/lib/api_maker/javascript/bootstrap/attribute-rows.jsx +47 -0
  48. data/lib/api_maker/javascript/bootstrap/card.jsx +79 -0
  49. data/lib/api_maker/javascript/bootstrap/checkbox.jsx +127 -0
  50. data/lib/api_maker/javascript/bootstrap/checkboxes.jsx +105 -0
  51. data/lib/api_maker/javascript/bootstrap/live-table.jsx +168 -0
  52. data/lib/api_maker/javascript/bootstrap/money-input.jsx +136 -0
  53. data/lib/api_maker/javascript/bootstrap/radio-buttons.jsx +80 -0
  54. data/lib/api_maker/javascript/bootstrap/select.jsx +168 -0
  55. data/lib/api_maker/javascript/bootstrap/string-input.jsx +203 -0
  56. data/lib/api_maker/javascript/cable-connection-pool.js +169 -0
  57. data/lib/api_maker/javascript/cable-subscription-pool.js +111 -0
  58. data/lib/api_maker/javascript/cable-subscription.js +33 -0
  59. data/lib/api_maker/javascript/collection.js +186 -0
  60. data/lib/api_maker/javascript/commands-pool.js +123 -0
  61. data/lib/api_maker/javascript/custom-error.js +14 -0
  62. data/lib/api_maker/javascript/deserializer.js +35 -0
  63. data/lib/api_maker/javascript/devise.js.erb +113 -0
  64. data/lib/api_maker/javascript/error-logger.js +119 -0
  65. data/lib/api_maker/javascript/event-connection.jsx +24 -0
  66. data/lib/api_maker/javascript/event-created.jsx +26 -0
  67. data/lib/api_maker/javascript/event-destroyed.jsx +26 -0
  68. data/lib/api_maker/javascript/event-emitter-listener.jsx +32 -0
  69. data/lib/api_maker/javascript/event-listener.jsx +41 -0
  70. data/lib/api_maker/javascript/event-updated.jsx +26 -0
  71. data/lib/api_maker/javascript/form-data-to-object.js +70 -0
  72. data/lib/api_maker/javascript/included.js +39 -0
  73. data/lib/api_maker/javascript/key-value-store.js +47 -0
  74. data/lib/api_maker/javascript/logger.js +23 -0
  75. data/lib/api_maker/javascript/model-name.js +21 -0
  76. data/lib/api_maker/javascript/model-template.js.erb +110 -0
  77. data/lib/api_maker/javascript/models-response-reader.js +43 -0
  78. data/lib/api_maker/javascript/paginate.jsx +128 -0
  79. data/lib/api_maker/javascript/params.js +68 -0
  80. data/lib/api_maker/javascript/resource-route.jsx +75 -0
  81. data/lib/api_maker/javascript/resource-routes.jsx +36 -0
  82. data/lib/api_maker/javascript/result.js +25 -0
  83. data/lib/api_maker/javascript/session-status-updater.js +113 -0
  84. data/lib/api_maker/javascript/sort-link.jsx +88 -0
  85. data/lib/api_maker/javascript/updated-attribute.jsx +60 -0
  86. data/lib/api_maker/loader.rb +14 -0
  87. data/lib/api_maker/memory_storage.rb +65 -0
  88. data/lib/api_maker/model_extensions.rb +96 -0
  89. data/lib/api_maker/permitted_params_argument.rb +12 -0
  90. data/lib/api_maker/preloader.rb +91 -0
  91. data/lib/api_maker/preloader_belongs_to.rb +58 -0
  92. data/lib/api_maker/preloader_has_many.rb +69 -0
  93. data/lib/api_maker/preloader_has_one.rb +70 -0
  94. data/lib/api_maker/preloader_through.rb +101 -0
  95. data/lib/api_maker/railtie.rb +14 -0
  96. data/lib/api_maker/relationship_includer.rb +42 -0
  97. data/lib/api_maker/resource_routing.rb +8 -0
  98. data/lib/api_maker/result_parser.rb +50 -0
  99. data/lib/api_maker/serializer.rb +86 -0
  100. data/lib/api_maker/spec_helper.rb +100 -0
  101. data/lib/api_maker/version.rb +3 -0
  102. data/lib/tasks/api_maker_tasks.rake +5 -0
  103. metadata +581 -0
@@ -0,0 +1,169 @@
1
+ import CableSubscriptionPool from "./cable-subscription-pool"
2
+ import CableSubscription from "./cable-subscription"
3
+
4
+ export default class ApiMakerCableConnectionPool {
5
+ static current() {
6
+ if (!window.apiMakerCableConnectionPool)
7
+ window.apiMakerCableConnectionPool = new ApiMakerCableConnectionPool()
8
+
9
+ return window.apiMakerCableConnectionPool
10
+ }
11
+
12
+ constructor() {
13
+ this.connections = {}
14
+ this.upcomingSubscriptionData = {}
15
+ this.upcomingSubscriptions = []
16
+ }
17
+
18
+ connectCreated(modelName, callback) {
19
+ if (!this.upcomingSubscriptionData[modelName])
20
+ this.upcomingSubscriptionData[modelName] = {}
21
+
22
+ if (!this.upcomingSubscriptionData[modelName]["creates"])
23
+ this.upcomingSubscriptionData[modelName]["creates"] = true
24
+
25
+ if (!this.upcomingSubscriptions[modelName])
26
+ this.upcomingSubscriptions[modelName] = {}
27
+
28
+ if (!this.upcomingSubscriptions[modelName]["creates"])
29
+ this.upcomingSubscriptions[modelName]["creates"] = []
30
+
31
+ var subscription = new CableSubscription({
32
+ callback: callback,
33
+ modelName: modelName
34
+ })
35
+
36
+ this.upcomingSubscriptions[modelName]["creates"].push(subscription)
37
+
38
+ this.scheduleConnectUpcoming()
39
+
40
+ return subscription
41
+ }
42
+
43
+ connectDestroyed(modelName, modelId, callback) {
44
+ if (!this.upcomingSubscriptionData[modelName])
45
+ this.upcomingSubscriptionData[modelName] = {}
46
+
47
+ if (!this.upcomingSubscriptionData[modelName]["destroys"])
48
+ this.upcomingSubscriptionData[modelName]["destroys"] = []
49
+
50
+ if (!this.upcomingSubscriptionData[modelName]["destroys"].includes(modelId))
51
+ this.upcomingSubscriptionData[modelName]["destroys"].push(modelId)
52
+
53
+ if (!this.upcomingSubscriptions[modelName])
54
+ this.upcomingSubscriptions[modelName] = {}
55
+
56
+ if (!this.upcomingSubscriptions[modelName]["destroys"])
57
+ this.upcomingSubscriptions[modelName]["destroys"] = {}
58
+
59
+ if (!this.upcomingSubscriptions[modelName]["destroys"][modelId])
60
+ this.upcomingSubscriptions[modelName]["destroys"][modelId] = []
61
+
62
+ var subscription = new CableSubscription({
63
+ callback: callback,
64
+ modelName: modelName,
65
+ modelId: modelId
66
+ })
67
+
68
+ this.upcomingSubscriptions[modelName]["destroys"][modelId].push(subscription)
69
+
70
+ this.scheduleConnectUpcoming()
71
+
72
+ return subscription
73
+ }
74
+
75
+ connectEvent(modelName, modelId, eventName, callback) {
76
+ if (!this.upcomingSubscriptionData[modelName])
77
+ this.upcomingSubscriptionData[modelName] = {}
78
+
79
+ if (!this.upcomingSubscriptionData[modelName]["events"])
80
+ this.upcomingSubscriptionData[modelName]["events"] = {}
81
+
82
+ if (!this.upcomingSubscriptionData[modelName]["events"][eventName])
83
+ this.upcomingSubscriptionData[modelName]["events"][eventName] = []
84
+
85
+ if (!this.upcomingSubscriptionData[modelName]["events"][eventName].includes(modelId))
86
+ this.upcomingSubscriptionData[modelName]["events"][eventName].push(modelId)
87
+
88
+ if (!this.upcomingSubscriptions[modelName])
89
+ this.upcomingSubscriptions[modelName] = {}
90
+
91
+ if (!this.upcomingSubscriptions[modelName]["events"])
92
+ this.upcomingSubscriptions[modelName]["events"] = {}
93
+
94
+ if (!this.upcomingSubscriptions[modelName]["events"])
95
+ this.upcomingSubscriptions[modelName]["events"] = {}
96
+
97
+ if (!this.upcomingSubscriptions[modelName]["events"][modelId])
98
+ this.upcomingSubscriptions[modelName]["events"][modelId] = {}
99
+
100
+ if (!this.upcomingSubscriptions[modelName]["events"][modelId][eventName])
101
+ this.upcomingSubscriptions[modelName]["events"][modelId][eventName] = []
102
+
103
+ var subscription = new CableSubscription({
104
+ callback: callback,
105
+ modelName: modelName,
106
+ modelId: modelId
107
+ })
108
+
109
+ this.upcomingSubscriptions[modelName]["events"][modelId][eventName].push(subscription)
110
+
111
+ this.scheduleConnectUpcoming()
112
+
113
+ return subscription
114
+ }
115
+
116
+ connectUpdate(modelName, modelId, callback) {
117
+ if (!this.upcomingSubscriptionData[modelName])
118
+ this.upcomingSubscriptionData[modelName] = {}
119
+
120
+ if (!this.upcomingSubscriptionData[modelName]["updates"])
121
+ this.upcomingSubscriptionData[modelName]["updates"] = []
122
+
123
+ if (!this.upcomingSubscriptionData[modelName]["updates"].includes(modelId))
124
+ this.upcomingSubscriptionData[modelName]["updates"].push(modelId)
125
+
126
+ if (!this.upcomingSubscriptions[modelName])
127
+ this.upcomingSubscriptions[modelName] = {}
128
+
129
+ if (!this.upcomingSubscriptions[modelName]["updates"])
130
+ this.upcomingSubscriptions[modelName]["updates"] = {}
131
+
132
+ if (!this.upcomingSubscriptions[modelName]["updates"][modelId])
133
+ this.upcomingSubscriptions[modelName]["updates"][modelId] = []
134
+
135
+ var subscription = new CableSubscription({
136
+ callback: callback,
137
+ modelName: modelName,
138
+ modelId: modelId
139
+ })
140
+
141
+ this.upcomingSubscriptions[modelName]["updates"][modelId].push(subscription)
142
+
143
+ this.scheduleConnectUpcoming()
144
+
145
+ return subscription
146
+ }
147
+
148
+ connectUpcoming() {
149
+ var subscriptionData = this.upcomingSubscriptionData
150
+ var subscriptions = this.upcomingSubscriptions
151
+
152
+ this.upcomingSubscriptionData = {}
153
+ this.upcomingSubscriptions = {}
154
+
155
+ var cableSubscriptionPool = new CableSubscriptionPool({
156
+ subscriptionData: subscriptionData,
157
+ subscriptions: subscriptions
158
+ })
159
+
160
+ return cableSubscriptionPool
161
+ }
162
+
163
+ scheduleConnectUpcoming() {
164
+ if (this.scheduleConnectUpcomingTimeout)
165
+ clearTimeout(this.scheduleConnectUpcomingTimeout)
166
+
167
+ this.scheduleConnectUpcomingTimeout = setTimeout(() => this.connectUpcoming(), 50)
168
+ }
169
+ }
@@ -0,0 +1,111 @@
1
+ import CommandsPool from "./commands-pool"
2
+ import Deserializer from "./deserializer"
3
+ import Logger from "./logger"
4
+
5
+ const inflection = require("inflection")
6
+
7
+ export default class ApiMakerCableSubscriptionPool {
8
+ constructor(props) {
9
+ this.props = props
10
+ this.activeSubscriptions = 0
11
+ this.registerSubscriptions()
12
+ this.connect()
13
+ }
14
+
15
+ connect() {
16
+ var globalData = CommandsPool.current().globalRequestData
17
+
18
+ this.subscription = App.cable.subscriptions.create(
19
+ {channel: "ApiMaker::SubscriptionsChannel", global: globalData, subscription_data: this.props.subscriptionData},
20
+ {received: (data) => this.onReceived(data)}
21
+ )
22
+ }
23
+
24
+ onReceived(rawData) {
25
+ var data = Deserializer.parse(rawData)
26
+ var modelType = data.model_type
27
+ var modelName = inflection.camelize(inflection.singularize(modelType.replace(/-/g, "_")))
28
+ var modelId = data.model_id
29
+ var modelInstance = data.model
30
+ var subscriptions = this.props.subscriptions
31
+
32
+ if (data.type == "update") {
33
+ for(var subscription of subscriptions[modelName]["updates"][modelId]) {
34
+ subscription.onReceived({model: modelInstance})
35
+ }
36
+ } else if (data.type == "create") {
37
+ for(var subscription of subscriptions[modelName]["creates"]) {
38
+ subscription.onReceived({model: modelInstance})
39
+ }
40
+ } else if (data.type == "destroy") {
41
+ for(var subscription of subscriptions[modelName]["destroys"][modelId]) {
42
+ subscription.onReceived({model: modelInstance})
43
+ }
44
+ } else if (data.type == "event") {
45
+ for(var subscription of subscriptions[modelName]["events"][modelId][data.event_name]) {
46
+ subscription.onReceived({
47
+ args: data.args,
48
+ eventName: data.event_name,
49
+ model: modelInstance
50
+ })
51
+ }
52
+ } else {
53
+ throw new Error(`Unknown type: ${data.type}`)
54
+ }
55
+ }
56
+
57
+ onUnsubscribe() {
58
+ Logger.log(`activeSubscriptions before unsub: ${this.activeSubscriptions}`)
59
+ this.activeSubscriptions -= 1
60
+ Logger.log(`activeSubscriptions after unsub: ${this.activeSubscriptions}`)
61
+
62
+ if (this.activeSubscriptions <= 0) {
63
+ Logger.log("Unsubscribe from ActionCable subscription")
64
+ this.subscription.unsubscribe()
65
+ }
66
+ }
67
+
68
+ registerSubscriptions() {
69
+ Logger.log(`registerSubscriptions: ${this.props.subscriptions.length}`)
70
+ Logger.log(this.props.subscriptions)
71
+
72
+ for(var modelName in this.props.subscriptions) {
73
+ if (this.props.subscriptions[modelName]["creates"]) {
74
+ for(var subscription of this.props.subscriptions[modelName]["creates"]) {
75
+ this.connectUnsubscriptionForSubscription(subscription)
76
+ }
77
+ }
78
+
79
+ if (this.props.subscriptions[modelName]["events"]) {
80
+ for(var eventName in this.props.subscriptions[modelName]["events"]) {
81
+ for(var modelId in this.props.subscriptions[modelName]["events"][eventName]) {
82
+ for(var subscription of this.props.subscriptions[modelName]["events"][eventName][modelId]) {
83
+ this.connectUnsubscriptionForSubscription(subscription)
84
+ }
85
+ }
86
+ }
87
+ }
88
+
89
+ if (this.props.subscriptions[modelName]["updates"]) {
90
+ for(var modelId in this.props.subscriptions[modelName]["updates"]) {
91
+ for(var subscription of this.props.subscriptions[modelName]["updates"][modelId]) {
92
+ this.connectUnsubscriptionForSubscription(subscription)
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ connectUnsubscriptionForSubscription(subscription) {
100
+ Logger.log("Connecting to unsubscribe on subscription")
101
+ Logger.log({ subscription })
102
+
103
+ this.activeSubscriptions += 1
104
+
105
+ subscription.onUnsubscribe(() => {
106
+ Logger.log("Call onUnsubscribe on self")
107
+
108
+ this.onUnsubscribe(subscription)
109
+ })
110
+ }
111
+ }
@@ -0,0 +1,33 @@
1
+ import Logger from "./logger"
2
+
3
+ export default class ApiMakerCableSubscription {
4
+ constructor(props) {
5
+ this.props = props
6
+ this.onUnsubscribeCallbacks = []
7
+ this.subscribed = true
8
+ }
9
+
10
+ onReceived(data) {
11
+ this.props.callback.apply(null, [data])
12
+ }
13
+
14
+ onUnsubscribe(callback) {
15
+ this.onUnsubscribeCallbacks.push(callback)
16
+ }
17
+
18
+ unsubscribe() {
19
+ if (!this.subscribed) {
20
+ Logger.log("Unsubscribed already called")
21
+ return
22
+ }
23
+
24
+ Logger.log(`Unsubscribe called: ${this.onUnsubscribeCallbacks.length}`)
25
+
26
+ for(var onUnsubscribeCallback of this.onUnsubscribeCallbacks) {
27
+ Logger.log("onUnsubscribe called for a callback")
28
+ onUnsubscribeCallback.call()
29
+ }
30
+
31
+ this.subscribed = false
32
+ }
33
+ }
@@ -0,0 +1,186 @@
1
+ import CommandsPool from "./commands-pool"
2
+ import merge from "merge"
3
+ import ModelsResponseReader from "./models-response-reader"
4
+ import Result from "./result"
5
+
6
+ const inflection = require("inflection")
7
+
8
+ export default class Collection {
9
+ constructor(args, queryArgs = {}) {
10
+ this.queryArgs = queryArgs
11
+ this.args = args
12
+ }
13
+
14
+ accessibleBy(abilityName) {
15
+ return this._clone({accessibleBy: abilityName})
16
+ }
17
+
18
+ distinct() {
19
+ return this._clone({distinct: true})
20
+ }
21
+
22
+ async each(callback) {
23
+ var array = await this.toArray()
24
+
25
+ for(var model in array) {
26
+ callback.call(model)
27
+ }
28
+ }
29
+
30
+ async first() {
31
+ var models = await this.toArray()
32
+ return models[0]
33
+ }
34
+
35
+ async count() {
36
+ var response = await this._clone({count: true})._response()
37
+ return response.count
38
+ }
39
+
40
+ isLoaded() {
41
+ if (this.args.reflectionName in this.args.model.relationshipsCache)
42
+ return true
43
+
44
+ return false
45
+ }
46
+
47
+ limit(amount) {
48
+ return this._clone({limit: amount})
49
+ }
50
+
51
+ loaded() {
52
+ if (!(this.args.reflectionName in this.args.model.relationshipsCache)) {
53
+ throw new Error(`${this.args.reflectionName} hasnt been loaded yet`)
54
+ }
55
+
56
+ return this.args.model.relationshipsCache[this.args.reflectionName]
57
+ }
58
+
59
+ preload(preloadValue) {
60
+ return this._clone({preload: preloadValue})
61
+ }
62
+
63
+ page(pageNumber) {
64
+ if (!pageNumber)
65
+ pageNumber = 1
66
+
67
+ var changes = {page: pageNumber}
68
+
69
+ if (!this.queryArgs.ransack || !this.queryArgs.ransack.s)
70
+ changes.ransack = {s: `${this.args.modelClass.modelClassData().primaryKey} asc`}
71
+
72
+ return this._clone(changes)
73
+ }
74
+
75
+ pageKey(pageKeyValue) {
76
+ return this._clone({pageKey: pageKeyValue})
77
+ }
78
+
79
+ ransack(params) {
80
+ return this._clone({ransack: params})
81
+ }
82
+
83
+ async result() {
84
+ var response = await this._response()
85
+ var models = this._responseToModels(response)
86
+ var result = new Result({collection: this, models, response})
87
+ return result
88
+ }
89
+
90
+ searchKey(searchKey) {
91
+ return this._clone({searchKey: searchKey})
92
+ }
93
+
94
+ select(originalSelect) {
95
+ var newSelect = {}
96
+
97
+ for(var originalModelName in originalSelect) {
98
+ var newModalName = inflection.dasherize(inflection.underscore(originalModelName))
99
+ var newValues = []
100
+ var originalValues = originalSelect[originalModelName]
101
+
102
+ for(var originalAttributeName of originalValues) {
103
+ var newAttributeName = inflection.underscore(originalAttributeName)
104
+ newValues.push(newAttributeName)
105
+ }
106
+
107
+ newSelect[newModalName] = newValues
108
+ }
109
+
110
+ return this._clone({select: newSelect})
111
+ }
112
+
113
+ sort(sortBy) {
114
+ return this._clone({ransack: {s: sortBy}})
115
+ }
116
+
117
+ async toArray() {
118
+ var response = await this._response()
119
+ return this._responseToModels(response)
120
+ }
121
+
122
+ modelClass() {
123
+ return require(`api-maker/models/${inflection.dasherize(inflection.singularize(this.args.modelClass.modelClassData().collectionName))}`).default
124
+ }
125
+
126
+ _clone(args) {
127
+ return new Collection(this.args, this._merge(this.queryArgs, args))
128
+ }
129
+
130
+ _merge(object1, object2) {
131
+ return merge.recursive(true, object1, object2)
132
+ }
133
+
134
+ _response() {
135
+ var modelClassData = this.args.modelClass.modelClassData()
136
+
137
+ return CommandsPool.addCommand(
138
+ {
139
+ args: this._params(),
140
+ command: `${modelClassData.collectionName}-index`,
141
+ collectionName: modelClassData.collectionName,
142
+ type: "index"
143
+ },
144
+ {}
145
+ )
146
+ }
147
+
148
+ _responseToModels(response) {
149
+ var modelsResponseReader = new ModelsResponseReader({response: response})
150
+ return modelsResponseReader.models()
151
+ }
152
+
153
+ _params() {
154
+ var params = {}
155
+
156
+ if (this.queryArgs.params)
157
+ params = this._merge(params, this.queryArgs.params)
158
+
159
+ if (this.queryArgs.accessibleBy) {
160
+ params.accessible_by = inflection.underscore(this.queryArgs.accessibleBy)
161
+ }
162
+
163
+ if (this.queryArgs.count)
164
+ params.count = this.queryArgs.count
165
+
166
+ if (this.queryArgs.distinct)
167
+ params.distinct = this.queryArgs.distinct
168
+
169
+ if (this.queryArgs.ransack)
170
+ params.q = this.queryArgs.ransack
171
+
172
+ if (this.queryArgs.limit)
173
+ params.limit = this.queryArgs.limit
174
+
175
+ if (this.queryArgs.preload)
176
+ params.include = this.queryArgs.preload
177
+
178
+ if (this.queryArgs.page)
179
+ params.page = this.queryArgs.page
180
+
181
+ if (this.queryArgs.select)
182
+ params.select = this.queryArgs.select
183
+
184
+ return params
185
+ }
186
+ }