🚨 Announcing Vendure v2 Beta

EntityIdStrategy

AutoIncrementIdStrategy

An id strategy which uses auto-increment integers as primary keys for all entities. This is the default strategy used by Vendure.

Signature

class AutoIncrementIdStrategy implements EntityIdStrategy<'increment'> {
  readonly readonly primaryKeyType = 'increment';
  decodeId(id: string) => number;
  encodeId(primaryKey: number) => string;
}

Implements

Members

primaryKeyType

readonly property
type:

decodeId

method
type:
(id: string) => number

encodeId

method
type:
(primaryKey: number) => string

EntityIdStrategy

The EntityIdStrategy determines how entity IDs are generated and stored in the database, as well as how they are transformed when being passed from the API to the service layer and vice versa.

Vendure ships with two strategies: AutoIncrementIdStrategy and UuidIdStrategy, but custom strategies can be used, e.g. to apply some custom encoding to the ID before exposing it in the GraphQL API.

Note: changing from an integer-based strategy to a uuid-based strategy on an existing Vendure database will lead to problems with broken foreign-key references. To change primary key types like this, you’ll need to start with a fresh database.

Signature

interface EntityIdStrategy<T extends 'increment' | 'uuid'> extends InjectableStrategy {
  readonly primaryKeyType: T;
  encodeId: (primaryKey: PrimaryKeyType<T>) => string;
  decodeId: (id: string) => PrimaryKeyType<T>;
}

Extends

Members

primaryKeyType

readonly property
type:
T
Defines how the primary key will be stored in the database - either 'increment' for auto-increment integer IDs, or 'uuid' for a unique string ID.

encodeId

property
type:
(primaryKey: PrimaryKeyType<T>) => string

Allows the raw ID from the database to be transformed in some way before exposing it in the GraphQL API.

For example, you may need to use auto-increment integer IDs due to some business constraint, but you may not want to expose this data publicly in your API. In this case, you can use the encode/decode methods to obfuscate the ID with some kind of encoding scheme, such as base64 (or something more sophisticated).

decodeId

property
type:
(id: string) => PrimaryKeyType<T>
Reverses the transformation performed by the encodeId method in order to get back to the raw ID value.

UuidIdStrategy

An id strategy which uses string uuids as primary keys for all entities. This strategy can be configured with the entityIdStrategy property of the entityOptions property of VendureConfig.

Example

import { UuidIdStrategy, VendureConfig } from '@vendure/core';

export const config: VendureConfig = {
  entityOptions: {
    entityIdStrategy: new UuidIdStrategy(),
    // ...
  }
}

Signature

class UuidIdStrategy implements EntityIdStrategy<'uuid'> {
  readonly readonly primaryKeyType = 'uuid';
  decodeId(id: string) => string;
  encodeId(primaryKey: string) => string;
}

Implements

Members

primaryKeyType

readonly property
type:

decodeId

method
type:
(id: string) => string

encodeId

method
type:
(primaryKey: string) => string