﻿CREATE TABLE IF NOT EXISTS users (id BIGINT PRIMARY KEY, username VARCHAR(255), first_name VARCHAR(255), balance BIGINT NOT NULL DEFAULT 0, is_blocked TINYINT NOT NULL DEFAULT 0, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS folders (id BIGINT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT, price BIGINT NOT NULL DEFAULT 0, one_time TINYINT NOT NULL DEFAULT 0, delete_after INT NULL, created_at DATETIME NOT NULL) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS files (id BIGINT AUTO_INCREMENT PRIMARY KEY, folder_id BIGINT NOT NULL, title VARCHAR(255) NOT NULL, telegram_file_id VARCHAR(255) NOT NULL, media_type VARCHAR(30) NOT NULL, size BIGINT NULL, created_at DATETIME NOT NULL, FOREIGN KEY(folder_id) REFERENCES folders(id) ON DELETE CASCADE) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS purchases (id BIGINT AUTO_INCREMENT PRIMARY KEY,user_id BIGINT NOT NULL,folder_id BIGINT NOT NULL,amount BIGINT NOT NULL,status ENUM('paid','pending','refunded') NOT NULL DEFAULT 'paid',created_at DATETIME NOT NULL,UNIQUE KEY uq_purchase(user_id,folder_id),FOREIGN KEY(folder_id) REFERENCES folders(id) ON DELETE CASCADE) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS views (id BIGINT AUTO_INCREMENT PRIMARY KEY,user_id BIGINT NOT NULL,file_id BIGINT NOT NULL,message_id BIGINT NULL,delete_at DATETIME NULL,viewed_at DATETIME NOT NULL) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS wallet_transactions (id BIGINT AUTO_INCREMENT PRIMARY KEY,user_id BIGINT NOT NULL,amount BIGINT NOT NULL,type ENUM('credit','debit') NOT NULL,method VARCHAR(30),status ENUM('pending','approved','rejected') NOT NULL DEFAULT 'approved',reference VARCHAR(255),created_at DATETIME NOT NULL) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS receipts (id BIGINT AUTO_INCREMENT PRIMARY KEY,user_id BIGINT NOT NULL,telegram_file_id VARCHAR(255) NOT NULL,amount BIGINT NOT NULL,status ENUM('pending','approved','rejected') NOT NULL DEFAULT 'pending',created_at DATETIME NOT NULL) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS settings (`key` VARCHAR(80) PRIMARY KEY, value TEXT);
