-- MySQL Script generated by MySQL Workbench
-- Wed 30 May 2018 07:09:00 PM MDT
-- Model: New Model    Version: 1.0
-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema qwikclock
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `qwikclock` ;

-- -----------------------------------------------------
-- Schema qwikclock
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `qwikclock` DEFAULT CHARACTER SET utf8 ;
USE `qwikclock` ;

-- -----------------------------------------------------
-- Table `qwikclock`.`shifts`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `qwikclock`.`shifts` ;

CREATE TABLE IF NOT EXISTS `qwikclock`.`shifts` (
  `shiftid` INT NOT NULL AUTO_INCREMENT,
  `shiftname` VARCHAR(255) NOT NULL,
  `start` TIME NOT NULL,
  `end` TIME NOT NULL,
  `days` VARCHAR(14) NOT NULL DEFAULT 'MoTuWeThFr',
  PRIMARY KEY (`shiftid`),
  UNIQUE INDEX `shiftid_UNIQUE` (`shiftid` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `qwikclock`.`punches`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `qwikclock`.`punches` ;

CREATE TABLE IF NOT EXISTS `qwikclock`.`punches` (
  `punchid` INT NOT NULL AUTO_INCREMENT,
  `uid` INT NOT NULL,
  `in` DATETIME NOT NULL,
  `out` DATETIME NULL,
  `notes` TEXT(1000) NULL,
  `shiftid` INT NULL,
  PRIMARY KEY (`punchid`),
  UNIQUE INDEX `punchid_UNIQUE` (`punchid` ASC),
  INDEX `fk_punches_shifts1_idx` (`shiftid` ASC),
  CONSTRAINT `fk_punches_shifts1`
    FOREIGN KEY (`shiftid`)
    REFERENCES `qwikclock`.`shifts` (`shiftid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `qwikclock`.`assigned_shifts`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `qwikclock`.`assigned_shifts` ;

CREATE TABLE IF NOT EXISTS `qwikclock`.`assigned_shifts` (
  `uid` INT NOT NULL,
  `shiftid` INT NOT NULL,
  PRIMARY KEY (`uid`, `shiftid`),
  INDEX `fk_assigned_shifts_shifts_idx` (`shiftid` ASC),
  CONSTRAINT `fk_assigned_shifts_shifts`
    FOREIGN KEY (`shiftid`)
    REFERENCES `qwikclock`.`shifts` (`shiftid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `qwikclock`.`report_access_codes`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `qwikclock`.`report_access_codes` ;

CREATE TABLE IF NOT EXISTS `qwikclock`.`report_access_codes` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `code` VARCHAR(45) NULL,
  `expires` DATETIME NULL,
  `uid` INT NOT NULL DEFAULT -1,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `qwikclock`.`jobs`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `qwikclock`.`jobs` ;

CREATE TABLE IF NOT EXISTS `qwikclock`.`jobs` (
  `jobid` INT NOT NULL AUTO_INCREMENT,
  `jobname` VARCHAR(200) NOT NULL,
  `jobcode` VARCHAR(200) NULL,
  `color` VARCHAR(45) NULL,
  `deleted` TINYINT(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (`jobid`),
  UNIQUE INDEX `jobid_UNIQUE` (`jobid` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `qwikclock`.`job_groups`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `qwikclock`.`job_groups` ;

CREATE TABLE IF NOT EXISTS `qwikclock`.`job_groups` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `groupid` INT NOT NULL,
  `jobid` INT NOT NULL,
  PRIMARY KEY (`id`, `groupid`, `jobid`),
  UNIQUE INDEX `id_UNIQUE` (`id` ASC),
  INDEX `fk_job_groups_jobs1_idx` (`jobid` ASC),
  CONSTRAINT `fk_job_groups_jobs1`
    FOREIGN KEY (`jobid`)
    REFERENCES `qwikclock`.`jobs` (`jobid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `qwikclock`.`job_tracking`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `qwikclock`.`job_tracking` ;

CREATE TABLE IF NOT EXISTS `qwikclock`.`job_tracking` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `uid` INT NOT NULL,
  `jobid` INT NOT NULL,
  `start` DATETIME NULL,
  `end` DATETIME NULL,
  PRIMARY KEY (`id`, `uid`, `jobid`),
  INDEX `fk_job_tracking_jobs1_idx` (`jobid` ASC),
  UNIQUE INDEX `id_UNIQUE` (`id` ASC),
  CONSTRAINT `fk_job_tracking_jobs1`
    FOREIGN KEY (`jobid`)
    REFERENCES `qwikclock`.`jobs` (`jobid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
