diff --git a/src/ModelCustomization.ts b/src/ModelCustomization.ts index 6fbd896..5ec3937 100644 --- a/src/ModelCustomization.ts +++ b/src/ModelCustomization.ts @@ -31,11 +31,24 @@ export default function modelCustomizationPhase( } function removeIndicesGeneratedByTypeorm(dbModel: Entity[]): Entity[] { // TODO: Support typeorm CustomNamingStrategy - // TODO: PK index - ignores primaryKeyName(typeorm bug?) - to investigate const namingStrategy = new DefaultNamingStrategy(); dbModel.forEach(entity => { entity.indices = entity.indices.filter( - v => !v.name.startsWith(`sqlite_autoindex_`) + v => + !v.name.startsWith(`sqlite_autoindex_`) && + (v.name !== "PRIMARY" && v.primary) + ); + const primaryColumns = entity.columns + .filter(v => v.primary) + .map(v => v.tscName); + entity.indices = entity.indices.filter( + v => + v.primary && + v.name !== + namingStrategy.primaryKeyName( + entity.tscName, + primaryColumns + ) ); entity.relations .filter(v => v.joinColumnOptions) diff --git a/src/templates/entity.mst b/src/templates/entity.mst index 1a874c8..6e16182 100644 --- a/src/templates/entity.mst +++ b/src/templates/entity.mst @@ -42,6 +42,6 @@ export class {{toEntityName tscName}}{{#activeRecord}} extends BaseEntity{{/acti } {{/inline}} import {BaseEntity,Column,Entity,Index,JoinColumn,JoinTable,ManyToMany,ManyToOne,OneToMany,OneToOne,PrimaryColumn,PrimaryGeneratedColumn,RelationId} from "typeorm"; -{{#fileImports}}{{> Import}}{{/fileImports~}} +{{#fileImports}}{{> Import}}{{/fileImports}} -{{~> Entity}} +{{> Entity}}