Refactor OrderBuilder
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Thu, 5 Jul 2018 09:44:13 +0000 (11:44 +0200)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Thu, 5 Jul 2018 09:44:13 +0000 (11:44 +0200)
Feature #13703

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/common/api/order-builder.ts

index 08d17b18e9d5b3ed7adba85fd36e8074d5abaaae..316379145eceed2e11f62541fa258544d4f7c1ef 100644 (file)
@@ -15,23 +15,18 @@ export default class OrderBuilder<T extends Resource = Resource> {
         private order: string[] = [], 
         private prefix = ""){}
 
-    private getRule (direction: string, attribute: keyof T) {
+    private addRule (direction: string, attribute: keyof T) {
         const prefix = this.prefix ? this.prefix + "." : "";
-        return `${prefix}${_.snakeCase(attribute.toString())} ${direction}`;
+        const order = [...this.order, `${prefix}${_.snakeCase(attribute.toString())} ${direction}`];
+        return new OrderBuilder<T>(order, prefix);
     }
 
     addAsc(attribute: keyof T) {
-        return new OrderBuilder<T>(
-            [...this.order, this.getRule("asc", attribute)],
-            this.prefix
-        );
+        return this.addRule("asc", attribute);
     }
 
     addDesc(attribute: keyof T) {
-        return new OrderBuilder<T>(
-            [...this.order, this.getRule("desc", attribute)],
-            this.prefix
-        );
+        return this.addRule("desc", attribute);
     }
 
     concat(orderBuilder: OrderBuilder){