org.restheart.mongodb.db.GetCollectionCacheKey Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of restheart-mongodb Show documentation
Show all versions of restheart-mongodb Show documentation
RESTHeart MongoDB - MongoDB plugin
/*-
* ========================LICENSE_START=================================
* restheart-mongodb
* %%
* Copyright (C) 2014 - 2024 SoftInstigate
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
* =========================LICENSE_END==================================
*/
package org.restheart.mongodb.db;
import com.mongodb.client.ClientSession;
import com.mongodb.client.MongoCollection;
import java.util.Formatter;
import java.util.Optional;
import org.bson.BsonDocument;
/**
*
* @author Andrea Di Cesare {@literal }
*/
public record GetCollectionCacheKey(
Optional session,
MongoCollection collection,
BsonDocument sort,
BsonDocument filter,
BsonDocument keys,
BsonDocument hint,
int from,
int to,
long cursorId,
boolean exhausted) {
/**
* @param key
*/
public static GetCollectionCacheKey clone(GetCollectionCacheKey key) {
return new GetCollectionCacheKey(
key.session,
key.collection,
key.filter,
key.keys,
key.hint,
key.sort,
key.from,
key.to,
key.cursorId,
key.exhausted);
}
String getCacheStatsGroup() {
try (Formatter f = new Formatter()) {
return (filter == null ? "no filter" : filter.toString())
+ " - "
+ (sort == null ? "no sort" : sort.toString())
+ " - "
+ (hint == null ? "no hint" : hint.toString())
+ " - "
+ f.format("%10d", from)
+ " - "
+ f.format("%10d", to);
}
}
@Override
public String toString() {
return String.format(
"[session=%s, collection=%s, sort=%s, filter=%s, keys=%s, hint=%s, from=%s, to=%s, cursorId=%s, exhausted=%s]",
session,
collection.getNamespace(),
sort,
filter,
keys,
hint,
from,
to,
cursorId,
exhausted);
}
}