From 9f5e9bb4b2d6d3b57ae586a389486a1fda4773cc Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Fri, 26 Jan 2024 14:21:51 -0500 Subject: [PATCH] Expose the database to the build output --- packages/db/src/integration.ts | 3 ++- packages/db/src/vite-plugin-db.ts | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/db/src/integration.ts b/packages/db/src/integration.ts index 9c23639e28..f94b4fc2a4 100644 --- a/packages/db/src/integration.ts +++ b/packages/db/src/integration.ts @@ -4,7 +4,7 @@ import { vitePluginInjectEnvTs } from './vite-plugin-inject-env-ts.js'; import { typegen } from './typegen.js'; import { existsSync } from 'fs'; import { mkdir, rm, writeFile } from 'fs/promises'; -import { getLocalDbUrl } from './consts.js'; +import { getLocalDbUrl, DB_PATH } from './consts.js'; import { createLocalDatabaseClient, setupDbTables } from './internal.js'; import { astroConfigWithDbSchema } from './config.js'; import { getAstroStudioEnv, type VitePlugin } from './utils.js'; @@ -73,6 +73,7 @@ export function integration(): AstroIntegration { updateConfig({ vite: { + assetsInclude: [DB_PATH], plugins: [dbPlugin, vitePluginInjectEnvTs(config)], }, }); diff --git a/packages/db/src/vite-plugin-db.ts b/packages/db/src/vite-plugin-db.ts index fcc09dbe86..6dee73aba8 100644 --- a/packages/db/src/vite-plugin-db.ts +++ b/packages/db/src/vite-plugin-db.ts @@ -1,6 +1,7 @@ import { DRIZZLE_MOD_IMPORT, INTERNAL_MOD_IMPORT, VIRTUAL_MODULE_ID, DB_PATH } from './consts.js'; import type { DBCollections } from './types.js'; import type { VitePlugin } from './utils.js'; +import fs from 'node:fs'; const resolvedVirtualModuleId = '\0' + VIRTUAL_MODULE_ID; @@ -33,6 +34,17 @@ export function vitePluginDb( } return getVirtualModContents(params); }, + async buildEnd() { + // For local use, emit the database into the output + if('dbUrl' in params) { + const data = await fs.promises.readFile(new URL(params.dbUrl)); + this.emitFile({ + fileName: 'content.db', + source: data, + type: 'asset' + }); + } + } }; }