UNPKG

openraas

Version:

Open Robot-as-a-Service Protocol - A comprehensive TypeScript library for building and consuming RaaS applications with X402 payment support on Solana

61 lines (60 loc) 2.19 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SQLiteRegistry = void 0; const sqlite3_1 = __importDefault(require("sqlite3")); class SQLiteRegistry { constructor(dbPath = ':memory:') { this.db = new sqlite3_1.default.Database(dbPath); this.init(); } init() { this.db.run(` CREATE TABLE IF NOT EXISTS robots ( id TEXT PRIMARY KEY, data TEXT ) `); } async register(robot) { return new Promise((resolve, reject) => { this.db.run('INSERT OR REPLACE INTO robots (id, data) VALUES (?, ?)', [robot.id, JSON.stringify(robot)], (err) => (err ? reject(err) : resolve())); }); } async unregister(robotId) { return new Promise((resolve, reject) => { this.db.run('DELETE FROM robots WHERE id = ?', [robotId], (err) => (err ? reject(err) : resolve())); }); } async find(criteria) { return new Promise((resolve, reject) => { this.db.all('SELECT data FROM robots', (err, rows) => { if (err) return reject(err); const robots = rows.map((row) => JSON.parse(row.data)); // Simple in-memory filtering for now as SQLite JSON queries are complex const filtered = robots.filter((robot) => { for (const key in criteria) { if (robot[key] !== criteria[key]) { return false; } } return true; }); resolve(filtered); }); }); } async get(robotId) { return new Promise((resolve, reject) => { this.db.get('SELECT data FROM robots WHERE id = ?', [robotId], (err, row) => { if (err) return reject(err); resolve(row ? JSON.parse(row.data) : null); }); }); } } exports.SQLiteRegistry = SQLiteRegistry;