Transacciones
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;
}
}
}Última actualización