
Inventory.pudu
Pudu35 lines1.0 KB
1/** @Inventory.Model.Module — stock items and their quantities */2module Inventory34/** @Inventory.Model.Item — one stocked product */5export type Item = {6 7 sku: Str,8 9 quantity: Int10}1112/** @Inventory.Model.Change — why a quantity moved */13export type Change = Received(Int) | Sold(Int) | Counted(Int)141516export fn empty(sku: Str) -> Item { Item{sku: sku, quantity: 0} }171819202122232425export fn apply(item: Item, change: Change) -> Item {26 match change {27 case Received(count) => Item{..item, quantity: item.quantity + count}28 case Sold(count) => Item{..item, quantity: item.quantity - count}29 case Counted(count) => Item{..item, quantity: count}30 }31}323334export const LIMIT: Int = 10000035