https://github.com/darkmortal/kaizer-db
A lightweight and minimal csv database package with SQL-like syntax
https://github.com/darkmortal/kaizer-db
csv database nodejs
Last synced: 11 months ago
JSON representation
A lightweight and minimal csv database package with SQL-like syntax
- Host: GitHub
- URL: https://github.com/darkmortal/kaizer-db
- Owner: DarkMortal
- License: mit
- Created: 2024-05-10T11:16:11.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-01-26T15:03:59.000Z (about 1 year ago)
- Last Synced: 2025-03-28T20:47:38.558Z (12 months ago)
- Topics: csv, database, nodejs
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/kaizer-db
- Size: 155 KB
- Stars: 11
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
📊 Welcome to Kaizer-DB 📊


---
🚀 Features 🚀
- SQL-like Syntax: Easily write `SELECT`, `INSERT`, `UPDATE`, and `DELETE` queries.
- CSV Integration: Directly interact with CSV files as lightweight databases.
- CRUD Support: Perform essential Create, Read, Update, and Delete operations.
- Minimal Overhead: Ideal for prototyping and small-scale projects.
---
⚠️ Limitations ⚠️
- No type checking.
- Supports only one query execution at a time.
- Does not handle data with spaces.
---
🔧 Tech Stack 🔧
---
🎓 Installation & Setup 🎓
### 1. Clone the Repository
```bash
git clone https://github.com/DarkMortal/Kaizer-DB.git
cd Kaizer-DB
```
### 2. Install dependencies
```bash
yarn install # or npm install
```
### 3. Start the CLI
```bash
yarn start # or npm start
```
### 4. Global Installation
Install the package globally using npm:
```bash
npm install -g kaizer-db
```
Run the CLI from anywhere:
```bash
kaizer-db
```
---
💡 How It Works 💡
### Example Queries
#### **Creating and Using a Database**
```
Use Database mydb;
Create Database mydb;
```
Creates a folder named `mydb` where tables are stored as `.csv` files.
#### **Creating a Table**
```
Create Table Warriors (Name, Attack, Defense, PowerLevel);
```
Creates a file named `Warriors.csv` with the given headers.
#### **Show Tables**
```
Show Tables;
```
```
Output:
+-------------+
| Tables |
+-------------+
| test_data |
| Warriors |
+-------------+
Total number of Tables: 2
```
Shows list of available csv files in the current directory which is used as the database.
#### **Inserting Data**
```
Insert into Warriors (Name, Attack, Defense, PowerLevel) values (Goku, 5000, 7000, 9001), (Vegeta, 5000, 7000, 9000);
```
Appends records to `Warriors.csv`.
#### **Fetching Data**
```
Select * from Warriors;
```
```
Output:
+--------+--------+---------+------------+
| Name | Attack | Defense | PowerLevel |
+--------+--------+---------+------------+
| Goku | 5000 | 8000 | 9001 |
| Vegeta | 5000 | 7000 | 9000 |
+--------+--------+---------+------------+
2 rows returned
```
#### **Using WHERE Clauses**
```
Select Name from Warriors Where PowerLevel > 9000;
```
```
Output:
+--------+
| Name |
+--------+
| Goku |
+--------+
1 rows returned
```
#### **Updating Data**
```
Update Table Warriors set PowerLevel = 10000, Defense = 8000 Where Name = Goku;
Select * from Warriors;
```
```
Output:
+--------+--------+---------+------------+
| Name | Attack | Defense | PowerLevel |
+--------+--------+---------+------------+
| Goku | 5000 | 8000 | 10000 |
| Vegeta | 5000 | 7000 | 9000 |
+--------+--------+---------+------------+
2 rows returned
```
#### **Deleting Data**
```
Delete From Warriors Where PowerLevel < 10000;
Select * from Warriors;
```
```
Output:
+--------+--------+---------+------------+
| Name | Attack | Defense | PowerLevel |
+--------+--------+---------+------------+
| Goku | 5000 | 7000 | 10000 |
+--------+--------+---------+------------+
1 rows returned
```
---
## Order by clause
The default ordering is ascending order (`asc`,`Asc`,`ASC`)
The descending order can be used as (`desc`,`Desc`,`DESC`)
### Examples
```
Select * from test_data order by Defense;
```
```
Output:
+--------------------+---------+---------+-------------+
| Name | Attack | Defense | PowerLevel |
+--------------------+---------+---------+-------------+
| Karin_Uzumaki | 100 | 92 | 510 |
| Jayden_Uchiha | 200 | 120 | 5000 |
| Rykon_Hayashi | 400 | 310 | 8100 |
| Arkon_Hayashi | 420 | 330 | 8000 |
| Kakarot_Uchiha | 500 | 340 | 9001 |
| Drago_Uzumaki | 460 | 350 | 8010 |
+--------------------+---------+---------+-------------+
6 rows returned
```
```
Select * from test_data where Attack > 200 order by Defense desc;
```
```
Output:
+--------------------+---------+---------+-------------+
| Name | Attack | Defense | PowerLevel |
+--------------------+---------+---------+-------------+
| Drago_Uzumaki | 460 | 350 | 8010 |
| Kakarot_Uchiha | 500 | 340 | 9001 |
| Arkon_Hayashi | 420 | 330 | 8000 |
| Rykon_Hayashi | 400 | 310 | 8100 |
+--------------------+---------+---------+-------------+
4 rows returned
```
```
Select Name, PowerLevel, Defense from test_data where Attack > 200 Order by Defense;
```
```
Output:
+--------------------+-------------+---------+
| Name | PowerLevel | Defense |
+--------------------+-------------+---------+
| Rykon_Hayashi | 8100 | 310 |
| Arkon_Hayashi | 8000 | 330 |
| Kakarot_Uchiha | 9001 | 340 |
| Drago_Uzumaki | 8010 | 350 |
+--------------------+-------------+---------+
4 rows returned
```
---
## Error Handling
Kaizer-DB provides meaningful error messages to guide users.
#### Example
```
Select Name, PowerLevel from Warriors Where Attack > 200 Order by Defense;
```
```
Output:
Error: Order by field needs to be included in fetch list
```
---
👥 Contributors 👥

DarkMortal

dpgaharwal

adwityac

aprajitapandeyxcghd

GauravKarakoti
We welcome contributions to Kaizer-DB. Follow these steps to get started:
1. **Fork the Repository**
Fork the Repository by using fork button.
2. **Clone the Repository**
```bash
git clone https://github.com//Kaizer-DB.git
```
3. **Create a New Branch**
```bash
cd Kaizer-DB
git checkout -b feature/your-feature-name
```
4. **Make Your Changes**
- Edit the code as needed.
- Add tests if applicable.
- Update the version details in `package.json` file.
5. **Commit Your Changes**
```bash
git add .
git commit -m "Description of your changes"
```
6. **Push Your Changes**
```bash
git push origin feature/your-feature-name
```
7. **Create a Pull Request (PR)**
- Go to your repository on GitHub.
- Click on **New Pull Request**.
- Provide a detailed description of your changes.
- Submit the PR for review.
📜 License 📜
MIT License © 2025 DarkMortal