Skip to main content

sql_fun_server_api/
initialize_schema.rs

1use std::path::PathBuf;
2
3use crate::{AnalysisProbrem, Collection, ContextHandle};
4
5/// Engine dialect selecting SQL syntax perser.
6#[derive(serde::Serialize, serde::Deserialize)]
7pub enum EngineDialect {
8    /// `PostgreSQL` valiant, selects parser as `pg_query`
9    PostgreSQL,
10}
11
12/// Selecting database builtin objects
13#[derive(serde::Serialize, serde::Deserialize)]
14pub enum EngineVersion {
15    /// `PostgreSQL` and version string.
16    PostgreSQL(String),
17}
18
19/// `PostgreSQL` extension
20#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
21pub struct ExtensionSpec {
22    /// Name for extension
23    extension_name: String,
24    /// Version for extension
25    extension_version: String,
26}
27
28/// Load schema dump and initialize semantic analysis context
29#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
30pub struct InitializeSchemaArgs {
31    /// SQL dialect for schema
32    engine_dialect: EngineDialect,
33
34    /// Used for loading builtin schema objects
35    engine_version: EngineVersion,
36
37    /// Enabled extensions
38    extensions: Vec<ExtensionSpec>,
39
40    /// Search path
41    search_path: Vec<String>,
42
43    /// schema dump file
44    schema_dump: PathBuf,
45}
46
47/// schema context
48#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
49pub struct SchemaContext {
50    /// context handle
51    context_handle: Option<ContextHandle>,
52
53    /// SHA 256 hash for schema dump
54    schema_dump_hash: String,
55
56    /// schema analysis problems
57    problems: Collection<AnalysisProbrem>,
58}