-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add integrations API for db config/seed files (#10321)
* Add integrations API for adding db config/seed files * Fix seeding when user seed file is present * Add basic test and fixture for integrations API * Freeze that lockfile * Test to see if this is a Windows fix * Don’t import.meta.glob integration seed files * Make integration seed files export a default function * style: rejiggle * Fix temporary file conflicts * Remove changes to Astro’s core types, type utility method instead * Use `astro:db` instead of `@astrojs/db` * Revert unnecessarily cautious temporary path name This reverts commit ef2156e. * Add changeset * Fix entrypoints and `asDrizzleTable` usage in changeset * Getting Nate in on the co-author action Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> * Fix user seed file in integrations fixture * Update `seedLocal()` after merge * Provide empty `seedFiles` array in `db execute` --------- Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
- Loading branch information
1 parent
e086a9f
commit 2e4958c
Showing
22 changed files
with
401 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
--- | ||
"@astrojs/db": minor | ||
--- | ||
|
||
Adds support for integrations providing `astro:db` configuration and seed files, using the new `astro:db:setup` hook. | ||
|
||
To get TypeScript support for the `astro:db:setup` hook, wrap your integration object in the `defineDbIntegration()` utility: | ||
|
||
```js | ||
import { defineDbIntegration } from '@astrojs/db/utils'; | ||
|
||
export default function MyDbIntegration() { | ||
return defineDbIntegration({ | ||
name: 'my-astro-db-powered-integration', | ||
hooks: { | ||
'astro:db:setup': ({ extendDb }) => { | ||
extendDb({ | ||
configEntrypoint: '@astronaut/my-package/config', | ||
seedEntrypoint: '@astronaut/my-package/seed', | ||
}); | ||
}, | ||
}, | ||
}); | ||
} | ||
``` | ||
|
||
Use the `extendDb` method to register additional `astro:db` config and seed files. | ||
|
||
Integration config and seed files follow the same format as their user-defined equivalents. However, often while working on integrations, you may not be able to benefit from Astro’s generated table types exported from `astro:db`. For full type safety and autocompletion support, use the `asDrizzleTable()` utility to wrap your table definitions in the seed file. | ||
|
||
```js | ||
// config.ts | ||
import { defineTable, column } from 'astro:db'; | ||
|
||
export const Pets = defineTable({ | ||
columns: { | ||
name: column.text(), | ||
age: column.number(), | ||
}, | ||
}); | ||
``` | ||
|
||
```js | ||
// seed.ts | ||
import { asDrizzleTable } from '@astrojs/db/utils'; | ||
import { db } from 'astro:db'; | ||
import { Pets } from './config'; | ||
|
||
export default async function() { | ||
// Convert the Pets table into a format ready for querying. | ||
const typeSafePets = asDrizzleTable('Pets', Pets); | ||
|
||
await db.insert(typeSafePets).values([ | ||
{ name: 'Palomita', age: 7 }, | ||
{ name: 'Pan', age: 3.5 }, | ||
]); | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.