import "sqlite" for Database import "io" for File foreign class Host { foreign static signalDone() } var mainFiber = Fiber.new { var db = Database.new() var dbPath = "test.db" var isDone = false if (File.exists(dbPath)) File.delete(dbPath) System.print("--- Starting SQLite CRUD Example ---") db.open(dbPath) { |err| if (err) { System.print("Error opening database: %(err)") isDone = true return } System.print("Database opened successfully at '%(dbPath)'.") var createSql = "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT);" db.exec(createSql) { |err| if (err) { System.print("Error creating table: %(err)") isDone = true return } System.print("Table 'users' created.") // Insert and read 1000 times var insertCount = 0 var doInsertAndRead doInsertAndRead = Fn.new { if (insertCount >= 100000) { // Finished, close db db.close() { |err| if (err) { System.print("Error closing database: %(err)") } else { System.print("\nDatabase closed successfully.") } System.print("\n--- SQLite CRUD Example Finished ---") isDone = true } return } var name = "User_%(insertCount)" var email = "user%(insertCount)@example.com" var insertSql = "INSERT INTO users (name, email) VALUES ('%(name)', '%(email)');" db.exec(insertSql) { |err| if (err) { System.print("Error inserting user %(name): %(err)") isDone = true return } db.query("SELECT * FROM users WHERE name = '%(name)';") { |err, rows| if (err) { System.print("Error querying user %(name): %(err)") isDone = true return } for (row in rows) { System.print("Inserted and read: ID: %(row["id"]), Name: %(row["name"]), Email: %(row["email"])") } insertCount = insertCount + 1 doInsertAndRead.call() } } } doInsertAndRead.call() } } while (!isDone) Fiber.yield() Host.signalDone() }