FireKV is a lightweight, type-safe document database abstraction layer for Deno's Key-Value (KV) store. It provides a Firebase-like API for easy data management with TypeScript support.
- Simple and intuitive API similar to Firebase Firestore
- Type-safe collections and queries
- Built on top of Deno's native KV store for performance and reliability
- Supports basic CRUD operations and querying
- Lightweight with no external dependencies
To use FireKV in your Deno project, you can import it directly from the GitHub repository:
import { createFireKV } from "firekv";
// Create db
const db = await createFireKV();
interface User {
name: string;
age: number;
email: string;
}
const usersCollection = db.collection<User>("users");
const userId = await usersCollection.add({
name: "John Doe",
age: 30,
email: "[email protected]",
});
console.log("Added user with ID:", userId);
await usersCollection.set("custom-id", {
name: "Jane Doe",
age: 28,
email: "[email protected]",
});
const user = await usersCollection.get(userId);
console.log("Retrieved user:", user);
const users = await usersCollection.getAll();
console.log("Retrieved users:", users);
await usersCollection.delete(userId);
const adults = await usersCollection.query("age", ">=", 18);
console.log("Adult users:", adults);
await fireKV.close();
Creates and returns a new FireKV instance.
collection<T extends Document>(name: string): Collection<T>
- Creates or retrieves a typed collection.close(): Promise<void>
- Closes the database connection.
add(data: T): Promise<string>
- Adds a new document and returns its ID.set(id: string, data: T): Promise<void>
- Sets a document with the specified ID.get(id: string): Promise<T | null>
- Retrieves a document by ID.getAll(): Promise<T[]>
- Retrieves all documents.delete(id: string): Promise<void>
- Deletes a document by ID.query(field: keyof T, operator: string, value: any): Promise<T[]>
- Queries documents based on field, operator, and value.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.