aikodb
Version:
AikoDB, JSON database module for simple and easy use, ideal for Discord bots.
157 lines (105 loc) โข 3.67 kB
Markdown


# AikoDB
**AikoDB** is a lightweight, fast, and easy-to-use database module based on JSON. It's perfect for use in small projects, prototyping, or even Discord bots where a full-scale database system is overkill.
## ๐ฆ Installation
Install via npm:
```bash
npm install aikodb
```
## ๐ Basic Usage
Using AikoDB is extremely simple. You can start using it with just a few lines:
```js
const AikoDB = require('aikodb');
const db = new AikoDB('json', 'database.json');
(async () => {
await db.set('user1', { xp: 50 });
console.log(db.get('user1'));
await db.push('logs', 'Login Users.');
console.log(db.get('logs'));
console.log(db.has('user1')); // true
console.log(db.size()); // database entry count
await db.removeFromArray('logs', 'Login Users.');
console.log(db.get('logs'));
await db.clear(); // clears all data
})();
```
## ๐ API Reference
### ๐ฅ `add(key, value)`
Adds a key with the given value to the database. Alias of `set()`.
### ๐ค `get(key)`
Returns the value of the given key.
### ๐ `set(key, value)`
Creates or updates a key with the specified value.
### โ `delete(key)`
Deletes the specified key from the database.
### ๐ `all()`
Returns the entire database object.
### ๐ `push(key, value, allowDuplicates = true)`
Pushes a value to an array stored under the key.
Creates the array if it doesn't exist.
You can prevent duplicates by setting `allowDuplicates` to `false`.
```js
await db.push('logs', 'Login', false); // won't add if already exists
```
### โ `removeFromArray(key, value)`
Removes the given value from the array stored under the key.
### ๐งน `clear()`
Clears the entire database.
### ๐ `has(key)`
Returns true if the key exists in the database.
### ๐ `size()`
Returns the number of entries in the database.
### ๐ `keys()`
Returns an array of all keys.
### ๐ฏ `values()`
Returns an array of all values.
### ๐งช `filter(callback)`
Filters entries based on a function.
```js
db.filter(item => item.age > 20);
```
### ๐ `find(property, value)`
Returns entries where `object[property] === value`.
```js
db.find("username", "furkan");
```
### ๐ `sort(byKey, order)`
Sorts data by key and order (`asc` or `desc`).
```js
db.sort("xp", "desc");
```
### ๐ `reload()`
Reloads the data from the file.
### ๐พ `save()`
Manually saves the current state to the file.
## ๐ Latest Update (v1.1.8)
- `push(key, value, allowDuplicates = true)` now supports preventing duplicate entries.
- Stability improvements for array and object handling.
## ๐ค Example: With Discord Bot
```js
const AikoDB = require('aikodb');
const db = new AikoDB('json', 'data.json');
client.on('messageCreate', async message => {
if (message.author.bot) return;
const userId = message.author.id;
const user = db.get(userId) || { xp: 0 };
user.xp += 10;
await db.set(userId, user);
});
```
## โจ Support
Need help? Join our [Discord server](https://discord.gg/KcDsa4fAmS)
Get help on the [#support](https://discord.com/channels/1370020743638941799/1372973540151918602) channel.
Or DM me directly via my [Discord profile](https://discord.com/users/453534543194882049).
<p align="center">
<a href="https://discord.gg/KcDsa4fAmS">
<img src="https://api.weblutions.com/discord/invite/KcDsa4fAmS/">
</a>
</p>