Skip to content

Instantly share code, notes, and snippets.

View Romakita's full-sized avatar
🎯
Focusing

Romain Lenzotti Romakita

🎯
Focusing
View GitHub Profile
@Romakita
Romakita / InjectorService.ts
Last active April 28, 2023 10:36
How to build and IOC. This exemple explore different way to resolve dependencies
import {Providern, TokenProvider, LocalsContainer, Type} from "./interfaces";
import {getDeps} from "./getDeps";
export class InjectorService {
#cache = new Map<TokenProvider, any>();
constructor() {
// make injector service to be injectable
this.set(InjectorService, this);
}
@Romakita
Romakita / OIDCRedisAdapter.spec.ts
Last active August 18, 2022 13:45
Ts.ED - Redis Cache + Cluster + ioredis 5 + OIDC Redis
import { Adapters } from "@tsed/adapters";
import { LocalsContainer, PlatformTest } from "@tsed/common";
import Redis from "ioredis";
// @ts-ignore
import IORedisMock from "ioredis-mock";
import moment from "moment";
import { REDIS_CONNECTION } from "../redis/RedisConnection";
import { OIDCRedisAdapter } from "./OIDCRedisAdapter";
@Romakita
Romakita / BaseEntityController.ts
Last active April 3, 2022 13:56
Custom controller loader
export abstract class BaseEntityController {
readonly entity: string;
@Get('/')
list() {
return []
 }
/// etc
}
@Romakita
Romakita / BullBuilder.ts
Last active February 21, 2022 08:04
Using bull with Ts.ED
import {createInjector, InjectorService, Provider} from "@tsed/common";
import {Store} from "@tsed/core";
export class BullBuilder {
readonly injector: InjectorService;
constructor(settings: any) {
this.injector = createInjector({
settings,
providers: []
@Romakita
Romakita / MediasController.ts
Last active September 25, 2021 08:20
Stream S3 File object with Ts.ED
import { Controller } from "@tsed/common";
import { Inject, Injectable } from "@tsed/di";
import AWS from "aws-sdk";
@Controller("/medias")
export class MediasController {
@Inject()
protected s3: S3Client;
@Get()
@Romakita
Romakita / AdminBroModule.ts
Last active September 11, 2021 05:38
AdminBro with Ts.ED
import {Module, Configuration, Inject, Constant, InjectorService} from "@tsed/di";
import {PlatformApplication} from "@tsed/common";
import {MongooseService} from "@tsed/mongoose";
import {Logger} from "@tsed/logger";
import {Type} from "@tsed/core";
import AdminBro from "admin-bro";
import AdminBroExpress from "@admin-bro/express";
import AdminBroMongoose from "@admin-bro/mongoose";
AdminBro.registerAdapter(AdminBroMongoose)
@Romakita
Romakita / UsersRepository.ts
Created May 24, 2021 15:52
Prisma - TsED UsersRepository
import { isArray } from "@tsed/core";
import { deserialize } from "@tsed/json-mapper";
import { Injectable, Inject } from "@tsed/di";
import { PrismaService } from "../services/PrismaService";
import { Prisma, User } from "../client";
import { UserModel } from "../models";
@Injectable()
export class UsersRepository {
@Inject()
@Romakita
Romakita / UserModel.ts
Last active May 24, 2021 15:51
Prisma - Ts.ED UserModel
import { User } from "@prisma/client";
import { Integer, Required, Property, Groups, Format, Email, Description, Allow, Enum, CollectionOf } from "@tsed/schema";
import { Role, PostModel } from "@tsedio/prisma";
export class UserModel implements User {
@Property(Number)
@Integer()
@Required()
@Groups("!creation")
id: number;
@Romakita
Romakita / schema.prisma
Created May 24, 2021 15:47
Prisma User
model User {
/// @TsED.Groups("!creation")
/// Comment
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
/// @TsED.Email()
/// @TsED.Description("User email. This email must be unique!")
email String @unique
weight Float?
is18 Boolean?
@Romakita
Romakita / UsersController.ts
Created May 24, 2021 15:40
Prisma UsersController
import {BodyParams, Controller, Get, PathParams, Post} from "@tsed/common";
import {Inject} from "@tsed/di";
import {PrismaService} from "../services/PrismaService";
import {Groups, Required, Email, Returns, Summary} from "@tsed/schema";
import {User} from "@prisma/client";
class UserModel implements User {
@Required()
@Groups("!creation")
id: number;