File tree Expand file tree Collapse file tree 5 files changed +26
-16
lines changed Expand file tree Collapse file tree 5 files changed +26
-16
lines changed Original file line number Diff line number Diff line change @@ -13,8 +13,13 @@ $ npm i --save @devsnowflake/jsql
13
13
14
14
``` js
15
15
const { Database } = require (" @devsnowflake/jsql" );
16
+
17
+ // file based
16
18
const db = new Database (" ./database.json" );
17
19
20
+ // in-memory
21
+ const db = new Database (" :memory:" );
22
+
18
23
// creating a table
19
24
db .prepare (` CREATE TABLE IF NOT EXISTS "DEMO" ("key" TEXT, "value" TEXT)` ).run ();
20
25
Original file line number Diff line number Diff line change 1
1
{
2
2
"name" : " @devsnowflake/jsql" ,
3
- "version" : " 1.0.0 " ,
3
+ "version" : " 1.0.1 " ,
4
4
"description" : " Use JSON as SQL." ,
5
5
"main" : " index.js" ,
6
6
"types" : " typings/index.d.ts" ,
Original file line number Diff line number Diff line change @@ -8,14 +8,19 @@ const handlers = {
8
8
} ;
9
9
10
10
class Database {
11
- constructor ( name ) {
12
- this . name = name ;
13
- if ( ! fs . existsSync ( this . name ) ) fs . writeFileSync ( this . name , '{}' ) ;
11
+ constructor ( name , memory = false ) {
12
+ this . name = memory === true ? ':memory:' : name ;
13
+ this . memory = ! memory && this . name === ':memory:' ? true : Boolean ( memory ) ;
14
+ this . _memdb = { } ;
15
+
16
+ Object . defineProperty ( this , '_memdb' , { enumerable : false } ) ;
17
+
18
+ if ( ! this . memory && ! fs . existsSync ( this . name ) ) fs . writeFileSync ( this . name , '{}' ) ;
14
19
}
15
20
16
21
get db ( ) {
17
22
try {
18
- const db = JSON . parse ( fs . readFileSync ( this . name , 'utf-8' ) ) ;
23
+ const db = this . memory ? this . _memdb : JSON . parse ( fs . readFileSync ( this . name , 'utf-8' ) ) ;
19
24
return db ;
20
25
} catch {
21
26
throw new Error ( 'malformed database' ) ;
@@ -27,7 +32,8 @@ class Database {
27
32
}
28
33
29
34
write ( data ) {
30
- fs . writeFileSync ( this . name , JSON . stringify ( data ) ) ;
35
+ if ( ! this . memory ) fs . writeFileSync ( this . name , JSON . stringify ( data ) ) ;
36
+ else this . _memdb = data ;
31
37
}
32
38
33
39
run ( query ) {
@@ -67,4 +73,4 @@ class Database {
67
73
}
68
74
}
69
75
70
- module . exports = Database ;
76
+ module . exports = Database ;
Original file line number Diff line number Diff line change @@ -4,9 +4,9 @@ const parser = new Parser();
4
4
module . exports . parse = function ( query ) {
5
5
try {
6
6
return parser . astify ( query ) ;
7
- } catch ( e ) {
8
- const expected = [ ...new Set ( ( e . expected ?? [ ] ) . filter ( m => m . type === " literal" ) . map ( ( m ) => m . text ) ) ] ;
9
- throw new SyntaxError ( `Expected ${ expected . join ( ", " ) } but received "${ e . found } "!` ) ;
7
+ } catch ( e ) {
8
+ const expected = [ ...new Set ( ( e . expected ?? [ ] ) . filter ( ( m ) => m . type === ' literal' ) . map ( ( m ) => m . text ) ) ] ;
9
+ throw new SyntaxError ( `Expected ${ expected . join ( ', ' ) } but received "${ e . found } "!` ) ;
10
10
}
11
11
} ;
12
12
Original file line number Diff line number Diff line change 1
- import { AST } from "node-sql-parser"
2
-
3
- declare module "jsql" {
1
+ import { AST } from 'node-sql-parser' ;
4
2
3
+ declare module 'jsql' {
5
4
export interface Handlers {
6
5
create : ( q : AST ) => void ;
7
6
select : ( q : AST ) => any [ ] ;
@@ -24,13 +23,13 @@ declare module "jsql" {
24
23
}
25
24
26
25
export class Database {
27
- constructor ( name : string ) ;
26
+ memory : boolean ;
27
+ constructor ( name : string , memory ?: boolean ) ;
28
28
get db ( ) : any ;
29
29
static get handlers ( ) : Handlers ;
30
30
write ( data : any ) : void ;
31
31
run ( query : Statement ) : any ;
32
32
prepare ( query : Statement ) : DatabasePrepare ;
33
33
parse ( statement : Statement ) : string ;
34
34
}
35
-
36
- }
35
+ }
You can’t perform that action at this time.
0 commit comments