pub struct DatabaseService { /* private fields */ }Expand description
Database service - handles all database CRUD operations
Implementations§
Source§impl DatabaseService
impl DatabaseService
pub fn new(repository: DocumentRepository) -> Self
Sourcepub fn create_document(&mut self, document: NewDocument) -> Result<Document>
pub fn create_document(&mut self, document: NewDocument) -> Result<Document>
Create a new document in the database
Sourcepub fn find_by_filepath(&mut self, filepath: &str) -> Result<Option<Document>>
pub fn find_by_filepath(&mut self, filepath: &str) -> Result<Option<Document>>
Find a document by filepath
Sourcepub fn find_by_short_code(
&mut self,
short_code: &str,
) -> Result<Option<Document>>
pub fn find_by_short_code( &mut self, short_code: &str, ) -> Result<Option<Document>>
Find a document by short code
Sourcepub fn update_document(
&mut self,
filepath: &str,
document: &Document,
) -> Result<Document>
pub fn update_document( &mut self, filepath: &str, document: &Document, ) -> Result<Document>
Update an existing document
Sourcepub fn delete_document(&mut self, filepath: &str) -> Result<bool>
pub fn delete_document(&mut self, filepath: &str) -> Result<bool>
Delete a document from the database
Sourcepub fn search_documents(&mut self, query: &str) -> Result<Vec<Document>>
pub fn search_documents(&mut self, query: &str) -> Result<Vec<Document>>
Search documents using full-text search
Sourcepub fn search_documents_unarchived(
&mut self,
query: &str,
) -> Result<Vec<Document>>
pub fn search_documents_unarchived( &mut self, query: &str, ) -> Result<Vec<Document>>
Search non-archived documents using full-text search
Sourcepub fn find_by_type(&mut self, doc_type: DocumentType) -> Result<Vec<Document>>
pub fn find_by_type(&mut self, doc_type: DocumentType) -> Result<Vec<Document>>
Get all documents of a specific type
Sourcepub fn find_by_tag(&mut self, tag: &str) -> Result<Vec<Document>>
pub fn find_by_tag(&mut self, tag: &str) -> Result<Vec<Document>>
Get documents with a specific tag
Get all tags for a specific document
Sourcepub fn find_children(&mut self, parent_id: &str) -> Result<Vec<Document>>
pub fn find_children(&mut self, parent_id: &str) -> Result<Vec<Document>>
Get all children of a document
Sourcepub fn find_parent(&mut self, child_id: &str) -> Result<Option<Document>>
pub fn find_parent(&mut self, child_id: &str) -> Result<Option<Document>>
Get the parent of a document
Sourcepub fn create_relationship(
&mut self,
parent_id: &str,
child_id: &str,
parent_filepath: &str,
child_filepath: &str,
) -> Result<()>
pub fn create_relationship( &mut self, parent_id: &str, child_id: &str, parent_filepath: &str, child_filepath: &str, ) -> Result<()>
Create a parent-child relationship
Sourcepub fn document_exists(&mut self, filepath: &str) -> Result<bool>
pub fn document_exists(&mut self, filepath: &str) -> Result<bool>
Check if a document exists by filepath
Sourcepub fn count_by_type(&mut self, doc_type: DocumentType) -> Result<usize>
pub fn count_by_type(&mut self, doc_type: DocumentType) -> Result<usize>
Get document count by type
Sourcepub fn get_all_id_filepath_pairs(&mut self) -> Result<Vec<(String, String)>>
pub fn get_all_id_filepath_pairs(&mut self) -> Result<Vec<(String, String)>>
Get all document IDs and their filepaths (useful for validation)
Sourcepub fn find_by_strategy_id(
&mut self,
strategy_id: &str,
) -> Result<Vec<Document>>
pub fn find_by_strategy_id( &mut self, strategy_id: &str, ) -> Result<Vec<Document>>
Get all documents belonging to a strategy
Sourcepub fn find_by_initiative_id(
&mut self,
initiative_id: &str,
) -> Result<Vec<Document>>
pub fn find_by_initiative_id( &mut self, initiative_id: &str, ) -> Result<Vec<Document>>
Get all documents belonging to an initiative
Sourcepub fn find_strategy_hierarchy(
&mut self,
strategy_id: &str,
) -> Result<Vec<Document>>
pub fn find_strategy_hierarchy( &mut self, strategy_id: &str, ) -> Result<Vec<Document>>
Get all documents in a strategy hierarchy (strategy + its initiatives + their tasks)
Sourcepub fn find_strategy_hierarchy_by_short_code(
&mut self,
strategy_short_code: &str,
) -> Result<Vec<Document>>
pub fn find_strategy_hierarchy_by_short_code( &mut self, strategy_short_code: &str, ) -> Result<Vec<Document>>
Get all documents in a strategy hierarchy by short code (strategy + its initiatives + their tasks)
Sourcepub fn find_initiative_hierarchy(
&mut self,
initiative_id: &str,
) -> Result<Vec<Document>>
pub fn find_initiative_hierarchy( &mut self, initiative_id: &str, ) -> Result<Vec<Document>>
Get all documents in an initiative hierarchy (initiative + its tasks)
Sourcepub fn find_initiative_hierarchy_by_short_code(
&mut self,
initiative_short_code: &str,
) -> Result<Vec<Document>>
pub fn find_initiative_hierarchy_by_short_code( &mut self, initiative_short_code: &str, ) -> Result<Vec<Document>>
Get all documents in an initiative hierarchy by short code (initiative + its tasks)
Sourcepub fn generate_short_code(&mut self, doc_type: &str) -> Result<String>
pub fn generate_short_code(&mut self, doc_type: &str) -> Result<String>
Generate a short code for a document type (requires db_path)
Auto Trait Implementations§
impl Freeze for DatabaseService
impl !RefUnwindSafe for DatabaseService
impl Send for DatabaseService
impl !Sync for DatabaseService
impl Unpin for DatabaseService
impl !UnwindSafe for DatabaseService
Blanket Implementations§
Source§impl<T> AggregateExpressionMethods for T
impl<T> AggregateExpressionMethods for T
Source§fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
DISTINCT modifier for aggregate functions Read moreSource§fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
ALL modifier for aggregate functions Read moreSource§fn aggregate_filter<P>(self, f: P) -> Self::Output
fn aggregate_filter<P>(self, f: P) -> Self::Output
Source§fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
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> IntoSql for T
impl<T> IntoSql for T
Source§fn into_sql<T>(self) -> Self::Expression
fn into_sql<T>(self) -> Self::Expression
self to an expression for Diesel’s query builder. Read moreSource§fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
&self to an expression for Diesel’s query builder. Read more