CREATE DATABASE IF NOT EXISTS polash_tour CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE polash_tour;
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS polash_results,polash_matches,polash_wallet_requests,polash_payment_methods,polash_notices,polash_tournaments,polash_categories,polash_users;
SET FOREIGN_KEY_CHECKS=1;
CREATE TABLE polash_users (
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(190) NOT NULL UNIQUE,
 phone VARCHAR(25) NULL, game_uid VARCHAR(40) NULL, password VARCHAR(255) NOT NULL, role ENUM('user','admin') DEFAULT 'user',
 deposit_balance DECIMAL(12,2) DEFAULT 0, winning_balance DECIMAL(12,2) DEFAULT 0,
 created_at TIMESTAMP NULL, updated_at TIMESTAMP NULL
) ENGINE=InnoDB;
CREATE TABLE polash_categories (
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(80) NOT NULL, slug VARCHAR(100) NOT NULL UNIQUE,
 is_active TINYINT(1) DEFAULT 1, sort_order INT DEFAULT 0, created_at TIMESTAMP NULL, updated_at TIMESTAMP NULL
) ENGINE=InnoDB;
CREATE TABLE polash_tournaments (
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, category_id BIGINT UNSIGNED NOT NULL, title VARCHAR(150) NOT NULL,
 game_mode VARCHAR(60) NOT NULL, description TEXT NULL, starts_at DATETIME NOT NULL, status ENUM('draft','published','completed','cancelled') DEFAULT 'draft',
 created_at TIMESTAMP NULL, updated_at TIMESTAMP NULL,
 CONSTRAINT fk_tournament_category FOREIGN KEY(category_id) REFERENCES polash_categories(id)
) ENGINE=InnoDB;
CREATE TABLE polash_matches (
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, tournament_id BIGINT UNSIGNED NULL, title VARCHAR(150) NOT NULL,
 room_id VARCHAR(80) NULL, room_password VARCHAR(80) NULL, starts_at DATETIME NULL,
 status ENUM('upcoming','live','completed','cancelled') DEFAULT 'upcoming', created_at TIMESTAMP NULL, updated_at TIMESTAMP NULL,
 FOREIGN KEY(tournament_id) REFERENCES polash_tournaments(id) ON DELETE SET NULL
) ENGINE=InnoDB;
CREATE TABLE polash_results (
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, match_id BIGINT UNSIGNED NULL, title VARCHAR(150) NOT NULL,
 winner_name VARCHAR(100) NULL, total_kills INT DEFAULT 0, prize DECIMAL(12,2) DEFAULT 0, created_at TIMESTAMP NULL,
 FOREIGN KEY(match_id) REFERENCES polash_matches(id) ON DELETE SET NULL
) ENGINE=InnoDB;
CREATE TABLE polash_wallet_requests (
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id BIGINT UNSIGNED NOT NULL,
 type ENUM('deposit','withdraw') NOT NULL, method VARCHAR(40) NOT NULL, amount DECIMAL(12,2) NOT NULL,
 account_number VARCHAR(40) NULL, transaction_id VARCHAR(120) NULL,
 status ENUM('pending','approved','rejected') DEFAULT 'pending', created_at TIMESTAMP NULL, updated_at TIMESTAMP NULL,
 FOREIGN KEY(user_id) REFERENCES polash_users(id) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE polash_payment_methods (
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(40) NOT NULL, account_type VARCHAR(60) NOT NULL,
 instructions TEXT NULL, account_number VARCHAR(40) NULL, is_active TINYINT(1) DEFAULT 1,
 created_at TIMESTAMP NULL, updated_at TIMESTAMP NULL
) ENGINE=InnoDB;
CREATE TABLE polash_notices (
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(150) NOT NULL, body TEXT NOT NULL,
 is_active TINYINT(1) DEFAULT 1, created_at TIMESTAMP NULL, updated_at TIMESTAMP NULL
) ENGINE=InnoDB;
INSERT INTO polash_categories(name,slug,is_active,sort_order,created_at,updated_at) VALUES
('BR Match','br-match',1,1,NOW(),NOW()),('BR Survival','br-survival',1,2,NOW(),NOW()),
('Clash Squad','clash-squad',1,3,NOW(),NOW()),('CS 2v2','cs-2v2',1,4,NOW(),NOW()),
('Lone Wolf','lone-wolf',1,5,NOW(),NOW()),('LW Headshot','lw-headshot',1,6,NOW(),NOW()),
('CS Headshot','cs-headshot',1,7,NOW(),NOW()),('Lost to Win','lost-to-win',1,8,NOW(),NOW());
INSERT INTO polash_payment_methods(name,account_type,instructions,is_active,created_at,updated_at) VALUES
('bKash','Merchant Account','Admin must configure verified payment instructions before accepting requests.',1,NOW(),NOW()),
('Nagad','Personal Account','Admin must configure verified payment instructions before accepting requests.',1,NOW(),NOW()),
('Rocket','Personal Account','Admin must configure verified payment instructions before accepting requests.',1,NOW(),NOW());
-- Create an admin using Laravel: php artisan make:command CreateAdmin, or insert a user with a Laravel-generated password hash and role='admin'.
