Wroclaw
90932a49c8
now, when the project is ran without configured database, it will prompt for the first user to configure the database and add the first user
167 lines
4.8 KiB
SQL
167 lines
4.8 KiB
SQL
-- Server version 8.0.32
|
|
|
|
--
|
|
-- Table structure for table `users`
|
|
--
|
|
|
|
CREATE TABLE `users` (
|
|
`id` bigint unsigned NOT NULL DEFAULT (((unix_timestamp() * 1000 * pow(2,22)) + floor((rand() * pow(2,12))))),
|
|
`username` varchar(30) NOT NULL,
|
|
`email` varchar(128) NOT NULL,
|
|
`password` binary(64) NOT NULL,
|
|
`display_name` varchar(30) DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `idusers_UNIQUE` (`id`),
|
|
UNIQUE KEY `username_UNIQUE` (`username`),
|
|
UNIQUE KEY `email_UNIQUE` (`email`)
|
|
);
|
|
|
|
--
|
|
-- Table structure for table `clients`
|
|
--
|
|
|
|
CREATE TABLE `clients` (
|
|
`id` bigint unsigned NOT NULL DEFAULT (((unix_timestamp() * 1000 * pow(2,22)) + floor((rand() * pow(2,12))))),
|
|
`name` varchar(128) DEFAULT NULL,
|
|
`address` varchar(128) DEFAULT NULL,
|
|
`phone` varchar(16) DEFAULT NULL,
|
|
`email` varchar(128) DEFAULT NULL,
|
|
PRIMARY KEY (`id`)
|
|
);
|
|
|
|
--
|
|
-- Table structure for table `orders`
|
|
--
|
|
|
|
CREATE TABLE `orders` (
|
|
`id` bigint unsigned NOT NULL DEFAULT (((unix_timestamp() * 1000 * pow(2,22)) + floor((rand() * pow(2,12))))),
|
|
`client` bigint unsigned NOT NULL,
|
|
`user` bigint unsigned NOT NULL,
|
|
`is_draft` tinyint NOT NULL DEFAULT '1',
|
|
PRIMARY KEY (`id`),
|
|
KEY `user_idx` (`user`),
|
|
KEY `client_idx` (`client`),
|
|
CONSTRAINT `client` FOREIGN KEY (`client`) REFERENCES `clients` (`id`),
|
|
CONSTRAINT `user` FOREIGN KEY (`user`) REFERENCES `users` (`id`)
|
|
);
|
|
|
|
--
|
|
-- Table structure for table `imported_products`
|
|
--
|
|
|
|
CREATE TABLE `imported_products` (
|
|
`id` bigint unsigned NOT NULL DEFAULT (((unix_timestamp() * 1000 * pow(2,22)) + floor((rand() * pow(2,12))))),
|
|
`order` bigint unsigned NOT NULL,
|
|
`name` varchar(128) DEFAULT NULL,
|
|
`link` varchar(1024) NOT NULL,
|
|
`price_imported` decimal(10,2) NOT NULL DEFAULT '0.00',
|
|
`price` decimal(10,2) NOT NULL DEFAULT '0.00',
|
|
PRIMARY KEY (`id`),
|
|
KEY `order_idx` (`order`),
|
|
CONSTRAINT `order2` FOREIGN KEY (`order`) REFERENCES `orders` (`id`)
|
|
);
|
|
|
|
--
|
|
-- Table structure for table `offer`
|
|
--
|
|
|
|
CREATE TABLE `offer` (
|
|
`id` bigint unsigned NOT NULL DEFAULT (((unix_timestamp() * 1000 * pow(2,22)) + floor((rand() * pow(2,12))))),
|
|
`name` varchar(45) NOT NULL,
|
|
`description` text,
|
|
`recommended_price` decimal(10,2) DEFAULT NULL,
|
|
PRIMARY KEY (`id`)
|
|
);
|
|
|
|
--
|
|
-- Table structure for table `order_templates`
|
|
--
|
|
|
|
CREATE TABLE `order_templates` (
|
|
`id` bigint unsigned NOT NULL DEFAULT (((unix_timestamp() * 1000 * pow(2,22)) + floor((rand() * pow(2,12))))),
|
|
`name` varchar(45) NOT NULL,
|
|
`description` text,
|
|
PRIMARY KEY (`id`)
|
|
);
|
|
|
|
--
|
|
-- Table structure for table `sessions`
|
|
--
|
|
|
|
CREATE TABLE `sessions` (
|
|
`id` bigint unsigned NOT NULL DEFAULT (((unix_timestamp() * 1000 * pow(2,22)) + floor((rand() * pow(2,12))))),
|
|
`user` bigint unsigned NOT NULL,
|
|
`expiry_date` timestamp NULL DEFAULT ((now() + interval 30 day)),
|
|
PRIMARY KEY (`id`),
|
|
KEY `user_idx` (`user`),
|
|
CONSTRAINT `user_session` FOREIGN KEY (`user`) REFERENCES `users` (`id`)
|
|
);
|
|
|
|
--
|
|
-- Table structure for table `work`
|
|
--
|
|
|
|
CREATE TABLE `work` (
|
|
`id` bigint unsigned NOT NULL DEFAULT (((unix_timestamp() * 1000 * pow(2,22)) + floor((rand() * pow(2,12))))),
|
|
`order` bigint unsigned NOT NULL,
|
|
`offer` bigint unsigned NOT NULL,
|
|
`price` decimal(10,2) NOT NULL,
|
|
`notes` text,
|
|
`is_fulfilled` tinyint NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`id`),
|
|
KEY `order_idx` (`order`),
|
|
KEY `offer_idx` (`offer`),
|
|
CONSTRAINT `offer` FOREIGN KEY (`offer`) REFERENCES `offer` (`id`),
|
|
CONSTRAINT `order` FOREIGN KEY (`order`) REFERENCES `orders` (`id`)
|
|
);
|
|
|
|
--
|
|
-- Table structure for table `work_templates`
|
|
--
|
|
|
|
CREATE TABLE `work_templates` (
|
|
`id` bigint unsigned NOT NULL DEFAULT (((unix_timestamp() * 1000 * pow(2,22)) + floor((rand() * pow(2,12))))),
|
|
`order_template` bigint unsigned NOT NULL,
|
|
`offer` bigint unsigned NOT NULL,
|
|
`price` decimal(10,2) NOT NULL DEFAULT '0.00',
|
|
`notes` text,
|
|
PRIMARY KEY (`id`),
|
|
KEY `order_template_idx` (`order_template`),
|
|
KEY `offer_idx` (`offer`),
|
|
CONSTRAINT `offer2` FOREIGN KEY (`offer`) REFERENCES `offer` (`id`),
|
|
CONSTRAINT `order_template` FOREIGN KEY (`order_template`) REFERENCES `order_templates` (`id`)
|
|
);
|
|
|
|
--
|
|
-- Final view structure for view `orderSummaries`
|
|
--
|
|
|
|
CREATE VIEW `orderSummaries` AS
|
|
SELECT
|
|
`id`,
|
|
`client`,
|
|
`user`,
|
|
`is_draft`,
|
|
(COALESCE(`imported_products`.`price`, 0) + COALESCE(`work`.`price`, 0)) AS `value`,
|
|
COALESCE(`imported_products`.`count`, 0) as `imported_products_count`,
|
|
COALESCE(`work`.`count`, 0) as `work_count`
|
|
FROM
|
|
`orders`
|
|
LEFT JOIN
|
|
(
|
|
SELECT
|
|
`order`,
|
|
SUM(`price`) as `price`,
|
|
COUNT(*) AS `count`
|
|
FROM `imported_products`
|
|
GROUP BY `order`
|
|
) as `imported_products` ON `orders`.`id` = `imported_products`.`order`
|
|
LEFT JOIN
|
|
(
|
|
SELECT
|
|
`order`,
|
|
SUM(`price`) AS `price`,
|
|
COUNT(*) AS `count`
|
|
FROM `work`
|
|
GROUP BY `work`.`order`
|
|
) AS `work` ON `work`.`order` = `orders`.`id`;
|