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

969 B

@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:

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.