redisk
Advanced tools
Comparing version 2.0.0 to 2.1.0
import 'reflect-metadata'; | ||
import { Type } from '../metadata'; | ||
export declare function HasOne<T>(type: Type<T>, options?: { | ||
export declare function HasOne<T>(type: () => Type<T>, options?: { | ||
cascadeInsert: boolean; | ||
cascadeUpdate: boolean; | ||
}): Function; |
@@ -14,3 +14,2 @@ "use strict"; | ||
metadata_storage_1.MetadataStorage.getGlobal().hasOneRelations[object.constructor.name][propertyName] = { | ||
entity: type.name, | ||
cascadeInsert: options.cascadeInsert, | ||
@@ -17,0 +16,0 @@ cascadeUpdate: options.cascadeUpdate, |
@@ -10,3 +10,7 @@ "use strict"; | ||
return (object, propertyName) => { | ||
const type = Reflect.getMetadata('design:type', object, propertyName).name; | ||
const reflectType = Reflect.getMetadata('design:type', object, propertyName); | ||
let type = 'string'; | ||
if (reflectType !== undefined) { | ||
type = reflectType.name; | ||
} | ||
if (metadata_storage_1.MetadataStorage.getGlobal().properties[object.constructor.name] === undefined) { | ||
@@ -13,0 +17,0 @@ metadata_storage_1.MetadataStorage.getGlobal().properties[object.constructor.name] = {}; |
import { Type } from '../metadata'; | ||
export interface HasOneOptions { | ||
entity: string; | ||
entityType: Type<any>; | ||
entityType: () => Type<any>; | ||
cascadeInsert: boolean; | ||
cascadeUpdate: boolean; | ||
} |
@@ -79,3 +79,3 @@ "use strict"; | ||
if (hasOneRelations !== undefined && hasOneRelations[property.name]) { | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entity); | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entityType().name); | ||
valueToStore = entity[property.name][relatedEntity.primary]; | ||
@@ -94,3 +94,3 @@ if (hasOneRelations[property.name].cascadeInsert && persistedEntity === null && entity[property.name] !== null) { | ||
if (hasOneRelations !== undefined && hasOneRelations[property.name] && entity[property.name] !== null) { | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entity); | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entityType().name); | ||
value = entity[property.name][relatedEntity.primary]; | ||
@@ -305,3 +305,3 @@ } | ||
if (hasOneRelations !== undefined && hasOneRelations[propertiesArray[index].name] && resultKey !== null) { | ||
entity[propertiesArray[index].name] = yield this.getOne(hasOneRelations[propertiesArray[index].name].entityType, resultKey); | ||
entity[propertiesArray[index].name] = yield this.getOne(hasOneRelations[propertiesArray[index].name].entityType(), resultKey); | ||
} | ||
@@ -361,3 +361,3 @@ else { | ||
if (hasOneRelations !== undefined && hasOneRelations[property.name]) { | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entity); | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entityType().name); | ||
value = entity[property.name][relatedEntity.primary]; | ||
@@ -364,0 +364,0 @@ } |
{ | ||
"name": "redisk", | ||
"version": "2.0.0", | ||
"version": "2.1.0", | ||
"description": "TypeScript ORM for Redis.", | ||
@@ -11,3 +11,3 @@ "main": "index.js", | ||
"prebuild": "rm -rf dist", | ||
"build": "tsc -p tsconfig.json && cpx 'src/lua/*.lua' dist/lua", | ||
"build": "tsc -p tsconfig.build.json && cpx 'src/lua/*.lua' dist/lua", | ||
"prepublish:npm": "npm run build", | ||
@@ -14,0 +14,0 @@ "publish:npm": "npm publish --access public", |
<h1 align="center"> | ||
<img src="https://raw.githubusercontent.com/arkerlabs/redisk/master/docs/images/logo.png" alt="Redisk"> | ||
<img src="https://raw.githubusercontent.com/ArkerLabs/redisk/master/docs/images/logo.png" alt="Redisk"> | ||
</h1> | ||
@@ -127,3 +127,3 @@ | ||
@HasOne(Group, {cascadeInsert: true, cascadeUpdate: true}) | ||
@HasOne(() => Group, {cascadeInsert: true, cascadeUpdate: true}) | ||
@Property() | ||
@@ -224,3 +224,3 @@ public group: Group; | ||
@HasOne(Group, {cascadeInsert: true, cascadeUpdate: true}) | ||
@HasOne(() => Group, {cascadeInsert: true, cascadeUpdate: true}) | ||
@Property() | ||
@@ -303,3 +303,3 @@ public readonly group: Group; | ||
}; | ||
await redisk.find(User, where, limit, offset); | ||
await redisk.list(User, where, limit, offset); | ||
``` | ||
@@ -319,3 +319,3 @@ | ||
}; | ||
await redisk.find(User, where, limit, offset); | ||
await redisk.list(User, where, limit, offset); | ||
``` | ||
@@ -344,3 +344,3 @@ | ||
}; | ||
await redisk.find(User, where, limit, offset); | ||
await redisk.list(User, where, limit, offset); | ||
``` | ||
@@ -358,4 +358,4 @@ | ||
{ | ||
key: 'color', | ||
value: 'blue', | ||
key: 'food', | ||
value: 'avocado', | ||
comparator: '=', | ||
@@ -366,3 +366,3 @@ }, | ||
}; | ||
await redisk.find(User, where, limit, offset); | ||
await redisk.list(User, where, limit, offset); | ||
``` | ||
@@ -369,0 +369,0 @@ |
@@ -5,3 +5,3 @@ import { MetadataStorage } from '../metadata/metadata.storage'; | ||
export function HasOne<T>(type: Type<T>, options: {cascadeInsert: boolean, cascadeUpdate: boolean} = { | ||
export function HasOne<T>(type: () => Type<T>, options: {cascadeInsert: boolean, cascadeUpdate: boolean} = { | ||
cascadeInsert: false, | ||
@@ -16,3 +16,2 @@ cascadeUpdate: false, | ||
MetadataStorage.getGlobal().hasOneRelations[object.constructor.name][propertyName] = { | ||
entity: type.name, | ||
cascadeInsert: options.cascadeInsert, | ||
@@ -19,0 +18,0 @@ cascadeUpdate: options.cascadeUpdate, |
@@ -10,4 +10,10 @@ import { MetadataStorage } from '../metadata/metadata.storage'; | ||
return (object: object, propertyName: string) => { | ||
const type = Reflect.getMetadata('design:type', object, propertyName).name; | ||
const reflectType = Reflect.getMetadata('design:type', object, propertyName); | ||
let type = 'string'; | ||
if (reflectType !== undefined) { | ||
type = reflectType.name; | ||
} | ||
if (MetadataStorage.getGlobal().properties[object.constructor.name] === undefined) { | ||
@@ -14,0 +20,0 @@ MetadataStorage.getGlobal().properties[object.constructor.name] = {}; |
import { Type } from '../metadata'; | ||
export interface HasOneOptions { | ||
entity: string; | ||
entityType: Type<any>; | ||
entityType: () => Type<any>; | ||
cascadeInsert: boolean; | ||
cascadeUpdate: boolean; | ||
} |
@@ -97,3 +97,3 @@ import { Type } from './metadata/type'; | ||
if (hasOneRelations !== undefined && hasOneRelations[property.name]) { | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entity); | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entityType().name); | ||
valueToStore = entity[property.name][relatedEntity.primary]; | ||
@@ -119,3 +119,3 @@ | ||
if (hasOneRelations !== undefined && hasOneRelations[property.name] && entity[property.name] !== null) { | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entity); | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entityType().name); | ||
value = entity[property.name][relatedEntity.primary]; | ||
@@ -412,3 +412,3 @@ } | ||
if (hasOneRelations !== undefined && hasOneRelations[propertiesArray[index].name] && resultKey !== null) { | ||
entity[propertiesArray[index].name] = await this.getOne(hasOneRelations[propertiesArray[index].name].entityType as any, resultKey); | ||
entity[propertiesArray[index].name] = await this.getOne(hasOneRelations[propertiesArray[index].name].entityType() as any, resultKey); | ||
} else { | ||
@@ -469,3 +469,3 @@ entity[propertiesArray[index].name] = this.convertStringToPropertyType(propertiesArray[index], resultKey); | ||
if (hasOneRelations !== undefined && hasOneRelations[property.name]) { | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entity); | ||
const relatedEntity = this.metadata.getEntityMetadataFromName(hasOneRelations[property.name].entityType().name); | ||
value = entity[property.name][relatedEntity.primary]; | ||
@@ -472,0 +472,0 @@ } |
@@ -29,3 +29,3 @@ import { Entity } from '../../src/decorators/entity.decorator'; | ||
@HasOne(Group, {cascadeInsert: true, cascadeUpdate: true}) | ||
@HasOne(() => Group, {cascadeInsert: true, cascadeUpdate: true}) | ||
@Property({indexed: true}) | ||
@@ -32,0 +32,0 @@ public readonly group: Group; |
@@ -65,4 +65,20 @@ import { RediskTestUtils } from './utils/redisk-test-utils'; | ||
describe('List with has one conditions', () => { | ||
it('should return filtered entities', async () => { | ||
expect((await utils.redisk.list( | ||
User, | ||
{ | ||
conditions: [ | ||
{ | ||
key: 'group', | ||
value: groups[1].id, | ||
comparator: '=', | ||
}, | ||
], | ||
type: 'AND', | ||
}, | ||
))).toEqual([users[3], users[4]]); | ||
}); | ||
}); | ||
describe('List with one condition', () => { | ||
@@ -69,0 +85,0 @@ it('should return filtered persisted entities', async () => { |
Sorry, the diff of this file is not supported yet
187958
86
2390