CREATE TABLE asset (
  asset_id int(10) NOT NULL AUTO_INCREMENT,
  asset_name varchar(100) NOT NULL,
  asset_hostname varchar(100) DEFAULT NULL,
  assetclass_id int(10) NOT NULL,
  asset_info text DEFAULT NULL,
  asset_intf smallint(5) UNSIGNED NOT NULL DEFAULT 1,
  asset_location int(10) DEFAULT NULL,
  asset_type enum ('active','passive') NOT NULL DEFAULT 'active',
  PRIMARY KEY (asset_id),
  INDEX ix_asset_name (asset_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE assetclass (
  assetclass_id int(10) NOT NULL AUTO_INCREMENT,
  assetclassgroup_id int(10) NOT NULL,
  assetclass_name varchar(100) NOT NULL,
  assetclass_description varchar(100) DEFAULT NULL,
  PRIMARY KEY (assetclass_id),
  INDEX ix_assetclass_name (assetclass_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE assetclassgroup (
  assetclassgroup_id int(10) NOT NULL AUTO_INCREMENT,
  assetclassgroup_name varchar(100) NOT NULL,
  assetclassgroup_color char(6) NOT NULL DEFAULT '000000',
  assetclassgroup_description varchar(100) DEFAULT NULL,
  PRIMARY KEY (assetclassgroup_id),
  INDEX ix_assetclassgroup_name (assetclassgroup_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE cable (
  cable_id int(10) NOT NULL AUTO_INCREMENT,
  cable_description varchar(100) NOT NULL,
  cable_from_id int(10) DEFAULT NULL,
  cable_to_id int(10) DEFAULT NULL,
  cable_length smallint(5) UNSIGNED DEFAULT NULL,
  cable_links smallint(5) UNSIGNED DEFAULT 1,
  cable_type enum('copper','fibre','laser','radio') DEFAULT NULL,
  cable_color char(6) NOT NULL DEFAULT '000000',
  cable_info text DEFAULT NULL,
  PRIMARY KEY (cable_id),
  UNIQUE INDEX ix_cable_description (cable_description)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- WIP
CREATE TABLE cablevlan (
  cablevlan_id int(10) NOT NULL AUTO_INCREMENT,
  cable_id int(10) NOT NULL,
  vlan_id int(10) NOT NULL,
  PRIMARY KEY (cablevlan_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- WIP
-- Reference to external systems
CREATE TABLE extlink (
  extlink_id int(10) NOT NULL AUTO_INCREMENT,
  asset_id int(10) NOT NULL,
  extlink_type enum('cdb','zabbix', 'topdesk') NOT NULL DEFAULT 'cdb',
  extlink_refid int(10) DEFAULT NULL,
  extlink_uid varchar(65) DEFAULT NULL,
  PRIMARY KEY (extlink_id),
  INDEX ix_extlink_asset_id (asset_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE location (
  location_id int(10) NOT NULL AUTO_INCREMENT,
  location_name varchar(100) NOT NULL,
  location_parent int(10) NOT NULL DEFAULT 0,
  location_info text DEFAULT NULL,
  location_type enum('location', 'building','room','rack') NOT NULL DEFAULT 'location',
  location_sort smallint(6) NOT NULL DEFAULT 0,
  PRIMARY KEY (location_id),
  INDEX ix_location_sort (location_sort),
  INDEX ix_location_name (location_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE nat (
  nat_id int(10) NOT NULL AUTO_INCREMENT,
  nat_type int(1) NOT NULL,
  nat_ext int(10) NOT NULL,
  nat_int int(10) NOT NULL,
  nat_ext_port smallint(5) UNSIGNED DEFAULT NULL,
  nat_int_port smallint(5) UNSIGNED DEFAULT NULL,
  nat_description varchar(100) DEFAULT NULL,
  PRIMARY KEY (nat_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE node (
  node_id int(10) NOT NULL AUTO_INCREMENT,
  node_ip varchar(45) NOT NULL,
  node_mac varchar(12) NOT NULL,
  node_dns1 varchar(100) DEFAULT NULL,
  node_dns2 varchar(100) DEFAULT NULL,
  subnet_id int(10) NOT NULL,
  asset_id int(10) NOT NULL,
  zone_id int(10) DEFAULT NULL,
  node_info text DEFAULT NULL,
  node_type enum('v4','v6') NOT NULL DEFAULT 'v4',
  PRIMARY KEY (node_id),
  INDEX ix_ip (node_ip),
  INDEX ix_mac (node_mac)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE subnet (
  subnet_id int(10) NOT NULL AUTO_INCREMENT,
  subnet_address varchar(45) NOT NULL,
  subnet_mask int(2) NOT NULL,
  subnet_dhcp_start varchar(15) DEFAULT NULL,
  subnet_dhcp_end varchar(15) DEFAULT NULL,
  subnet_info text DEFAULT NULL,
  protocol_version tinyint(1) NOT NULL DEFAULT 4,
  ntp_server varchar(45) DEFAULT NULL,
  PRIMARY KEY (subnet_id),
  UNIQUE INDEX ix_subnet (subnet_address, subnet_mask)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE subnetlocation (
  subnetlocation_id int(10) NOT NULL AUTO_INCREMENT,
  subnet_id int(10) NOT NULL,
  location_id int(10) NOT NULL,
  PRIMARY KEY (subnetlocation_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE subnetvlan (
  subnetvlan_id int(10) NOT NULL AUTO_INCREMENT,
  subnet_id int(10) NOT NULL,
  vlan_id int(10) NOT NULL,
  PRIMARY KEY (subnetvlan_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE user (
  user_id int(10) NOT NULL AUTO_INCREMENT,
  user_realm enum ('local','ldap') NOT NULL DEFAULT 'local',
  user_name varchar(100) NOT NULL,
  user_pass binary(60) NOT NULL,
  user_displayname varchar(100) NOT NULL,
  user_language char(2) NOT NULL DEFAULT 'en',
  user_imagesize int(3) NOT NULL DEFAULT 6,
  user_imagecount int(3) NOT NULL DEFAULT 64,
  user_mac varchar(25) NOT NULL DEFAULT 'xx:xx:xx:xx:xx:xx',
  user_dateformat varchar(10) NOT NULL DEFAULT 'd M Y H:i',
  user_dns1suffix varchar(100) DEFAULT NULL,
  user_dns2suffix varchar(100) DEFAULT NULL,
  user_tooltips varchar(2) NOT NULL DEFAULT 'on',
  user_menu set('asset','cable','class','group','location','nat','node',
                'subnet','vlan','zone') NOT NULL DEFAULT 'asset,class,group,location,node,subnet,vlan',
  user_role set('add','edit','delete','manage','admin') DEFAULT NULL,
  user_flags set('deleted','locked'),
  PRIMARY KEY (user_id),
  UNIQUE INDEX ix_username (user_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO user (user_name, user_pass, user_displayname, user_role) VALUES
('admin', '$2y$10$HTs0lSaFrfr.q4Gmy5zWfeDg3jhYZkqEGZEnDkMiHZ641nso38mt6', 'Administrator', 'admin');

CREATE TABLE vlan (
  vlan_id int(10) NOT NULL AUTO_INCREMENT,
  vlan_number int(3) NOT NULL,
  vlan_name varchar(100) NOT NULL,
  vlan_color char(6) NOT NULL DEFAULT '000000',
  vlan_info text DEFAULT NULL,
  PRIMARY KEY (vlan_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE zone (
  zone_id int(10) NOT NULL AUTO_INCREMENT,
  zone_soa varchar(40) NOT NULL,
  zone_hostmaster varchar(40) NOT NULL,
  zone_origin varchar(40) NOT NULL,
  zone_ttl_default varchar(10) NOT NULL DEFAULT '3D',
  zone_refresh varchar(10) NOT NULL DEFAULT '8H',
  zone_retry varchar(10) NOT NULL DEFAULT '2H',
  zone_expire varchar(10) NOT NULL DEFAULT '4W',
  zone_ttl varchar(10) NOT NULL DEFAULT '1D',
  zone_serial int(10) unsigned NOT NULL,
  zone_ns1 varchar(20) NOT NULL,
  zone_ns2 varchar(20) DEFAULT NULL,
  zone_ns3 varchar(20) DEFAULT NULL,
  zone_mx1 varchar(20) DEFAULT NULL,
  zone_mx2 varchar(20) DEFAULT NULL,
  zone_info text DEFAULT NULL,
  PRIMARY KEY (zone_id),
  UNIQUE INDEX ix_zone_origin (zone_origin)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;