import { SERVER_MAIN_RES_DIR } from '../generator-constants.js';
import { javaMainPackageTemplatesBlock } from '../server/support/index.js';
export const entityFiles = {
    dbChangelog: [
        {
            condition: generator => !generator.skipDbChangelog && !generator.embedded,
            path: SERVER_MAIN_RES_DIR,
            templates: [
                {
                    file: 'config/couchmove/changelog/entity.n1ql',
                    renameTo: generator => `config/couchmove/changelog/V${generator.changelogDate}__${generator.entityInstance.toLowerCase()}.n1ql`,
                },
            ],
        },
        {
            condition: generator => generator.searchEngineCouchbase && !generator.skipDbChangelog && !generator.embedded,
            path: SERVER_MAIN_RES_DIR,
            templates: [
                {
                    file: 'config/couchmove/changelog/entity.fts',
                    renameTo: generator => `config/couchmove/changelog/V${parseInt(generator.changelogDate, 10) + 10}__${generator.entityInstance.toLowerCase()}.fts`,
                },
            ],
        },
    ],
    server: [
        {
            ...javaMainPackageTemplatesBlock('_entityPackage_'),
            templates: ['domain/_persistClass_.java.jhi.spring_data_couchbase'],
        },
        {
            condition: generator => !generator.embedded,
            ...javaMainPackageTemplatesBlock('_entityPackage_'),
            templates: ['repository/_entityClass_Repository.java'],
        },
    ],
};
export function cleanupCouchbaseEntityFilesTask({ application, entities }) {
    for (const entity of entities.filter(entity => !entity.builtIn && !entity.skipServer)) {
        if (this.isJhipsterVersionLessThan('7.6.1')) {
            this.removeFile(`${application.srcMainResources}config/couchmove/changelog/V${entity.changelogDate}__${entity.entityInstance.toLowerCase()}.fts`);
        }
    }
}
export default async function writeEntityCouchbaseFiles({ application, entities }) {
    for (const entity of entities.filter(entity => !entity.builtIn && !entity.skipServer)) {
        await this.writeFiles({
            sections: entityFiles,
            context: { ...application, ...entity },
        });
    }
}
