ProtonType


Um simples web framework feito em TypeScript.

O ProtonType tem como objetivo tornar simples e agradável o desenvolvimento de APIs REST.

Instalação

npm install protontype --save

Models

Usa TypeORM por padrão para manipulação de banco de dados. Mas pode ser usado qualquer framework.

@Entity()
export class TasksModel {
    @PrimaryGeneratedColumn()
    id: number;
    @Column({ nullable: true })
    title: string;
    @Column()
    done: boolean;
    @Column()
    userId: number;
}

Middlewares

Suporta implementação de middlewares

export class TasksMiddleware extends BaseMiddleware {
    @Middleware()
    printTaskTitle(params: MiddlewareFunctionParams) {
        cosole.log(params.req.body.title);
        params.next();
    }
}

Router

Rotas básicas de CRUD já implementadas nos CrudRouter

 @RouterClass({
    baseUrl: "/tasks",
    model: TasksModel,
    middlewares: [new TasksMiddleware()]
})
export class TasksRouter extends CrudRouter {
    /*
    GET / - Lista todos registros
    POST / - Cria um registro
    GET /:id - Consulta um registro
    PUT /:id - Atualiza um registro
    DELETE /:id - Remove um registro
    */

    //Novas rotas customizadas ....
}

Ou pode implementar rotas customizadas

 @RouterClass({
    baseUrl: "/tasks",
    model: TasksModel,
    middlewares: [new TasksMiddleware()]
})
export class TasksRouter extends BaseRouter {
    @Route({
        endpoint: '/test/msg',
        method: Method.GET,
        middlewares: [new OtherMiddleware()]
    })
    routeTest(params: RouterFunctionParams) {
        console.log("Hello!");
    }
}

Acessando o banco de dados

let tasksRepository = TypeORMDB.getBD().getRepository(TasksModel);
let tasks = await tasksRepository.find();

Iniciando a aplicação

new ProtonApplication()
    .addRouterAs(TasksRouter)
    .addMiddlewareAs(SomeoneGlobalMiddleware)
    .start();

Exemplos

Versão de desenvolvimento

npm install protontype@dev --save