Potężna biblioteka ORM dla Androida inspirowana RedBeanPHP
KitsuneDB to nowoczesna biblioteka ORM dla Androida, która eliminuje boilerplate związany z bazami danych SQLite. Inspirowana filozofią RedBeanPHP, oferuje podejście "zero konfiguracji" - zacznij pisać kod, a baza danych sama dostosuje się do Twoich potrzeb.
Tryb FLUID automatycznie tworzy i modyfikuje schemat bazy. Dodajesz pole? Tabela się rozszerza.
Dynamiczne obiekty bez konieczności definiowania klas. Elastyczny kontener na dane.
One-to-many, many-to-many, parent-child bez pisania JOINów.
Mapowanie na Kotlin data class gdy potrzebujesz type-safety.
Automatyczne migracje struktury przy update aplikacji.
Reaktywne obserwowanie zmian z Kotlin Flow i LiveData.
Wyszukiwanie pełnotekstowe z wagami i podświetlaniem.
Szyfrowanie AES-256 dla wrażliwych danych.
// Inicjalizacja
KDB.setup(context, "my_database", KDB.Mode.FLUID)
// Tworzenie i zapisywanie
val user = KDB.dispense("user")
user["name"] = "Jan Kowalski"
user["email"] = "jan@example.com"
user["age"] = 30
val id = KDB.store(user) // Tabela tworzona automatycznie!
// Odczyt
val loaded = KDB.load("user", id)
val adults = KDB.find("user", "age >= ?", 18)
// QueryBuilder
val users = KDB.query("user")
.where("age >= ?", 18)
.whereLike("email", "%@gmail.com")
.orderByDesc("created_at")
.limit(10)
.find()
// Relacje
val author = KDB.dispense("author")
author["name"] = "George Orwell"
KDB.store(author)
val book = KDB.dispense("book")
book["title"] = "1984"
book.setParent(author)
KDB.store(book)
// Usuwanie
KDB.trash(user)
| Funkcja | Opis |
|---|---|
| 🔄 Dynamiczne tabele | Automatyczne tworzenie i modyfikacja schematu w trybie FLUID |
| 🫘 Beans | Dynamiczne obiekty reprezentujące rekordy |
| 📝 CRUD | store, load, trash, find, findOne |
| 🔗 Relacje | one-to-many, many-to-many, parent-child |
| 🔍 QueryBuilder | Fluent API do zaawansowanych zapytań |
| 📦 TypedBean | Mapowanie na Kotlin data class |
| 🔄 Migracje | Auto-migration + ręczne migracje danych |
| 💼 Transakcje | Wsparcie dla transakcji z rollback |
| Funkcja | Opis |
|---|---|
| ⏰ Timestamps | Automatyczne created_at i updated_at |
| 🗑️ Soft Delete | Miękkie usuwanie z przywracaniem |
| ✅ Validators | Walidacja danych przed zapisem |
| 📋 Validation Rules | Deklaratywne reguły walidacji |
| 🪝 Hooks | Callbacki lifecycle (before/after) |
| 💾 Cache | Cache'owanie z auto-invalidacją |
| 📡 Observers | Reaktywne obserwowanie z Kotlin Flow |
| 🔍 Scopes | Predefiniowane filtry |
| Funkcja | Opis |
|---|---|
| 🔎 Full-Text Search | FTS5 z wagami i fuzzy search |
| 🔍 Smart Search | Wyszukiwanie po wielu polach z rankingiem |
| 🔐 Encryption | AES-256 dla wrażliwych danych |
| 📝 JSON Fields | Złożone struktury w polach JSON |
| 📜 Audit Trail | Historia zmian z rollback |
| 🎭 Fuse (Models) | Active Record z logiką biznesową |
| 🎯 Events | Event Sourcing |
| 🧮 Computed Fields | Pola wyliczane automatycznie |
| Funkcja | Opis |
|---|---|
| 🗃️ Repository | Typowane repozytoria |
| 🏛️ DAO Pattern | Interfejsy jak w Room |
| 📱 LiveData | Android LiveData support |
| 🧹 Data Seeder | Dane testowe z Faker |
| 📊 Query Profiler | Analiza wydajności, N+1 |
| 💾 Export/Import | Backup do JSON |
| 🔒 RLS | Row-Level Security (multi-tenant) |
| 🏷️ Tagging | Uniwersalne tagowanie |
| 📎 Attachments | Pliki powiązane z rekordami |
| ⏱️ Job Queue | Zadania w tle |
| 📈 Time Series | Dane czasowe z agregacjami |
| 🌐 i18n | Wielojęzyczne pola |