pub struct PgMetadataRepository<'connection> { /* private fields */ }Expand description
Core repository implementation backed by PostgreSQL metadata tables.
Implementations§
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
Sourcepub fn with_reserved_dataset_admission<T, E>(
&self,
reservation: &mut PgDatasetReservation<'_>,
asset: &AssetRecord,
version: &AssetVersionRecord,
admit: impl FnOnce(PgMetadataRepository<'_>) -> Result<T, E>,
) -> Result<T, DatasetAdmissionError<E>>
pub fn with_reserved_dataset_admission<T, E>( &self, reservation: &mut PgDatasetReservation<'_>, asset: &AssetRecord, version: &AssetVersionRecord, admit: impl FnOnce(PgMetadataRepository<'_>) -> Result<T, E>, ) -> Result<T, DatasetAdmissionError<E>>
Admits Dataset metadata and consumes shared output ownership atomically. The exclusive mutable writer borrow excludes concurrent Lake effects.
Sourcepub fn dataset_admission_receipt(
&self,
version_id: VersionId,
) -> Result<Option<DatasetAdmissionReceipt>, CoreError>
pub fn dataset_admission_receipt( &self, version_id: VersionId, ) -> Result<Option<DatasetAdmissionReceipt>, CoreError>
Reads this actor’s private receipt without relying on catalogue visibility.
Sourcepub fn confirm_dataset_cleanup(
&self,
version_id: VersionId,
) -> Result<(), CoreError>
pub fn confirm_dataset_cleanup( &self, version_id: VersionId, ) -> Result<(), CoreError>
Clears pending evidence only after the caller has completed Lake cleanup. Admitted receipts cannot be removed through this cleanup boundary.
Source§impl PgMetadataRepository<'static>
impl PgMetadataRepository<'static>
pub fn acquire_study_lifecycle( &self, study_id: StudyId, ) -> Result<PgStudyLifecycleGuard, CoreError>
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
Pre-connection destination authority; final admission rechecks current state.
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
Sourcepub fn new(connection: PgMetadataConnection) -> Self
pub fn new(connection: PgMetadataConnection) -> Self
Creates a repository that owns a direct PostgreSQL metadata connection.
Creates a repository from a shared direct PostgreSQL metadata connection.
Creates a repository from a shared OAuth-authenticated metadata connection.
Sourcepub fn with_correlation(self, context: CorrelationContext) -> Self
pub fn with_correlation(self, context: CorrelationContext) -> Self
Scope observation to a newly constructed repository, never the retained connection.
Source§impl PgMetadataRepository<'static>
impl PgMetadataRepository<'static>
pub fn upload_deadline( &self, deadline: Instant, cancelled: Arc<AtomicBool>, ) -> Result<UploadMetadataDeadline, CoreError>
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
Sourcepub fn capture_semantic_vocabulary(
&self,
intent: &DisclosureIntent,
target: VocabularyId,
) -> Result<CapturedVocabulary, CoreError>
pub fn capture_semantic_vocabulary( &self, intent: &DisclosureIntent, target: VocabularyId, ) -> Result<CapturedVocabulary, CoreError>
Captures every field and membership dependency under the same locks as admission. The caller’s suggested inputs are replaced by stored origins.
Sourcepub fn capture_semantic_vocabularies(
&self,
intent: &DisclosureIntent,
targets: &[VocabularyId],
) -> Result<(DisclosureSnapshot, Vec<SemanticVocabulary>), CoreError>
pub fn capture_semantic_vocabularies( &self, intent: &DisclosureIntent, targets: &[VocabularyId], ) -> Result<(DisclosureSnapshot, Vec<SemanticVocabulary>), CoreError>
A single policy decision closes over all values in a nested response.
Sourcepub fn catalogue_vocabulary_items(
&self,
target: VocabularyId,
) -> Result<Option<Vec<VocabularyItemRecord>>, CoreError>
pub fn catalogue_vocabulary_items( &self, target: VocabularyId, ) -> Result<Option<Vec<VocabularyItemRecord>>, CoreError>
Bounded non-content schema, captured atomically with its declaration proof. Unknown or derived dictionaries have no catalogue item projection.
Sourcepub fn retain_vocabulary_contribution(
&self,
target: VocabularyId,
) -> Result<(), CoreError>
pub fn retain_vocabulary_contribution( &self, target: VocabularyId, ) -> Result<(), CoreError>
Record a dependency even if equality checks reused every existing value.
pub fn with_semantic_derivation<T>( &self, inputs: &[VersionId], write: impl FnOnce(PgMetadataRepository<'_>) -> Result<T, CoreError>, ) -> Result<T, CoreError>
Sourcepub fn begin_semantic_derivation(
&self,
inputs: &[VersionId],
) -> Result<(), CoreError>
pub fn begin_semantic_derivation( &self, inputs: &[VersionId], ) -> Result<(), CoreError>
Joins an adapter-owned mutation transaction. This cannot mark a later independent write or turn source provenance into disclosure permission.
Sourcepub fn with_semantic_declarations<T>(
&self,
write: impl FnOnce(PgMetadataRepository<'_>) -> Result<T, CoreError>,
) -> Result<T, CoreError>
pub fn with_semantic_declarations<T>( &self, write: impl FnOnce(PgMetadataRepository<'_>) -> Result<T, CoreError>, ) -> Result<T, CoreError>
Only explicit dictionary declarations use this boundary. Inference and instance data must retain immutable source versions instead.
pub fn semantic_origin( &self, target: &SemanticTarget, ) -> Result<SemanticOrigin, CoreError>
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
pub fn begin_semantic_resolution(&self) -> Result<SemanticResolution, CoreError>
pub fn retain_instance_contribution( &self, instance: SemanticInstance, ) -> Result<(), CoreError>
pub fn capture_semantic_state( &self, resolution: &SemanticResolution, scope: &SemanticScope, limits: &DisclosureBudgets, ) -> Result<SemanticState, CoreError>
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
Sourcepub fn with_admitted_semantic_mutation<T>(
&self,
state: &SemanticState,
admission: Uuid,
write: impl FnOnce(PgMetadataRepository<'_>) -> Result<T, CoreError>,
) -> Result<T, CoreError>
pub fn with_admitted_semantic_mutation<T>( &self, state: &SemanticState, admission: Uuid, write: impl FnOnce(PgMetadataRepository<'_>) -> Result<T, CoreError>, ) -> Result<T, CoreError>
Retains the captured state, verifies durable admission, and commits all semantic changes and their origins together. Any callback failure rolls back.
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
Sourcepub fn retained_semantic_mappings(
&self,
state: &SemanticState,
) -> Result<SemanticMappings, CoreError>
pub fn retained_semantic_mappings( &self, state: &SemanticState, ) -> Result<SemanticMappings, CoreError>
Reads only the mapping scope whose row/byte bounds and revision were captured. This is available inside the retained adapter transaction.
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
pub fn capture_semantic_records( &self, resolution: &SemanticResolution, selection: &SemanticRecordSelection, budgets: &DisclosureBudgets, ) -> Result<CapturedSemanticRecords, CoreError>
Sourcepub fn admit_semantic_records(
&self,
captured: &CapturedSemanticRecords,
intent: &DisclosureIntent,
) -> Result<DisclosureSnapshot, CoreError>
pub fn admit_semantic_records( &self, captured: &CapturedSemanticRecords, intent: &DisclosureIntent, ) -> Result<DisclosureSnapshot, CoreError>
Revalidate the retained revision under the same locks as the single policy decision. Inputs come from the stored origin closure, never the caller.
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
Sourcepub fn retain_semantic_version_access(
&self,
versions: &[VersionId],
) -> Result<(), CoreError>
pub fn retain_semantic_version_access( &self, versions: &[VersionId], ) -> Result<(), CoreError>
Hold Study/version authorization until the enclosing mutation commits, including provenance attached to an existing no-op mapping or link.
Sourcepub fn with_semantic_record_mutation<T>(
&self,
resolution: &SemanticResolution,
studies: &[StudyId],
budgets: &DisclosureBudgets,
write: impl FnOnce(PgMetadataRepository<'_>) -> Result<T, CoreError>,
) -> Result<T, CoreError>
pub fn with_semantic_record_mutation<T>( &self, resolution: &SemanticResolution, studies: &[StudyId], budgets: &DisclosureBudgets, write: impl FnOnce(PgMetadataRepository<'_>) -> Result<T, CoreError>, ) -> Result<T, CoreError>
Manual declarations do not acquire a derived-content origin. Mutations and their Transformation links commit together under the retained revision.
Source§impl<'connection> PgMetadataRepository<'connection>
impl<'connection> PgMetadataRepository<'connection>
Sourcepub fn reserve_dataset_output(
&self,
executor: Arc<dyn DatasetExecutorLease>,
output: DatasetOutputKey,
) -> Result<PgDatasetReservation<'connection>, DatasetReservationError>
pub fn reserve_dataset_output( &self, executor: Arc<dyn DatasetExecutorLease>, output: DatasetOutputKey, ) -> Result<PgDatasetReservation<'connection>, DatasetReservationError>
Reserves output before version allocation, source staging, or Lake effects. Conflicting acceptance rolls back without an accepted private attempt.
Sourcepub fn reserve_dataset_output_with<T>(
&self,
executor: Arc<dyn DatasetExecutorLease>,
output: DatasetOutputKey,
accept: impl FnOnce(PgMetadataRepository<'_>, &RecoverableDatasetAttempt) -> Result<T, CoreError>,
) -> Result<(PgDatasetReservation<'connection>, T), DatasetReservationError>
pub fn reserve_dataset_output_with<T>( &self, executor: Arc<dyn DatasetExecutorLease>, output: DatasetOutputKey, accept: impl FnOnce(PgMetadataRepository<'_>, &RecoverableDatasetAttempt) -> Result<T, CoreError>, ) -> Result<(PgDatasetReservation<'connection>, T), DatasetReservationError>
Pending operation/idempotency repositories may participate in acceptance through this scoped metadata callback. No operation is required by writers.
Sourcepub fn recoverable_dataset_attempts(
&self,
executor: Arc<dyn DatasetExecutorLease>,
) -> Result<Vec<RecoverableDatasetAttempt>, CoreError>
pub fn recoverable_dataset_attempts( &self, executor: Arc<dyn DatasetExecutorLease>, ) -> Result<Vec<RecoverableDatasetAttempt>, CoreError>
Lists only attempts whose executor is excluded by the retained local coordinator. Metadata RLS limits ordinary actors to their own evidence; configured maintenance connections may see all actors’ attempts.
Sourcepub fn claim_dataset_recovery(
&self,
executor: Arc<dyn DatasetExecutorLease>,
attempt_id: Uuid,
) -> Result<PgDatasetRecovery<'connection>, CoreError>
pub fn claim_dataset_recovery( &self, executor: Arc<dyn DatasetExecutorLease>, attempt_id: Uuid, ) -> Result<PgDatasetRecovery<'connection>, CoreError>
Claims a known stopped attempt before any physical reconciliation. The reservation row orders this claim against an in-flight metadata commit.
Source§impl PgMetadataRepository<'static>
impl PgMetadataRepository<'static>
Recheck current Study authority before another governed stage. The operation record is correlation evidence and never supplies the grant.
Sourcepub fn operation_control(
connection: LibpqOAuthConnection,
) -> Result<Self, CoreError>
pub fn operation_control( connection: LibpqOAuthConnection, ) -> Result<Self, CoreError>
A fresh user-authenticated lifecycle connection. The application exposes only inspection and cancellation; it shares no mutex with the producer.
Source§impl PgMetadataRepository<'static>
impl PgMetadataRepository<'static>
pub fn lock_operation_key( &self, scope_digest: String, intent_digest: String, ) -> Result<PgOperationKey, CoreError>
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
Sourcepub fn operation_precondition_satisfied(
&self,
scope: &OperationResourceScope,
precondition: &Precondition,
) -> Result<bool, CoreError>
pub fn operation_precondition_satisfied( &self, scope: &OperationResourceScope, precondition: &Precondition, ) -> Result<bool, CoreError>
Evaluated inside output acceptance after ownership has been acquired.
Source§impl PgMetadataRepository<'_>
impl PgMetadataRepository<'_>
Sourcepub fn operation_now(&self) -> Result<DateTime<Utc>, CoreError>
pub fn operation_now(&self) -> Result<DateTime<Utc>, CoreError>
One authoritative lifecycle instant, also used by key and cleanup queries.
Trait Implementations§
Source§impl AssetRepository for PgMetadataRepository<'_>
impl AssetRepository for PgMetadataRepository<'_>
fn asset_classification<'life0, 'async_trait>(
&'life0 self,
asset: AssetId,
) -> Pin<Box<dyn Future<Output = Result<Option<AssetClassification>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn validate_dataset_derivation<'life0, 'life1, 'async_trait>(
&'life0 self,
inputs: &'life1 [VersionId],
risk: AssetRisk,
inherit: bool,
) -> Pin<Box<dyn Future<Output = Result<(), CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_assets_for_study<'life0, 'async_trait>(
&'life0 self,
study_id: StudyId,
) -> Pin<Box<dyn Future<Output = Result<Vec<AssetRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_asset_by_id<'life0, 'async_trait>(
&'life0 self,
asset_id: AssetId,
) -> Pin<Box<dyn Future<Output = Result<Option<AssetRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_asset_by_name<'life0, 'life1, 'async_trait>(
&'life0 self,
study_id: StudyId,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<AssetRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_asset<'life0, 'life1, 'async_trait>(
&'life0 self,
asset: &'life1 NewAssetRecord,
) -> Pin<Box<dyn Future<Output = Result<AssetRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save_asset<'life0, 'life1, 'async_trait>(
&'life0 self,
asset: &'life1 AssetRecord,
) -> Pin<Box<dyn Future<Output = Result<AssetRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_asset_record<'life0, 'async_trait>(
&'life0 self,
asset_id: AssetId,
) -> Pin<Box<dyn Future<Output = Result<bool, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_asset_versions<'life0, 'async_trait>(
&'life0 self,
asset_id: AssetId,
) -> Pin<Box<dyn Future<Output = Result<Vec<AssetVersionRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_asset_version<'life0, 'async_trait>(
&'life0 self,
version_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<Option<AssetVersionRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn delete_datafile_version_metadata<'life0, 'async_trait>(
&'life0 self,
version_id: VersionId,
latest_promotion: Option<(AssetId, Option<VersionId>)>,
) -> Pin<Box<dyn Future<Output = Result<bool, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_datafile_version_metadata<'life0, 'async_trait>(
&'life0 self,
version_id: VersionId,
latest_promotion: Option<(AssetId, Option<VersionId>)>,
) -> Pin<Box<dyn Future<Output = Result<bool, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_asset_version_record<'life0, 'async_trait>(
&'life0 self,
version_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<bool, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_asset_version<'life0, 'life1, 'async_trait>(
&'life0 self,
version: &'life1 NewAssetVersionRecord,
) -> Pin<Box<dyn Future<Output = Result<AssetVersionRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save_asset_version<'life0, 'life1, 'async_trait>(
&'life0 self,
_version: &'life1 AssetVersionRecord,
) -> Pin<Box<dyn Future<Output = Result<AssetVersionRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn admit_asset_version<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
version: &'life1 AssetVersionRecord,
classification: &'life2 IngestClassification,
) -> Pin<Box<dyn Future<Output = Result<AssetVersionRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn admit_asset_version<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
version: &'life1 AssetVersionRecord,
classification: &'life2 IngestClassification,
) -> Pin<Box<dyn Future<Output = Result<AssetVersionRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn mark_asset_version_latest<'life0, 'async_trait>(
&'life0 self,
asset_id: AssetId,
version_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<AssetVersionRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_asset_version_duo_restrictions<'life0, 'async_trait>(
&'life0 self,
version_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<Vec<AssetVersionDuoRestrictionRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_asset_version_duo_restriction<'life0, 'life1, 'async_trait>(
&'life0 self,
restriction: &'life1 NewAssetVersionDuoRestrictionRecord,
) -> Pin<Box<dyn Future<Output = Result<AssetVersionDuoRestrictionRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save_asset_version_duo_restriction<'life0, 'life1, 'async_trait>(
&'life0 self,
restriction: &'life1 AssetVersionDuoRestrictionRecord,
) -> Pin<Box<dyn Future<Output = Result<AssetVersionDuoRestrictionRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn replace_asset_version_duo_restrictions<'life0, 'life1, 'async_trait>(
&'life0 self,
version_id: VersionId,
restrictions: &'life1 [NewAssetVersionDuoRestrictionRecord],
) -> Pin<Box<dyn Future<Output = Result<Vec<AssetVersionDuoRestrictionRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn clear_asset_version_duo_restrictions<'life0, 'async_trait>(
&'life0 self,
version_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<Vec<AssetVersionDuoRestrictionRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_datasets_for_asset<'life0, 'async_trait>(
&'life0 self,
asset_id: AssetId,
) -> Pin<Box<dyn Future<Output = Result<Vec<DatasetRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn search_datasets<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 DatasetSearchQuery,
) -> Pin<Box<dyn Future<Output = Result<SearchPage<DatasetSearchRecord, DatasetSearchCursorAnchor>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn search_datafiles<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 DataFileSearchQuery,
) -> Pin<Box<dyn Future<Output = Result<SearchPage<DataFileSearchRecord, DataFileSearchCursorAnchor>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_dataset<'life0, 'async_trait>(
&'life0 self,
dataset_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<Option<DatasetRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn save_dataset<'life0, 'life1, 'async_trait>(
&'life0 self,
dataset: &'life1 DatasetRecord,
) -> Pin<Box<dyn Future<Output = Result<DatasetRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_dataset_version_withdrawal<'life0, 'async_trait>(
&'life0 self,
dataset_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<Option<DatasetVersionWithdrawalRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_dataset_version_withdrawals<'life0, 'async_trait>(
&'life0 self,
asset_id: AssetId,
) -> Pin<Box<dyn Future<Output = Result<Vec<DatasetVersionWithdrawalRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn save_dataset_version_withdrawal<'life0, 'life1, 'async_trait>(
&'life0 self,
withdrawal: &'life1 NewDatasetVersionWithdrawalRecord,
) -> Pin<Box<dyn Future<Output = Result<DatasetVersionWithdrawalRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn deactivate_dataset_version_links<'life0, 'async_trait>(
&'life0 self,
dataset_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<(), CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn clear_asset_version_latest<'life0, 'async_trait>(
&'life0 self,
asset_id: AssetId,
version_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<AssetVersionRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_datafiles_for_asset<'life0, 'async_trait>(
&'life0 self,
asset_id: AssetId,
) -> Pin<Box<dyn Future<Output = Result<Vec<DataFileRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_datafile<'life0, 'async_trait>(
&'life0 self,
datafile_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<Option<DataFileRecord>, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn save_datafile<'life0, 'life1, 'async_trait>(
&'life0 self,
datafile: &'life1 DataFileRecord,
) -> Pin<Box<dyn Future<Output = Result<DataFileRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_datafile_record<'life0, 'async_trait>(
&'life0 self,
datafile_id: VersionId,
) -> Pin<Box<dyn Future<Output = Result<bool, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§impl CatalogueRegistrationRepository for PgMetadataRepository<'_>
impl CatalogueRegistrationRepository for PgMetadataRepository<'_>
fn create_domain_registration<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
domain: &'life1 NewDomainRecord,
normalized_tags: &'life2 [String],
) -> Pin<Box<dyn Future<Output = Result<DomainRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn create_study_registration<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
study: &'life1 NewStudyRecord,
domain_ids: &'life2 [DomainId],
normalized_tags: &'life3 [String],
) -> Pin<Box<dyn Future<Output = Result<StudyRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn save_domain_registration<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
domain: &'life1 DomainRecord,
normalized_tags: &'life2 [String],
) -> Pin<Box<dyn Future<Output = Result<DomainRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn save_study_registration<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
study: &'life1 StudyRecord,
domain_ids: &'life2 [DomainId],
normalized_tags: &'life3 [String],
) -> Pin<Box<dyn Future<Output = Result<StudyRecord, CoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Source§impl<'connection> Clone for PgMetadataRepository<'connection>
impl<'connection> Clone for PgMetadataRepository<'connection>
Source§fn clone(&self) -> PgMetadataRepository<'connection>
fn clone(&self) -> PgMetadataRepository<'connection>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more