11# stenodb [ ![ ] ( https://img.shields.io/npm/v/stenodb )] ( https://www.npmjs.org/package/stenodb )
22
3- > ✍ Easy to use local JSON database. Ready to use in browser (localStorage, sessionStorage) and Node.js.
3+ > ✍ Easy to use local JSON database.
44
55## Install
66
@@ -16,16 +16,15 @@ yarn add stenodb
1616pnpm add stenodb
1717```
1818
19- | Package | Version | Platform |
19+ | Package | Version | Description |
2020| ------- | ------ | ----------- |
2121| [ @stenodb/node ] ( ./packages/node ) | [ ![ ] ( https://img.shields.io/npm/v/@stenodb/node )] ( https://npm.im/@stenodb/node ) | Node.js |
22- | [ @stenodb/browser ] ( ./packages/browser ) | [ ![ ] ( https://img.shields.io/npm/v/@stenodb/browser )] ( https://npm.im/@stenodb/browser ) | Browser |
22+ | [ @stenodb/browser ] ( ./packages/browser ) | [ ![ ] ( https://img.shields.io/npm/v/@stenodb/browser )] ( https://npm.im/@stenodb/browser ) | Browser (localStorage, sessionStorage) |
23+ | [ @stenodb/nest ] ( ./packages/nest ) | [ ![ ] ( https://img.shields.io/npm/v/@stenodb/nest )] ( https://npm.im/@stenodb/nest ) | Nest.js |
24+ | [ @stenodb/logger ] ( ./packages/logger ) | [ ![ ] ( https://img.shields.io/npm/v/@stenodb/logger )] ( https://npm.im/@stenodb/logger ) | Logger |
2325
2426## Usage
2527
26- > ** Warning** \
27- > stenodb is a pure ESM package. If you're having trouble using it in your project, please [ read this] ( https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c ) .
28-
2928### Database entities
3029``` typescript
3130// entities.ts
@@ -77,7 +76,7 @@ import { Users, User, Post } from './entities.js'
7776const path = resolve (dirname (fileURLToPath (import .meta .url )), ' ..' , ' database' )
7877const initialData = new Users (new User (' John Doe' ))
7978const adapter = new AsyncAdapter (' users' , Users , initialData )
80- const provider = new NodeProvider (path )
79+ const provider = new NodeProvider ({ path } )
8180const database = provider .createAsync (adapter )
8281
8382await database .read ()
@@ -86,6 +85,7 @@ await database.write()
8685```
8786
8887### ` @stenodb/browser `
88+
8989``` typescript
9090import ' reflect-metadata'
9191import { LocalStorage , BrowserProvider } from ' @stenodb/browser'
@@ -101,6 +101,83 @@ storage.data?.users[0]?.addPost(new Post('Lorem ipsum'))
101101storage .write ()
102102```
103103
104+ ### ` @stenodb/nest `
105+
106+ ``` typescript
107+ // users.dto.ts
108+ import { Exclude , Type } from ' class-transformer'
109+ import { Length , Max , Min } from ' class-validator'
110+
111+ export class Users {
112+ @Type (() => CreateUserDto )
113+ users: CreateUserDto [] = []
114+
115+ constructor (... users : CreateUserDto []) {
116+ this .users = users
117+ }
118+ }
119+
120+ export class CreateUserDto {
121+ @Exclude ({ toPlainOnly: true })
122+ id: number
123+
124+ @Length (1 , 20 )
125+ name: string
126+
127+ @Min (12 )
128+ @Max (100 )
129+ age: number
130+
131+ constructor (id : number , name : string , age : number ) {
132+ this .id = id
133+ this .name = name
134+ this .age = age
135+ }
136+ }
137+
138+ // app.module.ts
139+ import { resolve } from ' node:path'
140+ import { Module } from ' @nestjs/common'
141+ import { StenoModule } from ' @stenodb/nest'
142+
143+ @Module ({
144+ imports: [
145+ StenoModule .register ({
146+ path: resolve (process .cwd (), ' db' )
147+ })
148+ ]
149+ })
150+ export class AppModule {}
151+
152+ // users.service.ts
153+ import { Injectable , OnModuleInit } from ' @nestjs/common'
154+ import { Steno , StenoService } from ' @stenodb/nest'
155+ import { Users , CreateUserDto } from ' ./users.dto'
156+
157+ @Injectable ()
158+ export class UsersService implements OnModuleInit {
159+ private usersProvider: Steno .NodeProvider <Users >
160+
161+ constructor (private readonly stenoService : StenoService ) {}
162+
163+ async onModuleInit(): Promise <void > {
164+ this .usersProvider = await this .stenoService .create (
165+ ' users' ,
166+ Users ,
167+ new Users (
168+ new CreateUserDto (1 , ' John' , 22 )
169+ )
170+ )
171+
172+ await this .usersProvider .read ()
173+ }
174+
175+ get users(): CreateUserDto [] {
176+ return this .usersProvider .data .users
177+ }
178+ }
179+ ```
180+
104181## Credits
105182
106183- [ steno] ( https://github.com/typicode/steno ) - Specialized fast async file writer.
0 commit comments