diff --git a/apps/carrier-connector/internal/id/generate.go b/apps/carrier-connector/internal/id/generate.go index a819240..1497b6e 100644 --- a/apps/carrier-connector/internal/id/generate.go +++ b/apps/carrier-connector/internal/id/generate.go @@ -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___ + 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 {