1.0.0 • Published 4 months ago

@vishwaraviraaj/galaxydb v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
4 months ago

GalaxyDB

GalaxyDB is a lightweight, file-based database system using CSV files for storage. It provides basic CRUD operations along with advanced query features like joins, aggregations, and sorting, making it ideal for small-scale applications that require structured data management without a dedicated database server.

Features

  • šŸ“‚ Stores data in CSV format for simplicity and easy readability.
  • āœ… Supports schema-based data validation.
  • šŸ”„ Implements various types of joins: inner, left, right, full, and natural joins.
  • šŸ” Provides sorting, filtering, and aggregation functions.
  • ⚔ Maintains a structured index for efficient lookups.
  • šŸ“œ Logs all operations for debugging and tracking purposes.

Installation

npm install galaxydb

Directory Structure

project-root/
ā”œā”€ā”€ database/   # šŸ“‚ Stores all CSV data files
ā”œā”€ā”€ schema/     # šŸ“œ Stores all schema definitions
ā”œā”€ā”€ logs/       # šŸ“ Stores logs of operations
└── index.js    #    Driver Code

Usage

Importing GalaxyDB

const { GalaxyUtility } = require('galaxydb');
const { GalaxyDB } = require('galaxydb');

GalaxyUtility Methods

šŸ”¹ readTable(tableName)

Reads the given table and returns its headers and records.

const utility = new GalaxyUtility();
const data = utility.readTable('users');
console.log(data);

šŸ”¹ innerJoin(table1, table2, key1, key2)

Performs an inner join between two tables.

const result = utility.innerJoin('users', 'orders', 'user_id', 'user_id');

šŸ”¹ leftJoin(table1, table2, key1, key2)

Performs a left join between two tables.

const result = utility.leftJoin('users', 'orders', 'user_id', 'user_id');

šŸ”¹ rightJoin(table1, table2, key1, key2)

Performs a right join (alias for left join with reversed parameters).

const result = utility.rightJoin('users', 'orders', 'user_id', 'user_id');

šŸ”¹ fullJoin(table1, table2, key1, key2)

Performs a full join between two tables.

const result = utility.fullJoin('users', 'orders', 'user_id', 'user_id');

šŸ”¹ naturalJoin(table1, table2)

Performs a natural join between two tables based on common column names.

const result = utility.naturalJoin('users', 'orders');

šŸ”¹ rangeQuery(tableName, column, minValue, maxValue)

Filters records where column falls within the specified range.

const result = utility.rangeQuery('orders', 'amount', 100, 500);

šŸ”¹ sortBy(tableName, column, order)

Sorts records in ascending (asc) or descending (desc) order.

const result = utility.sortBy('users', 'age', 'desc');

šŸ”¹ groupBy(tableName, column)

Groups records by a specified column.

const result = utility.groupBy('orders', 'status');

šŸ”¹ count(tableName, column, value)

Counts the number of records where column matches value.

const result = utility.count('users', 'role', 'admin');

šŸ”¹ sum(tableName, column)

Calculates the sum of a numeric column.

const result = utility.sum('orders', 'amount');

šŸ”¹ avg(tableName, column)

Calculates the average value of a numeric column.

const result = utility.avg('orders', 'amount');

šŸ”¹ max(tableName, column)

Finds the maximum value in a column.

const result = utility.max('orders', 'amount');

šŸ”¹ min(tableName, column)

Finds the minimum value in a column.

const result = utility.min('orders', 'amount');

šŸ”¹ firstNRecords(tableName, N)

Returns the first N records from a table.

const result = utility.firstNRecords('users', 5);

šŸ”¹ countUnique(tableName, column)

Counts unique occurrences of values in a column.

const result = utility.countUnique('users', 'city');

šŸ”¹ exists(tableName, conditionFn)

Checks if records satisfying a condition exist.

const result = utility.exists('users', row => row.age > 30);

GalaxyDB Methods

šŸ”¹ new GalaxyDB(entity)

Creates a new instance of GalaxyDB for a specific entity.

const userDB = new GalaxyDB('users');

šŸ”¹ create(obj)

Inserts a new record.

userDB.create({ _id: '1', name: 'ABC DE', age: 30 });

šŸ”¹ readAll()

Reads all records from the table.

const users = userDB.readAll();

šŸ”¹ update(id, updatedData)

Updates a record by _id.

userDB.update('1', { age: 31 });

šŸ”¹ delete(id)

Deletes a record by _id.

userDB.delete('1');

šŸ”¹ queryWithForeignKey(primaryRepo, foreignRepo, foreignKey)

Performs a join between two repositories.

const ordersDB = new GalaxyDB('orders');
const result = GalaxyDB.queryWithForeignKey(userDB, ordersDB, 'user_id');
1.0.0

4 months ago