import BaseApplicationGenerator from '../base-application/index.ts'; import { PRIORITY_NAMES } from '../base-application/priorities.ts'; import type { TaskTypes as ApplicationTaskTypes } from '../base-application/tasks.ts'; import type { TaskParamWithApplication } from '../base-simple-application/tasks.ts'; import type { Application as BaseEntityChangesApplication, BaseChangelog as BaseEntityChangesChangelog, Config as BaseEntityChangesConfig, Entity as BaseEntityChangesEntity, Features as BaseEntityChangesFeatures, Options as BaseEntityChangesOptions, Source as BaseEntityChangesSource } from './types.ts'; type BaseEntityChangesTaskTypes, A extends BaseEntityChangesApplication, S extends BaseEntityChangesSource> = ApplicationTaskTypes & { DefaultTaskParam: { entityChanges?: B[]; }; WritingEntitiesTaskParam: { entityChanges?: B[]; }; PostWritingEntitiesTaskParam: { entityChanges?: B[]; }; }; /** * This is the base class for a generator for every generator. */ export default abstract class BaseEntityChangesGenerator = BaseEntityChangesApplication, Config extends BaseEntityChangesConfig = BaseEntityChangesConfig, Options extends BaseEntityChangesOptions = BaseEntityChangesOptions, Source extends BaseEntityChangesSource = BaseEntityChangesSource, Features extends BaseEntityChangesFeatures = BaseEntityChangesFeatures, Tasks extends BaseEntityChangesTaskTypes, Application, Source> = BaseEntityChangesTaskTypes, Application, Source>> extends BaseApplicationGenerator { recreateInitialChangelog: boolean; private entityChanges; abstract isChangelogNew({ entityName, changelogDate }: { entityName: string; changelogDate: string; }): boolean; protected getTaskFirstArgForPriority(priorityName: (typeof PRIORITY_NAMES)[keyof typeof PRIORITY_NAMES]): TaskParamWithApplication; /** * Generate changelog from differences between the liquibase entity and current entity. */ protected generateIncrementalChanges({ application, entities: paramEntities, }: Pick): BaseEntityChangesChangelog[]; private hasAnyDefaultValue; private doDefaultValuesDiffer; } export {};