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 }