parent
6526935620
commit
39f615ebb2
@ -11,7 +11,8 @@ import {
|
||||
WhiteWineCharacteristic,
|
||||
AmberWineCharacteristic,
|
||||
RoseWineCharacteristic,
|
||||
RedWineCharacteristic
|
||||
RedWineCharacteristic,
|
||||
GrapeVarietal
|
||||
} from '../types'
|
||||
import { Alpha2Code } from 'i18n-iso-countries'
|
||||
import { CurrencyCode } from 'currency-codes-ts/dist/types'
|
||||
@ -33,7 +34,7 @@ export class Wine {
|
||||
public region: WineRegion, // appellation, village, sub-region, vineyard
|
||||
public name: string, // label
|
||||
public producerId: ObjectId, // product producer
|
||||
public varietal: string, // if more than one, list as 'blend'
|
||||
public grapeVarietal: GrapeVarietal[], // if more than one, list as 'blend'
|
||||
public vintage: number | VintageOptions, // year, nv (non-vintage) or mv (multi-vintage)
|
||||
public volume: WineVolume, // bottle volume
|
||||
public alcohol: number, // alcohol percentage
|
||||
|
@ -68,4 +68,291 @@ export enum WineVolume {
|
||||
'12L' = '12L'
|
||||
}
|
||||
|
||||
export enum GrapeVarietal {
|
||||
FieldBlend = 'FIELD BLEND',
|
||||
Acolon = 'Acolon',
|
||||
Albariño = 'Albariño',
|
||||
Aligoté = 'Aligoté',
|
||||
Altesse = 'Altesse',
|
||||
Amigne = 'Amigne',
|
||||
Ansonica = 'Ansonica',
|
||||
AntãoVaz = 'Antão Vaz',
|
||||
Arbane = 'Arbane',
|
||||
ArboisBlanc = 'Arbois Blanc',
|
||||
Arneis = 'Arneis',
|
||||
Arrufiac = 'Arrufiac',
|
||||
Assyrtiko = 'Assyrtiko',
|
||||
Auxerrois = 'Auxerrois',
|
||||
Bacchus = 'Bacchus',
|
||||
Biancolella = 'Biancolella',
|
||||
Bical = 'Bical',
|
||||
BlancDuBois = 'Blanc du Bois',
|
||||
BombinoBianco = 'Bombino Bianco',
|
||||
Bourboulenc = 'Bourboulenc',
|
||||
Bovale = 'Bovale',
|
||||
Catarratto = 'Catarratto',
|
||||
Chardonnay = 'Chardonnay',
|
||||
Chasselas = 'Chasselas',
|
||||
CheninBlanc = 'Chenin Blanc',
|
||||
Clairette = 'Clairette',
|
||||
Colombard = 'Colombard',
|
||||
Cortese = 'Cortese',
|
||||
Courbu = 'Courbu',
|
||||
Couston = 'Couston',
|
||||
Crouchen = 'Crouchen',
|
||||
Duras = 'Duras',
|
||||
Elbling = 'Elbling',
|
||||
Emir = 'Emir',
|
||||
Falanghina = 'Falanghina',
|
||||
FernãoPires = 'Fernão Pires',
|
||||
Fiano = 'Fiano',
|
||||
FolleBlanche = 'Folle Blanche',
|
||||
Friulano = 'Friulano',
|
||||
Furmint = 'Furmint',
|
||||
Gaglioppo = 'Gaglioppo',
|
||||
GamayBlanc = 'Gamay Blanc',
|
||||
GarnachaBlanca = 'Garnacha Blanca',
|
||||
Gascon = 'Gascon',
|
||||
Gavi = 'Gavi',
|
||||
Gewürztraminer = 'Gewürztraminer',
|
||||
Godello = 'Godello',
|
||||
GouaisBlanc = 'Gouais Blanc',
|
||||
Grechetto = 'Grechetto',
|
||||
GrenacheBlanc = 'Grenache Blanc',
|
||||
GrosManseng = 'Gros Manseng',
|
||||
GrünerVeltliner = 'Grüner Veltliner',
|
||||
Hárslevelü = 'Hárslevelü',
|
||||
Huxelrebe = 'Huxelrebe',
|
||||
Inzolia = 'Inzolia',
|
||||
Jacquère = 'Jacquère',
|
||||
Kerner = 'Kerner',
|
||||
KleinConstantia = 'Klein Constantia',
|
||||
Kunegund = 'Kunegund',
|
||||
Lagarino = 'Lagarino',
|
||||
Luglienga = 'Luglienga',
|
||||
Macabeo = 'Macabeo',
|
||||
Malvasia = 'Malvasia',
|
||||
Marsanne = 'Marsanne',
|
||||
MelonDeBourgogne = 'Melon de Bourgogne',
|
||||
MerlotBlanc = 'Merlot Blanc',
|
||||
Minutolo = 'Minutolo',
|
||||
Moscato = 'Moscato',
|
||||
MüllerThurgau = 'Müller-Thurgau',
|
||||
Muscadelle = 'Muscadelle',
|
||||
Muscat = 'Muscat',
|
||||
Nascetta = 'Nascetta',
|
||||
Nosiola = 'Nosiola',
|
||||
Nuragus = 'Nuragus',
|
||||
Okçular = 'Okçular',
|
||||
Ondenc = 'Ondenc',
|
||||
Oran = 'Oran',
|
||||
PacherencDuVicBilh = 'Pacherenc du Vic-Bilh',
|
||||
PansaBlanca = 'Pansa Blanca',
|
||||
Parellada = 'Parellada',
|
||||
Pecorino = 'Pecorino',
|
||||
PedroXiménez = 'Pedro Ximénez',
|
||||
PetitManseng = 'Petit Manseng',
|
||||
PetitMeslier = 'Petit Meslier',
|
||||
Picolit = 'Picolit',
|
||||
Picpoul = 'Picpoul',
|
||||
PinotBlanc = 'Pinot Blanc',
|
||||
PinotGrigio = 'Pinot Grigio',
|
||||
PinotGris = 'Pinot Gris',
|
||||
PinotMeunier = 'Pinot Meunier',
|
||||
PinotNoirBlanc = 'Pinot Noir Blanc',
|
||||
PiquepoulBlanc = 'Piquepoul Blanc',
|
||||
PlavacMali = 'Plavac Mali',
|
||||
Raboso = 'Raboso',
|
||||
Riesling = 'Riesling',
|
||||
RoterVeltliner = 'Roter Veltliner',
|
||||
Roupeiro = 'Roupeiro',
|
||||
Roussanne = 'Roussanne',
|
||||
SauvignonBlanc = 'Sauvignon Blanc',
|
||||
Savagnin = 'Savagnin',
|
||||
Scheurebe = 'Scheurebe',
|
||||
Sémillon = 'Sémillon',
|
||||
Sercial = 'Sercial',
|
||||
Siegerrebe = 'Siegerrebe',
|
||||
Silvaner = 'Silvaner',
|
||||
SouvignierGris = 'Souvignier Gris',
|
||||
Sylvaner = 'Sylvaner',
|
||||
Taminga = 'Taminga',
|
||||
TintaAmarela = 'Tinta Amarela',
|
||||
TintaBarroca = 'Tinta Barroca',
|
||||
Torrontés = 'Torrontés',
|
||||
Trebbiano = 'Trebbiano',
|
||||
Treixadura = 'Treixadura',
|
||||
UgniBlanc = 'Ugni Blanc',
|
||||
Verdejo = 'Verdejo',
|
||||
Verdelho = 'Verdelho',
|
||||
Verdicchio = 'Verdicchio',
|
||||
Vermentino = 'Vermentino',
|
||||
Viennoise = 'Viennoise',
|
||||
Viognier = 'Viognier',
|
||||
Vitovska = 'Vitovska',
|
||||
Xarello = 'Xarello',
|
||||
Xynomavro = 'Xynomavro',
|
||||
ZeleniVrh = 'Zeleni Vrh',
|
||||
Abbuoto = 'Abbuoto',
|
||||
Agiorgitiko = 'Agiorgitiko',
|
||||
Aglianico = 'Aglianico',
|
||||
Aladasturi = 'Aladasturi',
|
||||
Albarossa = 'Albarossa',
|
||||
AlicanteBouschet = 'Alicante Bouschet',
|
||||
Ancellotta = 'Ancellotta',
|
||||
Aragonez = 'Aragonez',
|
||||
Aramon = 'Aramon',
|
||||
Areni = 'Areni',
|
||||
Baga = 'Baga',
|
||||
Barbera = 'Barbera',
|
||||
Bastardo = 'Bastardo',
|
||||
Béquignol = 'Béquignol',
|
||||
BlackMuscat = 'Black Muscat',
|
||||
Blaufränkisch = 'Blaufränkisch',
|
||||
Bobal = 'Bobal',
|
||||
Boğazkere = 'Boğazkere',
|
||||
Bonarda = 'Bonarda',
|
||||
Bouchet = 'Bouchet',
|
||||
Brachetto = 'Brachetto',
|
||||
CabernetFranc = 'Cabernet Franc',
|
||||
CabernetSauvignon = 'Cabernet Sauvignon',
|
||||
CaiñoTinto = 'Caiño Tinto',
|
||||
Calabrese = 'Calabrese',
|
||||
Canaiolo = 'Canaiolo',
|
||||
Cannonau = 'Cannonau',
|
||||
Carignan = 'Carignan',
|
||||
Carmenère = 'Carmenère',
|
||||
Castelão = 'Castelão',
|
||||
Cataratto = 'Cataratto',
|
||||
Chambourcin = 'Chambourcin',
|
||||
Charbono = 'Charbono',
|
||||
Chenanson = 'Chenanson',
|
||||
Cinsault = 'Cinsault',
|
||||
Colonnata = 'Colonnata',
|
||||
Colorino = 'Colorino',
|
||||
Corvina = 'Corvina',
|
||||
Corvinone = 'Corvinone',
|
||||
Counoise = 'Counoise',
|
||||
Croatina = 'Croatina',
|
||||
Dolcetto = 'Dolcetto',
|
||||
Dornfelder = 'Dornfelder',
|
||||
Durif = 'Durif',
|
||||
Enantio = 'Enantio',
|
||||
Fer = 'Fer',
|
||||
Ferrandina = 'Ferrandina',
|
||||
FeteascăNeagră = 'Fetească Neagră',
|
||||
FogliaTonda = 'Foglia Tonda',
|
||||
Freisa = 'Freisa',
|
||||
Frühburgunder = 'Frühburgunder',
|
||||
Gamay = 'Gamay',
|
||||
Garnacha = 'Garnacha',
|
||||
Girò = 'Girò',
|
||||
GodelloTinto = 'Godello Tinto',
|
||||
Graciano = 'Graciano',
|
||||
Greco = 'Greco',
|
||||
Grenache = 'Grenache',
|
||||
Grolleau = 'Grolleau',
|
||||
GrosCabernet = 'Gros Cabernet',
|
||||
Guanciale = 'Guanciale',
|
||||
Helfensteiner = 'Helfensteiner',
|
||||
Heroldrebe = 'Heroldrebe',
|
||||
Kadarka = 'Kadarka',
|
||||
KalecikKarasi = 'Kalecik Karasi',
|
||||
Kékfrankos = 'Kékfrankos',
|
||||
Lagrein = 'Lagrein',
|
||||
Lambrusco = 'Lambrusco',
|
||||
Liatiko = 'Liatiko',
|
||||
ListánNegro = 'Listán Negro',
|
||||
LoureiroTinto = 'Loureiro Tinto',
|
||||
Magliocco = 'Magliocco',
|
||||
Malbec = 'Malbec',
|
||||
MalvasiaNera = 'Malvasia Nera',
|
||||
Mammolo = 'Mammolo',
|
||||
Mandolari = 'Mandolari',
|
||||
MansengNoir = 'Manseng Noir',
|
||||
Marzemino = 'Marzemino',
|
||||
Mauzac = 'Mauzac',
|
||||
Mavroudi = 'Mavroudi',
|
||||
Mencia = 'Mencia',
|
||||
Merlot = 'Merlot',
|
||||
Miro = 'Miro',
|
||||
Mission = 'Mission',
|
||||
Molinara = 'Molinara',
|
||||
Monastrell = 'Monastrell',
|
||||
Montepulciano = 'Montepulciano',
|
||||
MoraviaAgria = 'Moravia Agria',
|
||||
Morellino = 'Morellino',
|
||||
Mourvèdre = 'Mourvèdre',
|
||||
Müllerrebe = 'Müllerrebe',
|
||||
MuscatRouge = 'Muscat Rouge',
|
||||
Narince = 'Narince',
|
||||
Nebbiolo = 'Nebbiolo',
|
||||
Negoska = 'Negoska',
|
||||
NerelloCappuccio = 'Nerello Cappuccio',
|
||||
NerelloMascalese = 'Nerello Mascalese',
|
||||
Öküzgözü = 'Öküzgözü',
|
||||
Pais = 'Pais',
|
||||
Pallagrello = 'Pallagrello',
|
||||
Passetoutgrain = 'Passetoutgrain',
|
||||
Patrigone = 'Patrigone',
|
||||
PetitBouschet = 'Petit Bouschet',
|
||||
PetitVerdot = 'Petit Verdot',
|
||||
Pignatello = 'Pignatello',
|
||||
PinotNoir = 'Pinot Noir',
|
||||
Pinotage = 'Pinotage',
|
||||
PiquepoulNoir = 'Piquepoul Noir',
|
||||
Primitivo = 'Primitivo',
|
||||
Priorat = 'Priorat',
|
||||
Prokupac = 'Prokupac',
|
||||
Refosco = 'Refosco',
|
||||
RibollaGialla = 'Ribolla Gialla',
|
||||
Robola = 'Robola',
|
||||
Romano = 'Romano',
|
||||
Rondinella = 'Rondinella',
|
||||
Rossese = 'Rossese',
|
||||
Roussin = 'Roussin',
|
||||
RubyCabernet = 'Ruby Cabernet',
|
||||
Sagrantino = 'Sagrantino',
|
||||
Sangiovese = 'Sangiovese',
|
||||
Sansovino = 'Sansovino',
|
||||
Saperavi = 'Saperavi',
|
||||
Schioppettino = 'Schioppettino',
|
||||
Sciacarello = 'Sciacarello',
|
||||
SémillonRouge = 'Sémillon Rouge',
|
||||
Shiraz = 'Shiraz',
|
||||
SilvanerRouge = 'Silvaner Rouge',
|
||||
Souzão = 'Souzão',
|
||||
Spanna = 'Spanna',
|
||||
StLaurent = 'St. Laurent',
|
||||
Sultani = 'Sultani',
|
||||
Syrah = 'Syrah',
|
||||
Tannat = 'Tannat',
|
||||
Tarrango = 'Tarrango',
|
||||
Tempranillo = 'Tempranillo',
|
||||
Teroldego = 'Teroldego',
|
||||
TintaFrancisca = 'Tinta Francisca',
|
||||
TintaRoriz = 'Tinta Roriz',
|
||||
TintoFino = 'Tinto Fino',
|
||||
TourigaFranca = 'Touriga Franca',
|
||||
TourigaNacional = 'Touriga Nacional',
|
||||
Trincadeira = 'Trincadeira',
|
||||
Trollinger = 'Trollinger',
|
||||
UvaDiTroia = 'Uva di Troia',
|
||||
UvaLonganesi = 'Uva Longanesi',
|
||||
UvaRara = 'Uva Rara',
|
||||
Vaccarèse = 'Vaccarèse',
|
||||
Valdiguié = 'Valdiguié',
|
||||
Valpolicella = 'Valpolicella',
|
||||
VermentinoNero = 'Vermentino Nero',
|
||||
ViennoiseRouge = 'Viennoise Rouge',
|
||||
Vignoles = 'Vignoles',
|
||||
Vinhão = 'Vinhão',
|
||||
ViognierRouge = 'Viognier Rouge',
|
||||
VitisRiparia = 'Vitis Riparia',
|
||||
ZanteCurrant = 'Zante Currant',
|
||||
Zeni = 'Zeni',
|
||||
Žilavka = 'Žilavka',
|
||||
Zweigelt = 'Zweigelt'
|
||||
}
|
||||
|
||||
// retsina greek wine with pine essences should be considered a vermouth
|
||||
|
@ -9,7 +9,8 @@ import {
|
||||
WhiteWineCharacteristic,
|
||||
AmberWineCharacteristic,
|
||||
RoseWineCharacteristic,
|
||||
RedWineCharacteristic
|
||||
RedWineCharacteristic,
|
||||
GrapeVarietal
|
||||
} from '../../types'
|
||||
import { wineRegionsMap, isObject } from '../'
|
||||
import {
|
||||
@ -375,6 +376,9 @@ export const wineValidation = (data: unknown): Joi.ValidationResult =>
|
||||
varietal: Joi.string().required(),
|
||||
volume: volumeValidation(WineVolume),
|
||||
alcohol: alcoholValidation,
|
||||
grapeVarietal: Joi.array()
|
||||
.items(Joi.string().valid(...Object.values(GrapeVarietal)))
|
||||
.required(),
|
||||
vintage: vintageValidation,
|
||||
viticulture: Joi.string()
|
||||
.valid(...Object.values(Viticulture))
|
||||
|
Loading…
x
Reference in New Issue
Block a user