sqlitekv
Version:
SQLiteKV is a key-value store built on top of SQLite3. This project allows you to perform basic key-value operations with the additional power of SQLite3, making it suitable for applications requiring persistent, lightweight, and reliable storage.
67 lines (66 loc) • 2.12 kB
TypeScript
export interface OperationResult {
success: boolean;
message?: string;
}
export interface GetResult extends OperationResult {
value: ValueType | null;
}
export interface KeysResult extends OperationResult {
keys: string[];
}
export interface ConvertToJsonResult extends OperationResult {
jsonString?: string;
filePath?: string;
}
export interface CloseResult extends OperationResult {
exportedData?: Uint8Array;
}
export interface ISQLiteDatabase {
init(): Promise<void>;
set(key: string, value: ValueType, oneTime?: boolean): Promise<boolean>;
setex(key: string, seconds: number, value: ValueType, oneTime?: boolean): Promise<boolean>;
get(key: string): Promise<ValueType | null>;
delete(key: string): Promise<boolean>;
exists(key: string): Promise<boolean>;
keys(): Promise<string[]>;
convertToJson(jsonFilePath?: string): Promise<boolean>;
close(): Promise<Uint8Array>;
beginTransaction(): Promise<void>;
commitTransaction(): Promise<void>;
}
export interface IKVStore extends ISQLiteDatabase {
getAll(): Promise<{
[key: string]: ValueType;
}>;
clear(): Promise<boolean>;
size(): Promise<number>;
increment(key: string, amount?: number): Promise<number | null>;
mget(...keys: string[]): Promise<(ValueType | null)[]>;
}
export interface DatabaseConfig {
dbFilename?: string;
tableName?: string;
autoCommit?: boolean;
journalMode?: JournalMode;
sqliteMode?: SQLiteMode;
enableLoopOperations?: boolean;
logQueries?: boolean;
}
export interface DatabaseInfo {
databasePath: string;
databaseName: string;
tableName: string;
numberOfKeys: number;
sizeInBytes: number;
sizeInMB: string;
journalMode: string;
lastModified: Date;
}
export interface Row {
key: string;
value: string;
}
export type JournalMode = "DELETE" | "TRUNCATE" | "PERSIST" | "MEMORY" | "WAL" | "OFF";
export type SQLiteMode = "disk" | "memory" | "temp";
export type ValueType = string | number | boolean | object | any[];
export type JsonUpdateFunction = (value: object) => object;