// noinspection ES6PreferShortImport
import {BaseModel} from '../interfaces/externals/scylla.interface';
import {Repository} from './repository';
import {ReturnQueryBuilder} from './builder/return-query.builder';

export class RepositoryFactory {
    static create<T>(entity: Function, model: BaseModel, EntityRepository = Repository): Repository<T> {
        const repository = new EntityRepository<T>();
        Object.assign(repository, {
            returnQueryBuilder: new ReturnQueryBuilder<T>(model, entity),
            target: entity,
            model,
        });
        return repository;
    }
}
