/*
 * 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
);
