Defining a new database entity

This example shows how new TypeORM database entities can be defined by plugins.

// product-review.entity.ts
import { DeepPartial } from '@vendure/common/lib/shared-types';
import { VendureEntity } from '@vendure/core';
import { Column, Entity } from 'typeorm';

class ProductReview extends VendureEntity {
  constructor(input?: DeepPartial<ProductReview>) {

  text: string;
  rating: number;

Note Any custom entities must extend the VendureEntity class.

The new entity is then passed to the entities array of the VendurePlugin metadata:

// reviews-plugin.ts
import { VendurePlugin } from '@vendure/core';
import { ProductReview } from './product-review.entity';

  entities: [ProductReview],
export class ReviewsPlugin {}

Corresponding GraphQL type

Once you have defined a new DB entity, it is likely that you want to expose it in your GraphQL API. Here’s how to define a new type in your GraphQL API.