package it.cavallium.dbengine.database; import com.google.common.primitives.Ints; import com.google.common.primitives.Longs; import io.micrometer.core.instrument.MeterRegistry; import io.netty5.buffer.api.BufferAllocator; import it.cavallium.dbengine.client.MemoryStats; import it.cavallium.dbengine.database.collections.DatabaseInt; import it.cavallium.dbengine.database.collections.DatabaseLong; import java.nio.charset.StandardCharsets; import java.util.Map.Entry; import org.jetbrains.annotations.Nullable; import org.rocksdb.TableProperties; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; public interface LLKeyValueDatabase extends LLSnapshottable, LLKeyValueDatabaseStructure { Mono getSingleton(byte[] singletonListColumnName, byte[] name, byte @Nullable[] defaultValue); Mono getDictionary(byte[] columnName, UpdateMode updateMode); @Deprecated default Mono getDeprecatedSet(String name, UpdateMode updateMode) { return getDictionary(ColumnUtils.deprecatedSet(name).name().getBytes(StandardCharsets.US_ASCII), updateMode); } default Mono getDictionary(String name, UpdateMode updateMode) { return getDictionary(ColumnUtils.dictionary(name).name().getBytes(StandardCharsets.US_ASCII), updateMode); } default Mono getSingleton(String singletonListName, String name) { return getSingleton(ColumnUtils.special(singletonListName).name().getBytes(StandardCharsets.US_ASCII), name.getBytes(StandardCharsets.US_ASCII), null ); } default Mono getInteger(String singletonListName, String name, int defaultValue) { return this .getSingleton(ColumnUtils.special(singletonListName).name().getBytes(StandardCharsets.US_ASCII), name.getBytes(StandardCharsets.US_ASCII), Ints.toByteArray(defaultValue) ) .map(DatabaseInt::new); } default Mono getLong(String singletonListName, String name, long defaultValue) { return this .getSingleton(ColumnUtils.special(singletonListName).name().getBytes(StandardCharsets.US_ASCII), name.getBytes(StandardCharsets.US_ASCII), Longs.toByteArray(defaultValue) ) .map(DatabaseLong::new); } Mono getProperty(String propertyName); Mono getMemoryStats(); Mono getRocksDBStats(); Flux getTableProperties(); Mono verifyChecksum(); Mono compact(); BufferAllocator getAllocator(); MeterRegistry getMeterRegistry(); Mono close(); }