src/eventstore/Position.ts
import Long = require('long')
/**
* Represents a position in eventstore global log file
*/
export class Position {
/** commit position part of position */
public commitPosition: Long = Long.fromValue(0)
/** prepare position part of position */
public preparePosition: Long = Long.fromValue(0)
/**
*Creates an instance of Position.
*/
public constructor(commitPosition: Long | number, preparePosition: Long | number) {
this.commitPosition =
typeof commitPosition === 'number' ? Long.fromValue(commitPosition) : commitPosition
this.preparePosition =
typeof preparePosition === 'number' ? Long.fromValue(preparePosition) : preparePosition
}
/**
* Compares two Position values
*/
public compareTo(position: Position): number {
if (
this.commitPosition.lt(position.commitPosition) ||
(this.commitPosition.eq(position.commitPosition) &&
this.preparePosition.lt(position.preparePosition))
) {
return -1
}
if (
this.commitPosition.gt(position.commitPosition) ||
(this.commitPosition.eq(position.commitPosition) &&
this.preparePosition.gt(position.preparePosition))
) {
return 1
}
return 0
}
/**
* return start position in global log file
*/
public static get Start(): Position {
return new Position(Long.fromValue(0), Long.fromValue(0))
}
/**
* return end position in global log file
*/
public static get End(): Position {
return new Position(Long.fromValue(-1), Long.fromValue(-1))
}
}