// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package io.v.syncbase.v23.services.syncbase.nosql;

import io.v.syncbase.v23.services.syncbase.util.Util;

class PrefixRangeImpl implements PrefixRange {
    private final String prefix;

    PrefixRangeImpl(String prefix) {
        this.prefix = prefix;
    }

    @Override
    public String getStart() {
        return Util.prefixRangeStart(prefix);
    }

    @Override
    public String getLimit() {
        return Util.prefixRangeLimit(prefix);
    }

    @Override
    public String getPrefix() {
        return this.prefix;
    }
}