stylusdb-sql
v0.1.6
Published
A minimal SQL based DB based on CSV files. For educational purposes only.
Downloads
3
Readme
This database is for educational purposes only. It is not intended for production use. It is written ground up in JavaScript and is a great way to learn how databases work. You can find all the code in the src directory and the tutorial in the docs directory.
Features
- [x]
INSERT
,DELETE
,SELECT
- [ ]
UPDATE
,CREATE TABLE
,DROP TABLE
- [x] CLI
- [ ] NPM Package
Installation
npm i stylusdb-sql
Usage
SELECT
Assuming you have a CSV file called student.csv
with the following data:
id,name,age
1,John,25
2,Jane,25
const { executeSELECTQuery } = require('stylusdb-sql');
const query = 'SELECT id, name FROM student WHERE age = 25';
const result = await executeSELECTQuery(query);
// result = [{ id: '1', name: 'John' }, { id: '2', name: 'Jane' }]
INSERT
const { executeINSERTQuery } = require('../src/queryExecuter');
const { readCSV, writeCSV } = require('../src/csvStorage');
async function createGradesCSV() {
const initialData = [
{ student_id: '1', course: 'Mathematics', grade: 'A' },
{ student_id: '2', course: 'Chemistry', grade: 'B' },
{ student_id: '3', course: 'Mathematics', grade: 'C' }
];
await writeCSV('grades.csv', initialData);
}
await createGradesCSV();
const insertQuery = "INSERT INTO grades (student_id, course, grade) VALUES ('4', 'Physics', 'A')";
await executeINSERTQuery(insertQuery);
Verify the new entry in grades.csv
:
student_id,course,grade
1,Mathematics,A
2,Chemistry,B
3,Mathematics,C
4,Physics,A
DELETE
async function createCoursesCSV() {
const initialData = [
{ course_id: '1', course_name: 'Mathematics', instructor: 'Dr. Smith' },
{ course_id: '2', course_name: 'Chemistry', instructor: 'Dr. Jones' },
{ course_id: '3', course_name: 'Physics', instructor: 'Dr. Taylor' }
];
await writeCSV('courses.csv', initialData);
}
await createCoursesCSV();
// Execute DELETE statement
const deleteQuery = "DELETE FROM courses WHERE course_id = '2'";
await executeDELETEQuery(deleteQuery);
// Verify the course was removed
const updatedData = await readCSV('courses.csv');
const deletedCourse = updatedData.find(course => course.course_id === '2');
CLI Usage
Open a terminal and run the following command to start the CLI:
stylusdb-sql
Execute a query as shown below.
Contributing
See CONTRIBUTING.md