mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-10-18 02:52:53 +00:00
feat: Refactor ID generation to use Snowflake IDs with prefixes and add domain-specific ID generators
- Replace timestamp-based GenerateRuleID with Snowflake-based GeneratePrefixed("rule")
- Replace random string-based GenerateEventID with Snowflake-based GeneratePrefixed("evt")
- Add GenerateUsageID with resourceType and tenantID parameters for traceable usage IDs
- Add GenerateAPIID, GenerateTenantID, GenerateProfileID, GenerateSubscriptionID, GenerateCarrierID, GeneratePricingID generators
This commit is contained in:
@@ -5,9 +5,55 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
|
||||
// GenerateRuleID generates a rule ID using Snowflake ID
|
||||
func GenerateRuleID() string {
|
||||
return fmt.Sprintf("rule_%d", GetCurrentTime().UnixNano())
|
||||
return GeneratePrefixed("rule")
|
||||
}
|
||||
|
||||
// GenerateEventID generates an event ID using Snowflake ID
|
||||
func GenerateEventID() string {
|
||||
return GeneratePrefixed("evt")
|
||||
}
|
||||
|
||||
// GenerateUsageID generates a usage ID using Snowflake ID with resourceType and tenantID
|
||||
func GenerateUsageID(resourceType, tenantID string) string {
|
||||
// Create a more traceable ID that includes resource type and tenant info
|
||||
// Format: usage_<resourceType>_<tenantID_short>_<snowflake>
|
||||
tenantShort := tenantID
|
||||
if len(tenantID) > 8 {
|
||||
tenantShort = tenantID[:8]
|
||||
}
|
||||
return fmt.Sprintf("usage_%s_%s_%s", resourceType, tenantShort, GenerateString())
|
||||
}
|
||||
|
||||
// GenerateAPIID generates an API ID using Snowflake ID
|
||||
func GenerateAPIID() string {
|
||||
return GeneratePrefixed("api")
|
||||
}
|
||||
|
||||
// GenerateTenantID generates a tenant ID using Snowflake ID
|
||||
func GenerateTenantID() string {
|
||||
return GeneratePrefixed("tnt")
|
||||
}
|
||||
|
||||
// GenerateProfileID generates a profile ID using Snowflake ID
|
||||
func GenerateProfileID() string {
|
||||
return GeneratePrefixed("prf")
|
||||
}
|
||||
|
||||
// GenerateSubscriptionID generates a subscription ID using Snowflake ID
|
||||
func GenerateSubscriptionID() string {
|
||||
return GeneratePrefixed("sub")
|
||||
}
|
||||
|
||||
// GenerateCarrierID generates a carrier ID using Snowflake ID
|
||||
func GenerateCarrierID() string {
|
||||
return GeneratePrefixed("car")
|
||||
}
|
||||
|
||||
// GeneratePricingID generates a pricing ID using Snowflake ID
|
||||
func GeneratePricingID() string {
|
||||
return GeneratePrefixed("prc")
|
||||
}
|
||||
|
||||
// GetCurrentTime returns the current time
|
||||
@@ -15,13 +61,8 @@ func GetCurrentTime() time.Time {
|
||||
return time.Now()
|
||||
}
|
||||
|
||||
func GenerateEventID() string {
|
||||
// Generate unique event ID (implementation depends on your ID generation strategy)
|
||||
return "evt_" + GenerateRandomString(16)
|
||||
}
|
||||
|
||||
// GenerateRandomString generates a random string of specified length
|
||||
func GenerateRandomString(length int) string {
|
||||
// Generate random string (implementation depends on your random string generation)
|
||||
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
b := make([]byte, length)
|
||||
for i := range b {
|
||||
|
||||
Reference in New Issue
Block a user