From 6cd2aa98a44b7baca743a7d0948dd1f2f7f79751 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Wed, 23 Sep 2015 14:51:48 +0200 Subject: [PATCH] =?utf8?q?updated=20jars=20+=20install.sql=20(no=20utf8mb4?= =?utf8?q?)=20Signed-off-by:Roland=20H=C3=A4der=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- PizzaService-ejb/lib/jcore.jar | Bin 29624 -> 31729 bytes PizzaService-ejb/lib/jcoreee.jar | Bin 19254 -> 19203 bytes PizzaService-ejb/lib/jshop-core.jar | Bin 36825 -> 47195 bytes PizzaService-ejb/lib/jshop-ee-lib.jar | Bin 7239 -> 7308 bytes install/install.sql | 99 ++++++++++++++------------ 5 files changed, 54 insertions(+), 45 deletions(-) diff --git a/PizzaService-ejb/lib/jcore.jar b/PizzaService-ejb/lib/jcore.jar index 12190beef63bed67f80a91b64eeee71aede608fc..e17de0c88e23d89b1f0953bcc4c3f8114d699b84 100644 GIT binary patch delta 8235 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 N!~L<8^Zby?^bZPn&65BC delta 1012 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 R;04t!e*i@78?W&0{{klQrilOm delta 9050 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 T@4=;3x7!O|s4`)%`#JFswdN4f diff --git a/install/install.sql b/install/install.sql index a5f3b14..2f14be7 100644 --- a/install/install.sql +++ b/install/install.sql @@ -1,12 +1,16 @@ -CREATE TABLE IF NOT EXISTS `category` ( +SET FOREIGN_KEY_CHECKS=0; +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + +CREATE TABLE `category` ( `id` bigint(20) unsigned NOT NULL COMMENT 'Primary key', - `title` varchar(255) NOT NULL COMMENT 'Category title', + `title` varchar(100) NOT NULL COMMENT 'Category title', `parent` bigint(20) unsigned DEFAULT NULL COMMENT 'Parent category', PRIMARY KEY (`id`), INDEX `parent` (`parent`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8mb4 COMMENT='Categories' ; +) ENGINE=InnoDBDEFAULT CHARSET=utf8 COMMENT='Categories'; -CREATE TABLE IF NOT EXISTS `contacts` ( +CREATE TABLE `contacts` ( `id` bigint(20) unsigned NOT NULL COMMENT 'Primary key', `own_contact` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Whether own contact', `gender` varchar(10) NOT NULL DEFAULT 'UNKNOWN' COMMENT 'Gender', @@ -25,57 +29,57 @@ CREATE TABLE IF NOT EXISTS `contacts` ( `birthday` date DEFAULT NULL COMMENT 'Birth day', `comment` tinytext NULL DEFAULT NULL COMMENT 'Comment', `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Entry created', - `updated` timestamp NULL DEFAULT NULL COMMENT 'Entry updated', + `updated` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'Updated entry', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8mb4 COMMENT='Contacts data' ; +) ENGINE=InnoDBDEFAULT CHARSET=utf8 COMMENT='Contacts data'; -CREATE TABLE IF NOT EXISTS `customer` ( - `id` bigint(20) unsigned NOT NULL COMMENT 'Primay key', +CREATE TABLE `customer` ( + `id` bigint(20) unsigned NOT NULL COMMENT 'Primary key', `customer_contact_id` bigint(20) unsigned NOT NULL COMMENT 'Table reference on "contact"', - `customer_number` varchar(20) COLLATE 'utf8mb4_general_ci' NOT NULL COMMENT 'Customer number', - `customer_password_hash` varchar(255) COLLATE 'utf8mb4_general_ci' NULL DEFAULT NULL COMMENT 'Password hash', - `customer_confirm_key` varchar(50) COLLATE 'utf8mb4_general_ci' NULL DEFAULT NULL COMMENT 'Email confirmation key', - `customer_status` enum('UNCONFIRMED','CONFIRMED','LOCKED') COLLATE 'utf8mb4_general_ci' NOT NULL DEFAULT 'UNCONFIRMED' COMMENT 'Account status', + `customer_number` varchar(20) NOT NULL COMMENT 'Customer number', + `customer_password_hash` varchar(255) DEFAULT NULL COMMENT 'Password hash', + `customer_confirm_key` varchar(50) DEFAULT NULL COMMENT 'Email confirmation key', + `customer_status` enum('UNCONFIRMED','CONFIRMED','LOCKED') NOT NULL DEFAULT 'UNCONFIRMED' COMMENT 'Account status', `customer_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Account creation', - `customer_locked` datetime NULL DEFAULT NULL COMMENT 'Last locked timestamp', + `customer_locked` timestamp NULL DEFAULT NULL COMMENT 'Last locked timestamp', PRIMARY KEY (`id`), UNIQUE (`customer_confirm_key`), UNIQUE (`customer_number`), INDEX (`customer_contact_id`) -) COMMENT='Customer data' ENGINE='InnoDB' COLLATE 'utf8mb4_general_ci'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8 COMMENT='Customer data'; -CREATE TABLE IF NOT EXISTS `products` ( +CREATE TABLE `ordered_items` ( `id` bigint(20) unsigned NOT NULL COMMENT 'Primary key', - `category` bigint(20) unsigned DEFAULT NULL COMMENT 'Category id', - `title` varchar(255) NOT NULL COMMENT 'Title of product', - `price` decimal(20,2) unsigned NOT NULL COMMENT 'Product price', - `available` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Whether product is available', - PRIMARY KEY (`id`), - INDEX `category` (`category`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8mb4 COMMENT='Products' ; + `order_id` bigint(20) unsigned NOT NULL COMMENT 'Table reference orders', + `order_status` enum('UNCONFIRMED','CONFIRMED','DELIVERED','CANCELED') NOT NULL DEFAULT 'UNCONFIRMED' COMMENT 'Order status', + `product_id` bigint(20) unsigned NOT NULL COMMENT 'Table reference products', + `item_type` VARCHAR(20) NOT NULL COMMENT 'Item type', + `amount` bigint(20) unsigned NOT NULL COMMENT 'Ordered amount', + `added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Record inserted', + PRIMARY KEY (`id), + INDEX (`order_id`), + INDEX (`product_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Ordered items'; -CREATE TABLE IF NOT EXISTS `orders` ( +CREATE TABLE `orders` ( `id` bigint(20) unsigned NOT NULL COMMENT 'Primary key', `customer_id` bigint(20) unsigned NOT NULL COMMENT 'Table reference customer', - `access_key` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT 'Access key to receipt', + `access_key` varchar(100) NULL DEFAULT NULL COMMENT 'Access key to receipt', `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Order created', PRIMARY KEY (`id`), - UNIQUE KEY `access_key` (`access_key`), - INDEX `customer_id` (`customer_id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Customer orders'; + INDEX (`customer_id`), + UNIQUE (`access_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Customer orders'; -CREATE TABLE IF NOT EXISTS `ordered_items` ( +CREATE TABLE `products` ( `id` bigint(20) unsigned NOT NULL COMMENT 'Primary key', - `order_id` bigint(20) unsigned DEFAULT NULL COMMENT 'Table reference orders', - `order_status` enum('UNCONFIRMED','CONFIRMED','DELIVERED','CANCELED') NOT NULL DEFAULT 'UNCONFIRMED' COMMENT 'Order status', - `product_id` bigint(20) unsigned NOT NULL COMMENT 'Table reference products', - `amount` bigint(20) unsigned NOT NULL COMMENT 'Ordered amount', - `added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Record inserted', - PRIMARY KEY (`id`), - INDEX `order_id` (`order_id`), - INDEX `product_id` (`product_id`), - INDEX `customer_product` (`customer_id`,`product_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Customer orders'; + `category` bigint(20) unsigned DEFAULT NULL COMMENT 'Category id', + `title` varchar(100) NOT NULL COMMENT 'Title of product', + `price` decimal(20,2) unsigned NOT NULL COMMENT 'Product price', + `available` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Whether product is available', + PRIMARY (`id`), + INDEX (`category`) +) ENGINE=InnoDBDEFAULT CHARSET=utf8 COMMENT='Products'; ALTER TABLE `category` MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key'; @@ -86,23 +90,28 @@ MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key'; ALTER TABLE `customer` MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key'; -ALTER TABLE `products` +ALTER TABLE `ordered_items` MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key'; ALTER TABLE `orders` MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key'; -ALTER TABLE `ordered_items` +ALTER TABLE `products` MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key'; ALTER TABLE `category` -ADD FOREIGN KEY (`parent`) REFERENCES `category` (`id`) ON DELETE SET NULL; +ADD CONSTRAINT `category_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `category` (`id`) ON DELETE SET NULL ON UPDATE NO ACTION; ALTER TABLE `customer` -ADD FOREIGN KEY (`customer_contact_id`) REFERENCES `contacts` (`id`) ON DELETE CASCADE; +ADD CONSTRAINT `customer_ibfk_1` FOREIGN KEY (`customer_contact_id`) REFERENCES `contacts` (`id`) ON DELETE CASCADE; + +ALTER TABLE `ordered_items` +ADD CONSTRAINT `ordered_items_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE; + +ALTER TABLE `orders` +ADD CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`); ALTER TABLE `products` -ADD FOREIGN KEY (`category`) REFERENCES `category` (`id`) ON DELETE SET NULL; +ADD CONSTRAINT `products_ibfk_1` FOREIGN KEY (`category`) REFERENCES `category` (`id`) ON DELETE SET NULL ON UPDATE NO ACTION; -ALTER TABLE `ordered_items` -ADD CONSTRAINT `orders_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE; +SET FOREIGN_KEY_CHECKS=1; -- 2.39.5