Skip to content

pyrite-framework/pyrite-server-emitter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pyrite-server-emitter

Install

  • Decorators feature has to be enabled.
npm install pyrite-server
npm install pyrite-server-emitter

Example

main.js

import { PyriteServer } from "pyrite-server";
import { EmitterPlugin } from "pyrite-server-emitter";

const server = new PyriteServer({
  port: 8000,
  routes: "/routes",
  plugins: [new EmitterPlugin()]
});

server.listen(() => {
  console.log("Server running!");
});

/routes folder:

users.js

import { 
  Route, Get, Post, Put, Delete, Exception, Body, Params, Query
} from "pyrite-server";

import { 
  Emits, Emit, Broadcast
} from "pyrite-server-emitter";


const users = [];
let index = 0;

@Route("/users")
export class Users {
  @Get("/")
  getUsers(@Query("name") name) {
    const result = users.filter((user) => !name || user.name === name);
    
    return result;
  }

  @Post("/")
  @Broadcast
  createUser(@Body user, @Emit emit) {
    user.id = index++;

    users.push(user);

    emit(user);
    
    return user;
  }

  @Put("/:id", Number)
  @Broadcast
  updateUser(@Body user, @Emit emit) {
    const foundUser = users.find((localUser) => localUser.id === user.id);
    if (!user) throw Exception(404, "not_found");

    Object.assign(foundUser, user);

    emit(user);

    return user;
  }

  @Delete("/:id", Number)
  @Emits
  removeUser(@Params("id") id, @Emit emit) {
    const indexUser = users.findIndex((user) => user.id === id);
    if (indexUser === -1) throw Exception(404, "not_found");

    users.splice(indexUser, 1);

    emit(id);

    return true;
  }
}

Releases

No releases published

Packages

No packages published