A Firestore-like wrapper for SQL databases.
Project description
FireWrap
FireWrap is a Python library that provides a Firebase Firestore-like interface for SQLite databases. It allows you to perform CRUD operations on collections and documents, making it easier to work with SQLite in a way that resembles Firebase Firestore.
Features
- Encode and decode column names for SQLite compatibility.
- Migrate data from Firebase to SQLite.
- Perform CRUD operations on collections and documents.
- Support for JSON data storage and retrieval.
Installation
To install FireWrap, install the module:
pip install FireWrap
Usage
Initialize FireWrap
To use FireWrap, you need to create an instance of the FireWrap class, specifying the database path:
from firewrap import FireWrap
db = FireWrap('path/to/your/database.db')
Working with Collections
You can get a reference to a collection and perform operations like adding documents, retrieving documents, and counting documents.
Add a Document
data = {"name": "John Doe", "age": 30}
doc = db.collection("users").addDoc(data)
Get All Documents
docs = db.collection("users").getDocs()
Get a Document by ID
doc = db.collection("users").doc("document_id").getDoc()
Update a Document
update_data = {"age": 31}
db.collection("users").doc("document_id").updateDoc(update_data)
Delete a Document
db.collection("users").doc("document_id").deleteDoc()
API Endpoints
FireWrap also provides a Flask-based API for interacting with the database over HTTP.
- GET /collections/: Retrieve all documents in a collection.
- POST /collections/: Add a new document to a collection.
- GET /collections//<doc_id>: Retrieve a specific document by ID.
- POST /collections//<doc_id>: Create a new document with a specific ID.
- PATCH /collections//<doc_id>: Update a specific document.
- DELETE /collections//<doc_id>: Delete a specific document.
- GET /collections//count: Get the total number of documents in a collection.
Migration from Firebase
To migrate data from Firebase to FireWrap, use the migrate_firebase_to_local_sql function:
from port import migrate_firebase_to_local_sql
migrate_firebase_to_local_sql('path/to/firebase/credentials.json', 'firesql.db')
License
This project is licensed under the MIT License. See the LICENSE file for more details.
Contributing
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
Changelog
[0.1.6.3] - 2025-03-04
Added
- Fixed array not initalizing on first doc POST or PATCH
[0.1.6.2] - 2025-03-03
Added
- Added array method to append or delete an entry from an array field
[0.1.6] - 2025-03-03
Added
- Added
order,limit,offset,sortByparameters togetDocsmethod. - Added
searchparameter togetDocsmethod. (You can search for multiple keywords by separating them with a comma) - Pagination added & sorting added while fetching docs
[0.1.5] - 2025-02-24
Added
- Created endpoints for managing collections:
/collectionGET: Retrieve collections./collectionPOST: Create a new collection.
[0.1.4] - 2025-02-17
Fixed
- Fixed issue with
updateDocnot preserving other fields. - Improved JSON encoding/decoding for nested objects.
- Enhanced performance of database queries.
[0.1.3] - 2025-02-16
Created
- Initally released on pypi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file firewrap-0.1.6.3.tar.gz.
File metadata
- Download URL: firewrap-0.1.6.3.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe224db525b35e85c684cb0ce5cb28c0b21009b889454e722571347dd9f69e60
|
|
| MD5 |
b7275d67c67844bcf2636d8566980ca1
|
|
| BLAKE2b-256 |
bc453d64e9337ec45343fce0a87c3ec1c1926cf7b15f05adfaaa0263a027a809
|
File details
Details for the file FireWrap-0.1.6.3-py3-none-any.whl.
File metadata
- Download URL: FireWrap-0.1.6.3-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80777c148ac25e1329f9ff60d1439508c12d17c8c8241ef42c8bebbb90b2b0d6
|
|
| MD5 |
a53fe408e424b6db8c5e76f0aed284f4
|
|
| BLAKE2b-256 |
74909c137ceacd5d319522aeab1800f2ca7f02d0d7cb67018c99b0b8b0ab0c17
|