package arn import ( "errors" "strings" shortid "github.com/ventu-io/go-shortid" ) // ID is used for object identification and is simply a string. type ID = string // GenerateID generates a unique ID for a given collection. func GenerateID(collection string) ID { id, _ := shortid.Generate() // Retry until we find an unused ID retry := 0 for { _, err := DB.Get(collection, id) if err != nil && strings.Contains(err.Error(), "not found") { return id } retry++ if retry > 10 { panic(errors.New("Can't generate unique ID")) } id, _ = shortid.Generate() } }