pub struct MongoDbSchemaConnector { /* private fields */ }
Expand description
The top-level MongoDB migration connector.
Implementations§
source§impl MongoDbSchemaConnector
impl MongoDbSchemaConnector
pub fn new(params: ConnectorParams) -> Self
Trait Implementations§
source§impl DestructiveChangeChecker for MongoDbSchemaConnector
impl DestructiveChangeChecker for MongoDbSchemaConnector
source§fn check<'a>(
&'a mut self,
_database_migration: &'a Migration
) -> BoxFuture<'a, ConnectorResult<DestructiveChangeDiagnostics>>
fn check<'a>( &'a mut self, _database_migration: &'a Migration ) -> BoxFuture<'a, ConnectorResult<DestructiveChangeDiagnostics>>
Check destructive changes resulting of applying the provided migration.
source§fn pure_check(
&self,
_database_migration: &Migration
) -> DestructiveChangeDiagnostics
fn pure_check( &self, _database_migration: &Migration ) -> DestructiveChangeDiagnostics
Check the migration for destructive or unexecutable steps
without performing any IO.
source§impl MigrationPersistence for MongoDbSchemaConnector
impl MigrationPersistence for MongoDbSchemaConnector
source§fn baseline_initialize(&mut self) -> BoxFuture<'_, ConnectorResult<()>>
fn baseline_initialize(&mut self) -> BoxFuture<'_, ConnectorResult<()>>
Initialize the migration persistence without checking the database first.
source§fn initialize(
&mut self,
_namespaces: Option<Namespaces>
) -> BoxFuture<'_, ConnectorResult<()>>
fn initialize( &mut self, _namespaces: Option<Namespaces> ) -> BoxFuture<'_, ConnectorResult<()>>
This method is responsible for checking whether the migrations
persistence is initialized. Read more
source§fn mark_migration_applied_impl(
&mut self,
_migration_name: &str,
_checksum: &str
) -> BoxFuture<'_, ConnectorResult<String>>
fn mark_migration_applied_impl( &mut self, _migration_name: &str, _checksum: &str ) -> BoxFuture<'_, ConnectorResult<String>>
Implementation in the connector for the core’s MarkMigrationApplied
command. See the docs there. Note that the started_at and finished_at
for the migration should be the same.
source§fn mark_migration_rolled_back_by_id(
&mut self,
_migration_id: &str
) -> BoxFuture<'_, ConnectorResult<()>>
fn mark_migration_rolled_back_by_id( &mut self, _migration_id: &str ) -> BoxFuture<'_, ConnectorResult<()>>
Mark the failed instances of the migration in the persistence as rolled
back, so they will be ignored by the engine in the future.
source§fn record_migration_started_impl(
&mut self,
_migration_name: &str,
_checksum: &str
) -> BoxFuture<'_, ConnectorResult<String>>
fn record_migration_started_impl( &mut self, _migration_name: &str, _checksum: &str ) -> BoxFuture<'_, ConnectorResult<String>>
Record that a migration is about to be applied. Returns the unique
identifier for the migration. Read more
source§fn record_successful_step(
&mut self,
_id: &str
) -> BoxFuture<'_, ConnectorResult<()>>
fn record_successful_step( &mut self, _id: &str ) -> BoxFuture<'_, ConnectorResult<()>>
Increase the applied_steps_count counter.
source§fn record_failed_step(
&mut self,
_id: &str,
_logs: &str
) -> BoxFuture<'_, ConnectorResult<()>>
fn record_failed_step( &mut self, _id: &str, _logs: &str ) -> BoxFuture<'_, ConnectorResult<()>>
Report logs for a failed migration step. We assume the next steps in the
migration will not be applied, and the error reported.
source§fn record_migration_finished(
&mut self,
_id: &str
) -> BoxFuture<'_, ConnectorResult<()>>
fn record_migration_finished( &mut self, _id: &str ) -> BoxFuture<'_, ConnectorResult<()>>
Record that the migration completed successfully. This means
populating the
finished_at
field in the migration record.source§fn list_migrations(
&mut self
) -> BoxFuture<'_, ConnectorResult<Result<Vec<MigrationRecord>, PersistenceNotInitializedError>>>
fn list_migrations( &mut self ) -> BoxFuture<'_, ConnectorResult<Result<Vec<MigrationRecord>, PersistenceNotInitializedError>>>
List all applied migrations, ordered by
started_at
. This should fail
with a PersistenceNotInitializedError when the migration persistence is
not initialized.source§fn mark_migration_applied<'a>(
&'a mut self,
migration_name: &'a str,
script: &'a str
) -> Pin<Box<dyn Future<Output = Result<String, ConnectorError>> + Send + 'a>>
fn mark_migration_applied<'a>( &'a mut self, migration_name: &'a str, script: &'a str ) -> Pin<Box<dyn Future<Output = Result<String, ConnectorError>> + Send + 'a>>
Implementation in the connector for the core’s MarkMigrationApplied
command. See the docs there. Note that the started_at and finished_at
for the migration should be the same. Read more
source§impl SchemaConnector for MongoDbSchemaConnector
impl SchemaConnector for MongoDbSchemaConnector
source§fn connection_string(&self) -> Option<&str>
fn connection_string(&self) -> Option<&str>
Return the connection string that was used to initialize this connector in set_params().
source§fn database_schema_from_diff_target<'a>(
&'a mut self,
diff_target: DiffTarget<'a>,
_shadow_database_connection_string: Option<String>,
_namespaces: Option<Namespaces>
) -> BoxFuture<'a, ConnectorResult<DatabaseSchema>>
fn database_schema_from_diff_target<'a>( &'a mut self, diff_target: DiffTarget<'a>, _shadow_database_connection_string: Option<String>, _namespaces: Option<Namespaces> ) -> BoxFuture<'a, ConnectorResult<DatabaseSchema>>
Read a schema for diffing. The shadow database connection string is strictly optional, you
don’t need to pass it if a shadow database url was passed in params, or if it can be
inferred from context, or if it isn’t necessary for the task at hand.
When MultiSchema is enabled, the namespaces are required for diffing anything other than a
prisma schema, because that information is otherwise unavailable.
source§fn host(&self) -> &Arc<dyn ConnectorHost>
fn host(&self) -> &Arc<dyn ConnectorHost>
Return the ConnectorHost passed with set_host.
source§fn apply_migration<'a>(
&'a mut self,
migration: &'a Migration
) -> BoxFuture<'a, ConnectorResult<u32>>
fn apply_migration<'a>( &'a mut self, migration: &'a Migration ) -> BoxFuture<'a, ConnectorResult<u32>>
Applies the migration to the database. Returns the number of executed steps.
source§fn apply_script(
&mut self,
_migration_name: &str,
_script: &str
) -> BoxFuture<'_, ConnectorResult<()>>
fn apply_script( &mut self, _migration_name: &str, _script: &str ) -> BoxFuture<'_, ConnectorResult<()>>
Apply a migration script to the database. The migration persistence is
managed by the core.
source§fn connector_type(&self) -> &'static str
fn connector_type(&self) -> &'static str
A string that should identify what database backend is being used. Note that this is not necessarily
the connector name. The SQL connector for example can return “postgresql”, “mysql” or “sqlite”.
source§fn create_database(&mut self) -> BoxFuture<'_, ConnectorResult<String>>
fn create_database(&mut self) -> BoxFuture<'_, ConnectorResult<String>>
Create the database referenced by Prisma schema that was used to initialize the connector.
source§fn db_execute(&mut self, _script: String) -> BoxFuture<'_, ConnectorResult<()>>
fn db_execute(&mut self, _script: String) -> BoxFuture<'_, ConnectorResult<()>>
Send a command to the database directly.
source§fn empty_database_schema(&self) -> DatabaseSchema
fn empty_database_schema(&self) -> DatabaseSchema
An empty database schema (for diffing).
source§fn ensure_connection_validity(&mut self) -> BoxFuture<'_, ConnectorResult<()>>
fn ensure_connection_validity(&mut self) -> BoxFuture<'_, ConnectorResult<()>>
Make sure the connection to the database is established and valid.
Connectors can choose to connect lazily, but this method should force
them to connect.
source§fn version(&mut self) -> BoxFuture<'_, ConnectorResult<String>>
fn version(&mut self) -> BoxFuture<'_, ConnectorResult<String>>
The version of the underlying database.
source§fn diff(&self, from: DatabaseSchema, to: DatabaseSchema) -> Migration
fn diff(&self, from: DatabaseSchema, to: DatabaseSchema) -> Migration
Create a migration by comparing two database schemas.
source§fn drop_database(&mut self) -> BoxFuture<'_, ConnectorResult<()>>
fn drop_database(&mut self) -> BoxFuture<'_, ConnectorResult<()>>
Drop the database referenced by Prisma schema that was used to initialize the connector.
source§fn migration_file_extension(&self) -> &'static str
fn migration_file_extension(&self) -> &'static str
The file extension for generated migration files.
source§fn migration_len(&self, migration: &Migration) -> usize
fn migration_len(&self, migration: &Migration) -> usize
Return the number of steps in the migration.
Invariant: migration_is_empty() == true iff migration_len() == 0.
source§fn migration_summary(&self, migration: &Migration) -> String
fn migration_summary(&self, migration: &Migration) -> String
Render a human-readable drift summary for the migration.
source§fn reset(
&mut self,
_soft: bool,
_namespaces: Option<Namespaces>
) -> BoxFuture<'_, ConnectorResult<()>>
fn reset( &mut self, _soft: bool, _namespaces: Option<Namespaces> ) -> BoxFuture<'_, ConnectorResult<()>>
Drop all database state. Read more
source§fn migration_persistence(&mut self) -> &mut dyn MigrationPersistence
fn migration_persistence(&mut self) -> &mut dyn MigrationPersistence
See MigrationPersistence.
source§fn destructive_change_checker(&mut self) -> &mut dyn DestructiveChangeChecker
fn destructive_change_checker(&mut self) -> &mut dyn DestructiveChangeChecker
source§fn acquire_lock(&mut self) -> BoxFuture<'_, ConnectorResult<()>>
fn acquire_lock(&mut self) -> BoxFuture<'_, ConnectorResult<()>>
If possible on the target connector, acquire an advisory lock, so multiple instances of migrate do not run concurrently.
source§fn introspect<'a>(
&'a mut self,
ctx: &'a IntrospectionContext
) -> BoxFuture<'a, ConnectorResult<IntrospectionResult>>
fn introspect<'a>( &'a mut self, ctx: &'a IntrospectionContext ) -> BoxFuture<'a, ConnectorResult<IntrospectionResult>>
In-tro-spec-shon.
source§fn render_script(
&self,
_migration: &Migration,
_diagnostics: &DestructiveChangeDiagnostics
) -> ConnectorResult<String>
fn render_script( &self, _migration: &Migration, _diagnostics: &DestructiveChangeDiagnostics ) -> ConnectorResult<String>
Render the migration to a runnable script. Read more
source§fn set_params(&mut self, params: ConnectorParams) -> ConnectorResult<()>
fn set_params(&mut self, params: ConnectorParams) -> ConnectorResult<()>
Accept and validate new ConnectorParams. This should fail if it is called twice on the same
connector.
source§fn set_preview_features(&mut self, preview_features: BitFlags<PreviewFeature>)
fn set_preview_features(&mut self, preview_features: BitFlags<PreviewFeature>)
Accept a new set of enabled preview features.
source§fn set_host(&mut self, host: Arc<dyn ConnectorHost>)
fn set_host(&mut self, host: Arc<dyn ConnectorHost>)
Accept a new ConnectorHost.
source§fn validate_migrations<'a>(
&'a mut self,
_migrations: &'a [MigrationDirectory],
_namespaces: Option<Namespaces>
) -> BoxFuture<'a, ConnectorResult<()>>
fn validate_migrations<'a>( &'a mut self, _migrations: &'a [MigrationDirectory], _namespaces: Option<Namespaces> ) -> BoxFuture<'a, ConnectorResult<()>>
If possible, check that the passed in migrations apply cleanly.
source§fn extract_namespaces(&self, _schema: &DatabaseSchema) -> Option<Namespaces>
fn extract_namespaces(&self, _schema: &DatabaseSchema) -> Option<Namespaces>
Extract the namespaces from a Sql database schema (it will return None for mongodb).
source§fn check_database_version_compatibility(
&self,
_datamodel: &ValidatedSchema
) -> Option<DatabaseVersionIncompatibility>
fn check_database_version_compatibility( &self, _datamodel: &ValidatedSchema ) -> Option<DatabaseVersionIncompatibility>
Optionally check that the features implied by the provided datamodel are all compatible with
the specific database version being used.
source§fn migration_is_empty(&self, migration: &Migration) -> bool
fn migration_is_empty(&self, migration: &Migration) -> bool
Return whether the migration is empty.
Auto Trait Implementations§
impl !RefUnwindSafe for MongoDbSchemaConnector
impl Send for MongoDbSchemaConnector
impl Sync for MongoDbSchemaConnector
impl Unpin for MongoDbSchemaConnector
impl !UnwindSafe for MongoDbSchemaConnector
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
Mutably borrows from an owned value. Read more
source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,
Causes
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,
Causes
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,
Causes
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,
Causes
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,
Causes
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,
Causes
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,
Causes
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,
Borrows
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
Mutably borrows
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
Borrows
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
Mutably borrows
self
, then passes self.as_mut()
into the pipe
function.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Immutable access to the
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
Mutable access to the
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
Immutable access to the
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
Mutable access to the
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Immutable access to the
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Mutable access to the
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
Calls
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.