use sqlx::{PgConnection, PgPool};
use systemprompt_traits::RepositoryError;
pub const PLANE_NOT_APPLIED_HINT: &str = "run `systemprompt admin config apply`";
pub async fn find_config_plane_applied(
pool: &PgPool,
plane: &str,
) -> Result<bool, RepositoryError> {
let applied = sqlx::query_scalar!(
r#"SELECT EXISTS (SELECT 1 FROM config_plane_applied WHERE plane = $1) AS "applied!""#,
plane,
)
.fetch_one(pool)
.await?;
Ok(applied)
}
pub async fn record_config_plane_applied(
conn: &mut PgConnection,
plane: &str,
) -> Result<(), RepositoryError> {
sqlx::query!(
"INSERT INTO config_plane_applied (plane) VALUES ($1)
ON CONFLICT (plane) DO UPDATE SET applied_at = NOW()",
plane,
)
.execute(conn)
.await?;
Ok(())
}