Skip to main content

text_document_common/direct_access/use_cases/
get.rs

1// Generated by Qleany v1.4.8 from common_da_use_cases_get.tera
2
3use super::traits::ReadUoWFactory;
4use crate::types::EntityId;
5use anyhow::Result;
6
7pub struct GetUseCase<F: ReadUoWFactory> {
8    uow_factory: F,
9}
10
11impl<F: ReadUoWFactory> GetUseCase<F> {
12    pub fn new(uow_factory: F) -> Self {
13        GetUseCase { uow_factory }
14    }
15
16    pub fn execute(&self, id: &EntityId) -> Result<Option<F::Entity>> {
17        let uow = self.uow_factory.create();
18        uow.begin_transaction()?;
19        let entity_option = uow.get(id)?;
20        uow.end_transaction()?;
21        Ok(entity_option)
22    }
23
24    pub fn execute_multi(&self, ids: &[EntityId]) -> Result<Vec<Option<F::Entity>>> {
25        if ids.is_empty() {
26            return Ok(Vec::new());
27        }
28        let uow = self.uow_factory.create();
29        uow.begin_transaction()?;
30        let entities = uow.get_multi(ids)?;
31        uow.end_transaction()?;
32        Ok(entities)
33    }
34
35    pub fn execute_all(&self) -> Result<Vec<F::Entity>> {
36        let uow = self.uow_factory.create();
37        uow.begin_transaction()?;
38        let entities = uow.get_all()?;
39        uow.end_transaction()?;
40        Ok(entities)
41    }
42}