馃殌
Aurora Framework
  • 驴Que es AURORA?
  • Primeros pasos
    • Instalaci贸n
    • Crear tu primera aplicaci贸n
    • Configura tu base de datos
    • Crear tu primer modulo
    • Crear un pipeline de despliegue
  • Fundamentos
    • API Yaml definition
    • QueryStatement
    • CQRS
    • Transacciones
    • ValueObjects
    • Estructura de proyecto
    • Multi-idioma
  • Packages
    • Environments information
    • Common
      • Instalaci贸n en back
      • Instalaci贸n en front
    • OAuth & IAM
      • Instalaci贸n en back
      • Instalaci贸n en front
    • Settings
    • Auditing
      • Instalaci贸n en back
      • Instalaci贸n en front
    • Queue Manager
      • Instalaci贸n en back
      • Instalaci贸n en front
      • Gestionar Jobs
    • MS Entra ID
      • Instalaci贸n en back
      • Instalaci贸n en front
    • Storage account
      • Instalaci贸n en back
      • Instalaci贸n en front
    • Azure Storage Account
      • Instalaci贸n en back
  • Ejemplos
    • Aplicaci贸n de libros
      • Instalaci贸n del back
      • Entidad Author
      • Entidad Book
Con tecnolog铆a de GitBook
En esta p谩gina
  1. Fundamentos

Transacciones

El uso de transacciones en base de datos es necesario si nos queremos asegurar que todas las operaciones son realizadas correctamente.

Las transacciones solo funcionan, si la implementaci贸n del ICommandBus no es serializada, esto quiere decir que en un entorno de microservicios que est茅n comunicados por messages brokers, no podremos usar transacciones la perderse la referencia de la transacci贸n en la serializaci贸n.

import { Sequelize } from 'sequelize-typescript';

constructor(
        private readonly commandBus: ICommandBus,
        private readonly queryBus: IQueryBus,
        private readonly sequelize: Sequelize,
    ) {}
    
    async main(
        payload: OrionCreateTransportInput | OrionCreateTransportDto,
        timezone?: string,
    ): Promise<OrionTransport | OrionTransportDto>
    {
   const transaction = await this.sequelize.transaction({
            // logging: console.log,  // Just for debugging purposes
        });

        try
        {
            // create transport
            await this.commandBus.dispatch(new CreateTransportCommand(
                {
                    ...payload,
                },
                { timezone, repositoryOptions: { transaction }},
            ));

            // loadOrders
            await this.commandBus.dispatch(new DeleteLoadOrdersCommand(
                { where: { transportId: payload.id }},
                {},
                { timezone, repositoryOptions: { transaction }},
            ));

            await transaction.commit();
        }
        catch (error)
        {
            await transaction.rollback();
            throw error;
        }
        
     }
}
AnteriorCQRSSiguienteValueObjects

脷ltima actualizaci贸n hace 2 a帽os