@salarizadi/vertex-db
v1.0.0
Published
A lightweight, powerful in-memory database for JavaScript/TypeScript applications with support for multiple data structures, relationships, transactions, and schema validation. Perfect for both browser and Node.js environments.
Maintainers
Readme
VertexDB 💾
A lightweight, powerful in-memory database for JavaScript/TypeScript applications with support for multiple data structures, relationships, transactions, and schema validation. Perfect for both browser and Node.js environments.
Features ✨
- 🏃♂️ Lightweight and blazing fast in-memory operations
- 📊 Table-based data structure with relationships
- 🔒 Schema validation and type checking
- 🕒 Automatic timestamps
- 🗑️ Soft delete capability
- 📝 Transaction support with rollback
- 🔍 Advanced querying with multiple conditions
- 📈 Indexing for faster searches
- 🔄 Import/Export JSON functionality
- 📱 Browser and Node.js compatibility
- 🧮 Aggregation functions (count, avg, sum, min, max)
- 📄 Pagination support
- 🎯 Custom raw queries
Installation 📦
NPM
npm install @salarizadi/vertex-dbYarn
yarn add @salarizadi/vertex-dbBrowser
<script src="https://unpkg.com/@salarizadi/vertex-db"></script>Quick Start 🚀
// Initialize VertexDB
const db = new VertexDB({
logging: true,
timestamps: true,
softDelete: true
});
// Create a table with schema
const userSchema = {
id: { type: 'number', required: true },
name: { type: 'string', required: true },
email: { type: 'string', required: true, pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/ },
age: { type: 'number', min: 18, max: 100 }
};
// Insert data
db.insert('users', {
id: VertexDB.AUTO_INCREMENT,
name: 'John Doe',
email: '[email protected]',
age: 20
});
// Query data
const users = db.where('name', 'John Doe').get('users');Advanced Usage 🔥
Relationships
// Define relationships between tables
db.setRelation('posts', 'users', 'hasOne', 'user_id');
// Join tables
const postsWithUsers = db.join('posts', 'users', 'user_id', 'id');Transactions
db.transaction((tx) => {
tx.insert('users', { /* user data */ });
tx.insert('posts', { /* post data */ });
// Will rollback if any operation fails
});Schema Validation
const schema = {
title: { type: 'string', required: true },
views: { type: 'number', min: 0 },
status: { type: 'string', pattern: /^(draft|published)$/ }
};
db.createTable('posts', schema);Advanced Queries
db.whereOperator('age', '>', 18)
.whereLike('name', '%John%')
.whereIn('status', ['active', 'pending'])
.orderBy('created_at', 'DESC')
.limit(10)
.get('users');Pagination
const result = db.paginate('users', 1, 10);
console.log(result.data); // Current page data
console.log(result.pagination); // Pagination infoAPI Reference 📚
Core Methods
createTable(tableName, schema?)- Create a new tablesetTable(tableName, data, schema?)- Set table data with optional schemainsert(tableName, data)- Insert a single recordupdate(tableName, data)- Update records matching conditionsdelete(tableName)- Delete records matching conditionsget(tableName)- Get all matching recordsgetOne(tableName)- Get first matching record
Query Methods
where(field, value, operator)- Add WHERE conditionwhereOperator(field, operator, value)- Add WHERE condition with operatorwhereLike(field, pattern)- Add LIKE conditionwhereIn(field, values)- Add WHERE IN conditionorderBy(column, direction)- Sort resultslimit(limit, offset)- Limit resultspaginate(tableName, page, perPage)- Get paginated results
Utilities
backup()- Create database backuprestore(backup)- Restore from backuptoJSON(tableName)- Export table to JSONfromJSON(tableName, jsonData)- Import from JSONgetStats()- Get database statisticstruncate(tableName)- Clear table data
License 📄
MIT © Salar Izadi
Contributing 🤝
Contributions, issues, and feature requests are welcome! Feel free to check issues page.
Support 🌟
Give a ⭐️ if this project helped you!
Made with ❤️ by Salar Izadi
