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