Mocking GUIDs
Some applications use GUIDs (or UUIDs) instead of auto-incrementing integers as identifiers for their models.
Mirage supports the ability to overwrite how its database assigns IDs to new records via the IdentityManager class. You can generate model-specific managers or an application-wide manager to customize how your database behaves.
A custom identity manager must implement these methods:
fetch, which must return an identifier not used yet.set, which is called with anidof a record being insert in mirage's database.reset, which should reset database to initial state.
Here's an example implementation for an identity manager that mocks GUIDs:
import uuidv4 from "uuid/v4" export default class { constructor() { this.ids = new Set() } // Returns a new unused unique identifier. fetch() { let uuid = uuidv4() while (this.ids.has(uuid)) { uuid = uuidv4() } this.ids.add(uuid) return uuid } // Registers an identifier as used. Must throw if identifier is already used. set(id) { if (this.ids.has(id)) { throw new Error(`ID ${id} has already been used.`) } this.ids.add(id) } // Resets all used identifiers to unused. reset() { this.ids.clear() } }