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:
nutcas3
2026-05-02 05:11:19 +03:00
parent cac6db74a7
commit 8cabf170f2
+49 -8
View File
@@ -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 {