factory-girl-ts
Advanced tools
Comparing version 2.0.2 to 2.0.3
@@ -9,4 +9,5 @@ import { ValueOf } from 'type-fest'; | ||
private readonly key?; | ||
private readonly cachedModel?; | ||
constructor(factory: Factory<Model, Attributes, Params, ReturnType>, adapter: ModelAdapter<any, ReturnType>, additionalAttributes?: Override<Attributes, ReturnType> | undefined, key?: keyof ReturnType | undefined, cachedModel?: Promise<ReturnType> | undefined); | ||
private cachedBuiltModel?; | ||
private cachedCreatedModel?; | ||
constructor(factory: Factory<Model, Attributes, Params, ReturnType>, adapter: ModelAdapter<any, ReturnType>, additionalAttributes?: Override<Attributes, ReturnType> | undefined, key?: keyof ReturnType | undefined, cachedBuiltModel?: ReturnType | undefined, cachedCreatedModel?: ReturnType | undefined); | ||
build(): Promise<ReturnType | ValueOf<ReturnType>>; | ||
@@ -13,0 +14,0 @@ create(): Promise<ReturnType | ValueOf<ReturnType>>; |
@@ -9,4 +9,5 @@ "use strict"; | ||
key; | ||
cachedModel; | ||
constructor(factory, adapter, additionalAttributes, key, cachedModel) { | ||
cachedBuiltModel; | ||
cachedCreatedModel; | ||
constructor(factory, adapter, additionalAttributes, key, cachedBuiltModel, cachedCreatedModel) { | ||
this.factory = factory; | ||
@@ -16,28 +17,28 @@ this.adapter = adapter; | ||
this.key = key; | ||
this.cachedModel = cachedModel; | ||
this.cachedBuiltModel = cachedBuiltModel; | ||
this.cachedCreatedModel = cachedCreatedModel; | ||
} | ||
async build() { | ||
const built = await this.factory.build(this.additionalAttributes); | ||
this.cachedBuiltModel = | ||
this.cachedBuiltModel ?? | ||
(await this.factory.build(this.additionalAttributes)); | ||
if (this.key) { | ||
return this.adapter.get(built, this.key); | ||
return this.adapter.get(this.cachedBuiltModel, this.key); | ||
} | ||
return built; | ||
return this.cachedBuiltModel; | ||
} | ||
async create() { | ||
if (this.cachedModel) { | ||
const cachedModelAwaited = await this.adapter.save(await this.cachedModel); | ||
return this.adapter.get(cachedModelAwaited, this.key); | ||
} | ||
const createdModel = await this.factory.create(this.additionalAttributes); | ||
this.cachedCreatedModel = | ||
this.cachedCreatedModel ?? | ||
(await this.factory.create(this.additionalAttributes)); | ||
if (this.key) { | ||
return this.adapter.get(createdModel, this.key); | ||
return this.adapter.get(this.cachedCreatedModel, this.key); | ||
} | ||
return createdModel; | ||
return this.cachedCreatedModel; | ||
} | ||
get(key) { | ||
const cachedModel = this.cachedModel ?? this.build(); | ||
return new Association(this.factory, this.adapter, this.additionalAttributes, key, cachedModel); | ||
return new Association(this.factory, this.adapter, this.additionalAttributes, key); | ||
} | ||
} | ||
exports.Association = Association; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXNzb2NpYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSxXQUFXO0lBT0g7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUxuQixZQUNtQixPQUF1RCxFQUN2RCxPQUFzQyxFQUN0QyxvQkFBdUQsRUFDdkQsR0FBc0IsRUFDdEIsV0FBaUM7UUFKakMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0Q7UUFDdkQsWUFBTyxHQUFQLE9BQU8sQ0FBK0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFtQztRQUN2RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7SUFDakQsQ0FBQztJQUVKLEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVsRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDMUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTTtRQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2hELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FDdkIsQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEdBQXVCLENBQUMsQ0FBQztTQUMzRTtRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFMUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELEdBQUcsQ0FDRCxHQUFxQjtRQUVyQixNQUFNLFdBQVcsR0FDZixJQUFJLENBQUMsV0FBVyxJQUFLLElBQUksQ0FBQyxLQUFLLEVBQTBCLENBQUM7UUFDNUQsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxvQkFBb0IsRUFDekIsR0FBRyxFQUNILFdBQVcsQ0FDWixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdERELGtDQXNEQyJ9 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXNzb2NpYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSxXQUFXO0lBT0g7SUFDQTtJQUNBO0lBQ0E7SUFDVDtJQUNBO0lBTlYsWUFDbUIsT0FBdUQsRUFDdkQsT0FBc0MsRUFDdEMsb0JBQXVELEVBQ3ZELEdBQXNCLEVBQy9CLGdCQUE2QixFQUM3QixrQkFBK0I7UUFMdEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0Q7UUFDdkQsWUFBTyxHQUFQLE9BQU8sQ0FBK0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFtQztRQUN2RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWE7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFhO0lBQ3RDLENBQUM7SUFFSixLQUFLLENBQUMsS0FBSztRQUNULElBQUksQ0FBQyxnQkFBZ0I7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQjtnQkFDckIsQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFFeEQsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzFEO1FBRUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNO1FBQ1YsSUFBSSxDQUFDLGtCQUFrQjtZQUNyQixJQUFJLENBQUMsa0JBQWtCO2dCQUN2QixDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUV6RCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUQ7UUFFRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsR0FBRyxDQUNELEdBQXFCO1FBRXJCLE9BQU8sSUFBSSxXQUFXLENBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLEdBQUcsQ0FDSixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBakRELGtDQWlEQyJ9 |
{ | ||
"name": "factory-girl-ts", | ||
"version": "2.0.2", | ||
"version": "2.0.3", | ||
"description": "A factory library to help creating test data", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
Sorry, the diff of this file is not supported yet
772
206158