evelodb
Version:
An awesome local database management system with nodejs. Made by Evelocore. With B-tree Operations.
161 lines (144 loc) โข 4.05 kB
JavaScript
// This is a test file for the EveloDB module.
const eveloDB = require('./evelodb.js');
let db
// Initialize DB
try {
db = new eveloDB({
extension: 'db',
noRepeat: true,
encode: 'json',
autoPrimaryKey: 'key' // auto incrementing key
// Start unencrypted to test conversion
});
} catch (err) {
console.error('Init Error:', err.message);
process.exit(1);
}
// ===== TEST FLOW =====
const testUser = { name: 'John Doe', age: 30 };
const query = { age: 30 };
const new_query = { age: 40 };
const search_query = { name: 'Joh' };
let createdId;
// Create Data
console.log('\nโ
Create Data');
try {
const res = db.create('users', testUser);
createdId = res.__id;
console.log(`Create Result:`, res);
} catch (err) {
console.error('Create Error:', err.message);
}
// Find Data
console.log('\n๐ Find Before Conversion');
try {
const res = db.find('users', query).all()
console.log(`Find Result:`, res);
} catch (err) {
console.error('Find Error:', err.message);
}
// Search Data
console.log('\n๐ Search by a piece of value');
try {
const res = db.search('users', search_query).all()
console.log(`Find Result:`, res);
} catch (err) {
console.error('Find Error:', err.message);
}
// Convert to encrypted format
console.log('\n๐ Convert to Encrypted Format');
try {
const res = db.changeConfig({
from: {},
to: {
encryption: 'aes-128-cbc',
encryptionKey: '0123456789abcdef0123456789abcdef'
}
});
console.log('Conversion Result:', res);
} catch (err) {
console.error('Conversion Error:', err.message);
}
// Initialize with new config
try {
db = new eveloDB({
directory: './evelodatabase',
extension: 'db',
noRepeat: true,
encryption: 'aes-128-cbc',
encryptionKey: '0123456789abcdef0123456789abcdef'
});
} catch (err) {
console.error('Re-init Error:', err.message);
}
// Find Data Again
console.log('\n๐ Try Reading Encrypted With New DB Config');
try {
const res = db.find('users', query).all()
console.log(`Find Result:`, res);
} catch (err) {
console.error('Find Error:', err.message);
}
// Edit Data
console.log('\n๐ Editing data');
try {
const res = db.edit('users', query, new_query);
console.log(`Editing Result:`, res);
} catch (err) {
console.error('Edit Error:', err.message);
}
// Find Data Again
console.log('\n๐ Find old object again after edit');
try {
const res = db.find('users', query).all()
console.log(`Find Result:`, res);
} catch (err) {
console.error('Find Error:', err.message);
}
// Find Data Again
console.log('\n๐ Find new object again after edit');
try {
const res = db.find('users', new_query).all()
console.log(`Find Result:`, res);
} catch (err) {
console.error('Find Error:', err.message);
}
// Convert config back to plain JSON
console.log('\n๐ Convert Back to Plain JSON');
try {
const res = db.changeConfig({
from: {
encryption: 'aes-128-cbc',
encryptionKey: '0123456789abcdef0123456789abcdef'
},
to: {}
});
console.log('Conversion Result:', res);
} catch (err) {
console.error('Conversion Error:', err.message);
}
// Initialize with new config
try {
db = new eveloDB({
extension: 'db',
noRepeat: true
});
} catch (err) {
console.error('Re-init Error:', err.message);
}
// Delete Data
console.log('\n๐งน Clean Up');
try {
const res = db.delete('users', new_query);
console.log(`Delete Result:`, res);
} catch (err) {
console.error('Delete Error:', err.message);
}
// Reset collection
console.log('\n๐งน Drop Collection')
try {
const res = db.drop('users');
console.log(`Drop Result:`, res);
} catch (err) {
console.error('Drop Error:', err.message);
}