refs #13989 Merge branch 'origin/13989-webdav-service'
[arvados.git] / src / common / api / order-builder.ts
index 08d17b18e9d5b3ed7adba85fd36e8074d5abaaae..ed990541c61bb960e4b1a5074a4530570d1617eb 100644 (file)
@@ -3,35 +3,30 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import * as _ from "lodash";
-import { Resource } from "./common-resource-service";
+import { Resource } from "../../models/resource";
 
-export default class OrderBuilder<T extends Resource = Resource> {
+export class OrderBuilder<T extends Resource = Resource> {
 
     static create<T extends Resource = Resource>(prefix?: string){
         return new OrderBuilder<T>([], prefix);
     }
 
     private constructor(
-        private order: string[] = [], 
+        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){