pub struct PayrollEntryRepository(/* private fields */);Expand description
Repository for PayrollEntry entities.
All standard CRUD, soft-delete, pagination, and bulk methods are
provided automatically via Deref to backbone_orm::GenericCrudRepository.
Implementations§
Source§impl PayrollEntryRepository
Hand-written PayrollEntry SQL. Lives here (not in the write service) per the module’s 4-layer rule:
services orchestrate and own the unit of work, repositories hold the SQL.
impl PayrollEntryRepository
Hand-written PayrollEntry SQL. Lives here (not in the write service) per the module’s 4-layer rule: services orchestrate and own the unit of work, repositories hold the SQL.
Sourcepub async fn insert_entry(
&self,
pool: &PgPool,
e: &NewPayrollEntryRow,
) -> Result<(), Error>
pub async fn insert_entry( &self, pool: &PgPool, e: &NewPayrollEntryRow, ) -> Result<(), Error>
Open a payroll run for a period, as a draft with zeroed totals.
A write outside any transaction: takes the pool and runs execute_scoped so the composing
service’s tenancy RLS fence applies (ADR-0029). The caller relays the ambient org request
scope onto its own transaction first, or runs under HTTP where the request-dedicated
connection already carries it; an undecorated deployment is unfenced by design.
Returns the raw sqlx::Error deliberately: the caller inspects it for a unique violation to
turn a second run on the same (org unit, year, month) into a domain error.
Sourcepub async fn find_state_by_id(
&self,
pool: &PgPool,
run_id: Uuid,
) -> Result<Option<RunStateRow>, Error>
pub async fn find_state_by_id( &self, pool: &PgPool, run_id: Uuid, ) -> Result<Option<RunStateRow>, Error>
Read a live run’s status — the slip path’s lookup. Ok(None) = not found in scope.
ID-only: fetch_optional_row_scoped rides a connection carrying the caller’s org request
scope (ADR-0029), so another unit’s run simply isn’t found. The caller relays the same
ambient scope onto its own write transaction.
Sourcepub async fn find_period_by_id(
&self,
pool: &PgPool,
run_id: Uuid,
) -> Result<Option<RunPeriodRow>, Error>
pub async fn find_period_by_id( &self, pool: &PgPool, run_id: Uuid, ) -> Result<Option<RunPeriodRow>, Error>
The run’s period + state, read ID-only under the request scope (same pattern as
Self::find_state_by_id).
Sourcepub async fn mark_processed(
&self,
pool: &PgPool,
run_id: Uuid,
total_gross: Decimal,
total_deductions: Decimal,
total_net: Decimal,
) -> Result<u64, Error>
pub async fn mark_processed( &self, pool: &PgPool, run_id: Uuid, total_gross: Decimal, total_deductions: Decimal, total_net: Decimal, ) -> Result<u64, Error>
Record the rolled-up totals and move draft → processed. Returns rows affected: 0 = not draft.
ID-only: execute_scoped rides the request-dedicated connection’s org request scope
(ADR-0029). A caller driving its own transaction relays the ambient scope onto it first
(bind_org_scope_on); an undecorated deployment is unfenced by design.
Sourcepub async fn find_for_posting(
&self,
pool: &PgPool,
run_id: Uuid,
) -> Result<Option<RunPostingRow>, Error>
pub async fn find_for_posting( &self, pool: &PgPool, run_id: Uuid, ) -> Result<Option<RunPostingRow>, Error>
Read a live run for GL posting. Ok(None) = not found in scope.
ID-only: under HTTP the request-dedicated connection carries the org request scope (ADR-0029); a caller driving its own transaction relays the ambient scope onto it first.
Sourcepub async fn mark_posted(
&self,
pool: &PgPool,
run_id: Uuid,
posting_date: DateTime<Utc>,
journal_id: Uuid,
post_id: Uuid,
) -> Result<u64, Error>
pub async fn mark_posted( &self, pool: &PgPool, run_id: Uuid, posting_date: DateTime<Utc>, journal_id: Uuid, post_id: Uuid, ) -> Result<u64, Error>
Claim the processed → posted transition exactly once, recording the GL’s echoed journal + post.
Returns rows affected: 0 = a racing caller already posted it, so this one re-reads that journal.
This gate is what makes a run post AT MOST once.
A write outside any transaction: it rides the caller’s org request scope (ADR-0029), relayed onto the caller’s transaction or carried by the request-dedicated connection.
Methods from Deref<Target = GenericCrudRepository<PayrollEntry, SoftDelete>>§
pub fn pool(&self) -> &Pool<Postgres>
pub fn table_name(&self) -> &str
Sourcepub async fn create(&self, entity: &T) -> Result<T, Error>
pub async fn create(&self, entity: &T) -> Result<T, Error>
Insert a new entity row and return the created row.
Sourcepub async fn bulk_create(&self, entities: &[T]) -> Result<Vec<T>, Error>
pub async fn bulk_create(&self, entities: &[T]) -> Result<Vec<T>, Error>
Insert multiple entity rows inside a single transaction.
Sourcepub async fn run_filtered_query(
&self,
pagination: PaginationParams,
base_condition: Option<&str>,
filters: &HashMap<String, String>,
column_types: &HashMap<String, String>,
search_fields: &[&str],
) -> Result<PaginatedResult<T>, Error>
pub async fn run_filtered_query( &self, pagination: PaginationParams, base_condition: Option<&str>, filters: &HashMap<String, String>, column_types: &HashMap<String, String>, search_fields: &[&str], ) -> Result<PaginatedResult<T>, Error>
Execute a filtered / paginated query against this entity’s table.
base_condition — when Some, it is inserted as the __base_condition
filter key which the ORM injects verbatim into the WHERE clause. Use
this to add soft-delete guards without touching the caller-supplied
filters.
NOTE: prefer the *_scoped entry points for anything a client can reach —
they compose the company fence into this condition. This raw form applies no
fence and is for internal/job callers that have already established scope.
Sourcepub async fn run_aggregate_query(
&self,
spec: &AggregateSpec,
base_condition: Option<&str>,
filters: &HashMap<String, String>,
column_types: &HashMap<String, String>,
search_fields: &[&str],
) -> Result<AggregateResult, Error>
pub async fn run_aggregate_query( &self, spec: &AggregateSpec, base_condition: Option<&str>, filters: &HashMap<String, String>, column_types: &HashMap<String, String>, search_fields: &[&str], ) -> Result<AggregateResult, Error>
The aggregate twin of Self::run_filtered_query.
Takes the same base_condition so an aggregate is computed over exactly
the row set the matching list would return — a total that counted
soft-deleted rows, or another tenant’s, would be wrong in a way no
caller could see.
Sourcepub async fn find_by_text_field(
&self,
field: &str,
value: &str,
) -> Result<Option<T>, Error>
pub async fn find_by_text_field( &self, field: &str, value: &str, ) -> Result<Option<T>, Error>
Find an active entity by a unique text field.
Filters metadata->>'deleted_at' IS NULL automatically.
Sourcepub async fn exists_by_text_field(
&self,
field: &str,
value: &str,
) -> Result<bool, Error>
pub async fn exists_by_text_field( &self, field: &str, value: &str, ) -> Result<bool, Error>
Check existence by a unique text field (active records only).
Sourcepub async fn find_by_uuid_field(
&self,
field: &str,
value: Uuid,
) -> Result<Option<T>, Error>
pub async fn find_by_uuid_field( &self, field: &str, value: Uuid, ) -> Result<Option<T>, Error>
Find an active entity by a unique UUID field.
Sourcepub async fn exists_by_uuid_field(
&self,
field: &str,
value: Uuid,
) -> Result<bool, Error>
pub async fn exists_by_uuid_field( &self, field: &str, value: Uuid, ) -> Result<bool, Error>
Check existence by a unique UUID field (active records only).
Sourcepub async fn list_paginated_filtered(
&self,
pagination: PaginationParams,
filters: Option<&HashMap<String, String>>,
) -> Result<PaginatedResult<T>, Error>
pub async fn list_paginated_filtered( &self, pagination: PaginationParams, filters: Option<&HashMap<String, String>>, ) -> Result<PaginatedResult<T>, Error>
Paginate active entities with filter and search support.
Requires T: EntityRepoMeta for column type hints and search fields.
Sourcepub async fn aggregate_filtered(
&self,
spec: &AggregateSpec,
filters: Option<&HashMap<String, String>>,
) -> Result<AggregateResult, Error>
pub async fn aggregate_filtered( &self, spec: &AggregateSpec, filters: Option<&HashMap<String, String>>, ) -> Result<AggregateResult, Error>
Group and reduce active entities, skipping the soft-deleted.
Sourcepub async fn list_paginated_filtered_scoped(
&self,
pagination: PaginationParams,
filters: Option<&HashMap<String, String>>,
company: Option<Uuid>,
) -> Result<PaginatedResult<T>, Error>
pub async fn list_paginated_filtered_scoped( &self, pagination: PaginationParams, filters: Option<&HashMap<String, String>>, company: Option<Uuid>, ) -> Result<PaginatedResult<T>, Error>
Paginate active entities, fenced to company.
The company-scoped counterpart of Self::list_paginated_filtered and the one any
client-reachable read should use. Fails closed: a fenced entity with no company
returns MissingCompanyScope rather than every company’s rows.
The fence is ANDed into the same __base_condition the soft-delete guard uses, so
it lands in SQL — which is what keeps total honest. A post-filter in the handler
would fetch limit rows and return the survivors, leaving callers unable to tell
“end of data” from “filtered”, and could not fix COUNT at all.
Sourcepub async fn list_deleted_filtered_scoped(
&self,
pagination: PaginationParams,
filters: Option<&HashMap<String, String>>,
company: Option<Uuid>,
) -> Result<PaginatedResult<T>, Error>
pub async fn list_deleted_filtered_scoped( &self, pagination: PaginationParams, filters: Option<&HashMap<String, String>>, company: Option<Uuid>, ) -> Result<PaginatedResult<T>, Error>
Paginate soft-deleted entities, fenced to company.
/trash is the worse leak of the two: it serves rows whose owners were told the
data is gone. Same fence, same fail-closed contract.
Sourcepub async fn list_deleted_filtered(
&self,
pagination: PaginationParams,
filters: Option<&HashMap<String, String>>,
) -> Result<PaginatedResult<T>, Error>
pub async fn list_deleted_filtered( &self, pagination: PaginationParams, filters: Option<&HashMap<String, String>>, ) -> Result<PaginatedResult<T>, Error>
Paginate soft-deleted entities with filter support.
Sourcepub async fn find_by_id(&self, id: &str) -> Result<Option<T>, Error>
pub async fn find_by_id(&self, id: &str) -> Result<Option<T>, Error>
Find an active (non-deleted) entity by primary key.
Sourcepub async fn find_all(&self) -> Result<Vec<T>, Error>
pub async fn find_all(&self) -> Result<Vec<T>, Error>
Return all active (non-deleted) entities.
Sourcepub async fn update(&self, id: &str, entity: &T) -> Result<Option<T>, Error>
pub async fn update(&self, id: &str, entity: &T) -> Result<Option<T>, Error>
Full update — skips silently if the record is already soft-deleted.
Sourcepub async fn delete(&self, id: &str) -> Result<bool, Error>
pub async fn delete(&self, id: &str) -> Result<bool, Error>
Soft-delete an entity (sets metadata.deleted_at).
Sourcepub async fn exists(&self, id: &str) -> Result<bool, Error>
pub async fn exists(&self, id: &str) -> Result<bool, Error>
Return true if an active entity with the given ID exists.
Sourcepub async fn list_paginated(
&self,
pagination: PaginationParams,
) -> Result<PaginatedResult<T>, Error>
pub async fn list_paginated( &self, pagination: PaginationParams, ) -> Result<PaginatedResult<T>, Error>
Paginate active entities (most-recent-first by ID).
Sourcepub async fn soft_delete(&self, id: &str) -> Result<bool, Error>
pub async fn soft_delete(&self, id: &str) -> Result<bool, Error>
Set metadata.deleted_at to NOW() (soft delete).
Sourcepub async fn restore(&self, id: &str) -> Result<Option<T>, Error>
pub async fn restore(&self, id: &str) -> Result<Option<T>, Error>
Remove deleted_at from metadata, restoring the entity.
Sourcepub async fn list_deleted(
&self,
pagination: PaginationParams,
) -> Result<PaginatedResult<T>, Error>
pub async fn list_deleted( &self, pagination: PaginationParams, ) -> Result<PaginatedResult<T>, Error>
Paginate soft-deleted entities (trash view).
Sourcepub async fn empty_trash(&self) -> Result<u64, Error>
pub async fn empty_trash(&self) -> Result<u64, Error>
Permanently delete all soft-deleted rows (empty trash).
Sourcepub async fn find_deleted_by_id(&self, id: &str) -> Result<Option<T>, Error>
pub async fn find_deleted_by_id(&self, id: &str) -> Result<Option<T>, Error>
Find a soft-deleted entity by primary key.
Sourcepub async fn permanent_delete(&self, id: &str) -> Result<bool, Error>
pub async fn permanent_delete(&self, id: &str) -> Result<bool, Error>
Permanently delete a soft-deleted entity by primary key.
Sourcepub async fn count_active(&self) -> Result<u64, Error>
pub async fn count_active(&self) -> Result<u64, Error>
Count active (non-deleted) entities.
Sourcepub async fn count_deleted(&self) -> Result<u64, Error>
pub async fn count_deleted(&self) -> Result<u64, Error>
Count soft-deleted entities.
Sourcepub async fn bulk_soft_delete(&self, ids: &[String]) -> Result<u64, Error>
pub async fn bulk_soft_delete(&self, ids: &[String]) -> Result<u64, Error>
Soft-delete many active rows atomically.
Sourcepub async fn bulk_restore(&self, ids: &[String]) -> Result<Vec<T>, Error>
pub async fn bulk_restore(&self, ids: &[String]) -> Result<Vec<T>, Error>
Restore many soft-deleted rows atomically, returning the restored rows.
Sourcepub async fn bulk_permanent_delete(&self, ids: &[String]) -> Result<u64, Error>
pub async fn bulk_permanent_delete(&self, ids: &[String]) -> Result<u64, Error>
Permanently delete many soft-deleted rows atomically.
Sourcepub async fn restore_all(&self) -> Result<Vec<T>, Error>
pub async fn restore_all(&self) -> Result<Vec<T>, Error>
Restore every soft-deleted row, returning the restored rows. A single
UPDATE ... RETURNING is atomic, and the returned rows let the service
layer emit a Restored event per entity.
Trait Implementations§
Source§impl CrudRepository<PayrollEntry> for PayrollEntryRepository
impl CrudRepository<PayrollEntry> for PayrollEntryRepository
?include= relations: fetch rows from table by id list, as JSON
(raw row_to_json). table comes from EntityRepoMeta::relations()
(generator-emitted), never client input. Default: no expansion. The
Postgres-backed generated repos override this via impl_crud_repository!.Source§fn create<'life0, 'async_trait>(
&'life0 self,
entity: PayrollEntry,
) -> Pin<Box<dyn Future<Output = Result<PayrollEntry, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create<'life0, 'async_trait>(
&'life0 self,
entity: PayrollEntry,
) -> Pin<Box<dyn Future<Output = Result<PayrollEntry, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn find_by_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn find_by_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn find_by_id_including_deleted<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn find_by_id_including_deleted<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn update<'life0, 'async_trait>(
&'life0 self,
entity: PayrollEntry,
) -> Pin<Box<dyn Future<Output = Result<PayrollEntry, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update<'life0, 'async_trait>(
&'life0 self,
entity: PayrollEntry,
) -> Pin<Box<dyn Future<Output = Result<PayrollEntry, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn soft_delete<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn soft_delete<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn restore<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn restore<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn hard_delete<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn hard_delete<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn list<'life0, 'async_trait>(
&'life0 self,
page: u32,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<(Vec<PayrollEntry>, u64), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list<'life0, 'async_trait>(
&'life0 self,
page: u32,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<(Vec<PayrollEntry>, u64), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn list_filtered<'life0, 'async_trait>(
&'life0 self,
page: u32,
limit: u32,
filters: HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<(Vec<PayrollEntry>, u64), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_filtered<'life0, 'async_trait>(
&'life0 self,
page: u32,
limit: u32,
filters: HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<(Vec<PayrollEntry>, u64), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn list_filtered_with_info<'life0, 'async_trait>(
&'life0 self,
page: u32,
limit: u32,
filters: HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<(Vec<PayrollEntry>, PaginationInfo), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_filtered_with_info<'life0, 'async_trait>(
&'life0 self,
page: u32,
limit: u32,
filters: HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<(Vec<PayrollEntry>, PaginationInfo), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
list_filtered, carrying the pagination info (cursor positions
included) so the HTTP layer can surface keyset paging. Default: the
tuple form with the cursor fields absent; the generated Postgres
repositories override this with the real keyset walk.Source§fn table_name(&self) -> Option<&str>
fn table_name(&self) -> Option<&str>
list_filtered. Read morefn aggregate_filtered<'life0, 'life1, 'async_trait>(
&'life0 self,
spec: &'life1 AggregateSpec,
filters: HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<AggregateResult, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn list_deleted<'life0, 'async_trait>(
&'life0 self,
page: u32,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<(Vec<PayrollEntry>, u64), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_deleted<'life0, 'async_trait>(
&'life0 self,
page: u32,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<(Vec<PayrollEntry>, u64), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn count<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn count<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn count_deleted<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn count_deleted<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn bulk_create<'life0, 'async_trait>(
&'life0 self,
entities: Vec<PayrollEntry>,
) -> Pin<Box<dyn Future<Output = Result<Vec<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn bulk_create<'life0, 'async_trait>(
&'life0 self,
entities: Vec<PayrollEntry>,
) -> Pin<Box<dyn Future<Output = Result<Vec<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn empty_trash<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn empty_trash<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn bulk_soft_delete<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<u64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn bulk_soft_delete<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<u64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn bulk_restore<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<Vec<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn bulk_restore<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<Vec<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn bulk_hard_delete<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<u64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn bulk_hard_delete<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<u64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn restore_all<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn restore_all<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn bulk_update<'life0, 'async_trait>(
&'life0 self,
entities: Vec<PayrollEntry>,
) -> Pin<Box<dyn Future<Output = Result<Vec<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn bulk_update<'life0, 'async_trait>(
&'life0 self,
entities: Vec<PayrollEntry>,
) -> Pin<Box<dyn Future<Output = Result<Vec<PayrollEntry>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§impl Deref for PayrollEntryRepository
impl Deref for PayrollEntryRepository
Source§type Target = GenericCrudRepository<PayrollEntry>
type Target = GenericCrudRepository<PayrollEntry>
Auto Trait Implementations§
impl !RefUnwindSafe for PayrollEntryRepository
impl !UnwindSafe for PayrollEntryRepository
impl Freeze for PayrollEntryRepository
impl Send for PayrollEntryRepository
impl Sync for PayrollEntryRepository
impl Unpin for PayrollEntryRepository
impl UnsafeUnpin for PayrollEntryRepository
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> ⓘ
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> ⓘ
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 more