github.com/TBD54566975/ftl@v0.219.0/internal/model/deployment_key.go (about) 1 package model 2 3 import ( 4 "database/sql" 5 "database/sql/driver" 6 "encoding" 7 "errors" 8 "strings" 9 ) 10 11 type DeploymentKey = KeyType[DeploymentPayload, *DeploymentPayload] 12 13 var _ interface { 14 sql.Scanner 15 driver.Valuer 16 encoding.TextUnmarshaler 17 encoding.TextMarshaler 18 } = (*DeploymentKey)(nil) 19 20 func NewDeploymentKey(module string) DeploymentKey { return newKey[DeploymentPayload](module) } 21 func ParseDeploymentKey(key string) (DeploymentKey, error) { 22 return parseKey[DeploymentPayload](key) 23 } 24 25 type DeploymentPayload struct { 26 Module string 27 } 28 29 var _ KeyPayload = (*DeploymentPayload)(nil) 30 31 func (d *DeploymentPayload) Kind() string { return "dpl" } 32 func (d *DeploymentPayload) String() string { return d.Module } 33 func (d *DeploymentPayload) Parse(parts []string) error { 34 if len(parts) == 0 { 35 return errors.New("expected <module> but got empty string") 36 } 37 d.Module = strings.Join(parts, "-") 38 return nil 39 } 40 func (d *DeploymentPayload) RandomBytes() int { return 10 }