-- migrate:up
CREATE TABLE rate_limit_buckets (
  key_hash BINARY(32) NOT NULL,
  hits BIGINT UNSIGNED NOT NULL,
  reset_at_ms BIGINT UNSIGNED NOT NULL,
  PRIMARY KEY (key_hash),
  KEY idx_rate_limit_expiry (reset_at_ms),
  CONSTRAINT chk_rate_limit_hits CHECK (hits > 0)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE shared_runtime_state (
  id TINYINT UNSIGNED NOT NULL,
  last_started_at DATETIME(6) NULL,
  last_completed_at DATETIME(6) NULL,
  PRIMARY KEY (id),
  CONSTRAINT chk_shared_runtime_singleton CHECK (id = 1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO shared_runtime_state (id) VALUES (1);

-- migrate:down
DROP TABLE shared_runtime_state;
DROP TABLE rate_limit_buckets;
