redis-om-node
redis-om-node copied to clipboard
Make Repository a generic class / infer Entity from Schema
It seems like the current version of redis-om does not have any support for a custom repository entity type. Apparently, the Entity type is hard coded into the Repository class (correct me if I am wrong).
I think this is a good point to introduce some Typescript Generics support.
I am thinking of something like this:
interface Person extends Entity {
name: string
age: number
}
const PersonSchema = new Schema(...)
const personRepo = new Repository<Person>(PersonSchema, client)
With this approach, the save, fetch, ... functions of the repository would give proper IntelliSense.
I assume the changes wouldn't be too much. Something like:
class Repository<E extends Entity = Entity> {
async save(entity: E)
...
}
A more advanced approach would be to infer the resulting entity type from the Schema definition. However, this would need a lot of refactoring of the type definitions.
I had the same issue.
Seems like a no brainer, I don't know why this wasn't implemented on the first place. +1
It would be very useful. But i feel the improvement may be way more complex than we think. +1