token, add another field

This commit is contained in:
Brandon Thomas committed 2026-05-13 19:47:43 -04:00
1 parent 62250f0e3e
commit 673f20fca5
5 files changed
+26 -3

No files matched your search

@@ -10,9 +10,11 @@ CREATE TABLE user_referral_codes (
-- The human-readable referral code (e.g. a username or custom code).
-- This can be changed.
-- These must be unique.
code VARCHAR(32) NOT NULL,
-- Lowercased version of `code` for case-insensitive uniqueness lookups.
code_lowercase VARCHAR(32) NOT NULL,
-- The user who owns this referral code.
owner_user_token VARCHAR(32) NOT NULL,
@@ -25,7 +27,7 @@ CREATE TABLE user_referral_codes (
-- INDICES --
PRIMARY KEY (id),
UNIQUE KEY unique_token (token),
UNIQUE KEY unique_code (code),
UNIQUE KEY unique_code_lowercase (code_lowercase),
KEY index_owner_user_token (owner_user_token)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
@@ -11,6 +11,9 @@ CREATE TABLE user_referral_codes (
-- The human-readable referral code (e.g. a username or custom code).
code VARCHAR(32) NOT NULL,
-- Lowercased version of `code` for case-insensitive uniqueness lookups.
code_lowercase VARCHAR(32) NOT NULL,
-- The user who owns this referral code.
owner_user_token VARCHAR(32) NOT NULL,
@@ -23,7 +26,7 @@ CREATE TABLE user_referral_codes (
-- INDICES --
PRIMARY KEY (id),
UNIQUE KEY unique_token (token),
UNIQUE KEY unique_code (code),
UNIQUE KEY unique_code_lowercase (code_lowercase),
KEY index_owner_user_token (owner_user_token)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
@@ -47,6 +47,7 @@ pub(crate) enum TokenPrefix {
User,
UserImpersonationRequest,
UserBookmark,
UserReferralCode,
UserSession,
UserSubscription,
VoiceConversionModel,
@@ -134,6 +135,7 @@ impl PrefixGenerator for TokenPrefix {
Self::User => "user_", // NB: Previously "U:"
Self::UserImpersonationRequest => "uimpr_",
Self::UserBookmark => "ub_",
Self::UserReferralCode => "urc_",
Self::UserSession => "session_",
Self::UserSubscription => "subscription_", // NB: Previously "SUB:"
Self::VoiceConversionModel => "vcm_",
@@ -31,6 +31,7 @@ pub mod twitch_oauth_tokens_grouping;
pub mod twitch_oauth_tokens_internal;
pub mod user_bookmarks;
pub mod user_impersonation_requests;
pub mod user_referral_codes;
pub mod user_sessions;
pub mod user_subscriptions;
pub mod users;
@@ -0,0 +1,15 @@
use serde::Deserialize;
use serde::Serialize;
use utoipa::ToSchema;
use crate::prefixes::TokenPrefix;
/// The primary key for user referral codes.
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize, Default, ToSchema)]
#[cfg_attr(feature = "database", derive(sqlx::Type))]
#[cfg_attr(feature = "database", sqlx(transparent))]
pub struct UserReferralCodeToken(pub String);
impl_mysql_token_from_row!(UserReferralCodeToken);
impl_string_token!(UserReferralCodeToken);
impl_crockford_generator!(UserReferralCodeToken, 18usize, TokenPrefix::UserReferralCode, CrockfordLower);