Skip to main content

ahri_tre_pgmeta/
lib.rs

1//! PostgreSQL metadata adapter for AHRI TRE.
2//!
3//! This crate keeps metadata persistence behind PostgreSQL/libpq-oriented
4//! boundaries. It exposes direct PostgreSQL connectivity, OAuth-backed
5//! executor support, read/write models for the metadata schema, and a
6//! repository implementation for the core domain traits.
7//!
8//! Schema-pending read models are exposed under the root-level `provisional`
9//! module, and provisional read paths are named explicitly.
10//!
11//! ```rust,ignore
12//! use ahri_tre_pgmeta::provisional::PgVariableMappingReadModel;
13//!
14//! // connection.list_variable_mappings_provisional()?;
15//! ```
16
17pub mod access_requests;
18pub mod adapter;
19mod bootstrap;
20mod dataset_admission;
21mod lifecycle_guard;
22pub use lifecycle_guard::PgStudyLifecycleGuard;
23pub mod datastore_creation;
24pub use dataset_admission::{
25    DatasetAdmissionError, DatasetAdmissionReceipt, DatasetAdmissionState,
26};
27pub mod datastore_identity;
28pub mod discovery;
29pub mod error;
30pub mod execution;
31pub mod governance;
32pub mod read_models;
33pub mod repository;
34pub mod schema;
35pub mod semantic;
36pub mod semantic_records;
37pub mod provisional {
38    pub use crate::read_models::provisional::PgVariableMappingReadModel;
39}
40mod workflow_entry;
41pub mod write_models;
42
43pub use access_requests::{
44    AccessRequestCustodianApprovalOutcome, AccessRequestCustodianDecisionOutcome,
45    AccessRequestCustodianInspection, AccessRequestDatastoreId, AccessRequestId,
46    AccessRequestLifecycle, AccessRequestSubmission, AccessRequestSubmissionOutcome,
47    AccessRequestWithdrawalOutcome, AuthenticatedCustodianStudyAccessRequestPort,
48    BorrowedAuthenticatedCustodianStudyAccessRequestPort, CustodianAccessRequestInspectionRecord,
49    CustodianStudyAccessRequest, CustodianStudyAccessRequestApproval,
50    CustodianStudyAccessRequestRejection, CustodianStudyAccessRequestScope,
51    RequesterStudyAccessRequest, RequesterStudyAccessRequestScope, StudyAccessRequestDecision,
52    StudyAccessRequestMetadataExecutor,
53};
54pub use adapter::{
55    DirectPostgresConnectConfig, PgHealth, PgMetadataAdapter, PgMetadataConnection,
56    SchemaBootstrapReport,
57};
58pub use datastore_creation::{
59    PgDatastoreCreationConnection, PgDatastoreCreationSpec, PgDatastoreCreationStart,
60    PgDatastoreCredentialRotationError, PgDatastoreReconciliationError, PgDatastoreValidationSpec,
61    PgPendingDatastoreCreation, apply_datastore_credential_rotation, begin_datastore_creation,
62    find_existing_datastore_binding, inspect_datastore_identity_bindings,
63    rollback_datastore_credential_rotation, validate_existing_datastore_postgresql,
64};
65pub use datastore_identity::{
66    advance_ready_datastore_identity_lake_path, create_datastore_identity_table,
67    datastore_identity_table_exists, datastore_identity_table_exists_oauth,
68    insert_datastore_identity_binding, mark_datastore_identity_failed,
69    mark_datastore_identity_ready, read_datastore_identity_bindings,
70    read_datastore_identity_bindings_oauth, read_ready_datastore_identity_bindings,
71    read_ready_datastore_identity_bindings_oauth, update_datastore_identity_credential,
72};
73pub use discovery::{
74    DatastoreCandidateInspection, DatastoreCandidateStatus, DatastoreDiscoveryWarning,
75    DatastoreServerDiscovery, discover_datastores,
76};
77pub use discovery::{
78    discover_configured_datastore_with_ca,
79    discover_configured_datastore_with_ca_and_routing_address, discover_datastores_with_ca,
80};
81pub use error::PgMetaError;
82pub use execution::{MetadataExecutor, MetadataParameters, MetadataTransaction};
83pub use read_models::{
84    METADATA_TABLES, PgAssetReadModel, PgAssetTagReadModel, PgAssetVersionDuoRestrictionReadModel,
85    PgAssetVersionEntityReadModel, PgAssetVersionReadModel,
86    PgAssetVersionRelationInstanceReadModel, PgAssetVersionTagReadModel, PgDataFileReadModel,
87    PgDatasetReadModel, PgDatasetVariableReadModel, PgDatasetVersionEntityReadModel,
88    PgDatasetVersionRelationInstanceReadModel, PgDomainReadModel, PgDomainTagReadModel,
89    PgDuoCodeReadModel, PgDuoRestrictionReadModel, PgEntityInstanceReadModel, PgEntityReadModel,
90    PgEntityRelationReadModel, PgEntityRelationTagReadModel, PgEntityTagReadModel,
91    PgRelationInstanceReadModel, PgStudyAccessReadModel, PgStudyCustodianReadModel,
92    PgStudyDomainReadModel, PgStudyEntityInstanceReadModel, PgStudyReadModel,
93    PgStudyRelationInstanceReadModel, PgStudyTagReadModel, PgStudyTypeReadModel, PgTagReadModel,
94    PgTagTarget, PgTransformationInputReadModel, PgTransformationOutputReadModel,
95    PgTransformationReadModel, PgValueTypeReadModel, PgVariableReadModel, PgVariableTagReadModel,
96    PgVocabularyItemReadModel, PgVocabularyMappingReadModel, PgVocabularyReadModel,
97};
98pub use repository::{PgMetadataRepository, UploadMetadataDeadline};
99pub use schema::{
100    AccessRequestAuthority, CURRENT_DATASTORE_SCHEMA_VERSION, DatastoreMigrationAction,
101    DatastoreMigrationApplyReport, DatastoreMigrationPlan, DatastoreMigrationScope,
102    DatastoreMigrationStep, DatastoreSchemaCompatibility, DatastoreSchemaStatus,
103    apply_datastore_schema_migration, datastore_schema_status, plan_datastore_schema_migration,
104};
105pub use workflow_entry::provision_orcid_workflow_entry;
106pub use write_models::{
107    PgCreateAsset, PgCreateAssetVersion, PgCreateAssetVersionDuoRestriction, PgCreateDataFile,
108    PgCreateDomain, PgCreateDuoCode, PgCreateEntity, PgCreateEntityInstanceInStudy,
109    PgCreateEntityRelation, PgCreateRelationInstanceInStudy, PgCreateStudy,
110    PgCreateStudyDuoRestriction, PgCreateTransformation, PgCreateVariable, PgCreateVocabulary,
111    PgCreateVocabularyItem, PgCreateVocabularyMapping, PgDuoQualifiers, PgWriteEntityInstance,
112    PgWriteRelationInstance, PgWriteStudyEntityInstance, PgWriteStudyRelationInstance,
113    PgWriteTagTarget,
114};
115
116mod dataset_reservation;
117mod operation;
118pub use dataset_reservation::{
119    DatasetReservationError, PgDatasetMaintenance, PgDatasetRecovery, PgDatasetReservation,
120    PgDatasetReset, RecoverableDatasetAttempt,
121};
122
123pub use operation::PgOperationKey;
124
125pub mod preflight;