public LimitSegment(int startIndex, int stopIndex, IPaginationValueSegment offset, IPaginationValueSegment rowCount) { _startIndex = startIndex; _stopIndex = stopIndex; _offset = offset; _rowCount = rowCount; }
public PaginationContext(IPaginationValueSegment offsetSegment, IPaginationValueSegment rowCountSegment, ParameterContext parameterContext) { _hasPagination = null != offsetSegment || null != rowCountSegment; this._offsetSegment = offsetSegment; this._rowCountSegment = rowCountSegment; _actualOffset = null == offsetSegment ? 0 : GetValue(offsetSegment, parameterContext); _actualRowCount = null == rowCountSegment ? (long?)null : GetValue(rowCountSegment, parameterContext); }
private long GetValue(IPaginationValueSegment paginationValueSegment, ParameterContext parameterContext) { if (paginationValueSegment is IParameterMarkerPaginationValueSegment parameterMarkerPaginationValueSegment) { if (parameterContext.TryGetParameterValue(parameterMarkerPaginationValueSegment.GetParameterName(), out var parameterValue)) { return(parameterValue is long l ? l : (int)parameterValue); } else { throw new ShardingException( $"{nameof(IParameterMarkerPaginationValueSegment)} cant get value that parameter name:[{parameterMarkerPaginationValueSegment.GetParameterName()}] "); } } else { return(((INumberLiteralPaginationValueSegment)paginationValueSegment).GetValue()); } }