Code Monkey home page Code Monkey logo

jsondb's Introduction

JsonDB

Simple library for storing datas on JSON files using models.

Installation

Using npm:

npm install @burakbey/jsondb

Using yarn:

yarn add @burakbey/jsondb

Initialization

Create data folder on root path.

// src/index.ts

import { join } from 'path';
import { JsonDB, Store } from '@burakbey/jsondb';

const store = new Store({
    mainPath: join(__dirname, '../data')
});
new JsonDB(store);

Creating a new model

Create users.json in data folder with [] content.

// data/users.json

[]
// src/models/User.ts

/* eslint-disable no-use-before-define */
import { Collection, Item } from '@burakbey/jsondb';

export class User extends Item<User> {
    username: string;

    password: string;
}

export const UserCollection = new Collection<User>(User, 'users');

Using the methods

// src/index.ts

import { User, UserCollection } from './models/User';

// Create new users
const admin = new User({
    username: 'admin',
    password: 'password'
});

const user = new User({
    username: 'user',
    password: 'password'
});

UserCollection.save(admin, user);

// Get all users
const users = UserCollection.find();

// Get all users with filter
const users = UserCollection.find(x => x.password === 'password');

// Get one user
const user = UserCollection.findOne(x => x.username === 'user');

// Update user
const user = UserCollection.findOne(x => x.username === 'user');
if (user) {
    user.username = 'user-updated';
    UserCollection.update(user);
}

// Delete user
const user = UserCollection.findOne(x => x.username === 'user-updated');
if (user) {
    UserCollection.delete(user);
}

Usage for FiveM

Create data folder on root path.

// server/index.ts

import { JsonDB, Store } from '@burakbey/jsondb';

const store = new Store({
    mainPath: 'data',
    fetch(collection) {
        const dataStr = LoadResourceFile(
            GetCurrentResourceName(),
            `${this.mainPath}/${collection.name}.json`
        );
        const data = JSON.parse(dataStr);
        return data;
    },
    save(collection) {
        SaveResourceFile(
            GetCurrentResourceName(),
            `${this.mainPath}/${collection.name}.json`,
            JSON.stringify(collection.items, null, 4),
            -1
        );
    }
});
new JsonDB(store);

...

Change unique id generator

JsonDB uses uuid package for generating unique ids. If you want to change this to something else, you can use this example:

// src/index.ts

import { randomBytes } from 'crypto';
import { JsonDB, Store } from '@burakbey/jsondb';

const store = new Store({
    mainPath: 'somePathHere',
    getId() {
        const ms = new Date().getTime().toString();
        const id = crypto.randomBytes(8).toString('hex');

        return `${ms}-${id}`;
    }
});
new JsonDB(store);

...

โ˜• Support

If you find this project useful and would like to support me, you can do so by visiting my website.

Buy me a coffee

jsondb's People

Contributors

bur4kbey avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.