@tresdoce-nestjs-toolkit/snowflake-uid
TypeScript icon, indicating that this package has built-in type declarations

0.2.5-beta.4 • Public • Published
nestjs-logo

Tresdoce NestJS Toolkit
Snowflake-Uid

NodeJS npm NestJS
GitHub license Release

Este módulo está pensado para ser utilizado en NestJS Starter, o cualquier proyecto que utilice una configuración centralizada, siguiendo la misma arquitectura del starter.

Glosario


📝 Requerimientos básicos

🛠️ Instalar dependencia

npm install -S @tresdoce-nestjs-toolkit/snowflake-uid
yarn add @tresdoce-nestjs-toolkit/snowflake-uid

⚙️ Configuración

Agregar la configuración del generador de Snowflake en configuration.ts utilizando el key snowflakeUID y que contenga el objeto con los datos necesarios desde las variables de entorno.

//./src/config/configuration.ts
import { Typings } from '@tresdoce-nestjs-toolkit/core';
import { registerAs } from '@nestjs/config';

export default registerAs('config', (): Typings.AppConfig => {
  return {
    //...
    snowflakeUID: {
      epoch: BigInt(process.env.SNOWFLAKE_EPOCH) || 1577836800000n,
      workerId: parseInt(process.env.SNOWFLAKE_WORKER_ID, 10) || 1,
      processId: parseInt(process.env.SNOWFLAKE_PROCESS_ID, 10) || 1,
      toString: process.env.SNOWFLAKE_TO_STRING.toLowerCase() === 'true',
    },
    //...
  };
});
💬 Para ver en detalle todas las propiedades de la configuración, hace clic acá.

epoch: Es el tiempo de inicio en milisegundos desde el cual se generarán los IDs.

  • Type: BigInt
  • Required: false

workerId: Es el ID del worker que generará los IDs.

  • Type: Number
  • Required: false
  • Default: 1

processId: Es el ID del proceso que generará los IDs.

  • Type: Number
  • Required: false
  • Default: 1

toString: Indica si el ID generado debe ser convertido a string.

  • Type: Boolean
  • Required: false
  • Default: false

👨‍💻 Uso

Importar el SnowflakeModule en el archivo app.module.ts, y el módulo se encargará de obtener la configuración y realizar la conexión automáticamente.

//./src/app.module.ts
import { SnowflakeModule } from '@tresdoce-nestjs-toolkit/snowflake-uid';

@Module({
  //...
  imports: [
    //...
    SnowflakeModule,
    //...
  ],
  //...
})
export class AppModule {}

Luego inyecte el SnowflakeService en su clase para poder generar y validar IDs de Snowflake.

import { Injectable } from '@nestjs/common';
import { SnowflakeService } from '@tresdoce-nestjs-toolkit/snowflake-uid';

@Injectable()
export class MyService {
  constructor(private readonly snowflakeService: SnowflakeService) {}

  generateId() {
    return this.snowflakeService.generate();
  }

  validateId(id: string | bigint) {
    return this.snowflakeService.isSnowflake(id);
  }

  parseId(id: string) {
    return this.snowflakeService.parse(id);
  }
  //...
}

📄 Changelog

Todos los cambios notables de este paquete se documentarán en el archivo Changelog.


Logo - Mex

Made with ❤

Dependencies (0)

    Dev Dependencies (2)

    Package Sidebar

    Install

    npm i @tresdoce-nestjs-toolkit/snowflake-uid

    Weekly Downloads

    154

    Version

    0.2.5-beta.4

    License

    MIT

    Unpacked Size

    12.7 kB

    Total Files

    3

    Last publish

    Collaborators

    • rudemex