Skip to content

Instantly share code, notes, and snippets.

View dimitardanailov's full-sized avatar

Dimitar Danailov (a.k.a Mitco) dimitardanailov

View GitHub Profile
@dimitardanailov
dimitardanailov / Articles.md
Last active December 2, 2018 10:18
Nodejs Microservice: Importing millions records on Amazon S3
@dimitardanailov
dimitardanailov / PetController.ts
Created September 11, 2018 08:30
Example of using Nodejs Streams and MongoDB Stream
// Routing Controllers Annotations
import { JsonController, Get, Controller, Param, Post } from "routing-controllers";
import { PetRepository } from "../repositories/PetRepository";
import { IPet } from "../interfaces/IPet";
import { Pet } from "../models/Pet";
import { Readable } from "stream";
@JsonController()
// Create a controller prefix for each end point
@Controller("/pets")
@dimitardanailov
dimitardanailov / PetController.ts
Created September 10, 2018 09:55
Example: Working with MongoDB Streams
@Get('/hello-world-streams')
async streams() {
// Get Mongodb cursor
const cursor = this.repository.getCursorToAllRecords();
const promise = new Promise((resolve, reject) => {
cursor.on('data', doc => {
console.log(doc);
});
@dimitardanailov
dimitardanailov / PetController.ts
Last active September 9, 2018 19:50
Example of DI Controller which is using mongoosejs
// Routing Controllers Annotations
import { JsonController, Get, Controller, Param, Post } from "routing-controllers";
import { PetRepository } from "../repositories/PetRepository";
import { IPet } from "../interfaces/IPet";
import { Pet } from "../models/Pet";
@JsonController()
// Create a controller prefix for each end point
@Controller("/pets")
export class PetController {
@dimitardanailov
dimitardanailov / PetRepository.ts
Last active September 9, 2018 19:25
routring-controllers: Repository
import { Service } from "typedi";
import { Query } from "mongoose";
import { Pet } from "../models/Pet";
@Service()
export class PetRepository {
async getRecords(): Promise <Pet> {
/**
* I'd like to get only fifty records and each record
@dimitardanailov
dimitardanailov / Pet.ts
Created September 9, 2018 17:57
TypeScript: Declaring Mongoose Schema + Model
import { mongoose } from "../database/config";
import { Document, Schema } from "mongoose";
import { IPet } from '../interfaces/IPet';
interface IPetModel extends IPet, Document {
}
const PetSchema: Schema = new Schema({
'name': String,
'age': Number,
'createdAt': Date,
@dimitardanailov
dimitardanailov / swagger.ts
Last active September 9, 2018 12:53
Example: IBM NodeServer Generator - Swagger Routes
import express = require("express");
module.exports = (app) => {
const router = express.Router();
app.use("/swagger/api", express.static("./public/swagger.yaml"));
app.use("/explorer", express.static("./public/swagger-ui"));
app.use(router);
}
@dimitardanailov
dimitardanailov / health.ts
Last active September 8, 2018 13:51
IBM NodeServer Generator health route
module.exports = (app) => {
const router = require('express').Router();
router.get('/', (req, res, next) => {
res.json({ status: 'UP' });
});
app.use('/health', router);
}
@dimitardanailov
dimitardanailov / server.ts
Last active September 9, 2018 13:09
Example for a mix environment between NodeServer Generator and routing-controllers
import "reflect-metadata"; // this shim is required
import { createExpressServer, useContainer } from "routing-controllers";
import { Container } from "typedi";
import log4js = require('log4js');
require('appmetrics-dash').attach();
require('appmetrics-prometheus').attach();
const appName = require('./../package').name;
const logger = log4js.getLogger(appName);
@dimitardanailov
dimitardanailov / navbar.html
Created August 26, 2018 14:12
Visual Studio tips and tricks
<div class="navbar">
<div class="navbar-items"></div>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</div>