Skip to content

Make Repository a generic class / infer Entity from Schema #227

@jonahschueller

Description

@jonahschueller

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions