resolveDbConfig() — astro Function Reference
Architecture documentation for the resolveDbConfig() function in load-file.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD 2e0865dc_19f8_a964_71df_d063d209e435["resolveDbConfig()"] c880535e_510d_6ed5_4280_3abb271db261["load-file.ts"] 2e0865dc_19f8_a964_71df_d063d209e435 -->|defined in| c880535e_510d_6ed5_4280_3abb271db261 9044229a_6784_8c06_1565_918aecd1c713["loadUserConfigFile()"] 2e0865dc_19f8_a964_71df_d063d209e435 -->|calls| 9044229a_6784_8c06_1565_918aecd1c713 928f4696_4f32_3d8f_b229_f413d0dece14["loadIntegrationConfigFile()"] 2e0865dc_19f8_a964_71df_d063d209e435 -->|calls| 928f4696_4f32_3d8f_b229_f413d0dece14 style 2e0865dc_19f8_a964_71df_d063d209e435 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/db/src/core/load-file.ts lines 18–69
export async function resolveDbConfig({
root,
integrations,
}: Pick<AstroConfig, 'root' | 'integrations'>) {
const { mod, dependencies } = await loadUserConfigFile(root);
const userDbConfig = dbConfigSchema.parse(mod?.default ?? {}, { error: errorMap });
/** Resolved `astro:db` config including tables provided by integrations. */
const dbConfig = { tables: userDbConfig.tables ?? {} };
// Collect additional config and seed files from integrations.
const integrationDbConfigPaths: Array<{ name: string; configEntrypoint: string | URL }> = [];
const integrationSeedPaths: Array<string | URL> = [];
for (const integration of integrations) {
const { name, hooks } = integration;
if (hooks['astro:db:setup']) {
hooks['astro:db:setup']({
extendDb({ configEntrypoint, seedEntrypoint }) {
if (configEntrypoint) {
integrationDbConfigPaths.push({ name, configEntrypoint });
}
if (seedEntrypoint) {
integrationSeedPaths.push(seedEntrypoint);
}
},
});
}
}
for (const { name, configEntrypoint } of integrationDbConfigPaths) {
// TODO: config file dependencies are not tracked for integrations for now.
const loadedConfig = await loadIntegrationConfigFile(root, configEntrypoint);
const integrationDbConfig = dbConfigSchema.parse(loadedConfig.mod?.default ?? {}, {
error: errorMap,
});
for (const key in integrationDbConfig.tables) {
if (key in dbConfig.tables) {
const isUserConflict = key in (userDbConfig.tables ?? {});
throw new Error(INTEGRATION_TABLE_CONFLICT_ERROR(name, key, isUserConflict));
} else {
dbConfig.tables[key] = integrationDbConfig.tables[key];
}
}
}
return {
/** Resolved `astro:db` config, including tables added by integrations. */
dbConfig,
/** Dependencies imported into the user config file. */
dependencies,
/** Additional `astro:db` seed file paths provided by integrations. */
integrationSeedPaths,
};
}
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does resolveDbConfig() do?
resolveDbConfig() is a function in the astro codebase, defined in packages/db/src/core/load-file.ts.
Where is resolveDbConfig() defined?
resolveDbConfig() is defined in packages/db/src/core/load-file.ts at line 18.
What does resolveDbConfig() call?
resolveDbConfig() calls 2 function(s): loadIntegrationConfigFile, loadUserConfigFile.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free