sedk-mysql
Version:
Simple SQL builder and validator for MySQL
156 lines • 4.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NULLS_LAST = exports.NullsLast = exports.NULLS_FIRST = exports.NullsFirst = exports.NULLS_POSITION_NOT_EXIST = exports.NullsPositionNotExist = exports.OrderByNullsPosition = exports.DESC = exports.Desc = exports.ASC = exports.Asc = exports.DIRECTION_NOT_EXIST = exports.DirectionNotExist = exports.OrderByDirection = exports.OrderByItemInfo = void 0;
const database_1 = require("./database");
const models_1 = require("./models");
class OrderByItemInfo {
constructor(orderByItem, direction = exports.DIRECTION_NOT_EXIST, nullPosition = exports.NULLS_POSITION_NOT_EXIST) {
this.orderByItem = orderByItem;
this.direction = direction;
this.nullPosition = nullPosition;
}
getStmt(data, artifacts, binderStore) {
const direction = this.getDirectionFromOption(data);
const nullPosition = this.getNullLastFromOption(data);
const orderByString = (this.orderByItem instanceof database_1.Column || this.orderByItem instanceof models_1.Expression)
? this.orderByItem.getStmt(data, artifacts, binderStore)
: this.orderByItem;
return `${orderByString}${direction}${nullPosition}`;
}
getDirectionFromOption(data) {
if (this.direction === exports.DESC)
return exports.DESC;
if (data.option !== undefined) {
switch (data.option.addAscAfterOrderByItem) {
case 'always':
return exports.ASC;
case 'never':
return exports.DIRECTION_NOT_EXIST;
}
}
return this.direction;
}
getNullLastFromOption(data) {
if (this.nullPosition === exports.NULLS_FIRST)
return exports.NULLS_FIRST;
if (data.option !== undefined) {
switch (data.option.addNullsLastAfterOrderByItem) {
case 'always':
return exports.NULLS_LAST;
case 'never':
return exports.NULLS_POSITION_NOT_EXIST;
}
}
return this.nullPosition;
}
}
exports.OrderByItemInfo = OrderByItemInfo;
class OrderByDirection {
}
exports.OrderByDirection = OrderByDirection;
class DirectionNotExist extends OrderByDirection {
constructor() {
super();
this.unique = Symbol();
}
static getInstance() {
if (!DirectionNotExist.instance) {
DirectionNotExist.instance = new DirectionNotExist();
}
return DirectionNotExist.instance;
}
toString() {
return '';
}
}
exports.DirectionNotExist = DirectionNotExist;
exports.DIRECTION_NOT_EXIST = DirectionNotExist.getInstance();
class Asc extends OrderByDirection {
constructor() {
super();
this.unique = Symbol();
}
static getInstance() {
if (!Asc.instance) {
Asc.instance = new Asc();
}
return Asc.instance;
}
toString() {
return ' ASC';
}
}
exports.Asc = Asc;
exports.ASC = Asc.getInstance();
class Desc extends OrderByDirection {
constructor() {
super();
this.unique = Symbol();
}
static getInstance() {
if (!Desc.instance) {
Desc.instance = new Desc();
}
return Desc.instance;
}
toString() {
return ' DESC';
}
}
exports.Desc = Desc;
exports.DESC = Desc.getInstance();
class OrderByNullsPosition {
}
exports.OrderByNullsPosition = OrderByNullsPosition;
class NullsPositionNotExist extends OrderByNullsPosition {
constructor() {
super();
this.unique = Symbol();
}
static getInstance() {
if (!NullsPositionNotExist.instance) {
NullsPositionNotExist.instance = new NullsPositionNotExist();
}
return NullsPositionNotExist.instance;
}
toString() {
return '';
}
}
exports.NullsPositionNotExist = NullsPositionNotExist;
exports.NULLS_POSITION_NOT_EXIST = NullsPositionNotExist.getInstance();
class NullsFirst extends OrderByNullsPosition {
constructor() {
super();
this.unique = Symbol();
}
static getInstance() {
if (!NullsFirst.instance) {
NullsFirst.instance = new NullsFirst();
}
return NullsFirst.instance;
}
toString() {
return ' NULLS FIRST';
}
}
exports.NullsFirst = NullsFirst;
exports.NULLS_FIRST = NullsFirst.getInstance();
class NullsLast extends OrderByNullsPosition {
constructor() {
super();
this.unique = Symbol();
}
static getInstance() {
if (!NullsLast.instance) {
NullsLast.instance = new NullsLast();
}
return NullsLast.instance;
}
toString() {
return ' NULLS LAST';
}
}
exports.NullsLast = NullsLast;
exports.NULLS_LAST = NullsLast.getInstance();
//# sourceMappingURL=orderBy.js.map