better-auth-api 1.0.0-alpha.5

Plugin implementations for better-auth
use better_auth_core::store::database_hooks::{
    DatabaseHookContext, DatabaseHookUpdate, DatabaseHooks,
};
use better_auth_core::{AuthResult, AuthSchema, FieldMap, FieldValue};

pub(super) struct PhoneNumberHooks;

#[better_auth_core::database_hooks("plugin:phone-number")]
impl<S: AuthSchema> DatabaseHooks<S> for PhoneNumberHooks {
    async fn before_update_user(
        &self,
        user: &mut FieldMap,
        _: &DatabaseHookContext<'_, S>,
    ) -> AuthResult<DatabaseHookUpdate<FieldMap>> {
        if user.get("phoneNumber").is_some_and(FieldValue::is_null) {
            let mut patch = user.clone();
            let _ = patch.insert("phoneNumberVerified".into(), false.into());
            Ok(DatabaseHookUpdate::Patch(patch))
        } else {
            Ok(DatabaseHookUpdate::Continue)
        }
    }
}