pub trait DatabaseOperations: Send + Sync {
Show 28 methods
// Required methods
fn backend_name(&self) -> &'static str;
fn local_artifact_format(&self) -> Option<&'static str>;
fn ensure_database(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
) -> Result<(), DatabaseError>;
fn update_user_password(
&self,
config: &DbBackendConfig,
user_id: i64,
password_hash: &str,
) -> Result<(), DatabaseError>;
fn issue_session(
&self,
config: &DbBackendConfig,
user_id: i64,
session_token_hash: &str,
expires_at: &str,
) -> Result<(), DatabaseError>;
fn revoke_session(
&self,
config: &DbBackendConfig,
session_token_hash: &str,
) -> Result<(), DatabaseError>;
fn revoke_user_sessions(
&self,
config: &DbBackendConfig,
user_id: i64,
) -> Result<(), DatabaseError>;
fn append_rate_limit_event(
&self,
config: &DbBackendConfig,
policy_key: &str,
bucket_key: &str,
outcome: &str,
) -> Result<(), DatabaseError>;
fn admit_rate_limited_request(
&self,
config: &DbBackendConfig,
policy_key: &str,
bucket_key: &str,
maximum: usize,
window_seconds: u64,
) -> Result<bool, DatabaseError>;
fn migration_ledger(
&self,
config: &DbBackendConfig,
app_id: &str,
) -> Result<BTreeMap<String, String>, DatabaseError>;
fn ready(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
) -> Result<(), DatabaseError>;
fn field_exists(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
entity_name: &str,
field_name: &str,
) -> Result<bool, DatabaseError>;
fn migrate(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
migration: &Migration,
) -> Result<(), DatabaseError>;
fn adopt_legacy_migration(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
migration: &Migration,
expected_legacy: &BTreeMap<String, String>,
) -> Result<(), DatabaseError>;
fn query(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
query: &Query,
) -> Result<Vec<Map<String, Value>>, DatabaseError>;
fn aggregate(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
query: &AggregateQuery,
) -> Result<Value, DatabaseError>;
fn transact(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
transaction: &Transaction,
) -> Result<TransactionResult, DatabaseError>;
fn claim_one(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
claim: &Claim,
) -> Result<Option<i64>, DatabaseError>;
fn export_page(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
entity: &str,
after_identity: Option<Value>,
limit: u32,
) -> Result<Vec<Record>, DatabaseError>;
fn export_snapshot(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
limits: SnapshotLimits,
) -> Result<Vec<Record>, DatabaseError>;
fn restore_snapshot(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
records: &[Record],
limits: SnapshotLimits,
counts: &[RestoreCount],
) -> Result<(), DatabaseError>;
fn import_batch(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
records: &[Record],
) -> Result<(), DatabaseError>;
// Provided methods
fn user_credentials(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
username: &str,
) -> Result<Option<UserCredentials>, DatabaseError> { ... }
fn active_session(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
session_token_hash: &str,
now_epoch_seconds: u64,
) -> Result<Option<ActiveSession>, DatabaseError> { ... }
fn apply_contract(
&self,
config: &DbBackendConfig,
contract: &AppDataContract,
) -> Result<(), DatabaseError> { ... }
fn applied_migration_checksum(
&self,
config: &DbBackendConfig,
app_id: &str,
migration_id: &str,
) -> Result<Option<String>, DatabaseError> { ... }
fn verify_contract(
&self,
config: &DbBackendConfig,
contract: &AppDataContract,
) -> Result<(), DatabaseError> { ... }
fn join_query(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
request: &JoinedQuery,
) -> Result<Vec<JoinedRecord>, DatabaseError> { ... }
}Expand description
Executable logical operations implemented by every registered adapter. App-facing services resolve this operation contract through the configured registry.
Required Methods§
fn backend_name(&self) -> &'static str
Sourcefn local_artifact_format(&self) -> Option<&'static str>
fn local_artifact_format(&self) -> Option<&'static str>
Identifies an adapter-owned local database artifact format for safe historical adoption. Remote storage returns None; callers must never infer a format from a backend name.
Sourcefn ensure_database(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
) -> Result<(), DatabaseError>
fn ensure_database( &self, config: &DbBackendConfig, schema: &AppSchema, ) -> Result<(), DatabaseError>
Ensures one app-owned database namespace exists before applying its schema.
Sourcefn update_user_password(
&self,
config: &DbBackendConfig,
user_id: i64,
password_hash: &str,
) -> Result<(), DatabaseError>
fn update_user_password( &self, config: &DbBackendConfig, user_id: i64, password_hash: &str, ) -> Result<(), DatabaseError>
Replaces one user’s pre-hashed password. Missing users fail explicitly.
Sourcefn issue_session(
&self,
config: &DbBackendConfig,
user_id: i64,
session_token_hash: &str,
expires_at: &str,
) -> Result<(), DatabaseError>
fn issue_session( &self, config: &DbBackendConfig, user_id: i64, session_token_hash: &str, expires_at: &str, ) -> Result<(), DatabaseError>
Creates or replaces one browser session in authoritative storage.
Sourcefn revoke_session(
&self,
config: &DbBackendConfig,
session_token_hash: &str,
) -> Result<(), DatabaseError>
fn revoke_session( &self, config: &DbBackendConfig, session_token_hash: &str, ) -> Result<(), DatabaseError>
Revokes one browser session by token hash.
Sourcefn revoke_user_sessions(
&self,
config: &DbBackendConfig,
user_id: i64,
) -> Result<(), DatabaseError>
fn revoke_user_sessions( &self, config: &DbBackendConfig, user_id: i64, ) -> Result<(), DatabaseError>
Revokes every browser session owned by one user.
Sourcefn append_rate_limit_event(
&self,
config: &DbBackendConfig,
policy_key: &str,
bucket_key: &str,
outcome: &str,
) -> Result<(), DatabaseError>
fn append_rate_limit_event( &self, config: &DbBackendConfig, policy_key: &str, bucket_key: &str, outcome: &str, ) -> Result<(), DatabaseError>
Records a bounded security admission outcome in authoritative storage.
Sourcefn admit_rate_limited_request(
&self,
config: &DbBackendConfig,
policy_key: &str,
bucket_key: &str,
maximum: usize,
window_seconds: u64,
) -> Result<bool, DatabaseError>
fn admit_rate_limited_request( &self, config: &DbBackendConfig, policy_key: &str, bucket_key: &str, maximum: usize, window_seconds: u64, ) -> Result<bool, DatabaseError>
Atomically counts and records one request in a moving security window.
fn migration_ledger( &self, config: &DbBackendConfig, app_id: &str, ) -> Result<BTreeMap<String, String>, DatabaseError>
fn ready( &self, config: &DbBackendConfig, schema: &AppSchema, ) -> Result<(), DatabaseError>
Sourcefn field_exists(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
entity_name: &str,
field_name: &str,
) -> Result<bool, DatabaseError>
fn field_exists( &self, config: &DbBackendConfig, schema: &AppSchema, entity_name: &str, field_name: &str, ) -> Result<bool, DatabaseError>
Reports whether a declared field exists in authoritative storage. Document backends report declared fields because records have no fixed columns.
fn migrate( &self, config: &DbBackendConfig, schema: &AppSchema, migration: &Migration, ) -> Result<(), DatabaseError>
Sourcefn adopt_legacy_migration(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
migration: &Migration,
expected_legacy: &BTreeMap<String, String>,
) -> Result<(), DatabaseError>
fn adopt_legacy_migration( &self, config: &DbBackendConfig, schema: &AppSchema, migration: &Migration, expected_legacy: &BTreeMap<String, String>, ) -> Result<(), DatabaseError>
Stamps one logical migration over a fully verified populated database. Adapters must compare the complete historical ledger, inspect the physical schema, and write the logical marker atomically. A mismatch must never trigger the migration body against populated data.
fn query( &self, config: &DbBackendConfig, schema: &AppSchema, query: &Query, ) -> Result<Vec<Map<String, Value>>, DatabaseError>
fn aggregate( &self, config: &DbBackendConfig, schema: &AppSchema, query: &AggregateQuery, ) -> Result<Value, DatabaseError>
fn transact( &self, config: &DbBackendConfig, schema: &AppSchema, transaction: &Transaction, ) -> Result<TransactionResult, DatabaseError>
fn claim_one( &self, config: &DbBackendConfig, schema: &AppSchema, claim: &Claim, ) -> Result<Option<i64>, DatabaseError>
fn export_page( &self, config: &DbBackendConfig, schema: &AppSchema, entity: &str, after_identity: Option<Value>, limit: u32, ) -> Result<Vec<Record>, DatabaseError>
Sourcefn export_snapshot(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
limits: SnapshotLimits,
) -> Result<Vec<Record>, DatabaseError>
fn export_snapshot( &self, config: &DbBackendConfig, schema: &AppSchema, limits: SnapshotLimits, ) -> Result<Vec<Record>, DatabaseError>
Exports all declared entities from one consistent read transaction.
Sourcefn restore_snapshot(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
records: &[Record],
limits: SnapshotLimits,
counts: &[RestoreCount],
) -> Result<(), DatabaseError>
fn restore_snapshot( &self, config: &DbBackendConfig, schema: &AppSchema, records: &[Record], limits: SnapshotLimits, counts: &[RestoreCount], ) -> Result<(), DatabaseError>
Replaces declared app records atomically after validating schema and preconditions. No partial import batch may become visible on failure.
fn import_batch( &self, config: &DbBackendConfig, schema: &AppSchema, records: &[Record], ) -> Result<(), DatabaseError>
Provided Methods§
Sourcefn user_credentials(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
username: &str,
) -> Result<Option<UserCredentials>, DatabaseError>
fn user_credentials( &self, config: &DbBackendConfig, schema: &AppSchema, username: &str, ) -> Result<Option<UserCredentials>, DatabaseError>
Loads credentials for one username without deciding password policy.
Sourcefn active_session(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
session_token_hash: &str,
now_epoch_seconds: u64,
) -> Result<Option<ActiveSession>, DatabaseError>
fn active_session( &self, config: &DbBackendConfig, schema: &AppSchema, session_token_hash: &str, now_epoch_seconds: u64, ) -> Result<Option<ActiveSession>, DatabaseError>
Resolves one unrevoked browser session against the supplied clock.
Sourcefn apply_contract(
&self,
config: &DbBackendConfig,
contract: &AppDataContract,
) -> Result<(), DatabaseError>
fn apply_contract( &self, config: &DbBackendConfig, contract: &AppDataContract, ) -> Result<(), DatabaseError>
Applies an app-owned logical migration sequence through this backend.
CreateEntity creates a table or collection as appropriate for the
configured adapter; callers never select a vendor migration file.
fn applied_migration_checksum( &self, config: &DbBackendConfig, app_id: &str, migration_id: &str, ) -> Result<Option<String>, DatabaseError>
fn verify_contract( &self, config: &DbBackendConfig, contract: &AppDataContract, ) -> Result<(), DatabaseError>
Sourcefn join_query(
&self,
config: &DbBackendConfig,
schema: &AppSchema,
request: &JoinedQuery,
) -> Result<Vec<JoinedRecord>, DatabaseError>
fn join_query( &self, config: &DbBackendConfig, schema: &AppSchema, request: &JoinedQuery, ) -> Result<Vec<JoinedRecord>, DatabaseError>
Executes a bounded two-entity join through the same logical reads on every backend.