Beta documentation. This is an early preview — content is still in active development. Feedback helps shape the final release. Share your thoughts or join the discussion.

Dataset Overview

Dataset is Wapka's built-in NoSQL document database. Think MongoDB or Firebase — zero configuration, schemaless, and fully managed. Collections auto-create o...

On this page

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.

Next Access Control