import { UnionAssociationOptions } from './union-association-options'; import { Association } from './association'; import { ModelClassGetter } from '../../model/shared/model-class-getter'; import { ModelType } from '../../model/model/model'; import { Sequelize } from '../../sequelize/sequelize/sequelize'; export abstract class BaseAssociation { constructor( private associatedClassGetter: ModelClassGetter, protected options: UnionAssociationOptions ) {} abstract getAssociation(): Association; abstract getSequelizeOptions( model: ModelType, sequelize: Sequelize ): UnionAssociationOptions; getAssociatedClass(): ModelType { return this.associatedClassGetter(); } getAs(): string | { singular: string; plural: string } | undefined { return this.options.as; } }