Skip to content

membuat sebuah module pengganti database engine untuk mengelola data secara advance

License

Notifications You must be signed in to change notification settings

jefripunza/advance-json-database

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

banner


Custom badge Custom badge

Custom badge

Donate

Donate

Sosial Media

Custom badge Custom badge Custom badge Custom badge Custom badge Custom badge

Introduction

Custom badge Custom badge Custom badge Custom badge Custom badge

Database atau basis data adalah kumpulan data yang dikelola sedemikian rupa berdasarkan ketentuan tertentu yang saling berhubungan sehingga mudah dalam pengelolaannya. Melalui pengelolaan tersebut pengguna dapat memperoleh kemudahan dalam mencari informasi, menyimpan informasi dan membuang informasi. Seiring berjalannya waktu, pengelolaan database memang cukup rumit bagi orang-orang yang baru terjun kedunia pemrograman. Untuk itu saya membuat module ini agar orang-orang bisa mudah mengelola database mereka dengan fungsi yang mutakhir. Mudah-mudahan bermanfaat dan jangan lupa tekan Star untuk membantu saya terus berkembang...



TESTING

untuk anda yang ingin mencoba perngalaman terbaik menggunakan module ini, silahkan ikuti step berikut ini :

download this source
git clone https://github.com/jefripunza/advance-json-database
install node_modules
npm install

buka file test.js dan ikuti perintah selanjutnya (indonesian language)

running test
node test

// or

npm start


PERSIAPAN

Tidak terlalu rumit untuk inisial awal, cukup copy saja file connection.js nya kedalam project anda lalu di import dan langsung bisa digunakan

key system
_id               = primary key (string|int)
_create_at        = kapan dibuat (timestamp)
_modified_at      = kapan terakhir dirubah (timestamp)
_modified_history = history modifikasi data (array)
_deleted_at       = menghapus sementara data dari list (tidak permanen)
_SEO              = untuk keperluan SEO (integer)


PENGGUNAAN

First Time

import library require and this module

const path = require("path");
const Database = require("path/to/connection");

set file path & initial database

// file path json, if not exist ? auto create file json
const file_path_db = path.join(__dirname, "test.txt"); // test.txt akan otomatis menjadi test.json

// for debug
const defaule_array = [
    {
        nama: "Jefri Herdi Triyanto",
        kelas: "webdev",
        hobi: "ngoding",
    },
    {
        nama: "Jack Unch Paijo",
        kelas: "mlongo",
        hobi: "mancing",
    },
];

//  request argument :
//      file_path_db  = nama file (dir_path + name) dan variabel database
//      default_value = nilai awal jika file database belum ada
//      generate      = membuat _id baru di setiap add data (default : true), true ? generateRandomString : integer auto increments

// Standar init (default)
const database = new Database(file_path_db);

// Standar init + default value (only array)
const database = new Database(file_path_db, defaule_array);

// Standar init + default value (only array) + generate
const database = new Database(file_path_db, defaule_array, true);

// if you want to multiply the table data then make another file connection
const database_user = new Database(file_path_db_user);
const database_post = new Database(file_path_db_post);

CRUD

add data

//  request argument :
//      new_data = (array)

database.add(new_data, result => {
    console.log(result);
});

read all list data (not delete)

console.log(database.read());

read all list data (with delete)

console.log(database.readAll());

read one data

//  request argument :
//      select_data = single _id ? (string|int) : (object) # key => match value
        
// single _id (string|int)
console.log(database.one(key_id));

// multi select (object)  # key => match value
console.log(database.one({
    name: value,
}));

update data

//  ketika merubah maka akan menambahkan 2 meta :
//      _modified_at        = waktu merubah (timestamp)
//      _modified_history   = data sebelumnya (array)

//  request argument :
//      select _id      = _id (string|int) 
//      new_data_object = new data => key => new value

database.update(key_id, {
    description: Database.generateRandomString(30), // function extra to rendom string with length
}, result => {
    console.log(result);
});

delete data (non permanent)

//  request argument :
//      select _id = _id (string|int)

database.delete(key_id, result => {
    console.log(result);
});

delete key from data

//  request argument :
//      select _id = _id (string|int)
//      select key = key yang ada didalam data (array)

database.deleteKey(key_id, [
    "_id", // tidak akan terhapus
    "id",
    "price",
], result => {
    console.log(result);
});

clear all data (dangerous)

// require multiple true (min 3) (for accept secure)

database.clearAllData(true, true, true, result => {
    console.log(result);
});

Length of data

console.log(database.length());

Trash

list trash data

// only displays data that has been temporarily deleted
console.log(database.trash());

Super Function

search engine

//  request argument :
//      select key (object) = pilih key yang value nya ingin di cari

//  keterangan :
//      nilai paling atas adalah score tertinggi dari pencarian
//      atau jika menggunakan addon SEO maka yang paling atas adalah data SEO
 
//  meta result :
//      time        = waktu mencari data pada database (second)
//      score       = nilai pencarian dari isi data (select key -> value)
//      result      = list data dari score terbaik sampai terendah
//      percentage  = nilai rekap dari setiap key yang di select
//      data        = real data

// for test
const keyword = "and or on for in is woman";

// execute
const result = database.search({
    description: keyword,
    title: keyword,
    category: keyword,
});

// default result
console.log(result);

// normal result
console.log(result.result.map(data => {
    return data.data
}));

pagination

//  request argument :
//      show = berapa data yang ingin ditampilkan (int)
//      page = sekarang dihalaman berapa (int)
//      button_page = jumlah alinyemen button (auto alinyemen jika data diakhir) (int)
//          ex  : jika nilainya 2  =   [1] - [2] - [center] - [1] - [2]
//              : jika nilainya 1  =   [1] - [center] - [1]

//  meta pagination :
//      min         = nilai terkecil yang ditampilkan
//      max         = nilai terbesar yang ditampilkan
//      page        = halaman sekarang
//      button      = tombol pagination (auto generate)
//      totalRow    = total dari semua data
//      row         = list data

console.log(database.pagination(show, page, button_page));

Addon

SEO managements

//  request argument :
//      select _id = _id (string|int)
//      nilai SEO = (only integer), range = unlimited integer

// add score SEO
database.addSEO(key_id, score, result => {
    console.log(result);
});

// list SEO only
console.log(database.listSEO());

// update score SEO
database.updateSEO(key_id, score, result => {
    console.log(result);
});

// delete SEO (not data, only SEO)
database.deleteSEO(key_id, result => {
    console.log(result);
});

Combine Function

Search + Pagination

//  request argument :
//      select key (object) = pilih key yang value nya ingin di cari
//      show = berapa data yang ingin ditampilkan
//      page = sekarang dihalaman berapa
//      button_page = jumlah alinyemen button

// for test
const keyword = "and or on for in is woman";

console.log(database.searchWithPagination({
    description: keyword,
    title: keyword,
    category: keyword,
}, show, page, button_page));



Support the project

Apakah kamu menyukai project ini? Please support saya dengan menekan subscribe di Youtube Channel saya...


Donation Please

Butuh ngopi gans, kasih lah untuk biaya pengembangan agar mudah membeli alat dan buat makan
Donate

About

membuat sebuah module pengganti database engine untuk mengelola data secara advance

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published