SET @listing_in_transaction_exists := (
  SELECT COUNT(*)
  FROM information_schema.columns
  WHERE table_schema = DATABASE()
    AND table_name = 'rental_listings'
    AND column_name = 'in_transaction'
);

SET @add_listing_in_transaction_sql := IF(
  @listing_in_transaction_exists = 0,
  'ALTER TABLE rental_listings ADD COLUMN in_transaction TINYINT(1) NOT NULL DEFAULT 0 AFTER deposit_amount',
  'SELECT 1'
);
PREPARE add_listing_in_transaction_stmt FROM @add_listing_in_transaction_sql;
EXECUTE add_listing_in_transaction_stmt;
DEALLOCATE PREPARE add_listing_in_transaction_stmt;

SET @listing_price_exists := (
  SELECT COUNT(*)
  FROM information_schema.columns
  WHERE table_schema = DATABASE()
    AND table_name = 'rental_listings'
    AND column_name = 'price'
);

SET @add_listing_price_sql := IF(
  @listing_price_exists = 0,
  'ALTER TABLE rental_listings ADD COLUMN price DECIMAL(12,2) NOT NULL DEFAULT 0.00 AFTER owner_id',
  'SELECT 1'
);
PREPARE add_listing_price_stmt FROM @add_listing_price_sql;
EXECUTE add_listing_price_stmt;
DEALLOCATE PREPARE add_listing_price_stmt;

UPDATE rental_listings
SET price = CASE
  WHEN price_daily > 0 THEN price_daily
  WHEN price_hourly > 0 THEN price_hourly * 24
  WHEN price_weekly > 0 THEN price_weekly / 7
  ELSE price
END
WHERE price <= 0;

INSERT INTO system_configs (`key`, `value`, description)
VALUES ('order.pending_payment_timeout_minutes', '15', '订单待支付超时取消分钟数')
ON DUPLICATE KEY UPDATE `key` = VALUES(`key`);

CREATE TABLE IF NOT EXISTS order_checkouts (
  id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  order_id BIGINT UNSIGNED NOT NULL,
  initiated_by BIGINT UNSIGNED NOT NULL,
  status VARCHAR(32) NOT NULL DEFAULT 'submitted',
  rent_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  deposit_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  consumable_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  coin_consumed_m DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  other_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  deposit_deduct_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  renter_refund_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  owner_income_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  content TEXT NULL,
  evidence_urls JSON NULL,
  owner_adjustment_reason TEXT NULL,
  owner_adjusted_at DATETIME NULL,
  renter_confirmed_at DATETIME NULL,
  renter_rejected_at DATETIME NULL,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  KEY idx_order_checkouts_order_id (order_id),
  KEY idx_order_checkouts_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
