flamingo.me/flamingo-commerce/v3@v3.11.0/category/domain/media.go (about)

     1  package domain
     2  
     3  type (
     4  	// Media provides the category media interface
     5  	Media interface {
     6  		Type() string
     7  		MimeType() string
     8  		Usage() string
     9  		Title() string
    10  		Reference() string
    11  	}
    12  
    13  	// Medias defines the category media slice
    14  	Medias []Media
    15  
    16  	// MediaData defines the default domain category media data model
    17  	MediaData struct {
    18  		MediaType      string
    19  		MediaMimeType  string
    20  		MediaTitle     string
    21  		MediaReference string
    22  		MediaUsage     string
    23  	}
    24  )
    25  
    26  // Media usage constants
    27  const (
    28  	MediaUsageTeaser = "teaser"
    29  	MediaUsageDetail = "detail"
    30  )
    31  
    32  var _ Media = (*MediaData)(nil)
    33  
    34  // MimeType gets the media mime type
    35  func (m MediaData) MimeType() string {
    36  	return m.MediaMimeType
    37  }
    38  
    39  // Title gets the media title
    40  func (m MediaData) Title() string {
    41  	return m.MediaTitle
    42  }
    43  
    44  // Reference gets the media reference
    45  func (m MediaData) Reference() string {
    46  	return m.MediaReference
    47  }
    48  
    49  // Type gets the media type
    50  func (m MediaData) Type() string {
    51  	return m.MediaType
    52  }
    53  
    54  // Usage gets the media usage
    55  func (m MediaData) Usage() string {
    56  	return m.MediaUsage
    57  }
    58  
    59  // Has checks if the Medias contain a media with `usage`
    60  func (m Medias) Has(usage string) bool {
    61  	for _, media := range m {
    62  		if media.Usage() == usage {
    63  			return true
    64  		}
    65  	}
    66  
    67  	return false
    68  }
    69  
    70  // Get returns a *Media with `usage`, empty media result if none was found
    71  func (m Medias) Get(usage string) Media {
    72  	for _, media := range m {
    73  		if media.Usage() == usage {
    74  			return media
    75  		}
    76  	}
    77  
    78  	return MediaData{}
    79  }