Skip to main content

prax_schema/ast/
procedure.rs

1use serde::{Deserialize, Serialize};
2
3use super::{Ident, Span};
4
5/// A stored procedure or function definition in the schema AST.
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7pub struct Procedure {
8    pub name: Ident,
9    pub is_function: bool,
10    pub body: String,
11    pub span: Span,
12    #[serde(default, skip_serializing_if = "Option::is_none")]
13    pub source_id: Option<crate::loader::SourceId>,
14}
15
16impl Procedure {
17    pub fn new(name: Ident, is_function: bool, body: String, span: Span) -> Self {
18        Self {
19            name,
20            is_function,
21            body,
22            span,
23            source_id: None,
24        }
25    }
26
27    pub fn name(&self) -> &str {
28        self.name.as_str()
29    }
30}