GUID のモッキング

一部のアプリケーションでは、モデルの識別子として、自動インクリメントする整数ではなく、GUID(またはUUID)を使用しています。

Mirage は、IdentityManager クラスを介して、データベースが新しいレコードにIDを割り当てる方法を上書きする機能をサポートしています。モデル固有のマネージャーまたはアプリケーション全体のマネージャーを作成して、データベースの動作をカスタマイズできます。

カスタムIDマネージャーは、これらのメソッドを実装する必要があります。

  • fetch: まだ使用されていない識別子を返す必要があります。
  • set: Mirage のデータベースに挿入されているレコードのid を使用して呼び出されます。
  • reset: データベースを初期状態にリセットする必要があります。

GUID をモックするIDマネージャーの実装例を以下に示します。

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()
  }
}