-- -----------------------------------------------------
-- Table `IOS_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IOS_DEVICE (
  MOBILE_DEVICE_ID VARCHAR(45) NOT NULL,
  APNS_PUSH_TOKEN VARCHAR(100) DEFAULT NULL,
  MAGIC_TOKEN VARCHAR(100) DEFAULT NULL,
  MDM_TOKEN VARCHAR(100) DEFAULT NULL,
  UNLOCK_TOKEN VARCHAR(5000) DEFAULT NULL,
  CHALLENGE_TOKEN VARCHAR(45) DEFAULT NULL,
  DEVICE_INFO VARCHAR(4000) DEFAULT NULL,
  SERIAL VARCHAR(45) DEFAULT NULL,
  PRODUCT VARCHAR(45) DEFAULT NULL,
  IMEI VARCHAR(45) DEFAULT NULL,
  VERSION VARCHAR(45) DEFAULT NULL,
  MAC_ADDRESS VARCHAR(45) DEFAULT NULL,
  DEVICE_NAME VARCHAR(100) DEFAULT NULL,
  ICCID VARCHAR(45) DEFAULT NULL,
  LATITUDE VARCHAR(45) DEFAULT NULL,
  LONGITUDE VARCHAR(45) DEFAULT NULL,
  CONSTRAINT PK_IOS_DEVICE PRIMARY KEY (MOBILE_DEVICE_ID)
)
/

-- -----------------------------------------------------
-- Table `IOS_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IOS_FEATURE (
  ID INT NOT NULL,
  CODE VARCHAR(45) NOT NULL,
  NAME VARCHAR(100) NOT NULL,
  DESCRIPTION VARCHAR(200) NULL,
  CONSTRAINT PK_IOS_FEATURE PRIMARY KEY (ID)
)
/

-- Sequence `IOS_FEATURE_ID_INC_SEQ`
-- -----------------------------------------------------
CREATE SEQUENCE IOS_FEATURE_ID_INC_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/

-- -----------------------------------------------------
-- Trigger `IOS_FEATURE_ID_INC_TRIG`
-- -----------------------------------------------------
CREATE OR REPLACE TRIGGER IOS_FEATURE_ID_INC_TRIG
BEFORE INSERT
ON IOS_FEATURE
REFERENCING NEW AS NEW
FOR EACH ROW
  BEGIN
    SELECT IOS_FEATURE_ID_INC_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
  END;
/

-- -----------------------------------------------------
-- Table `IOS_DEVICE_PROFILE`
-- -----------------------------------------------------
CREATE TABLE IOS_DEVICE_PROFILE (
  ID NUMBER(10) NOT NULL,
  OPERATION_ID VARCHAR2(10) NOT NULL,
  OPERATION_CODE VARCHAR2(1000) NULL,
  PROFILE_ID VARCHAR2(1000) NULL,
  DEVICE_IDENTIFICATION VARCHAR2(300) DEFAULT NULL,
  PROPERTIES CLOB DEFAULT NULL,
  PRIMARY KEY (ID)
);

-- Generate ID using sequence and trigger
CREATE SEQUENCE IOS_DEVICE_PROFILE_seq START WITH 1 INCREMENT BY 1;

CREATE OR REPLACE TRIGGER IOS_DEVICE_PROFILE_seq_tr
 BEFORE INSERT ON IOS_DEVICE_PROFILE FOR EACH ROW
 WHEN (NEW.ID IS NULL)
BEGIN
 SELECT IOS_DEVICE_PROFILE_seq.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/

-- -----------------------------------------------------
-- Table `IOS_ENROLLMENT_TOKEN`
-- -----------------------------------------------------
CREATE TABLE IOS_ENROLLMENT_TOKEN (
  TENANT_DOMAIN VARCHAR(255) NOT NULL,
  CHALLENGE_TOKEN VARCHAR(45) NOT NULL,
  DEVICE_ID VARCHAR(45) DEFAULT NULL,
  ACCESS_TOKEN VARCHAR(100) NOT NULL,
  REFRESH_TOKEN VARCHAR(100) NOT NULL,
  USERNAME VARCHAR(255) NOT NULL,
  CLIENT_CREDENTIALS VARCHAR(255) NOT NULL,
  AGENT_AVAILABLE VARCHAR(10) NOT NULL,
  CONSTRAINT UNIQUE_IOS_ENROLLMENT_TOKEN UNIQUE (TENANT_DOMAIN, CHALLENGE_TOKEN),
  CONSTRAINT PK_IOS_ENROLLMENT_TOKEN PRIMARY KEY (CHALLENGE_TOKEN)
);
