File tree Expand file tree Collapse file tree 5 files changed +53
-16
lines changed Expand file tree Collapse file tree 5 files changed +53
-16
lines changed Original file line number Diff line number Diff line change 1
- import { LocalStorage } from '../browser.js'
2
- import { LowSync } from '../index.js'
1
+ import { WebStoragePreset } from '../presets/WebStoragePreset.js'
3
2
4
3
type Data = {
5
4
messages : string [ ]
6
5
}
7
- const adapter = new LocalStorage < Data > ( 'db' )
8
- const db = new LowSync < Data > ( adapter , { messages : [ ] } )
9
6
10
- db . read ( )
7
+ const defaultData : Data = { messages : [ ] }
8
+ const db = WebStoragePreset < Data > ( 'db' , defaultData )
9
+
11
10
db . data . messages . push ( 'foo' )
12
11
13
12
db . write ( )
Original file line number Diff line number Diff line change 1
- import { LowSync } from '../index.js'
2
- import { JSONFileSync } from '../node.js'
1
+ import { JSONSyncPreset } from '../presets/JSONPreset.js'
3
2
4
3
type Data = {
5
4
messages : string [ ]
6
5
}
7
6
8
7
const message = process . argv [ 2 ] || ''
9
8
const defaultData : Data = { messages : [ ] }
10
- const adapter = new JSONFileSync < Data > ( 'file.json' )
11
- const db = new LowSync < Data > ( adapter , defaultData )
12
-
13
- db . read ( )
9
+ const db = JSONSyncPreset ( 'file.json' , defaultData )
14
10
15
11
db . data . messages . push ( message )
16
12
Original file line number Diff line number Diff line change 4
4
import express from 'express'
5
5
import asyncHandler from 'express-async-handler'
6
6
7
- import { Low } from '../index.js'
8
- import { JSONFile } from '../node.js'
7
+ import { JSONPreset } from '../presets/JSONPreset.js'
9
8
10
9
const app = express ( )
11
10
app . use ( express . json ( ) )
@@ -19,9 +18,8 @@ type Data = {
19
18
posts : Post [ ]
20
19
}
21
20
22
- const adapter = new JSONFile < Data > ( 'db.json' )
23
- const db = new Low < Data > ( adapter , { posts : [ ] } )
24
- await db . read ( )
21
+ const defaultData : Data = { posts : [ ] }
22
+ const db = await JSONPreset < Data > ( 'db.json' , defaultData )
25
23
26
24
// db.data can be destructured to avoid typing `db.data` everywhere
27
25
const { posts } = db . data
Original file line number Diff line number Diff line change
1
+ import { Memory , MemorySync } from '../adapters/Memory.js'
2
+ import { JSONFile , JSONFileSync } from '../adapters/node/JSONFile.js'
3
+ import { Low , LowSync } from '../core/Low.js'
4
+
5
+ export async function JSONPreset < Data > (
6
+ filename : string | URL ,
7
+ defaultData : Data ,
8
+ dir ?: string | URL ,
9
+ ) : Promise < Low < Data > > {
10
+ const adapter =
11
+ process . env . NODE_ENV === 'test'
12
+ ? new Memory < Data > ( )
13
+ : new JSONFile < Data > ( new URL ( filename , dir ) )
14
+ const db = new Low < Data > ( adapter , defaultData )
15
+ await db . read ( )
16
+ return db
17
+ }
18
+
19
+ export function JSONSyncPreset < Data > (
20
+ filename : string | URL ,
21
+ defaultData : Data ,
22
+ dir ?: string | URL ,
23
+ ) : LowSync < Data > {
24
+ const adapter =
25
+ process . env . NODE_ENV === 'test'
26
+ ? new MemorySync < Data > ( )
27
+ : new JSONFileSync < Data > ( new URL ( filename , dir ) )
28
+ const db = new LowSync < Data > ( adapter , defaultData )
29
+ db . read ( )
30
+ return db
31
+ }
Original file line number Diff line number Diff line change
1
+ import { WebStorage } from '../adapters/browser/WebStorage.js'
2
+ import { LowSync } from '../index.js'
3
+
4
+ export function WebStoragePreset < Data > (
5
+ key : string ,
6
+ defaultData : Data ,
7
+ storage : Storage = localStorage ,
8
+ ) {
9
+ const adapter = new WebStorage < Data > ( key , storage )
10
+ const db = new LowSync < Data > ( adapter , defaultData )
11
+ db . read ( )
12
+ return db
13
+ }
You can’t perform that action at this time.
0 commit comments