db/specs/models_heroledger/main/user.v
2025-08-05 11:00:20 +02:00

58 lines
2.2 KiB
V

module circle
import freeflowuniverse.herolib.hero.models.core
// Wallet represents a wallet associated with a circle for financial operations
pub struct User {
core.Base
pub mut:
username string // Unique username for the user @[index]
pubkey string // Public key for cryptographic operations @[index]
email []string @[index] // User's email addresses, needs to be considered unique and can be multiple
status UserStatus // Current user status
userprofile []SecretBox // User profile information stored in a secret box
kyc []SecretBox // KYC information stored in a secret box
}
pub enum UserStatus {
active
inactive
suspended
archived
}
pub struct UserProfile {
pub mut:
user_id u32 // Reference to the user entity @[index]
full_name string // Full name of the user
bio string // Short biography or description
profile_pic string // URL to the user's profile picture
links map[string]string // Social media or other relevant links
metadata map[string]string // Additional metadata associated with the user profile
}
pub struct KYCInfo {
pub mut:
user_id u32 // Reference to the user entity @[index]
full_name string // Full name of the user
date_of_birth u64 // Unix timestamp of user's date of birth
address string // User's residential address
phone_number string // User's phone number
id_number string // Government-issued ID number (e.g., passport, driver's license)
id_type string // Type of ID (e.g., "passport", "driver's license")
id_expiry u64 // Unix timestamp of ID expiry date
kyc_status KYCStatus // Current KYC status
kyc_verified bool // Whether the KYC information has been verified
kyc_verified_by u32 // User ID of the person who verified the KYC
kyc_verified_at u64 // Unix timestamp when KYC was verified
kyc_rejected_reason string // Reason for KYC rejection, if applicable
kyc_signature u32 // Signature of the user for KYC verification
metadata map[string]string // Additional metadata associated with the user profile
}
pub enum KYCStatus {
pending
approved
rejected
}