From 58cc909de88ed5efb5e25bd883a14d0c9ab63a35 Mon Sep 17 00:00:00 2001 From: MayaTheShy Date: Fri, 20 Feb 2026 02:27:44 -0500 Subject: [PATCH] feat: Add turtle state persistence functions for saving, retrieving, and deleting turtle states --- server/database.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/server/database.js b/server/database.js index 81bf6ca..ae064bc 100644 --- a/server/database.js +++ b/server/database.js @@ -666,5 +666,40 @@ export function deleteBlocksInArea(fromX, fromY, fromZ, toX, toY, toZ) { ); } +// ========== BLOCK DELETION ========== + +export function deleteBlock(x, y, z) { + const stmt = db.prepare('DELETE FROM world_blocks WHERE x = ? AND y = ? AND z = ?'); + return stmt.run(x, y, z); +} + +// ========== TURTLE STATE PERSISTENCE ========== + +export function saveTurtleState(turtleId, stateName, stateData = {}) { + const stmt = db.prepare(` + INSERT OR REPLACE INTO turtle_state (turtle_id, state_name, state_data, updated_at) + VALUES (?, ?, ?, ?) + `); + stmt.run(turtleId, stateName, JSON.stringify(stateData), Date.now()); +} + +export function getTurtleState(turtleId) { + const stmt = db.prepare('SELECT * FROM turtle_state WHERE turtle_id = ?'); + const row = stmt.get(turtleId); + if (row) { + return { + stateName: row.state_name, + stateData: JSON.parse(row.state_data), + updatedAt: row.updated_at, + }; + } + return null; +} + +export function deleteTurtleState(turtleId) { + const stmt = db.prepare('DELETE FROM turtle_state WHERE turtle_id = ?'); + return stmt.run(turtleId); +} + // Export database instance for custom queries if needed export { db };