Home / Function/ resolveDbConfig() — astro Function Reference

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

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