pub struct ProjectionName(/* private fields */);Expand description
Value Object: ProjectionName
Represents the name of a projection in the event store. Projections are materialized views derived from event streams.
Domain Rules:
- Cannot be empty
- Must be between 1 and 100 characters
- Must be alphanumeric with hyphens/underscores only
- Case-sensitive
- Immutable once created
- Must be unique within a tenant
This is a Value Object:
- Defined by its value, not identity
- Immutable
- Self-validating
- Compared by value equality
Implementations§
Source§impl ProjectionName
impl ProjectionName
Sourcepub fn new(value: String) -> Result<Self>
pub fn new(value: String) -> Result<Self>
Create a new ProjectionName with validation
§Errors
Returns error if:
- Name is empty
- Name is longer than 100 characters
- Name contains invalid characters
§Examples
use allsource_core::domain::value_objects::ProjectionName;
let name = ProjectionName::new("user_snapshot".to_string()).unwrap();
assert_eq!(name.as_str(), "user_snapshot");Sourcepub fn into_inner(self) -> String
pub fn into_inner(self) -> String
Get the inner String (consumes self)
Sourcepub fn starts_with(&self, prefix: &str) -> bool
pub fn starts_with(&self, prefix: &str) -> bool
Check if this name starts with a prefix
Useful for grouping projections by naming convention.
§Examples
use allsource_core::domain::value_objects::ProjectionName;
let name = ProjectionName::new("user_snapshot".to_string()).unwrap();
assert!(name.starts_with("user"));
assert!(!name.starts_with("order"));Sourcepub fn ends_with(&self, suffix: &str) -> bool
pub fn ends_with(&self, suffix: &str) -> bool
Check if this name ends with a suffix
Useful for identifying projection types by naming convention.
§Examples
use allsource_core::domain::value_objects::ProjectionName;
let name = ProjectionName::new("user_snapshot".to_string()).unwrap();
assert!(name.ends_with("snapshot"));
assert!(!name.ends_with("counter"));Trait Implementations§
Source§impl AsRef<str> for ProjectionName
impl AsRef<str> for ProjectionName
Source§impl Clone for ProjectionName
impl Clone for ProjectionName
Source§fn clone(&self) -> ProjectionName
fn clone(&self) -> ProjectionName
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ProjectionName
impl Debug for ProjectionName
Source§impl<'de> Deserialize<'de> for ProjectionName
impl<'de> Deserialize<'de> for ProjectionName
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Display for ProjectionName
impl Display for ProjectionName
Source§impl Hash for ProjectionName
impl Hash for ProjectionName
Source§impl PartialEq for ProjectionName
impl PartialEq for ProjectionName
Source§impl Serialize for ProjectionName
impl Serialize for ProjectionName
Source§impl TryFrom<&str> for ProjectionName
impl TryFrom<&str> for ProjectionName
Source§impl TryFrom<String> for ProjectionName
impl TryFrom<String> for ProjectionName
impl Eq for ProjectionName
impl StructuralPartialEq for ProjectionName
Auto Trait Implementations§
impl Freeze for ProjectionName
impl RefUnwindSafe for ProjectionName
impl Send for ProjectionName
impl Sync for ProjectionName
impl Unpin for ProjectionName
impl UnwindSafe for ProjectionName
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.