use crate::Timestamp; #[spacetimedb::table(accessor = auth_store_snapshot)] pub struct AuthStoreSnapshot { #[primary_key] pub(crate) snapshot_id: String, pub(crate) snapshot_json: String, pub(crate) updated_at: Timestamp, } #[spacetimedb::table(accessor = auth_store_projection_meta)] pub struct AuthStoreProjectionMeta { #[primary_key] pub(crate) meta_id: String, pub(crate) updated_at: Timestamp, } #[spacetimedb::table( accessor = user_account, index(accessor = by_user_account_username, btree(columns = [username])), index(accessor = by_user_account_public_code, btree(columns = [public_user_code])) )] pub struct UserAccount { #[primary_key] pub(crate) user_id: String, pub(crate) public_user_code: String, pub(crate) username: String, pub(crate) display_name: String, pub(crate) avatar_url: Option, pub(crate) phone_number_masked: Option, pub(crate) phone_number_e164: Option, pub(crate) login_method: String, pub(crate) binding_status: String, pub(crate) wechat_bound: bool, pub(crate) password_hash: String, pub(crate) password_login_enabled: bool, pub(crate) token_version: u64, #[default(None::>)] pub(crate) user_tags: Option>, } #[spacetimedb::table( accessor = auth_identity, index(accessor = by_auth_identity_user_id, btree(columns = [user_id])), index(accessor = by_auth_identity_provider_uid, btree(columns = [provider, provider_uid])) )] pub struct AuthIdentity { #[primary_key] pub(crate) identity_id: String, pub(crate) user_id: String, pub(crate) provider: String, pub(crate) provider_uid: String, pub(crate) provider_union_id: Option, pub(crate) phone_e164: Option, pub(crate) display_name: Option, pub(crate) avatar_url: Option, } #[spacetimedb::table( accessor = refresh_session, index(accessor = by_refresh_session_user_id, btree(columns = [user_id])), index(accessor = by_refresh_session_token_hash, btree(columns = [refresh_token_hash])) )] pub struct RefreshSession { #[primary_key] pub(crate) session_id: String, pub(crate) user_id: String, pub(crate) refresh_token_hash: String, pub(crate) issued_by_provider: String, pub(crate) client_info_json: String, pub(crate) expires_at: String, pub(crate) revoked_at: Option, pub(crate) created_at: String, pub(crate) updated_at: String, pub(crate) last_seen_at: String, }