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.net5.buffer.api.BufferAllocator; import it.cavallium.dbengine.database.collections.DatabaseInt; import it.cavallium.dbengine.database.collections.DatabaseLong; import java.nio.charset.StandardCharsets; import reactor.core.publisher.Mono; public interface LLKeyValueDatabase extends LLSnapshottable, LLKeyValueDatabaseStructure { Mono getSingleton(byte[] singletonListColumnName, byte[] name, byte[] defaultValue); Mono getDictionary(byte[] columnName, UpdateMode updateMode); @Deprecated default Mono getDeprecatedSet(String name, UpdateMode updateMode) { return getDictionary(Column.deprecatedSet(name).name().getBytes(StandardCharsets.US_ASCII), updateMode); } default Mono getDictionary(String name, UpdateMode updateMode) { return getDictionary(Column.dictionary(name).name().getBytes(StandardCharsets.US_ASCII), updateMode); } default Mono getInteger(String singletonListName, String name, int defaultValue) { return this .getSingleton(Column.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(Column.special(singletonListName).name().getBytes(StandardCharsets.US_ASCII), name.getBytes(StandardCharsets.US_ASCII), Longs.toByteArray(defaultValue) ) .map(DatabaseLong::new); } Mono getProperty(String propertyName); Mono verifyChecksum(); BufferAllocator getAllocator(); MeterRegistry getMeterRegistry(); Mono close(); }