chore: fixed types naming

This commit is contained in:
nostrdev-com 2025-04-14 12:45:59 +03:00
parent 079b5958ef
commit 4a7b9f194c
20 changed files with 162 additions and 172 deletions

@ -10,7 +10,7 @@ import {
spiritsRouter,
coffeeRouter
} from './routes'
import { Routes } from './types'
import { Route } from './types'
dotenv.config()
@ -19,13 +19,13 @@ const port = process.env.PORT || 3000
connectToDatabase()
.then(() => {
app.use(Routes.Users, usersRouter)
app.use(Routes.NostrEvents, nostrRouter)
app.use(Routes.Reviews, reviewsRouter)
app.use(Routes.Wines, winesRouter)
app.use(Routes.Sake, sakeRouter)
app.use(Routes.Spirits, spiritsRouter)
app.use(Routes.Coffee, coffeeRouter)
app.use(Route.Users, usersRouter)
app.use(Route.NostrEvents, nostrRouter)
app.use(Route.Reviews, reviewsRouter)
app.use(Route.Wines, winesRouter)
app.use(Route.Sake, sakeRouter)
app.use(Route.Spirits, spiritsRouter)
app.use(Route.Coffee, coffeeRouter)
app.listen(port, () => {
console.log(`Server started at http://localhost:${port}`)

@ -2,9 +2,9 @@ import { ObjectId } from 'mongodb'
import {
SakeDesignation,
SakeStarter,
VintageOptions,
SakeCharacteristics,
StandardDrinks,
VintageOption,
SakeCharacteristic,
StandardDrink,
SakeVolume,
RiceVarietal,
SakeYeastStrain,
@ -24,15 +24,15 @@ export class Sake {
public producerId: ObjectId, // product producer
public designation: SakeDesignation, // table, pure, blended
public polishRate: number, // %
public characteristics: SakeCharacteristics[],
public characteristics: SakeCharacteristic[],
public starter: SakeStarter, // sake starter
public yeastStrain: SakeYeastStrain,
public volume: SakeVolume, // bottle volume
public alcohol: number, // alcohol percentage
public standardDrinks: StandardDrinks, // number representing an amount of standard drinks per bottle per 100ml
public standardDrinks: StandardDrink, // number representing an amount of standard drinks per bottle per 100ml
public riceVarietal: RiceVarietal[], // if more than one, list as 'blend'
public koji: SakeKoji, // if more than one, list as 'blend'
public vintage: number | VintageOptions, // year, nv (non-vintage) or mv (multi-vintage)
public vintage: number | VintageOption, // year, nv (non-vintage) or mv (multi-vintage)
public RRPamount: number, // 20
public RRPcurrency: CurrencyCode, // USD
public description: string, // detailed description of the product

@ -3,10 +3,10 @@ import {
SpiritType,
SpiritVariant,
Ingredient,
VintageOptions,
StandardDrinks,
VintageOption,
StandardDrink,
SpiritVolume,
SpiritCharacteristics
SpiritCharacteristic
} from '../types'
import { Alpha2Code } from 'i18n-iso-countries'
import { CurrencyCode } from 'currency-codes-ts/dist/types'
@ -22,12 +22,12 @@ export class Spirit {
public producerId: ObjectId, // product producer
public type: SpiritType, // spirit type
public variant: SpiritVariant, // vodka, rum, liqueur cream, etc
public characteristics: SpiritCharacteristics, // light aromatic, textural, fruit forward, structural & savoury, powerful
public characteristics: SpiritCharacteristic, // light aromatic, textural, fruit forward, structural & savoury, powerful
public ingredients: Ingredient[], // an array of ingredients(flavouring)
public volume: SpiritVolume, // bottle volume
public alcohol: number, // alcohol percentage
public vintage: number | VintageOptions, // year, nv (non-vintage) or mv (multi-vintage)
public standardDrinks: StandardDrinks, // an amount of standard drinks per 100ml and bottle in AU, UK and US
public vintage: number | VintageOption, // year, nv (non-vintage) or mv (multi-vintage)
public standardDrinks: StandardDrink, // an amount of standard drinks per 100ml and bottle in AU, UK and US
public RRPamount: number, // 20
public RRPcurrency: CurrencyCode, // USD
public description: string, // detailed description of the product

@ -3,8 +3,8 @@ import {
WineType,
Viticulture,
BottleClosure,
VintageOptions,
StandardDrinks,
VintageOption,
StandardDrink,
WineRegion,
WineVolume,
WineStyle,
@ -35,10 +35,10 @@ export class Wine {
public name: string, // label
public producerId: ObjectId, // product producer
public grapeVarietal: GrapeVarietal[], // if more than one, list as 'blend'
public vintage: number | VintageOptions, // year, nv (non-vintage) or mv (multi-vintage)
public vintage: number | VintageOption, // year, nv (non-vintage) or mv (multi-vintage)
public volume: WineVolume, // bottle volume
public alcohol: number, // alcohol percentage
public standardDrinks: StandardDrinks, // an amount of standard drinks per 100ml and bottle in AU, UK and US
public standardDrinks: StandardDrink, // an amount of standard drinks per 100ml and bottle in AU, UK and US
public viticulture: Viticulture, // viticulture
public sulfites: number, // parts per million
public filtered: boolean, // is wine filtered (fined (egg or fish))

@ -10,7 +10,7 @@ import {
volumeToMl
} from '../utils'
import Joi from 'joi'
import { DBcollections, ProductType } from '../types'
import { DBcollection, ProductType } from '../types'
export const sakeRouter = express.Router()
@ -51,7 +51,7 @@ sakeRouter.post('/', async (req: Request, res: Response) => {
productCodeEAN,
productCodeUPC,
productCodeSKU,
DBcollections.Sake,
DBcollection.Sake,
ProductType.Sake
)
@ -60,7 +60,7 @@ sakeRouter.post('/', async (req: Request, res: Response) => {
volumeToMl(sake.volume)
)
const result = await collections[DBcollections.Sake]?.insertOne(sake)
const result = await collections[DBcollection.Sake]?.insertOne(sake)
handleReqSuccess(res, result, ProductType.Spirit)
} catch (error: unknown) {

@ -10,7 +10,7 @@ import {
volumeToMl
} from '../utils'
import Joi from 'joi'
import { DBcollections, ProductType } from '../types'
import { DBcollection, ProductType } from '../types'
export const spiritsRouter = express.Router()
@ -50,7 +50,7 @@ spiritsRouter.post('/', async (req: Request, res: Response) => {
productCodeEAN,
productCodeUPC,
productCodeSKU,
DBcollections.Spirits,
DBcollection.Spirits,
ProductType.Spirit
)
@ -59,7 +59,7 @@ spiritsRouter.post('/', async (req: Request, res: Response) => {
volumeToMl(spirit.volume)
)
const result = await collections[DBcollections.Spirits]?.insertOne(spirit)
const result = await collections[DBcollection.Spirits]?.insertOne(spirit)
handleReqSuccess(res, result, ProductType.Spirit)
} catch (error: unknown) {

@ -10,7 +10,7 @@ import {
volumeToMl
} from '../utils'
import Joi from 'joi'
import { DBcollections, ProductType } from '../types'
import { DBcollection, ProductType } from '../types'
export const winesRouter = express.Router()
@ -19,7 +19,7 @@ winesRouter.use(express.json())
// GET
winesRouter.get('/', async (_req: Request, res: Response) => {
try {
const wines = await collections[DBcollections.Wines]?.find({}).toArray()
const wines = await collections[DBcollection.Wines]?.find({}).toArray()
res.status(200).send(wines)
} catch (error: unknown) {
@ -51,7 +51,7 @@ winesRouter.post('/', async (req: Request, res: Response) => {
productCodeEAN,
productCodeUPC,
productCodeSKU,
DBcollections.Wines,
DBcollection.Wines,
ProductType.Wine
)
@ -60,7 +60,7 @@ winesRouter.post('/', async (req: Request, res: Response) => {
volumeToMl(wine.volume)
)
const result = await collections[DBcollections.Wines]?.insertOne(wine)
const result = await collections[DBcollection.Wines]?.insertOne(wine)
handleReqSuccess(res, result, ProductType.Wine)
} catch (error: unknown) {

@ -1,16 +1,16 @@
import * as mongoDB from 'mongodb'
import * as dotenv from 'dotenv'
import { DBcollections } from '../types'
import { DBcollection } from '../types'
// Global Variables
export const collections: {
[DBcollections.Users]?: mongoDB.Collection
[DBcollections.NostrEvents]?: mongoDB.Collection
[DBcollections.Reviews]?: mongoDB.Collection
[DBcollections.Wines]?: mongoDB.Collection
[DBcollections.Sake]?: mongoDB.Collection
[DBcollections.Spirits]?: mongoDB.Collection
[DBcollections.Coffee]?: mongoDB.Collection
[DBcollection.Users]?: mongoDB.Collection
[DBcollection.NostrEvents]?: mongoDB.Collection
[DBcollection.Reviews]?: mongoDB.Collection
[DBcollection.Wines]?: mongoDB.Collection
[DBcollection.Sake]?: mongoDB.Collection
[DBcollection.Spirits]?: mongoDB.Collection
[DBcollection.Coffee]?: mongoDB.Collection
} = {}
// Initialize Connection
@ -29,20 +29,20 @@ export async function connectToDatabase() {
const db: mongoDB.Db = client.db(process.env.DB_NAME)
const usersCollection: mongoDB.Collection = db.collection(DBcollections.Users)
const usersCollection: mongoDB.Collection = db.collection(DBcollection.Users)
const nostrEventsCollection: mongoDB.Collection = db.collection(
DBcollections.NostrEvents
DBcollection.NostrEvents
)
const reviewsCollection: mongoDB.Collection = db.collection(
DBcollections.Reviews
DBcollection.Reviews
)
const winesCollection: mongoDB.Collection = db.collection(DBcollections.Wines)
const sakeCollection: mongoDB.Collection = db.collection(DBcollections.Sake)
const winesCollection: mongoDB.Collection = db.collection(DBcollection.Wines)
const sakeCollection: mongoDB.Collection = db.collection(DBcollection.Sake)
const spiritsCollection: mongoDB.Collection = db.collection(
DBcollections.Spirits
DBcollection.Spirits
)
const coffeeCollection: mongoDB.Collection = db.collection(
DBcollections.Coffee
DBcollection.Coffee
)
collections.users = usersCollection

@ -1,4 +1,4 @@
export enum DBcollections {
export enum DBcollection {
Users = 'users',
NostrEvents = 'nostrEvents',
Reviews = 'reviews',

@ -61,20 +61,16 @@ export enum Ingredient {
Walnut = 'Walnut'
}
export enum VintageOptions {
export enum VintageOption {
NV = 'NV',
MV = 'MV'
}
export interface StandardDrinks {
export interface StandardDrink {
'100ml': { AU: number; UK: number; US: number }
bottle: { AU: number; UK: number; US: number }
}
export enum RatingOptions {
NoScore = 'NS'
}
export enum ProductType {
Wine = 'Wine',
Spirit = 'Spirit',

@ -1,4 +1,4 @@
export enum Routes {
export enum Route {
Users = '/users',
NostrEvents = '/nostr',
Reviews = '/reviews',

@ -80,7 +80,7 @@ export interface SakePolishMin {
min: number
}
export enum SakeCharacteristics {
export enum SakeCharacteristic {
LightAndRefreshing = 'Light and Refreshing',
CleanAndCrisp = 'Clean and Crisp',
FruityAndAromatic = 'Fruity and Aromatic',

@ -42,7 +42,7 @@ export enum SpiritVolume {
'1L' = '1L'
}
export enum SpiritCharacteristics {
export enum SpiritCharacteristic {
LightAndNeutral = 'Light and Neutral',
FruityAndAromatic = 'Fruity and Aromatic',
HerbalAndBotanical = 'Herbal and Botanical',
@ -51,7 +51,7 @@ export enum SpiritCharacteristics {
RichAndFullBodied = 'Rich and Full-Bodied'
}
export enum WhiteSpiritVariants {
export enum WhiteSpiritVariant {
Absinthe = 'Absinthe',
Pastis = 'Pastis',
Vodka = 'Vodka',
@ -67,7 +67,7 @@ export enum WhiteSpiritVariants {
Arrack = 'Arrack'
}
export enum DarkSpiritVariants {
export enum DarkSpiritVariant {
Absinthe = 'Absinthe',
Brandy = 'Brandy',
Calvados = 'Calvados',
@ -80,7 +80,7 @@ export enum DarkSpiritVariants {
Whiskey = 'Whiskey'
}
export enum LiqueursSpiritVariants {
export enum LiqueursSpiritVariant {
Amaro = 'Amaro',
Coffee = 'Coffee',
Cream = 'Cream',

@ -1,10 +1,10 @@
import { SakeVolume, SpiritVolume, StandardDrinks, WineVolume } from '../types'
import { SakeVolume, SpiritVolume, StandardDrink, WineVolume } from '../types'
import { roundToOneDecimal } from './'
export const alcoholToStandardDrinks = (
alcohol: number,
bottle: number
): StandardDrinks => {
): StandardDrink => {
const UK100ml = roundToOneDecimal(10 * alcohol)
const AU100ml = roundToOneDecimal(7.91 * alcohol)
const US100ml = roundToOneDecimal(5.64 * alcohol)

@ -1,30 +1,27 @@
import {
SpiritCharacteristics,
SpiritCharacteristic,
SpiritType,
WhiteSpiritVariants,
DarkSpiritVariants,
LiqueursSpiritVariants
WhiteSpiritVariant,
DarkSpiritVariant,
LiqueursSpiritVariant
} from '../types'
// TODO: improve types
export const spiritVariantMap: {
[key in SpiritType]:
| {
[key in WhiteSpiritVariants]: (string | { [key: string]: string[] })[]
[key in WhiteSpiritVariant]: (string | { [key: string]: string[] })[]
}
| {
[key in DarkSpiritVariants]: (string | { [key: string]: string[] })[]
[key in DarkSpiritVariant]: (string | { [key: string]: string[] })[]
}
| {
[key in LiqueursSpiritVariants]: (
| string
| { [key: string]: string[] }
)[]
[key in LiqueursSpiritVariant]: (string | { [key: string]: string[] })[]
}
} = {
[SpiritType.White]: {
[WhiteSpiritVariants.Absinthe]: ['Blanche'],
[WhiteSpiritVariants.Pastis]: [
[WhiteSpiritVariant.Absinthe]: ['Blanche'],
[WhiteSpiritVariant.Pastis]: [
'Anise',
'Fennel',
'Licorice Root',
@ -36,7 +33,7 @@ export const spiritVariantMap: {
'Cinnamon',
'Clove'
],
[WhiteSpiritVariants.Vodka]: [
[WhiteSpiritVariant.Vodka]: [
'Wheat',
'Rye',
'Corn',
@ -46,12 +43,12 @@ export const spiritVariantMap: {
'Fruits',
'Grains'
],
[WhiteSpiritVariants.Genever]: [
[WhiteSpiritVariant.Genever]: [
{
Young: ['Juniper']
}
],
[WhiteSpiritVariants.Gin]: [
[WhiteSpiritVariant.Gin]: [
{
'London Dry': [
'Juniper',
@ -68,11 +65,11 @@ export const spiritVariantMap: {
},
'Plymouth'
],
[WhiteSpiritVariants.Mezcal]: [
[WhiteSpiritVariant.Mezcal]: [
{ Joven: ['Espadín', 'Tepeztate', 'Tequilana (blue)', 'Tobalá'] }
],
[WhiteSpiritVariants.Rum]: ['Blanco', 'Cachaça', 'Platino', 'Agricole'],
[WhiteSpiritVariants.EauDeVie]: [
[WhiteSpiritVariant.Rum]: ['Blanco', 'Cachaça', 'Platino', 'Agricole'],
[WhiteSpiritVariant.EauDeVie]: [
'Apple',
'Blackcurrant',
'Butterscotch',
@ -81,27 +78,27 @@ export const spiritVariantMap: {
'Plum',
'Raspberries'
],
[WhiteSpiritVariants.Grappa]: ['Marc', 'Pisco'],
[WhiteSpiritVariants.Baijiu]: [
[WhiteSpiritVariant.Grappa]: ['Marc', 'Pisco'],
[WhiteSpiritVariant.Baijiu]: [
'Sorghum',
'Wheat',
'Barley',
'Rice',
'Millet'
],
[WhiteSpiritVariants.Soju]: [
[WhiteSpiritVariant.Soju]: [
'Barley',
'Brown sugar',
'Buckwheat',
'Rice',
'Sweet Potato'
],
[WhiteSpiritVariants.Aquavit]: [],
[WhiteSpiritVariants.Arrack]: []
[WhiteSpiritVariant.Aquavit]: [],
[WhiteSpiritVariant.Arrack]: []
},
[SpiritType.Dark]: {
[DarkSpiritVariants.Absinthe]: ['Jaune', 'Verte'],
[DarkSpiritVariants.Brandy]: [
[DarkSpiritVariant.Absinthe]: ['Jaune', 'Verte'],
[DarkSpiritVariant.Brandy]: [
{
Grape: [
'VS',
@ -114,14 +111,11 @@ export const spiritVariantMap: {
]
}
],
[DarkSpiritVariants.Calvados]: ['Apple', 'Pear'],
[DarkSpiritVariants.Chartreuse]: ['Green', 'Yellow'],
[DarkSpiritVariants.Genever]: [
{ Old: ['Juniper'] },
{ Coren: ['Juniper'] }
],
[DarkSpiritVariants.Mezcal]: ['Reposado', 'Abuelo', 'Añejo', 'Extra Añejo'],
[DarkSpiritVariants.Rum]: [
[DarkSpiritVariant.Calvados]: ['Apple', 'Pear'],
[DarkSpiritVariant.Chartreuse]: ['Green', 'Yellow'],
[DarkSpiritVariant.Genever]: [{ Old: ['Juniper'] }, { Coren: ['Juniper'] }],
[DarkSpiritVariant.Mezcal]: ['Reposado', 'Abuelo', 'Añejo', 'Extra Añejo'],
[DarkSpiritVariant.Rum]: [
{
Sugar: [
'Cachaca (amarela/ouro)',
@ -133,8 +127,8 @@ export const spiritVariantMap: {
]
}
],
[DarkSpiritVariants.Slivovitz]: [],
[DarkSpiritVariants.Whiskey]: [
[DarkSpiritVariant.Slivovitz]: [],
[DarkSpiritVariant.Whiskey]: [
'Barley',
'Rye',
'Wheat',
@ -142,18 +136,18 @@ export const spiritVariantMap: {
'Oat',
'Rice'
],
[DarkSpiritVariants.Arrack]: []
[DarkSpiritVariant.Arrack]: []
},
[SpiritType.Liqueurs]: {
[LiqueursSpiritVariants.Amaro]: [],
[LiqueursSpiritVariants.Coffee]: [],
[LiqueursSpiritVariants.Cream]: [
[LiqueursSpiritVariant.Amaro]: [],
[LiqueursSpiritVariant.Coffee]: [],
[LiqueursSpiritVariant.Cream]: [
'Egg (Advocaat)',
'Rum',
'Strawberry',
'Whiskey (Baileys etc)'
],
[LiqueursSpiritVariants.Creme]: [
[LiqueursSpiritVariant.Creme]: [
'Almond',
'Banana',
'Blackcurrant',
@ -162,8 +156,8 @@ export const spiritVariantMap: {
'Sour Cherry',
'Violet'
],
[LiqueursSpiritVariants.Flowers]: ['Rose', 'Violet', 'Elderflower'],
[LiqueursSpiritVariants.Fruit]: [
[LiqueursSpiritVariant.Flowers]: ['Rose', 'Violet', 'Elderflower'],
[LiqueursSpiritVariant.Fruit]: [
'Blackcurrant',
'Lemon',
'Melon',
@ -173,7 +167,7 @@ export const spiritVariantMap: {
'Raspberry',
'Yuzu'
],
[LiqueursSpiritVariants.Herb]: [
[LiqueursSpiritVariant.Herb]: [
'Anise',
'Dom Benedictine',
'Bitters',
@ -182,8 +176,8 @@ export const spiritVariantMap: {
'Metaxa',
'Mint'
],
[LiqueursSpiritVariants.Honey]: ['Licor 43', 'Rum', 'Vodka', 'Whiskey'],
[LiqueursSpiritVariants.Nut]: [
[LiqueursSpiritVariant.Honey]: ['Licor 43', 'Rum', 'Vodka', 'Whiskey'],
[LiqueursSpiritVariant.Nut]: [
'Almond',
'Apricot Kernel',
'Hazelnut',
@ -196,62 +190,62 @@ export const spiritVariantMap: {
}
export const spiritCharacteristicsMap: {
[key in SpiritCharacteristics]: string[]
[key in SpiritCharacteristic]: string[]
} = {
[SpiritCharacteristics.LightAndNeutral]: [
WhiteSpiritVariants.Mezcal,
WhiteSpiritVariants.Soju,
WhiteSpiritVariants.Vodka,
WhiteSpiritVariants.Rum,
WhiteSpiritVariants.Aquavit
[SpiritCharacteristic.LightAndNeutral]: [
WhiteSpiritVariant.Mezcal,
WhiteSpiritVariant.Soju,
WhiteSpiritVariant.Vodka,
WhiteSpiritVariant.Rum,
WhiteSpiritVariant.Aquavit
],
[SpiritCharacteristics.FruityAndAromatic]: [
WhiteSpiritVariants.Rum,
DarkSpiritVariants.Calvados,
WhiteSpiritVariants.EauDeVie,
LiqueursSpiritVariants.Fruit,
WhiteSpiritVariants.Gin,
WhiteSpiritVariants.Grappa
[SpiritCharacteristic.FruityAndAromatic]: [
WhiteSpiritVariant.Rum,
DarkSpiritVariant.Calvados,
WhiteSpiritVariant.EauDeVie,
LiqueursSpiritVariant.Fruit,
WhiteSpiritVariant.Gin,
WhiteSpiritVariant.Grappa
],
[SpiritCharacteristics.HerbalAndBotanical]: [
WhiteSpiritVariants.Absinthe,
DarkSpiritVariants.Absinthe,
LiqueursSpiritVariants.Amaro,
WhiteSpiritVariants.Genever,
DarkSpiritVariants.Genever,
WhiteSpiritVariants.Gin,
WhiteSpiritVariants.Pastis,
DarkSpiritVariants.Chartreuse,
WhiteSpiritVariants.Aquavit
[SpiritCharacteristic.HerbalAndBotanical]: [
WhiteSpiritVariant.Absinthe,
DarkSpiritVariant.Absinthe,
LiqueursSpiritVariant.Amaro,
WhiteSpiritVariant.Genever,
DarkSpiritVariant.Genever,
WhiteSpiritVariant.Gin,
WhiteSpiritVariant.Pastis,
DarkSpiritVariant.Chartreuse,
WhiteSpiritVariant.Aquavit
],
[SpiritCharacteristics.SweetAndSyrupy]: [
DarkSpiritVariants.Brandy,
LiqueursSpiritVariants.Cream,
LiqueursSpiritVariants.Creme,
DarkSpiritVariants.Rum,
LiqueursSpiritVariants.Nut
[SpiritCharacteristic.SweetAndSyrupy]: [
DarkSpiritVariant.Brandy,
LiqueursSpiritVariant.Cream,
LiqueursSpiritVariant.Creme,
DarkSpiritVariant.Rum,
LiqueursSpiritVariant.Nut
],
[SpiritCharacteristics.SmokyAndSpicy]: [
WhiteSpiritVariants.Baijiu,
DarkSpiritVariants.Rum,
WhiteSpiritVariants.Gin,
WhiteSpiritVariants.EauDeVie,
DarkSpiritVariants.Mezcal,
DarkSpiritVariants.Whiskey,
LiqueursSpiritVariants.Cream,
LiqueursSpiritVariants.Honey,
WhiteSpiritVariants.Arrack,
DarkSpiritVariants.Arrack
[SpiritCharacteristic.SmokyAndSpicy]: [
WhiteSpiritVariant.Baijiu,
DarkSpiritVariant.Rum,
WhiteSpiritVariant.Gin,
WhiteSpiritVariant.EauDeVie,
DarkSpiritVariant.Mezcal,
DarkSpiritVariant.Whiskey,
LiqueursSpiritVariant.Cream,
LiqueursSpiritVariant.Honey,
WhiteSpiritVariant.Arrack,
DarkSpiritVariant.Arrack
],
[SpiritCharacteristics.RichAndFullBodied]: [
WhiteSpiritVariants.Baijiu,
DarkSpiritVariants.Brandy,
DarkSpiritVariants.Rum,
WhiteSpiritVariants.Grappa,
WhiteSpiritVariants.EauDeVie,
LiqueursSpiritVariants.Cream,
LiqueursSpiritVariants.Honey,
DarkSpiritVariants.Whiskey
[SpiritCharacteristic.RichAndFullBodied]: [
WhiteSpiritVariant.Baijiu,
DarkSpiritVariant.Brandy,
DarkSpiritVariant.Rum,
WhiteSpiritVariant.Grappa,
WhiteSpiritVariant.EauDeVie,
LiqueursSpiritVariant.Cream,
LiqueursSpiritVariant.Honey,
DarkSpiritVariant.Whiskey
]
}

@ -1,11 +1,11 @@
import { collections } from '../../services/database.service'
import { DBcollections, ProductType } from '../../types'
import { DBcollection, ProductType } from '../../types'
export const productCodeValidation = async (
ean: string,
upc: string,
sku: string,
collection: DBcollections,
collection: DBcollection,
productType: ProductType
) => {
if (!ean && !upc && !sku) {

@ -1,5 +1,5 @@
import Joi from 'joi'
import { RatingOptions } from '../../types'
import { RatingOption } from '../../types'
export const reviewValidation = (data: unknown): Joi.ValidationResult =>
Joi.object({
@ -7,7 +7,7 @@ export const reviewValidation = (data: unknown): Joi.ValidationResult =>
productId: Joi.string().required(),
rating: Joi.alternatives()
.try(
Joi.string().valid(...Object.values(RatingOptions)),
Joi.string().valid(...Object.values(RatingOption)),
Joi.number().min(84).max(100)
)
.required(),

@ -1,7 +1,7 @@
import Joi from 'joi'
import {
SakeDesignation,
SakeCharacteristics,
SakeCharacteristic,
SakeVolume,
SakeStarter,
RiceVarietal,
@ -118,7 +118,7 @@ export const sakeValidation = (data: unknown): Joi.ValidationResult =>
})
.required(),
characteristics: Joi.array()
.items(Joi.string().valid(...Object.values(SakeCharacteristics)))
.items(Joi.string().valid(...Object.values(SakeCharacteristic)))
.required(),
starter: Joi.string().valid(...Object.values(SakeStarter)),
yeastStrain: Joi.string()

@ -3,7 +3,7 @@ import {
Ingredient,
SpiritType,
SpiritVolume,
SpiritCharacteristics
SpiritCharacteristic
} from '../../types'
import { isObject, spiritVariantMap, spiritCharacteristicsMap } from '../'
import {
@ -234,11 +234,11 @@ export const spiritValidation = (data: unknown): Joi.ValidationResult =>
characteristics: Joi.array()
.items(
Joi.string().custom((characteristic, helper) => {
if (!Object.values(SpiritCharacteristics).includes(characteristic)) {
if (!Object.values(SpiritCharacteristic).includes(characteristic)) {
return helper.message({
custom: Joi.expression(
`"${characteristic}" is not a valid characteristic. Valid options are [${Object.values(
SpiritCharacteristics
SpiritCharacteristic
)
.map((option) => `"${option}"`)
.join(', ')}]`
@ -257,12 +257,12 @@ export const spiritValidation = (data: unknown): Joi.ValidationResult =>
: Object.keys(spiritVariant)[0]
const variantsInCharacteristic =
spiritCharacteristicsMap[characteristic as SpiritCharacteristics]
spiritCharacteristicsMap[characteristic as SpiritCharacteristic]
const characteristicsInVariant = Object.keys(
spiritCharacteristicsMap
).filter((char) =>
spiritCharacteristicsMap[char as SpiritCharacteristics].includes(
spiritCharacteristicsMap[char as SpiritCharacteristic].includes(
spiritVariantName
)
)

@ -1,9 +1,9 @@
import Joi from 'joi'
import { VintageOptions } from '../../types'
import { VintageOption } from '../../types'
export const vintageValidation = Joi.alternatives()
.try(
Joi.string().valid(...Object.values(VintageOptions)),
Joi.string().valid(...Object.values(VintageOption)),
Joi.number().min(1700).max(new Date().getFullYear())
)
.required()