“Exemple de transaction Typeorm” Réponses codées

Exemple de transaction Typeorm

import { Connection, ConnectionOptions, createConnection, QueryRunner } from 'typeorm'
import faker from 'faker'
import { Users } from '@models/model.users'

const typeormConfog: ConnectionOptions = {
	type: 'postgres',
	host: process.env.PG_HOST,
	port: +process.env.PG_PORT,
	username: process.env.PG_USER,
	password: process.env.PG_PASSWORD,
	database: process.env.PG_NAME,
	entities: ['dist/models/*.js'],
	synchronize: false
}

// example transaction database
(async () => {
	try {
		const connection = ['production', 'staging'].includes(process.env.NODE_ENV)
			? await createConnection(typeormConfog)
			: await createConnection()

        // call custom transaction like this
		await builderTransaction(connection, async (queryRunner: QueryRunner): Promise<any> => {
            // update operation
			await queryRunner.manager.update(Users, { id: 1 }, { name: 'john doe' })

        	// insert operation
			const users: Users = new Users()
			users.name = faker.name.firstName()
			users.email = faker.internet.email()
			users.password = '@Qwerty12'
			await connection.manager.save(users)

    		// get operation
			const getUsers = await queryRunner.manager.findOne(Users, { id: 1 })
			console.log('getUsers: ', getUsers)
		})
	} catch (err: any) {
		return Promise.reject(err)
	}
})()

// custom transaction builder
const builderTransaction = async (connection: Connection, operationTransaction: (query: QueryRunner) => Promise<any>): Promise<any> => {
	try {
		const query: QueryRunner = connection.createQueryRunner()
		await query.connect()
		await query.startTransaction()
		try {
			const responseTransaction: Record<string ,any> = await operationTransaction(query)
			await query.commitTransaction()
			return responseTransaction
		} catch (e: any) {
			if (query.isTransactionActive) await query.rollbackTransaction()
			return Promise.reject(err)
		} finally {
			if (query.isReleased) await query.release()
		}
	} catch (e: any) {
		return Promise.reject(e)
	}
}
Restu Wahyu Saputra

Exemple de transactions Typeorm

import { Connection, ConnectionOptions, createConnection, QueryRunner } from 'typeorm'
import faker from 'faker'
import { Users } from '@models/model.users'
 
const typeormConfog: ConnectionOptions = {
    type: 'postgres',
    host: process.env.DB_HOST,
    port: +process.env.DB_PORT,
    username: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME,
    entities: ['dist/models/*.js'],
    synchronize: false
}
 
// example transaction database
(async () => {
    try {
        const connection = ['production', 'staging'].includes(process.env.NODE_ENV)
            ? await createConnection(typeormConfog)
            : await createConnection()
 
        // call custom transaction like this
        await builderTransaction(connection, async (queryRunner: QueryRunner): Promise<any> => {
            // update operation
            await queryRunner.manager.update(Users, { id: 1 }, { name: 'john doe' })
 
            // insert operation
            const users: Users = new Users()
            users.name = faker.name.firstName()
            users.email = faker.internet.email()
            users.password = '@Qwerty12'
            await connection.manager.save(users)
 
            // get operation
            const getUsers = await queryRunner.manager.findOne(Users, { id: 1 })
            console.log('getUsers: ', getUsers)
        })
    } catch (err: any) {
        return Promise.reject(err)
    }
})()
 
const builderTransaction = async (connection: Connection, operationTransaction: (query: QueryRunner) => Promise<any>): Promise<any> => {
    try {
        const query: QueryRunner = connection.createQueryRunner()
        await query.connect()
        await query.startTransaction()
        try {
            await operationTransaction(query)
            await query.commitTransaction()
        } catch (e: any) {
            if (query.isTransactionActive) await query.rollbackTransaction()
        } finally {
            if (query.isReleased) await query.release()
        }
    } catch (err: any) {
        return Promise.reject(err)
    }
}
Restu Wahyu Saputra

Réponses similaires à “Exemple de transaction Typeorm”

Questions similaires à “Exemple de transaction Typeorm”

Plus de réponses similaires à “Exemple de transaction Typeorm” dans TypeScript

Parcourir les réponses de code populaires par langue

Parcourir d'autres langages de code