Packages
tai
0.0.75
0.0.75
0.0.74
0.0.73
0.0.72
0.0.71
0.0.70
0.0.69
0.0.68
0.0.67
0.0.66
0.0.65
0.0.64
0.0.63
0.0.62
0.0.61
0.0.60
0.0.59
0.0.58
0.0.57
0.0.56
0.0.55
0.0.54
0.0.53
0.0.52
0.0.51
0.0.50
0.0.49
0.0.48
0.0.47
0.0.46
0.0.45
0.0.44
0.0.43
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.35
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.29
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
A composable, real time, market data and trade execution toolkit
Current section
Files
Jump to
Current section
Files
lib/tai/orders/order_transition.ex
defmodule Tai.Orders.OrderTransition do
use Ecto.Schema
import Ecto.Changeset
import PolymorphicEmbed, only: [cast_polymorphic_embed: 3]
alias Tai.Orders.Transitions
@type t :: %__MODULE__{}
@primary_key {:id, Ecto.UUID, autogenerate: true}
@timestamps_opts [autogenerate: {Tai.DateTime, :timestamp, []}, type: :utc_datetime_usec]
schema "order_transitions" do
belongs_to(:order, Tai.Orders.Order,
source: :order_client_id,
references: :client_id,
foreign_key: :order_client_id,
type: Ecto.UUID
)
field(:transition, PolymorphicEmbed,
types: [
accept_create: Transitions.AcceptCreate,
venue_create_error: Transitions.VenueCreateError,
rescue_create_error: Transitions.RescueCreateError,
open: Transitions.Open,
pend_cancel: Transitions.PendCancel,
accept_cancel: Transitions.AcceptCancel,
venue_cancel_error: Transitions.VenueCancelError,
rescue_cancel_error: Transitions.RescueCancelError,
cancel: Transitions.Cancel,
pend_amend: Transitions.PendAmend,
accept_amend: Transitions.AcceptAmend,
venue_amend_error: Transitions.VenueAmendError,
rescue_amend_error: Transitions.RescueAmendError,
amend: Transitions.Amend,
fill: Transitions.Fill,
partial_fill: Transitions.PartialFill,
expire: Transitions.Expire,
reject: Transitions.Reject,
skip: Transitions.Skip
],
on_type_not_found: :raise,
on_replace: :update
)
timestamps()
end
@doc false
def changeset(order_transition, attrs) do
order_transition
|> cast(attrs, [:order_client_id])
|> cast_polymorphic_embed(:transition, required: true)
|> validate_required([:order_client_id])
end
end