Skip to content

Commit

Permalink
Update index.ts
Browse files Browse the repository at this point in the history
  • Loading branch information
yuki committed Apr 17, 2022
1 parent 9344671 commit e7ad853
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 16 deletions.
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
# jsondb

Local JSON database for kokkoro
50 changes: 35 additions & 15 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { deepClone } from 'kokkoro';
import { readFileSync, writeFileSync } from 'fs';
import { writeFile } from 'fs/promises';

Expand All @@ -15,8 +14,8 @@ export class Database {
try {
const raw_data = readFileSync(this.path, 'utf8');

this.raw_data = raw_data;
this.data = JSON.parse(raw_data);
this.raw_data = raw_data || this.raw_data;
this.data = JSON.parse(this.raw_data);
} catch (error) {
const { message } = error as Error;

Expand All @@ -27,31 +26,52 @@ export class Database {
}
}

get() {
get(raw_keys: string) {
const keys = raw_keys.split('.');
const keys_length = keys.length;

let key: string = '';
for (let i = 0; i < keys_length; i++) {
key += '.' + keys[i];
const value = eval(`this.data${key}`);

if (!value) {
return;
}
}
return eval(`this.data.${raw_keys}`);
}

set(raw_keys: string, value: any) {
const keys = raw_keys.split('.');
const keys_length = keys.length;

if (keys_length > 1) {

let key: string = '';
for (let i = 0; i < keys_length; i++) {
key += '.' + keys[i];
eval(`this.data${key} ||= {}`);
}

// for (let i = 0; i !== keys_length - 1; i++) {
// const key = keys[i];

// this.data[key]
// }
eval(`this.data.${raw_keys} = value`);
}

has() {
has(raw_keys: string) {
const keys = raw_keys.split('.');
const keys_length = keys.length;

}
let key: string = '';
for (let i = 0; i < keys_length; i++) {
key += '.' + keys[i];
const value = eval(`this.data${key}`);

delete() {
if (!value) {
return false;
}
}
return true;
}

delete(raw_keys: string) {
eval(`delete this.data.${raw_keys}`);
}

async write(): Promise<void> {
Expand Down

0 comments on commit e7ad853

Please sign in to comment.