Skip to main content

systemprompt_runtime/
validation.rs

1//! System pre-flight validation: database URL shape and connectivity.
2//!
3//! Copyright (c) systemprompt.io — Business Source License 1.1.
4//! See <https://systemprompt.io> for licensing details.
5
6use crate::AppContext;
7use crate::error::{RuntimeError, RuntimeResult};
8use systemprompt_database::validate_database_connection;
9
10pub async fn validate_system(ctx: &AppContext) -> RuntimeResult<()> {
11    validate_database(ctx).await
12}
13
14async fn validate_database(ctx: &AppContext) -> RuntimeResult<()> {
15    validate_database_url(&ctx.config().database_url)?;
16    validate_database_connection(ctx.db_pool().as_ref()).await?;
17    Ok(())
18}
19
20pub fn validate_database_url(database_url: &str) -> RuntimeResult<()> {
21    if database_url.is_empty() {
22        return Err(RuntimeError::EmptyDatabaseUrl);
23    }
24    if database_url.starts_with("postgresql://") || database_url.starts_with("postgres://") {
25        return Ok(());
26    }
27    Err(RuntimeError::UnsupportedDatabaseUrl)
28}