0.2.15 • Published 2 years ago
@improvising/leap v0.2.15
Leap Framework
The MongoDB-based Integrated Web Framework
Usage example
import { transform, Type, useHttpServer, useRouter } from '@improvising/leap'
const httpServer = useHttpServer()
const router = useRouter()
const userRouter = useRouter()
const postRouter = useRouter()
postRouter.get('/', {
schema: {
params: Type.Object({
userId: Type.Optional(Type.String({ format: 'integer' })),
}),
},
handler: async req => {
const { userId } = transform(req.params, { userId: Number })
return { userId }
},
})
userRouter.get('/', {
schema: {
querystring: Type.Object({
limit: Type.Optional(Type.String({ format: 'integer' })),
skip: Type.Optional(Type.String({ format: 'integer' })),
}),
},
handler: async req => {
const { limit = 20, skip = 0 } = transform(req.query, {
limit: Number,
skip: Number,
})
return { limit, skip }
},
})
userRouter.get('/:userId', {
schema: {
params: Type.Object({
userId: Type.String({ format: 'integer' }),
}),
},
handler: async req => {
const { userId } = transform(req.params, { userId: Number })
return { userId }
},
})
userRouter.use('/:userId/posts', postRouter)
router.use('/users', userRouter)
router.use('/posts', postRouter)
httpServer.use(router, { prefix: '/api' })
httpServer.listen(
{
port: 3000,
host: '0.0.0.0',
},
err => {
if (err) {
console.error(err)
} else {
console.log('Hello world!')
}
},
)