diff --git a/sql/base_structure b/sql/base_structure new file mode 100644 index 0000000..dc6f1c6 --- /dev/null +++ b/sql/base_structure @@ -0,0 +1,260 @@ +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + + +CREATE TABLE IF NOT EXISTS `accounts` ( + `id` int(255) NOT NULL AUTO_INCREMENT, + `is_admin` tinyint(1) NOT NULL DEFAULT '0', + `is_anonymous` tinyint(1) NOT NULL DEFAULT '0', + `no_fees` tinyint(1) NOT NULL DEFAULT '0', + `username` varchar(40) NOT NULL, + `pass` varchar(255) NOT NULL, + `email` varchar(255) DEFAULT NULL COMMENT 'Assocaited email: used for validating users, and re-setting passwords', + `timezone` varchar(35) NOT NULL DEFAULT '415', + `notify_email` VARCHAR( 255 ) NULL DEFAULT NULL, + `loggedIp` varchar(255) DEFAULT NULL, + `is_locked` tinyint(1) NOT NULL DEFAULT '0', + `failed_logins` int(5) unsigned DEFAULT '0', + `failed_pins` int(5) unsigned DEFAULT '0', + `signup_timestamp` int(10) DEFAULT '0', + `last_login` int(10) DEFAULT NULL, + `pin` varchar(255) NOT NULL COMMENT 'four digit pin to allow account changes', + `api_key` varchar(255) DEFAULT NULL, + `token` varchar(65) DEFAULT NULL, + `donate_percent` float DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `username` (`username`), + UNIQUE KEY `email` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `blocks` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `height` int(10) unsigned NOT NULL, + `blockhash` char(65) NOT NULL, + `confirmations` int(10) NOT NULL, + `amount` double NOT NULL, + `difficulty` double NOT NULL, + `time` int(11) NOT NULL, + `accounted` tinyint(1) NOT NULL DEFAULT '0', + `account_id` int(255) unsigned DEFAULT NULL, + `worker_name` varchar(50) DEFAULT 'unknown', + `shares` double unsigned DEFAULT NULL, + `share_id` bigint(30) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `height` (`height`,`blockhash`), + KEY `time` (`time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Discovered blocks persisted from Litecoin Service'; + +CREATE TABLE IF NOT EXISTS `coin_addresses` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `account_id` int(11) NOT NULL, + `currency` varchar(5) NOT NULL, + `coin_address` varchar(255) NOT NULL, + `ap_threshold` float DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `coin_address` (`coin_address`), + KEY `account_id` (`account_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `invitations` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `account_id` int(11) unsigned NOT NULL, + `email` varchar(50) NOT NULL, + `token_id` int(11) NOT NULL, + `is_activated` tinyint(1) NOT NULL DEFAULT '0', + `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `monitoring` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(30) NOT NULL, + `type` varchar(15) NOT NULL, + `value` varchar(255) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Monitoring events from cronjobs'; + +CREATE TABLE IF NOT EXISTS `news` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `account_id` int(10) unsigned NOT NULL, + `header` varchar(255) NOT NULL, + `content` text NOT NULL, + `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `active` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `notifications` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(25) NOT NULL, + `data` varchar(255) NOT NULL, + `active` tinyint(1) NOT NULL DEFAULT '1', + `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `account_id` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `active` (`active`), + KEY `data` (`data`), + KEY `account_id` (`account_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `notification_settings` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(15) NOT NULL, + `account_id` int(11) NOT NULL, + `active` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `account_id` (`account_id`), + UNIQUE KEY `account_id_type` (`account_id`,`type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `payouts` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `account_id` int(11) NOT NULL, + `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `completed` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `account_id` (`account_id`,`completed`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `pool_worker` ( + `id` int(255) NOT NULL AUTO_INCREMENT, + `account_id` int(255) NOT NULL, + `username` char(50) DEFAULT NULL, + `password` char(255) DEFAULT NULL, + `difficulty` float NOT NULL DEFAULT '0', + `monitor` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `username` (`username`), + KEY `account_id` (`account_id`), + KEY `pool_worker_username` (`username`(10)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `settings` ( + `name` varchar(255) NOT NULL, + `value` text DEFAULT NULL, + PRIMARY KEY (`name`), + UNIQUE KEY `setting` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '1.0.3'); + +CREATE TABLE IF NOT EXISTS `shares` ( + `id` bigint(30) NOT NULL AUTO_INCREMENT, + `rem_host` varchar(255) NOT NULL, + `username` varchar(120) NOT NULL, + `our_result` enum('Y','N') NOT NULL, + `upstream_result` enum('Y','N') DEFAULT NULL, + `reason` varchar(50) DEFAULT NULL, + `solution` varchar(257) NOT NULL, + `difficulty` float NOT NULL DEFAULT '0', + `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `time` (`time`), + KEY `upstream_result` (`upstream_result`), + KEY `our_result` (`our_result`), + KEY `username` (`username`), + KEY `shares_username` (`username`(10)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `shares_archive` ( + `id` bigint(30) unsigned NOT NULL AUTO_INCREMENT, + `share_id` bigint(30) unsigned NOT NULL, + `username` varchar(120) NOT NULL, + `our_result` enum('Y','N') DEFAULT NULL, + `upstream_result` enum('Y','N') DEFAULT NULL, + `block_id` int(10) unsigned NOT NULL, + `difficulty` float NOT NULL DEFAULT '0', + `time` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `share_id` (`share_id`), + KEY `time` (`time`), + KEY `our_result` (`our_result`), + KEY `username` (`username`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Archive shares for potential later debugging purposes'; + +CREATE TABLE IF NOT EXISTS `statistics_shares` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `account_id` int(10) unsigned NOT NULL, + `block_id` int(10) unsigned NOT NULL, + `valid` float unsigned NOT NULL DEFAULT '0', + `invalid` float unsigned NOT NULL DEFAULT '0', + `pplns_valid` float unsigned NOT NULL DEFAULT '0', + `pplns_invalid` float unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `account_id` (`account_id`), + KEY `block_id` (`block_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tokens` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `account_id` int(11) NOT NULL, + `token` varchar(65) NOT NULL, + `type` tinyint(4) NOT NULL, + `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `token` (`token`), + KEY `account_id` (`account_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `token_types` ( + `id` tinyint(4) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(25) NOT NULL, + `expiration` INT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +INSERT INTO `token_types` (`id`, `name`, `expiration`) VALUES +(1, 'password_reset', 3600), +(2, 'confirm_email', 0), +(3, 'invitation', 0), +(4, 'account_unlock', 0), +(5, 'account_edit', 3600), +(6, 'change_pw', 3600), +(7, 'withdraw_funds', 3600); + +CREATE TABLE IF NOT EXISTS `transactions` ( + `id` int(255) NOT NULL AUTO_INCREMENT, + `account_id` int(255) unsigned NOT NULL, + `type` varchar(25) DEFAULT NULL, + `coin_address` varchar(255) DEFAULT NULL, + `amount` decimal(50,30) DEFAULT '0', + `block_id` int(255) DEFAULT NULL, + `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `txid` varchar(256) DEFAULT NULL, + `archived` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `block_id` (`block_id`), + KEY `account_id` (`account_id`), + KEY `type` (`type`), + KEY `archived` (`archived`), + KEY `account_id_archived` (`account_id`,`archived`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `statistics_users` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `account_id` int(11) NOT NULL, + `hashrate` bigint(20) unsigned NOT NULL, + `workers` int(11) NOT NULL, + `sharerate` float NOT NULL, + `timestamp` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `account_id_timestamp` (`account_id`,`timestamp`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `user_settings` ( + `account_id` int(11) NOT NULL, + `name` varchar(50) NOT NULL, + `value` text DEFAULT NULL, + PRIMARY KEY (`account_id`,`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;