Skip to main content

priv/ccxt_structures/generated/binance_pro_migration.exs

# -----------------------------------------------------------------------------
# This file is generated from priv/ccxt_structures/binance_pro_structures.json.
# Do not edit it by hand; run `npm run generateElixirStructureSchemas` instead.
# Generated artifact: Ecto migration template
# -----------------------------------------------------------------------------
defmodule Ccxt.Repo.Migrations.CreateBinanceProCcxtStructures do
  use Ecto.Migration

  def change do
    create table(:ccxt_tickers, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :symbol, :text, null: false
      add :timestamp, :bigint
      add :datetime, :utc_datetime_usec
      add :high, :decimal
      add :low, :decimal
      add :bid, :decimal
      add :bid_volume, :decimal
      add :ask, :decimal
      add :ask_volume, :decimal
      add :vwap, :decimal
      add :open, :decimal
      add :close, :decimal
      add :last, :decimal
      add :previous_close, :decimal
      add :change, :decimal
      add :percentage, :decimal
      add :average, :decimal
      add :base_volume, :decimal
      add :quote_volume, :decimal
      add :mark_price, :decimal
      add :index_price, :decimal
      add :info, :map, null: false # jsonb payload

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_tickers, [:exchange_id])
    create unique_index(:ccxt_tickers, [:exchange_id, :market_type, :symbol], name: :ccxt_tickers_exchange_id_market_type_symbol_idx)

    create table(:ccxt_ticker_events, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :symbol, :text, null: false
      add :timestamp, :bigint
      add :datetime, :utc_datetime_usec
      add :high, :decimal
      add :low, :decimal
      add :bid, :decimal
      add :bid_volume, :decimal
      add :ask, :decimal
      add :ask_volume, :decimal
      add :vwap, :decimal
      add :open, :decimal
      add :close, :decimal
      add :last, :decimal
      add :previous_close, :decimal
      add :change, :decimal
      add :percentage, :decimal
      add :average, :decimal
      add :base_volume, :decimal
      add :quote_volume, :decimal
      add :mark_price, :decimal
      add :index_price, :decimal
      add :info, :map, null: false # jsonb payload

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_ticker_events, [:exchange_id])
    create index(:ccxt_ticker_events, [:exchange_id, :market_type, :symbol], name: :ccxt_ticker_events_exchange_id_market_type_symbol_idx)

    create table(:ccxt_trades, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :ccxt_id, :text
      add :order, :text
      add :timestamp, :bigint
      add :datetime, :utc_datetime_usec
      add :symbol, :text, null: false
      add :type, :text
      add :side, :text
      add :taker_or_maker, :text
      add :price, :decimal
      add :amount, :decimal
      add :cost, :decimal
      add :fee, :map # jsonb payload
      add :info, :map, null: false # jsonb payload

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_trades, [:exchange_id])
    create index(:ccxt_trades, [:exchange_id, :market_type, :symbol, :ccxt_id], name: :ccxt_trades_exchange_id_market_type_symbol_ccxt_id_idx)

    create table(:ccxt_order_books, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :symbol, :text, null: false
      add :bids, :map, null: false # jsonb payload
      add :asks, :map, null: false # jsonb payload
      add :timestamp, :bigint
      add :datetime, :utc_datetime_usec
      add :nonce, :bigint
      add :info, :map, null: false # jsonb payload

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_order_books, [:exchange_id])
    create unique_index(:ccxt_order_books, [:exchange_id, :market_type, :symbol], name: :ccxt_order_books_exchange_id_market_type_symbol_idx)

    create table(:ccxt_order_book_events, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :symbol, :text, null: false
      add :bids, :map, null: false # jsonb payload
      add :asks, :map, null: false # jsonb payload
      add :timestamp, :bigint
      add :datetime, :utc_datetime_usec
      add :nonce, :bigint
      add :info, :map, null: false # jsonb payload

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_order_book_events, [:exchange_id])
    create index(:ccxt_order_book_events, [:exchange_id, :market_type, :symbol], name: :ccxt_order_book_events_exchange_id_market_type_symbol_idx)

    create table(:ccxt_ohlcvs, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :symbol, :text
      add :timeframe, :text, null: false
      add :timestamp, :bigint, null: false
      add :open, :decimal
      add :high, :decimal
      add :low, :decimal
      add :close, :decimal
      add :volume, :decimal

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_ohlcvs, [:exchange_id])
    create index(:ccxt_ohlcvs, [:exchange_id, :market_type, :symbol, :timeframe, :timestamp], name: :ccxt_ohlcvs_exchange_id_market_type_symbol_timefra_idx_64dcd191)

    create table(:ccxt_balances, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :symbol, :text
      add :currency, :text, null: false
      add :free, :decimal
      add :used, :decimal
      add :total, :decimal

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_balances, [:exchange_id])
    create unique_index(:ccxt_balances, [:exchange_id, :account_type, :currency], name: :ccxt_balances_exchange_id_account_type_currency_idx)

    create table(:ccxt_balance_events, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :symbol, :text
      add :currency, :text, null: false
      add :free, :decimal
      add :used, :decimal
      add :total, :decimal

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_balance_events, [:exchange_id])
    create index(:ccxt_balance_events, [:exchange_id, :account_type, :currency], name: :ccxt_balance_events_exchange_id_account_type_currency_idx)

    create table(:ccxt_orders, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :ccxt_id, :text
      add :client_order_id, :text
      add :timestamp, :bigint
      add :datetime, :utc_datetime_usec
      add :last_trade_timestamp, :bigint
      add :symbol, :text, null: false
      add :type, :text
      add :time_in_force, :text
      add :side, :text
      add :price, :decimal
      add :amount, :decimal
      add :filled, :decimal
      add :remaining, :decimal
      add :cost, :decimal
      add :average, :decimal
      add :status, :text
      add :fee, :map # jsonb payload
      add :trades, :map # jsonb payload
      add :info, :map, null: false # jsonb payload

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_orders, [:exchange_id])
    create unique_index(:ccxt_orders, [:exchange_id, :market_type, :symbol, :ccxt_id], name: :ccxt_orders_exchange_id_market_type_symbol_ccxt_id_idx)

    create table(:ccxt_order_events, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :ccxt_id, :text
      add :client_order_id, :text
      add :timestamp, :bigint
      add :datetime, :utc_datetime_usec
      add :last_trade_timestamp, :bigint
      add :symbol, :text, null: false
      add :type, :text
      add :time_in_force, :text
      add :side, :text
      add :price, :decimal
      add :amount, :decimal
      add :filled, :decimal
      add :remaining, :decimal
      add :cost, :decimal
      add :average, :decimal
      add :status, :text
      add :fee, :map # jsonb payload
      add :trades, :map # jsonb payload
      add :info, :map, null: false # jsonb payload

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_order_events, [:exchange_id])
    create index(:ccxt_order_events, [:exchange_id, :market_type, :symbol, :ccxt_id], name: :ccxt_order_events_exchange_id_market_type_symbol_ccxt_id_idx)

    create table(:ccxt_positions, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :symbol, :text, null: false
      add :timestamp, :bigint
      add :datetime, :utc_datetime_usec
      add :contracts, :decimal
      add :contract_size, :decimal
      add :entry_price, :decimal
      add :unrealized_pnl, :decimal
      add :side, :text
      add :info, :map, null: false # jsonb payload

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_positions, [:exchange_id])
    create unique_index(:ccxt_positions, [:exchange_id, :market_type, :symbol, :side], name: :ccxt_positions_exchange_id_market_type_symbol_side_idx)

    create table(:ccxt_position_events, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :symbol, :text, null: false
      add :timestamp, :bigint
      add :datetime, :utc_datetime_usec
      add :contracts, :decimal
      add :contract_size, :decimal
      add :entry_price, :decimal
      add :unrealized_pnl, :decimal
      add :side, :text
      add :info, :map, null: false # jsonb payload

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_position_events, [:exchange_id])
    create index(:ccxt_position_events, [:exchange_id, :market_type, :symbol, :side], name: :ccxt_position_events_exchange_id_market_type_symbol_side_idx)

    create table(:ccxt_liquidations, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :market_type, :text
      add :account_type, :text
      add :raw_ref_id, :binary_id
      add :symbol, :text, null: false
      add :contracts, :decimal
      add :price, :decimal
      add :side, :text
      add :timestamp, :bigint
      add :datetime, :utc_datetime_usec
      add :info, :map, null: false # jsonb payload

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_liquidations, [:exchange_id])
    create index(:ccxt_liquidations, [:exchange_id, :market_type, :symbol, :timestamp], name: :ccxt_liquidations_exchange_id_market_type_symbol_timestamp_idx)

    create table(:ccxt_raw_ws_events, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :env, :text
      add :market_type, :text
      add :account_type, :text
      add :transport, :text, null: false
      add :channel, :text
      add :stream, :text
      add :request_id, :text
      add :message_hash, :text, null: false
      add :url, :text
      add :payload, :map, null: false # jsonb payload
      add :received_at, :utc_datetime_usec, null: false

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_raw_ws_events, [:exchange_id])
    create index(:ccxt_raw_ws_events, [:message_hash])
    create index(:ccxt_raw_ws_events, [:stream])

    create table(:ccxt_raw_ws_api_responses, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :exchange_id, :text, null: false
      add :env, :text
      add :market_type, :text
      add :account_type, :text
      add :transport, :text, null: false
      add :channel, :text
      add :stream, :text
      add :request_id, :text
      add :message_hash, :text, null: false
      add :url, :text
      add :payload, :map, null: false # jsonb payload
      add :received_at, :utc_datetime_usec, null: false

      timestamps(type: :utc_datetime_usec)
    end

    create index(:ccxt_raw_ws_api_responses, [:exchange_id])
    create index(:ccxt_raw_ws_api_responses, [:message_hash])
    create index(:ccxt_raw_ws_api_responses, [:stream])
  end
end