CREATE TYPE settlement_type AS ENUM ('rolling', 'loosing');
CREATE TYPE manual_payment_type AS ENUM ('all_child_partner', 'only_direct_partner', 'disable');

CREATE TABLE IF NOT EXISTS member_settlement_settings (
  id                                  UUID DEFAULT uuid_generate_v4(),
  member_id                           UUID NOT NULL,
  can_exchange                        BOOLEAN NOT NULL DEFAULT TRUE,
  can_first_charge_comp               BOOLEAN NOT NULL DEFAULT FALSE,
  can_per_charge_comp                 BOOLEAN NOT NULL DEFAULT FALSE,
  manual_payment_type_for_partner     MANUAL_PAYMENT_TYPE DEFAULT 'all_child_partner',
  settlement_type                     SETTLEMENT_TYPE DEFAULT 'rolling',
  rate_casino                         DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_casino_loosing                 DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_casino_bacara                  DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_casino_roulette                DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_casino_dragon_tiger            DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_slot                           DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_slot_loosing                   DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_powerball_single               DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_powerball_combo                DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_powerladder_single             DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_powerladder_combo              DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_eos_single                     DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_eos_combo                      DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_bogglepowerball_single         DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  rate_bogglepowerball_combo          DOUBLE PRECISION NOT NULL DEFAULT 0.00,
  created_at                          BIGINT NOT NULL DEFAULT (extract(epoch from now()) * 1000),
  updated_at                          BIGINT NOT NULL DEFAULT (extract(epoch from now()) * 1000),
  PRIMARY KEY (id),
  CONSTRAINT fk_member_settlement_settings_member_id
    FOREIGN KEY(member_id) 
	    REFERENCES members(id)
);

CREATE INDEX idx_member_settlement_settings_member_id ON member_settlement_settings (member_id);

-- trigger (updated_at)
CREATE TRIGGER tg_member_settlement_settings_updated_at
  BEFORE UPDATE
  ON member_settlement_settings
  FOR EACH ROW
  EXECUTE PROCEDURE update_updated_at_column();
