What is Dataset?
Dataset is Wapka's built-in NoSQL document database. Think MongoDB or Firebase — zero configuration, schemaless, and fully managed. Collections auto-create on first insert.
Access from Lua
-- Create a document (collection "posts" auto-created)
api.dataset.create("posts", {
title = "Hello World",
content = "My first post.",
status = "published"
})
-- Find documents
local result = api.dataset.find("posts", {
filter = { status = "published" }
})
CRUD in one place
-- Create
api.dataset.create("products", { name = "Widget", price = 9.99 })
-- Read
local result = api.dataset.find("products")
local product = api.dataset.get(42)
-- Update (merge)
api.dataset.update(42, { data = { price = 14.99 } })
-- Update (full replace)
api.dataset.update(42, { data = { name = "New", price = 19.99 } }, true)
-- Soft delete
api.dataset.delete(42)
-- Hard delete
api.dataset.delete(42, true)
-- Restore
api.dataset.restore(42)
Querying with filters
-- Exact match
api.dataset.find("posts", { filter = { status = "published" } })
-- Greater than
api.dataset.find("products", { filter = { price = { gt = 100 } } })
-- Range
api.dataset.find("products", {
filter = { price = { gte = 10, lte = 100 }, stock = { gt = 0 } }
})
-- Search by pattern
api.dataset.find("users", {
filter = { name = { like = "%john%" } }
})
-- Paginated + sorted
api.dataset.find("posts", {
filter = { status = "published" },
order = "id_desc",
page = 1,
limit = 20
})
Why Dataset over a traditional DB?
- Zero setup — no schema, no migrations, no connection strings
- Instant — collections exist the moment you insert
- Schemaless — each document can have different fields
- Built-in — no external services, no API keys to manage
- Shared with REST API — data inserted from Lua is accessible via REST and vice versa
Next: Advanced Querying — all operators, compound filters, and OR logic.