Skip to main content

rustauth_plugins/phone_number/
schema.rs

1use rustauth_core::db::{DbField, DbFieldType, TableOptions};
2use rustauth_core::plugin::PluginSchemaContribution;
3
4#[derive(Debug, Clone, Default, PartialEq, Eq)]
5pub struct PhoneNumberSchemaOptions {
6    pub user: TableOptions,
7}
8
9pub(crate) const PHONE_NUMBER_FIELD: &str = "phone_number";
10pub(crate) const PHONE_NUMBER_VERIFIED_FIELD: &str = "phone_number_verified";
11
12pub(crate) fn phone_number_field(options: &PhoneNumberSchemaOptions) -> PluginSchemaContribution {
13    PluginSchemaContribution::field(
14        "user",
15        PHONE_NUMBER_FIELD,
16        DbField::new(
17            options
18                .user
19                .field_names
20                .get("phoneNumber")
21                .or_else(|| options.user.field_names.get("phone_number"))
22                .cloned()
23                .unwrap_or_else(|| "phone_number".to_owned()),
24            DbFieldType::String,
25        )
26        .optional()
27        .unique(),
28    )
29}
30
31pub(crate) fn phone_number_verified_field(
32    options: &PhoneNumberSchemaOptions,
33) -> PluginSchemaContribution {
34    PluginSchemaContribution::field(
35        "user",
36        PHONE_NUMBER_VERIFIED_FIELD,
37        DbField::new(
38            options
39                .user
40                .field_names
41                .get("phoneNumberVerified")
42                .or_else(|| options.user.field_names.get("phone_number_verified"))
43                .cloned()
44                .unwrap_or_else(|| "phone_number_verified".to_owned()),
45            DbFieldType::Boolean,
46        )
47        .optional(),
48    )
49}