Files
telecom-platform/apps/carrier-connector/internal/id/generate.go
T
nutcas3 8cabf170f2 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
2026-05-02 05:11:19 +03:00

73 lines
1.9 KiB
Go

package id
import (
"fmt"
"time"
)
// GenerateRuleID generates a rule ID using Snowflake ID
func GenerateRuleID() string {
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
func GetCurrentTime() time.Time {
return time.Now()
}
// GenerateRandomString generates a random string of specified length
func GenerateRandomString(length int) string {
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
b := make([]byte, length)
for i := range b {
b[i] = charset[i%len(charset)]
}
return string(b)
}