Interaktiv demo av plattformens databas- och säkerhetsfunktioner
eller
MĂĄltabell: tasks
notes-tabellen — som editor: bara egna · som admin: alla · som viewer: alla (läs)
sensitive_data — som viewer/editor: maskade fält · som admin: klartext
Försök inserta som viewer → ska returnera EontraDbError med reason: 'write_not_allowed'
Logga ut och försök läsa → ska returnera 401
Senaste 20 händelser från tasks, notes och sensitive_data
const rows = await Eontra.db.list('tasks', {
where: { status: 'active' },
order: 'created_at',
dir: 'desc',
limit: 50,
offset: 0
});
// → rows: [{ id, title, ... }, ...]
const task = await Eontra.db.get('tasks', 42);
// → { id: 42, title: '...', ... } eller null
const { last_row_id } = await Eontra.db.insert('tasks', {
title: 'Ny uppgift',
status: 'todo',
priority: 3,
created_by: user.email
});
// → { last_row_id: 43 }
await Eontra.db.update('tasks',
{ id: 42 },
{ status: 'done' }
);
await Eontra.db.upsert('tasks',
{ title: 'unik-titel', status: 'done', priority: 5, created_by: user.email },
'title'
);
// Skapar om titeln saknas, annars uppdaterar
await Eontra.db.remove('tasks', { id: 42 });
const r = await Eontra.db.query(
'SELECT * FROM tasks WHERE status = ?',
['active']
);
// → [{ id, title, ... }, ...]
try {
await Eontra.db.insert('tasks', data);
} catch (e) {
// e är EontraDbError
if (e.reason === 'write_not_allowed') {
// RBAC blockerar skrivning
} else if (e.status === 401) {
// Token saknas/utgĂĄngen
} else if (e.payment_required) {
// 402 — betalning krävs
}
console.error(e.status, e.code, e.message);
}