Skip to content
This repository was archived by the owner on Feb 11, 2020. It is now read-only.

Commit 6edde5c

Browse files
author
Dr. Safi
committed
Refactoring function parameters to named parameters.
1 parent 063cda7 commit 6edde5c

File tree

15 files changed

+141
-86
lines changed

15 files changed

+141
-86
lines changed

module/createInstance.staticMethod/entrypoint.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export default async function (controllerInstanceArray, dataKey, getDocumentQuer
2222
// [2] Populate properties.
2323
if(!('jsonData' in instance)) { // if not already populated with data.
2424
let jsonData = await getDocumentQueryCallback(Class.rethinkdbConnection, dataKey)
25-
await populateInstancePropertyFromJson(instance, jsonData)
25+
await populateInstancePropertyFromJson({ object: instance, jsonData })
2626
}
2727

2828
return instance // return the newly cr

module/populateInstancePropertyFromJson.method/entrypoint.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
* @action creates class instance properties.
44
* @param {object} jsonData key-value of object will end up as property-value of class.
55
**/
6-
function usingGenericInstance(instance, jsonData) {
6+
function usingGenericInstance({object, jsonData}) {
77
if(jsonData) {
88
Object.entries(jsonData).forEach(([key, value]) => {
9-
instance[key] = value
9+
object[key] = value
1010
})
1111
}
12-
instance.jsonData = jsonData // to keep track of populated instances.
12+
object.jsonData = jsonData // to keep track of populated instances.
1313
}
1414

15-
function usingThis(jsonData) {
15+
function usingThis({ jsonData, object = this }) {
1616
// console.log(jsonData)
17-
usingGenericInstance(this, jsonData)
17+
usingGenericInstance({object, jsonData})
1818
}
1919

2020
export {

module/reusableNestedUnit/Controller.class.js

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,9 @@ import addStaticSubclassToClassArray from 'appscript/module/addStaticSubclassToC
55
import { classDecorator as prototypeChainDebug} from 'appscript/module/prototypeChainDebug'
66
import { add, execute, applyMixin, conditional } from 'appscript/utilityFunction/decoratorUtility.js'
77
import { extendedSubclassPattern } from 'appscript/utilityFunction/extendedSubclassPattern.js'
8-
import { superclassInstanceContextPattern } from 'appscript/utilityFunction/superclassInstanceContextPattern.js'
8+
import { superclassInstanceContextPattern, cacheInstance } from 'appscript/utilityFunction/superclassInstanceContextPattern.js'
99
import { mix } from 'mixwith'
1010

11-
function cacheInstance({ cacheArrayName, keyArgumentName = 'key' }) { // decorator + proxy
12-
return (target, name, descriptor) => {
13-
let method = target[name]
14-
descriptor.value = new Proxy(method, {
15-
apply: async (target, thisArg, argumentsList) => {
16-
let [{ [keyArgumentName]: key }] = argumentsList // extract key using the specified key parameter name in the method.
17-
let cacheArray = thisArg.instance[cacheArrayName] // Sub array of 'this.instance' in which instances are saved.
18-
let instance;
19-
if(key in cacheArray) {
20-
instance = cacheArray[key]
21-
} else {
22-
instance = await target.apply(thisArg, argumentsList)
23-
cacheArray[key] = instance // add to class cache
24-
}
25-
return instance
26-
}
27-
})
28-
return descriptor
29-
}
30-
}
31-
3211
/**
3312
* @class
3413
* @usage new instance is created for each check.
@@ -61,7 +40,7 @@ export default ({
6140
})
6241
async getNestedUnit({ nestedUnitKey, additionalChildNestedUnit = [], pathPointerKey = null}) {
6342
let instance = await this.callSubclass('NestedUnit', [nestedUnitKey])
64-
await instance.initializeInstance()
43+
await instance.reflectDatabaseDataToAppObject()
6544
// add children trees:
6645
instance.additionalChildNestedUnit = additionalChildNestedUnit
6746
// add pathPointerKey to allow applying additional corresponding additional children.
@@ -75,7 +54,7 @@ export default ({
7554
})
7655
async getUnit({ unitKey }) {
7756
let instance = await this.callSubclass('Unit', [unitKey])
78-
await instance.initializeInstance()
57+
await instance.reflectDatabaseDataToAppObject()
7958
return instance
8059
}
8160

@@ -84,11 +63,15 @@ export default ({
8463
* during which 'jsonData' property is set. if it is set, it means that the instance is already populated with data.
8564
*
8665
*/
87-
async initializeInstance() {
88-
let Class = this.constructor
89-
if(!('jsonData' in this)) { // if not already populated with data.
90-
let jsonData = await Class.getDocumentQuery(Class.rethinkdbConnection, this.key)
91-
await this.populateInstancePropertyFromJson_this(jsonData)
66+
async reflectDatabaseDataToAppObject({
67+
object = this,
68+
key = this.key,
69+
queryFunc = this.constructor.getDocumentQuery,
70+
connection = self.rethinkdbConnection
71+
} = {}) {
72+
if(!('jsonData' in object)) { // if not already populated with data.
73+
let jsonData = await queryFunc({ key, connection })
74+
await this.populateInstancePropertyFromJson_this({ jsonData })
9275
}
9376
}
9477

module/reusableNestedUnit/NestedUnit.class.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ export default ({ Superclass }) => {
88

99
static getDocumentQuery;
1010

11-
static initializeStaticClass(self, getTableDocument) {
12-
self.getDocumentQuery = getTableDocument
11+
static initializeStaticClass(self, getDocument) {
12+
// console.log(getDocument)
13+
self.getDocumentQuery = getDocument
1314
}
1415

1516
constructor(databaseDocumentKey) {
@@ -22,8 +23,8 @@ export default ({ Superclass }) => {
2223
* @description gets document from database using documentKey and populates the data to the instance.
2324
*
2425
*/
25-
async initializeInstance() {
26-
await super.initializeInstance()
26+
async reflectDatabaseDataToAppObject() {
27+
await super.reflectDatabaseDataToAppObject()
2728
// reorder insertion points
2829
if(!('jsonData' in this) && this.insertionPoint) {
2930
await this.insertionPoint.sort((prior, subsequent) => {

module/reusableNestedUnit/Unit.class.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ export default ({ Superclass }) => {
88

99
static getDocumentQuery;
1010

11-
static initializeStaticClass(self, getTableDocument) {
12-
self.getDocumentQuery = getTableDocument
11+
static initializeStaticClass(self, getDocument) {
12+
self.getDocumentQuery = getDocument
1313
}
1414

1515
constructor(databaseDocumentKey) {

module/reusableNestedUnit/implementation/condition/NestedUnit.class.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,19 @@ import r from 'rethinkdb'
22
import { classDecorator as prototypeChainDebug} from 'appscript/module/prototypeChainDebug'
33
import { add, execute, applyMixin, conditional } from 'appscript/utilityFunction/decoratorUtility.js'
44
import { extendedSubclassPattern } from 'appscript/utilityFunction/extendedSubclassPattern.js'
5+
import { curried as getTableDocumentCurried } from "appscript/utilityFunction/database/query/getTableDocument.query.js";
56

6-
let getTableDocument = {
7-
generate: require('appscript/utilityFunction/database/query/getTableDocument.query.js'),
8-
instance: []
7+
let getDocument = {
8+
NestedUnit: getTableDocumentCurried({ documentId: 'condition_conditionTree' }),
99
}
10-
getTableDocument.instance['condition_conditionTree'] = getTableDocument.generate('condition_conditionTree')
1110
import promiseProperRace from 'appscript/utilityFunction/promiseProperRace.js'
1211

1312
export default ({ Superclass }) => {
1413
let self =
1514
@conditional({ decorator: prototypeChainDebug, condition: process.env.SZN_DEBUG })
1615
@execute({
1716
staticMethod: 'initializeStaticClass',
18-
args: [ getTableDocument.instance['condition_conditionTree'] ]
17+
args: [ getDocument['NestedUnit'] ]
1918
})
2019
@extendedSubclassPattern.Subclass()
2120
class NestedUnit extends Superclass {

module/reusableNestedUnit/implementation/condition/Unit.class.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
import { classDecorator as prototypeChainDebug} from 'appscript/module/prototypeChainDebug'
22
import { add, execute, applyMixin, conditional } from 'appscript/utilityFunction/decoratorUtility.js'
33
import { extendedSubclassPattern } from 'appscript/utilityFunction/extendedSubclassPattern.js'
4+
import { curried as getTableDocumentCurried } from "appscript/utilityFunction/database/query/getTableDocument.query.js";
45

5-
let getTableDocument = {
6-
generate: require('appscript/utilityFunction/database/query/getTableDocument.query.js'),
7-
instance: []
6+
let getDocument = {
7+
Unit: getTableDocumentCurried({ documentId: 'condition_conditionImplementation' }),
8+
File: getTableDocumentCurried({ documentId: 'condition_valueReturningFile' }),
89
}
9-
getTableDocument.instance['condition_valueReturningFile'] = getTableDocument.generate('condition_valueReturningFile')
10-
getTableDocument.instance['condition_conditionImplementation'] = getTableDocument.generate('condition_conditionImplementation')
1110

1211
export default ({ Superclass }) => {
1312
let self =
1413
@conditional({ decorator: prototypeChainDebug, condition: process.env.SZN_DEBUG })
1514
@execute({
1615
staticMethod: 'initializeStaticClass',
17-
args: [ getTableDocument.instance['condition_conditionImplementation'] ]
16+
args: [ getDocument['Unit'] ]
1817
})
1918
@extendedSubclassPattern.Subclass()
2019
class Unit extends Superclass {
2120
async checkCondition() {
22-
// [1] get valueReturningFile
2321
let valueReturningFileKey = this.valueReturningFileKey
2422
if(!('valueReturningFile' in this)) {
25-
this.valueReturningFile = await getTableDocument.instance['condition_valueReturningFile'](self.rethinkdbConnection, valueReturningFileKey)
23+
this.valueReturningFile = await getDocument['File']({
24+
key: valueReturningFileKey,
25+
connection: self.rethinkdbConnection
26+
})
2627
}
2728
// [2] require & check condition
2829
if(!this.conditionResult) {

module/reusableNestedUnit/implementation/middleware/NestedUnit.class.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,18 @@ import { classDecorator as prototypeChainDebug} from 'appscript/module/prototype
33
import { add, execute, applyMixin, conditional } from 'appscript/utilityFunction/decoratorUtility.js'
44
import promiseProperRace from 'appscript/utilityFunction/promiseProperRace.js'
55
import { extendedSubclassPattern } from 'appscript/utilityFunction/extendedSubclassPattern.js'
6+
import { curried as getTableDocumentCurried } from "appscript/utilityFunction/database/query/getTableDocument.query.js";
67

7-
let getTableDocument = {
8-
generate: require('appscript/utilityFunction/database/query/getTableDocument.query.js'),
9-
instance: []
8+
let getDocument = {
9+
NestedUnit: getTableDocumentCurried({ documentId: 'middleware_middlewareNestedUnit'})
1010
}
11-
getTableDocument.instance['condition_conditionTree'] = getTableDocument.generate('condition_conditionTree')
12-
getTableDocument.instance['middleware_middlewareNestedUnit'] = getTableDocument.generate('middleware_middlewareNestedUnit')
1311

1412
export default ({ Superclass }) => {
1513
let self =
1614
@conditional({ decorator: prototypeChainDebug, condition: process.env.SZN_DEBUG })
1715
@execute({
1816
staticMethod: 'initializeStaticClass',
19-
args: [ getTableDocument.instance['middleware_middlewareNestedUnit'] ]
17+
args: [ getDocument['NestedUnit'] ]
2018
})
2119
@extendedSubclassPattern.Subclass()
2220
class NestedUnit extends Superclass {
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
import { classDecorator as prototypeChainDebug} from 'appscript/module/prototypeChainDebug'
22
import { add, execute, applyMixin, conditional } from 'appscript/utilityFunction/decoratorUtility.js'
33
import { extendedSubclassPattern } from 'appscript/utilityFunction/extendedSubclassPattern.js'
4+
import { curried as getTableDocumentCurried } from "appscript/utilityFunction/database/query/getTableDocument.query.js";
45

5-
let getTableDocument = {
6-
generate: require('appscript/utilityFunction/database/query/getTableDocument.query.js'),
7-
instance: []
6+
let getDocument = {
7+
'Unit': getTableDocumentCurried({ documentId: 'middleware_middlewareImplementation' }),
8+
'File': getTableDocumentCurried({ documentId: 'middleware_middlewareFile' }),
89
}
9-
getTableDocument.instance['middleware_middlewareFile'] = getTableDocument.generate('middleware_middlewareFile')
10-
getTableDocument.instance['middleware_middlewareImplementation'] = getTableDocument.generate('middleware_middlewareImplementation')
1110

1211
export default ({ Superclass }) => {
1312
let self =
14-
@conditional({ decorator: prototypeChainDebug, condition: process.env.SZN_DEBUG })
13+
@conditional({ decorator: prototypeChainDebug, condition: process.env.SZN_DEBUG })
1514
@execute({
1615
staticMethod: 'initializeStaticClass',
17-
args: [ getTableDocument.instance['middleware_middlewareImplementation'] ]
16+
args: [ getDocument['Unit'] ]
1817
})
1918
@extendedSubclassPattern.Subclass()
2019
class Unit extends Superclass {
2120
async pupolateMiddlewareFile() {
22-
// [1] get valueReturningFile
2321
let middlewareFileKey = this.middlewareFile
2422
if (!('functionPath' in this)) {
25-
let middlewareFile = await getTableDocument.instance['middleware_middlewareFile'](self.rethinkdbConnection, middlewareFileKey)
23+
let middlewareFile = await getDocument['File']({
24+
key: middlewareFileKey,
25+
connection: self.rethinkdbConnection
26+
})
2627
this.functionPath = middlewareFile.filePath
2728
}
2829
}
2930
}
30-
3131
return self
3232
}

module/reusableNestedUnit/implementation/template/NestedUnit.class.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,18 @@ import { classDecorator as prototypeChainDebug} from 'appscript/module/prototype
66
import { add, execute, applyMixin, conditional } from 'appscript/utilityFunction/decoratorUtility.js'
77
import { extendedSubclassPattern } from 'appscript/utilityFunction/extendedSubclassPattern.js'
88
import promiseProperRace from 'appscript/utilityFunction/promiseProperRace.js'
9+
import { curried as getTableDocumentCurried } from "appscript/utilityFunction/database/query/getTableDocument.query.js";
910

10-
let getTableDocument = {
11-
generate: require('appscript/utilityFunction/database/query/getTableDocument.query.js'),
12-
instance: []
11+
let getDocument = {
12+
Unit: getTableDocumentCurried({ documentId: 'template_viewNestedUnit' }),
1313
}
14-
getTableDocument.instance['template_viewNestedUnit'] = getTableDocument.generate('template_viewNestedUnit')
1514

1615
export default ({ Superclass }) => {
1716
let self =
1817
@conditional({ decorator: prototypeChainDebug, condition: process.env.SZN_DEBUG })
1918
@execute({
2019
staticMethod: 'initializeStaticClass',
21-
args: [ getTableDocument.instance['template_viewNestedUnit'] ]
20+
args: [ getDocument['Unit'] ]
2221
})
2322
@extendedSubclassPattern.Subclass()
2423
class NestedUnit extends Superclass {

0 commit comments

Comments
 (0)