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
JavaScript
;
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;