Skip to main content

SetDefaultRoleStatement

Struct SetDefaultRoleStatement 

Source
pub struct SetDefaultRoleStatement {
    pub role_spec: Option<DefaultRoleSpec>,
    pub user_names: Vec<String>,
}
Expand description

SET DEFAULT ROLE statement builder (MySQL only)

This struct provides a fluent API for building SET DEFAULT ROLE statements. This is a MySQL-specific feature.

§MySQL

MySQL SET DEFAULT ROLE sets which roles are activated by default when users connect. Supports:

  • Specific roles: SET DEFAULT ROLE role1, role2 TO user
  • All roles: SET DEFAULT ROLE ALL TO user
  • No roles: SET DEFAULT ROLE NONE TO user

§Examples

Set specific default roles:

use reinhardt_query::dcl::{SetDefaultRoleStatement, DefaultRoleSpec};

let stmt = SetDefaultRoleStatement::new()
    .roles(DefaultRoleSpec::RoleList(vec!["app_role".to_string()]))
    .user("app_user@localhost");

Set all roles as default:

use reinhardt_query::dcl::{SetDefaultRoleStatement, DefaultRoleSpec};

let stmt = SetDefaultRoleStatement::new()
    .roles(DefaultRoleSpec::All)
    .users(vec!["user1@localhost".to_string(), "user2@localhost".to_string()]);

Clear default roles:

use reinhardt_query::dcl::{SetDefaultRoleStatement, DefaultRoleSpec};

let stmt = SetDefaultRoleStatement::new()
    .roles(DefaultRoleSpec::None)
    .user("app_user@localhost");

Fields§

§role_spec: Option<DefaultRoleSpec>

Role specification (ALL, NONE, or specific roles)

§user_names: Vec<String>

Target users (with optional @host)

Implementations§

Source§

impl SetDefaultRoleStatement

Source

pub fn new() -> Self

Create a new SET DEFAULT ROLE statement

§Examples
use reinhardt_query::dcl::SetDefaultRoleStatement;

let stmt = SetDefaultRoleStatement::new();
Source

pub fn roles(self, spec: DefaultRoleSpec) -> Self

Set the role specification

§Examples
use reinhardt_query::dcl::{SetDefaultRoleStatement, DefaultRoleSpec};

let stmt = SetDefaultRoleStatement::new()
    .roles(DefaultRoleSpec::RoleList(vec!["app_role".to_string()]));
Source

pub fn user(self, name: impl Into<String>) -> Self

Add a single target user

§Examples
use reinhardt_query::dcl::{SetDefaultRoleStatement, DefaultRoleSpec};

let stmt = SetDefaultRoleStatement::new()
    .roles(DefaultRoleSpec::All)
    .user("app_user@localhost");
Source

pub fn users(self, names: Vec<String>) -> Self

Set all target users at once

§Examples
use reinhardt_query::dcl::{SetDefaultRoleStatement, DefaultRoleSpec};

let stmt = SetDefaultRoleStatement::new()
    .roles(DefaultRoleSpec::All)
    .users(vec!["user1@localhost".to_string(), "user2@localhost".to_string()]);
Source

pub fn validate(&self) -> Result<(), String>

Validate the SET DEFAULT ROLE statement

§Validation Rules
  1. Role specification must be set
  2. At least one user must be specified
  3. For RoleList variant, role list cannot be empty
§Examples
use reinhardt_query::dcl::{SetDefaultRoleStatement, DefaultRoleSpec};

let stmt = SetDefaultRoleStatement::new()
    .roles(DefaultRoleSpec::All)
    .user("app_user@localhost");

assert!(stmt.validate().is_ok());
use reinhardt_query::dcl::SetDefaultRoleStatement;

let stmt = SetDefaultRoleStatement::new();
assert!(stmt.validate().is_err());

Trait Implementations§

Source§

impl Clone for SetDefaultRoleStatement

Source§

fn clone(&self) -> SetDefaultRoleStatement

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 SetDefaultRoleStatement

Source§

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

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

impl Default for SetDefaultRoleStatement

Source§

fn default() -> SetDefaultRoleStatement

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

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.