Skip to content

Instantly share code, notes, and snippets.

View nmchenry01's full-sized avatar

Nicholas McHenry nmchenry01

  • Boulder, CO
View GitHub Profile
@nmchenry01
nmchenry01 / transaction.ts
Created August 23, 2020 21:42
Transactions TypeORM for "Prisma vs. TypeORM"
const executeTransaction = async () => {
await getManager().transaction(async (transactionalEntityManager) => {
const customerRepository = transactionalEntityManager.getRepository(
Customer,
);
const companyRepository = transactionalEntityManager.getRepository(Company);
const umbrella = companyRepository.create({ name: 'Umbrella' });
await companyRepository.save(umbrella);
@nmchenry01
nmchenry01 / transaction.ts
Last active August 23, 2020 21:39
Transactions Prisma for "Prisma vs. TypeORM"
const experimentalTransaction = async (prisma: PrismaClient) => {
const createCompany = prisma.company.create({ data: { name: 'Umbrella' } });
const createCustomer = prisma.customer.create({
data: { username: 'User5', email: 'User5@gmail.com' },
});
return prisma.transaction([createCompany, createUser]);
};
@nmchenry01
nmchenry01 / deleteCustomer.ts
Created August 23, 2020 19:33
Delete customer TypeORM for "Prisma vs. TypeORM"
const deleteCustomer = async () => {
const customerRepository = getRepository(Customer);
return customerRepository.delete({ username: 'User4' });
};
@nmchenry01
nmchenry01 / updateProduct.ts
Last active August 23, 2020 19:27
Update product description TypeORM for "Prisma vs. TypeORM"
const updateProductDescription = async () => {
const productRepository = getRepository(Product);
return productRepository.update(
{ name: 'Printer' },
{ description: 'It works sometimes' },
);
};
@nmchenry01
nmchenry01 / updateProduct.ts
Created August 23, 2020 19:19
Update product description Prisma for "Prisma vs. TypeORM"
const updateProductDescription = async (prisma: PrismaClient) => {
return prisma.product.update({
where: {
name: 'Printer',
},
data: {
description: 'It works sometimes',
},
});
};
@nmchenry01
nmchenry01 / multipleFilters.ts
Created August 20, 2020 13:16
Find company products TypeORM for "Prisma vs. TypeORM"
const findCompaniesThatMakeCarsOrDynamite = async () => {
const companyRepository = getRepository(Company);
return companyRepository
.createQueryBuilder('company')
.innerJoinAndSelect('company.products', 'product')
.andWhere('product.name IN (:...names)', { names: ['Car', 'Dynamite'] })
.getMany();
};
@nmchenry01
nmchenry01 / findCustomersForCompany.ts
Created August 20, 2020 12:56
Find customers for company TypeORM for "Prisma vs. TypeORM"
const findCustomersForCompany = () => {
const customerRepository = getRepository(Customer);
return customerRepository
.createQueryBuilder('customer')
.innerJoinAndSelect('customer.products', 'products')
.innerJoinAndSelect('products.company', 'company')
.andWhere('company.name = :name', { name: 'Acme' })
.select('customer.username')
.orderBy('customer.username', 'DESC')
@nmchenry01
nmchenry01 / findCompanyByName.ts
Created August 20, 2020 12:48
Find company TypeORM for "Prisma vs. TypeORM"
const findCompanyByName = async () => {
const companyRepository = getRepository(Company);
return companyRepository.findOne({ where: { name: 'Globex' } });
};
@nmchenry01
nmchenry01 / createCustomer.ts
Last active August 20, 2020 11:54
Create customer TypeORM for "Prisma vs. TypeORM"
export const createCustomer = async () => {
const customerRepository = getRepository(Customer);
const productRepository = getRepository(Product);
const dynamite = await productRepository.findOne({
where: { name: 'Dynamite' },
});
const car = await productRepository.findOne({
where: {
name: 'Car',
@nmchenry01
nmchenry01 / createProduct.ts
Last active August 20, 2020 11:53
Create product TypeORM for "Prisma vs. TypeORM"
const createProduct = async () => {
const productRepository = getRepository(Product);
const companyRepository = getRepository(Company);
const acme = await companyRepository.findOne({ where: { name: 'Acme' } });
const dynamite = productRepository.create({
name: 'Dynamite',
description: 'It goes "boom"',
company: acme,