This commit is contained in:
2026-01-26 10:21:03 +01:00
parent fe2f087d9f
commit fbc1a6e294
40 changed files with 3478 additions and 547 deletions
+37
View File
@@ -0,0 +1,37 @@
// retoor <retoor@molodetz.nl>
import "dataset" for Dataset
var ds = Dataset.memory()
var products = ds["products"]
for (i in 1..50) {
products.insert({
"name": "Product %(i)",
"price": i * 10,
"category": i % 3 == 0 ? "A" : (i % 3 == 1 ? "B" : "C"),
"active": i % 2 == 0
})
}
System.print(products.count()) // expect: 50
var expensive = products.find({"price__gte": 400})
System.print(expensive.count) // expect: 11
var categoryA = products.find({"category": "A"})
System.print(categoryA.count) // expect: 16
var combined = products.find({"price__gte": 200, "price__lte": 300, "category": "B"})
System.print(combined.count) // expect: 3
var inList = products.find({"name__in": ["Product 1", "Product 10", "Product 50"]})
System.print(inList.count) // expect: 3
var like = products.find({"name__like": "Product 1\%"})
System.print(like.count) // expect: 11
var notEqual = products.find({"category__ne": "A", "active": true})
System.print(notEqual.count) // expect: 17
ds.close()
+25
View File
@@ -0,0 +1,25 @@
// retoor <retoor@molodetz.nl>
import "dataset" for Dataset
var ds = Dataset.memory()
var fiber = Fiber.new {
var table = ds["users; DROP TABLE users; --"]
}
fiber.try()
System.print(fiber.error != null) // expect: true
var users = ds["users"]
users.insert({"name": "Alice"})
var fiber2 = Fiber.new {
users.insert({"field; DROP TABLE": "value"})
}
fiber2.try()
System.print(fiber2.error != null) // expect: true
var all = users.all()
System.print(all.count) // expect: 1
ds.close()
+23
View File
@@ -0,0 +1,23 @@
// retoor <retoor@molodetz.nl>
import "dataset" for Dataset
import "tempfile" for TempFile
import "io" for File
var path = TempFile.mkstemp(".db")
var ds = Dataset.open(path)
var users = ds["users"]
users.insert({"name": "Alice"})
var result = users.find({"nonexistent": "value"})
System.print(result.count) // expect: 0
var one = users.findOne({"missing_col": "test"})
System.print(one == null) // expect: true
var all = users.all()
System.print(all.count) // expect: 1
ds.close()
File.delete(path)
+29
View File
@@ -0,0 +1,29 @@
// retoor <retoor@molodetz.nl>
import "dataset" for Dataset
var ds = Dataset.memory()
var users = ds["users"]
var u1 = users.insert({"name": "Alice"})
System.print(users.columns.containsKey("name")) // expect: true
System.print(users.columns.containsKey("email")) // expect: false
var u2 = users.insert({"name": "Bob", "email": "bob@example.com"})
System.print(users.columns.containsKey("email")) // expect: true
var u3 = users.insert({"name": "Charlie", "age": 30, "score": 95.5})
System.print(users.columns.containsKey("age")) // expect: true
System.print(users.columns.containsKey("score")) // expect: true
var alice = users.findOne({"name": "Alice"})
System.print(alice["email"] == null) // expect: true
users.update({"uid": u1["uid"], "email": "alice@example.com", "verified": true})
var aliceUpdated = users.findOne({"name": "Alice"})
System.print(aliceUpdated["email"]) // expect: alice@example.com
System.print(users.columns.containsKey("verified")) // expect: true
System.print(users.count()) // expect: 3
ds.close()
+20
View File
@@ -0,0 +1,20 @@
// retoor <retoor@molodetz.nl>
import "dataset" for Dataset
var ds = Dataset.memory()
var users = ds["users"]
users.insert({"name": "Alice", "score": 100})
users.insert({"name": "Bob'; DROP TABLE users; --", "score": 50})
var all = users.all()
System.print(all.count) // expect: 2
var found = users.findOne({"name": "Bob'; DROP TABLE users; --"})
System.print(found["score"]) // expect: 50
var afterAttack = users.all()
System.print(afterAttack.count) // expect: 2
ds.close()