Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pageton/sqlitekv
SQLiteKV is a lightweight key-value store built on top of SQLite3, offering basic key-value operations with support for expiry times, JSON export, and flexible storage options including in-memory, temporary, and disk-based storage. Ideal for applications requiring persistent and reliable storage.
https://github.com/pageton/sqlitekv
database javascript key-value-database key-value-store npm pnpm sql sqlite sqlite3 sqlitekv typescript
Last synced: about 1 month ago
JSON representation
SQLiteKV is a lightweight key-value store built on top of SQLite3, offering basic key-value operations with support for expiry times, JSON export, and flexible storage options including in-memory, temporary, and disk-based storage. Ideal for applications requiring persistent and reliable storage.
- Host: GitHub
- URL: https://github.com/pageton/sqlitekv
- Owner: pageton
- License: mit
- Created: 2024-08-01T14:43:02.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-08-05T04:35:08.000Z (5 months ago)
- Last Synced: 2024-11-06T18:17:19.958Z (about 2 months ago)
- Topics: database, javascript, key-value-database, key-value-store, npm, pnpm, sql, sqlite, sqlite3, sqlitekv, typescript
- Language: TypeScript
- Homepage:
- Size: 83 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SQLiteKV
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.
## Features
- Basic key-value operations: set, get, delete, exists, keys
- Support for expiry times on keys
- JSON export of the database
- Loop operations for repetitive tasks
- Transaction management
- Flexible journal modes (WAL, DELETE, etc.)
- In-memory, temporary, and disk-based storage options
- Logger mode to track executed SQL queries## Installation
You can install the package by running the following command with `npm`:
```sh
npm install sqlitekv
```Or with `pnpm`:
```sh
pnpm install sqlitekv
```## Usage
### Basic Setup
Here is an example of how to set up and use the SQLiteKV store:
```typescript
import SQLiteKV from "sqlitekv";(async () => {
try {
// Initialize the database with configuration
const db = new SQLiteKV("example.sqlite", {
tableName: "example_table",
autoCommit: true,
journalMode: "WAL",
enableLoopOperations: true,
logQueries: true
});// Perform some operations
await db.set("key1", "value1");
const value = await db.get("key1");
console.log(`Retrieved value for key1: ${value}`);// Check if a key exists
const exists = await db.exists("key1");
console.log(`Key1 exists: ${exists}`);// Delete a key
await db.delete("key1");
console.log(`Key1 deleted`);// Export the database to JSON
await db.convertToJson("export.json");
console.log("Database exported to export.json");
} catch (error) {
console.error("Error initializing database:", error);
}
})();
```You can also initialize the database without passing the configuration object:
```typescript
import SQLiteKV from "sqlitekv";(async () => {
try {
// Initialize the database with default settings
const db = new SQLiteKV("example.sqlite");// Perform some operations
await db.set("key1", "value1");
const value = await db.get("key1");
console.log(`Retrieved value for key1: ${value}`);// Check if a key exists
const exists = await db.exists("key1");
console.log(`Key1 exists: ${exists}`);// Delete a key
await db.delete("key1");
console.log(`Key1 deleted`);// Export the database to JSON
await db.convertToJson("export.json");
console.log("Database exported to export.json");
} catch (error) {
console.error("Error initializing database:", error);
}
})();
```### Loop Operations
If you need to perform a set of operations repeatedly, you can use the loop operations feature:
```typescript
const operations = async () => {
const timestamp = new Date().toISOString();
await db.set(`test_key_${timestamp}`, `test_value_${timestamp}`);
console.log(
`Set key: test_key_${timestamp} with value: test_value_${timestamp}`
);
};const iterations = 10;
await db.performLoopOperations(operations, iterations);
```## Configuration Options
You can customize the behavior of SQLiteKV using the following configuration options:
- `tableName`: The name of the table used for storing key-value pairs.
- `autoCommit`: Whether to automatically commit transactions.
- `journalMode`: The journal mode for SQLite (e.g., WAL, DELETE).
- `sqliteMode`: The storage mode for SQLite (disk, memory, temp).
- `logQueries`: Whether to log executed SQL queries.
- `enableLoopOperations`: Whether to enable loop operations.## Viewing the SQLite Database
You can view and interact with the SQLite database using an online viewer such as [SQLite Viewer](https://sqlite3.online/).
## Similar Projects
There is a similar project in Python, which you can check out here: [Kvsqlite](https://github.com/AYMENJD/Kvsqlite).
## License
This project is licensed under the MIT License.