@blueleader07/typeorm
Version:
Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.
57 lines (55 loc) • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DynamoPageable = void 0;
const DynamoSort_1 = require("./DynamoSort");
class DynamoPageable {
constructor(pageNumber, pageSize, sort, exclusiveStartKey) {
this.pageNumber = pageNumber;
this.pageSize = pageSize || DynamoPageable.DEFAULT_PAGE_SIZE;
this.sort = sort || DynamoSort_1.DynamoSort.UNSORTED;
this.exclusiveStartKey = exclusiveStartKey;
}
toQueryString(prefix) {
prefix = prefix || "?";
let sort = this.sort.orders
.map((order) => {
return `sort=${order.property},${order.direction}`;
})
.join("&");
if (sort) {
sort = `&${sort}`;
}
return `${prefix}page=${this.pageNumber}&size=${this.pageSize}${sort}`;
}
static mixin(params, pageable) {
if (pageable) {
return {
...params,
pageNumber: pageable.pageNumber || DynamoPageable.DEFAULT_PAGE_NUMBER,
pageSize: pageable.pageSize || DynamoPageable.DEFAULT_PAGE_SIZE,
};
}
return params;
}
static parse(req) {
const pageNumber = parseInt(req.query.page || DynamoPageable.DEFAULT_PAGE_NUMBER);
const pageSize = parseInt(req.query.size || DynamoPageable.DEFAULT_PAGE_SIZE);
const sort = DynamoSort_1.DynamoSort.parse(req);
const exclusiveStartKey = req.query.exclusiveStartKey;
return DynamoPageable.of(pageNumber, pageSize, sort, exclusiveStartKey);
}
static getDefault() {
return new DynamoPageable(this.DEFAULT_PAGE_NUMBER);
}
static one(sort) {
return new DynamoPageable(this.DEFAULT_PAGE_NUMBER, this.ONE, sort);
}
static of(pageNumber, pageSize, sort, exclusiveStartKey) {
return new DynamoPageable(pageNumber, pageSize, sort, exclusiveStartKey);
}
}
exports.DynamoPageable = DynamoPageable;
DynamoPageable.DEFAULT_PAGE_NUMBER = 0;
DynamoPageable.DEFAULT_PAGE_SIZE = 15;
DynamoPageable.ONE = 1;
//# sourceMappingURL=DynamoPageable.js.map