Skip to content

Commit d05e3b0

Browse files
authored
fix(db-postgres): build indexes for relationships (#8446)
Fixes #8413 for 2.0, builds indexes for `_rels` tables by default. Does not port `unique: true` from #8432 because could be a breaking change if someone has incosistent unique data in the database.
1 parent e4bc281 commit d05e3b0

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

packages/db-postgres/src/schema/build.ts

+17-4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import toSnakeCase from 'to-snake-case'
2525

2626
import type { GenericColumns, GenericTable, IDType, PostgresAdapter } from '../types'
2727

28+
import { createIndex } from './createIndex'
2829
import { createTableName } from './createTableName'
2930
import { parentIDColumnMap } from './parentIDColumnMap'
3031
import { setColumnID } from './setColumnID'
@@ -339,16 +340,28 @@ export const buildTable = ({
339340
if (relatedCollectionCustomIDType === 'number') colType = 'numeric'
340341
if (relatedCollectionCustomIDType === 'text') colType = 'varchar'
341342

342-
relationshipColumns[`${relationTo}ID`] = parentIDColumnMap[colType](
343-
`${formattedRelationTo}_id`,
344-
)
343+
const colName = `${relationTo}ID`
344+
345+
relationshipColumns[colName] = parentIDColumnMap[colType](`${formattedRelationTo}_id`)
345346

346347
relationExtraConfig[`${relationTo}IdFk`] = (cols) =>
347348
foreignKey({
348349
name: `${relationshipsTableName}_${toSnakeCase(relationTo)}_fk`,
349-
columns: [cols[`${relationTo}ID`]],
350+
columns: [cols[colName]],
350351
foreignColumns: [adapter.tables[formattedRelationTo].id],
351352
}).onDelete('cascade')
353+
354+
const indexName = [colName]
355+
356+
if (hasLocalizedRelationshipField) {
357+
indexName.push('locale')
358+
}
359+
360+
relationExtraConfig[`${relationTo}IdIdx`] = createIndex({
361+
name: indexName,
362+
columnName: `${formattedRelationTo}_id`,
363+
tableName: relationshipsTableName,
364+
})
352365
})
353366

354367
relationshipsTable = adapter.pgSchema.table(

0 commit comments

Comments
 (0)