-- README
-- Prefix idx_ = index
-- Prefix fk_  = foreign
-- Create an index for fast lookups
-- Defining constraints separately for better readability & maintainability
-- Prefix p_   = Procedure
-- Prefix i_   = Input(s)
-- Prefix v_   = Variable(s)
-- Prefix o_   = Output(s)

-- Instance table

create table if not exists `gebox_instance` (
	`id`			int(11) 		not null auto_increment primary key,
	--`profile`		int(11)			not null,
	`instance`		varchar(36)		not null,
	`domain`		longtext		not null,
	`product`		int(11)			not null,
	`status`		text			default 'pending',
	--key 			`idx_profile` 	(`profile`),
	key 			`idx_product` 	(`product`),
	--constraint `gebox_instance_fk_profile`
	--	foreign key (`profile`) references `auth_profile` (`id`)
	--	on update cascade
	--	on delete cascade,
	constraint `gebox_instance_fk_product`
		foreign key (`product`) references `gebox_package_version` (`id`)
		on update restrict
		on delete restrict
) engine=InnoDB default charset=utf8mb4;

-- Main table

create table if not exists `gebox_package` (
	`id`			int(11) 		not null auto_increment primary key,
	`name`			varchar(36)		not null,
	`desc`			longtext		default null
) engine=InnoDB default charset=utf8mb4;

create table if not exists `gebox_package_version` (
	`id`			int(11) 		not null auto_increment primary key,
	`package`		int(11)			not null,
	`version`		longtext		not null,
	`release` 		datetime		default null,
	key 			`idx_package` 	(`package`),
	constraint `gebox_instance_fk_package`
		foreign key (`package`) references `gebox_package` (`id`)
		on update cascade
		on delete cascade
) engine=InnoDB default charset=utf8mb4;
