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 }