Skip to main content

CreateFunctionStatement

Struct CreateFunctionStatement 

Source
pub struct CreateFunctionStatement { /* private fields */ }
Expand description

CREATE FUNCTION statement builder

This struct provides a fluent API for constructing CREATE FUNCTION queries.

§Examples

use reinhardt_query::prelude::*;
use reinhardt_query::types::function::{FunctionLanguage, FunctionBehavior};

// CREATE FUNCTION my_func() RETURNS integer LANGUAGE SQL AS 'SELECT 1'
let query = Query::create_function()
    .name("my_func")
    .returns("integer")
    .language(FunctionLanguage::Sql)
    .body("SELECT 1");

// CREATE OR REPLACE FUNCTION my_func(a integer) RETURNS integer
// LANGUAGE PLPGSQL IMMUTABLE AS 'BEGIN RETURN a + 1; END;'
let query = Query::create_function()
    .name("my_func")
    .or_replace()
    .add_parameter("a", "integer")
    .returns("integer")
    .language(FunctionLanguage::PlPgSql)
    .behavior(FunctionBehavior::Immutable)
    .body("BEGIN RETURN a + 1; END;");

Implementations§

Source§

impl CreateFunctionStatement

Source

pub fn new() -> Self

Create a new CREATE FUNCTION statement

§Examples
use reinhardt_query::prelude::*;

let query = Query::create_function();
Source

pub fn take(&mut self) -> Self

Take the ownership of data in the current CreateFunctionStatement

Source

pub fn name<N>(&mut self, name: N) -> &mut Self
where N: IntoIden,

Set the function name

§Examples
use reinhardt_query::prelude::*;

let query = Query::create_function()
    .name("my_func");
Source

pub fn or_replace(&mut self) -> &mut Self

Add OR REPLACE clause

§Examples
use reinhardt_query::prelude::*;

let query = Query::create_function()
    .name("my_func")
    .or_replace();
Source

pub fn add_parameter<N: IntoIden, T: Into<String>>( &mut self, name: N, param_type: T, ) -> &mut Self

Add a function parameter

§Examples
use reinhardt_query::prelude::*;

let query = Query::create_function()
    .name("my_func")
    .add_parameter("param1", "integer")
    .add_parameter("param2", "text");
Source

pub fn returns<T: Into<String>>(&mut self, returns: T) -> &mut Self

Set RETURNS type

§Examples
use reinhardt_query::prelude::*;

let query = Query::create_function()
    .name("my_func")
    .returns("integer");
Source

pub fn language(&mut self, language: FunctionLanguage) -> &mut Self

Set LANGUAGE

§Examples
use reinhardt_query::prelude::*;
use reinhardt_query::types::function::FunctionLanguage;

let query = Query::create_function()
    .name("my_func")
    .language(FunctionLanguage::PlPgSql);
Source

pub fn behavior(&mut self, behavior: FunctionBehavior) -> &mut Self

Set function behavior (IMMUTABLE/STABLE/VOLATILE)

§Examples
use reinhardt_query::prelude::*;
use reinhardt_query::types::function::FunctionBehavior;

let query = Query::create_function()
    .name("my_func")
    .behavior(FunctionBehavior::Immutable);
Source

pub fn security(&mut self, security: FunctionSecurity) -> &mut Self

Set security context (DEFINER/INVOKER)

§Examples
use reinhardt_query::prelude::*;
use reinhardt_query::types::function::FunctionSecurity;

let query = Query::create_function()
    .name("my_func")
    .security(FunctionSecurity::Definer);
Source

pub fn body<B: Into<String>>(&mut self, body: B) -> &mut Self

Set function body (AS clause)

§Security Warning

The function body is embedded directly into the CREATE FUNCTION statement and will be stored in the database. DO NOT pass user input directly to this method, as it could lead to arbitrary code execution.

Only use with trusted, validated code.

§Examples
use reinhardt_query::prelude::*;
use reinhardt_query::types::function::{FunctionLanguage, FunctionBehavior};

// ✅ SAFE: Static code
let query = Query::create_function()
    .name("my_func")
    .returns("integer")
    .language(FunctionLanguage::Sql)
    .body("SELECT 1");

// ❌ UNSAFE: User input
// let query = Query::create_function()
//     .name("user_func")
//     .body(&user_code);

Trait Implementations§

Source§

impl Clone for CreateFunctionStatement

Source§

fn clone(&self) -> CreateFunctionStatement

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CreateFunctionStatement

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CreateFunctionStatement

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl QueryStatementBuilder for CreateFunctionStatement

Source§

fn build_any(&self, query_builder: &dyn QueryBuilderTrait) -> (String, Values)

Build SQL statement for a database backend and collect query parameters Read more
Source§

fn to_string<T: QueryBuilderTrait>(&self, query_builder: T) -> String

Build SQL statement for a database backend and return SQL string with values inlined as SQL literals. Read more
Source§

fn build<T: QueryBuilderTrait>(&self, query_builder: T) -> (String, Values)

Build SQL statement with parameter collection Read more
Source§

impl QueryStatementWriter for CreateFunctionStatement

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.