Skip to content

DamilolaAlao/FireKV

Repository files navigation

FireKV

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.

Features

  • 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

Installation

To use FireKV in your Deno project, you can import it directly from the GitHub repository:

import { createFireKV } from "firekv";

Usage

Creating a FireKV instance

// Create db
const db = await createFireKV();

Defining a collection

interface User {
  name: string;
  age: number;
  email: string;
}

const usersCollection = db.collection<User>("users");

Adding a document (create)

const userId = await usersCollection.add({
  name: "John Doe",
  age: 30,
  email: "[email protected]",
});
console.log("Added user with ID:", userId);

Setting a document (update)

await usersCollection.set("custom-id", {
  name: "Jane Doe",
  age: 28,
  email: "[email protected]",
});

Getting a document (get one)

const user = await usersCollection.get(userId);
console.log("Retrieved user:", user);

Getting all documents (get all)

const users = await usersCollection.getAll();
console.log("Retrieved users:", users);

Deleting a document (delete)

await usersCollection.delete(userId);

Querying documents

const adults = await usersCollection.query("age", ">=", 18);
console.log("Adult users:", adults);

Closing the database

await fireKV.close();

API Reference

createFireKV(dbPath: string): Promise<FireKV>

Creates and returns a new FireKV instance.

FireKV

  • collection<T extends Document>(name: string): Collection<T> - Creates or retrieves a typed collection.
  • close(): Promise<void> - Closes the database connection.

Collection<T>

  • 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.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published