Skip to content

Latest commit

 

History

History

fastify

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

@stenodb/fastify

✍ Easy to use local JSON database for Fastify

Install

npm install @stenodb/fastify
yarn add @stenodb/fastify
pnpm add @stenodb/fastify

Usage

// index.ts
import Fastify from 'fastify'
import { resolve } from 'node:path'
import { AsyncAdapter, FastifySteno } from '@stenodb/fastify'
import { Users, User } from './entities.js'

const fastify = Fastify()

const initialData = new Users(
  new User('John'),
  new User('Alice')
)

const usersAdapter = new AsyncAdapter(
  'users',
  Users,
  initialData
)

fastify.register(FastifySteno, {
  path: resolve(dirname(fileURLToPath(import.meta.url)), '..', 'db'),
  entities: [User, Post],
  adapters: [usersAdapter]
})

fastify.get('/users', () => {
  const users = fastify.steno.get<Users>('users')
  return users.data
})

fastify.listen({ host: '0.0.0.0', port: 3000 }, (err, address) => {
  if (err) throw err
  console.log(address)
})

Credits

  • steno - Specialized fast async file writer.
  • fastify-plugin - Plugin helper for Fastify.
  • class-transformer - Decorator-based transformation, serialization, and deserialization between objects and classes.
  • class-validator - Decorator-based property validation for classes.
  • class-validator-jsonschema - Convert class-validator decorated classes into JSON schema.
  • json-difference - A simple way to find the difference between two objects or json diff.
  • tslog - Universal Logger for TypeScript and JavaScript.

License

MIT - crashmax