from __future__ import annotations from peewee import ( CharField, IntegerField, FloatField, Check, SQL, ) from .base import BaseModel class Recipe(BaseModel): name = CharField(unique=True) size_ml = IntegerField(constraints=[Check("size_ml > 0")]) base_pg_pct = FloatField(constraints=[Check("base_pg_pct >= 0")]) base_vg_pct = FloatField(constraints=[Check("base_vg_pct >= 0")]) nic_pct = FloatField(constraints=[Check("nic_pct >= 0 AND nic_pct <= 100")]) nic_base = CharField(constraints=[Check("nic_base IN ('PG','VG')")]) class Meta: table_name = "recipe" constraints = [ SQL( "CHECK (base_pg_pct >= 0 AND base_vg_pct >= 0 AND (base_pg_pct + base_vg_pct) = 100)" ) ] __all__ = ["Recipe"]