Skip to content

niklaus0823/zipkin-instrumentation-typeorm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

typeorm

Typeorm db connection and instrumentation that adds Zipkin tracing to the application.

Install

$ npm install --save zipkin-instrumentation-typeorm

API

proxyConnection([conn], [info], [ctx])

conn

Type: typeorm.SelectQueryBuilder

Allows to build complex sql queries in a fashion way and execute those queries.

info

tracer

Type: zipkin.Tracer or false
Default: false

serviceName

Type: string
Default: unknown

remoteServiceName

Type: string
Default: unknown

port

Type: number
Default: 0

ctx

Type: object

Example: ctx[zipkin.HttpHeaders.TraceId] = new zipkin.TraceId();

Examples

Typeorm DB Connection Proxy

This library will wrap grpc client proxy to record traces.

import * as zipkin from 'zipkin';
import {TypeOrmInstrumentation} from '../index';
import {User as UserEntity} from './entity/User';
import {Entity, createConnection} from 'typeorm';

// build entities
const entities = [];
entities.push({UserEntity: UserEntity});

// create zipkin Tracer
const tracer = new zipkin.Tracer({
    ctxImpl: new zipkin.ExplicitContext(),
    recorder: new zipkin.ConsoleRecorder()
});

async function getUser(): Promise<UserEntity> {
    const conn = await createConnection({
        type: 'sqlite',
        database: './User.db',
        entities: entities,
    });

    const proxyConn = TypeOrmInstrumentation.proxyConnection(conn, {tracer});

    return await proxyConn.getRepository(UserEntity)
        .createQueryBuilder('user')
        .where(`user.id=:id`, {id: '1000'})
        .getOne();
}

getUser()
    .then(res => console.log(res))
    .catch(err => console.log(err));

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published