0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2025-03-03 22:57:08 -05:00
astro/.changeset/blue-ghosts-rule.md
Ben Holmes ed1031ba29
db: Rework index config with generated index names (#10589)
* feat: add indexes array config with name gen

* fix: add _idx suffix, remove name from output

* feat(test): new index config

* chore: remove unused type

* chore: changeset

* chore: add sort() for consistent names

* feat(test): consistent column ordering

* feat(test): ensure no queries when migrating legacy to new
2024-03-28 14:09:09 -04:00

31 lines
969 B
Markdown

---
"@astrojs/db": patch
---
Update the table indexes configuration to allow generated index names. The `indexes` object syntax is now deprecated in favor of an array.
## Migration
You can update your `indexes` configuration object to an array like so:
```diff
import { defineDb, defineTable, column } from 'astro:db';
const Comment = defineTable({
columns: {
postId: column.number(),
author: column.text(),
body: column.text(),
},
- indexes: {
- postIdIdx: { on: 'postId' },
- authorPostIdIdx: { on: ['author, postId'], unique: true },
- },
+ indexes: [
+ { on: 'postId' /* 'name' is optional */ },
+ { on: ['author, postId'], unique: true },
+ ]
})
```
This example will generate indexes with the names `Comment_postId_idx` and `Comment_author_postId_idx`, respectively. You can specify a name manually by adding the `name` attribute to a given object. This name will be **global,** so ensure index names do not conflict between tables.