/*
 * Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

CREATE TABLE IF NOT EXISTS JOBINSTANCEDATA(
  jobinstanceid   BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  name    VARCHAR(512), 
  apptag VARCHAR(512)
);

CREATE TABLE IF NOT EXISTS EXECUTIONINSTANCEDATA(
  jobexecid     BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  jobinstanceid BIGINT,
  createtime  TIMESTAMP,
  starttime   TIMESTAMP,
  endtime   TIMESTAMP,
  updatetime  TIMESTAMP,
  parameters  BLOB,
  batchstatus   VARCHAR(512),
  exitstatus    VARCHAR(512),
  CONSTRAINT JOBINST_JOBEXEC_FK FOREIGN KEY (jobinstanceid) REFERENCES JOBINSTANCEDATA (jobinstanceid)
  );
  
CREATE TABLE IF NOT EXISTS STEPEXECUTIONINSTANCEDATA(
  stepexecid    BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  jobexecid BIGINT,
  batchstatus       VARCHAR(512),
  exitstatus      VARCHAR(512),
  stepname        VARCHAR(512),
  readcount         INT,
  writecount        INT,
  commitcount       INT,
  rollbackcount     INT,
  readskipcount     INT,
  processskipcount  INT,
  filtercount       INT,
  writeskipcount    INT,
  startTime           TIMESTAMP,
  endTime             TIMESTAMP,
  persistentData    BLOB,
  CONSTRAINT JOBEXEC_STEPEXEC_FK FOREIGN KEY (jobexecid) REFERENCES EXECUTIONINSTANCEDATA (jobexecid)
);  

CREATE TABLE IF NOT EXISTS JOBSTATUS (
  id		BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  obj   BLOB,
  CONSTRAINT JOBSTATUS_JOBINST_FK FOREIGN KEY (id) REFERENCES JOBINSTANCEDATA (jobinstanceid) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS STEPSTATUS(
  id		BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
  obj   BLOB,
  CONSTRAINT STEPSTATUS_STEPEXEC_FK FOREIGN KEY (id) REFERENCES STEPEXECUTIONINSTANCEDATA (stepexecid) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS CHECKPOINTDATA(
  id		VARCHAR(512),
  obj		BLOB
);

  
