<your name here>
See opencollective.com/typeofweb or github.com/sponsors/typeofweb! ❤️
Thanks goes to these wonderful people (emoji key):
Bartłomiej Wiśniewski 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!
import{createApp}from'@typeofweb/server';import{dbPlugin}from'./dbPlugin';import{authPlugin}from'./authPlugin';constapp=awaitcreateApp({host: 'localhost',port: 3000,});app.plugin(dbPlugin);app.plugin(authPlugin);app.route({path: '/health-check/:count',method: 'GET',validation: {query: {},params: {count: number(),},payload: {},response: {},},asynchandler(request){if(!request.plugins.auth.session){thrownewHttpError(HttpStatusCode.Unauthorized);}const{ params }=request;constresult=awaitrequest.server.plugins.db.user.findOne(params.count);request.events.emit('found',result);returnresult;},});constserver=awaitapp.listen();// dbPlugin.tsimport{createPlugin}from'@typeofweb/server';declare module '@typeofweb/server'{interfaceTypeOfWebServerMeta{readonlydb: PrismaClient;}interfaceTypeOfWebRequestMeta{readonlyauth: {readonlysession: Session};}interfaceTypeOfWebServerEvents{readonlyfound: User;}}exportconstdbPlugin=createPlugin('db',async(app)=>{return{server: newPrisma(),};});// authPlugin.tsimport{createPlugin}from'@typeofweb/server';exportconstauthPlugin=createPlugin('auth',async(app)=>{return{request(request){constsession=awaitrequest.plugins.db.session.findOne({id: request.cookies.session});return{ session };},};});