55 sdk "github.com/cosmos/cosmos-sdk/types"
66 dtypes "github.com/ovrclk/akash/x/deployment/types"
77 "github.com/ovrclk/akash/x/market/types"
8+ "github.com/pkg/errors"
89)
910
1011const (
@@ -29,15 +30,24 @@ func (k Keeper) Codec() *codec.Codec {
2930}
3031
3132// CreateOrder creates a new order with given group id and specifications. It returns created order
32- func (k Keeper ) CreateOrder (ctx sdk.Context , gid dtypes.GroupID , spec dtypes.GroupSpec ) types.Order {
33+ func (k Keeper ) CreateOrder (ctx sdk.Context , gid dtypes.GroupID , spec dtypes.GroupSpec ) ( types.Order , error ) {
3334 store := ctx .KVStore (k .skey )
3435
3536 oseq := uint32 (1 )
36- k .WithOrdersForGroup (ctx , gid , func (types.Order ) bool {
37+ var err error
38+
39+ k .WithOrdersForGroup (ctx , gid , func (order types.Order ) bool {
40+ if err = order .ValidateInactive (); err != nil {
41+ return true
42+ }
3743 oseq ++
3844 return false
3945 })
4046
47+ if err != nil {
48+ return types.Order {}, errors .Wrap (err , "create order: active order exists" )
49+ }
50+
4151 order := types.Order {
4252 OrderID : types .MakeOrderID (gid , oseq ),
4353 Spec : spec ,
@@ -54,7 +64,7 @@ func (k Keeper) CreateOrder(ctx sdk.Context, gid dtypes.GroupID, spec dtypes.Gro
5464 ctx .EventManager ().EmitEvent (
5565 types.EventOrderCreated {ID : order .ID ()}.ToSDKEvent (),
5666 )
57- return order
67+ return order , nil
5868}
5969
6070// CreateBid creates a bid for a order with given orderID, price for bid and provider
0 commit comments