DROP DATABASE IF EXISTS ap;
CREATE DATABASE IF NOT EXISTS ap;
USE ap;
CREATE TABLE vendors (
    vendorID INT  NOT NULL PRIMARY KEY AUTO_INCREMENT,
    vendorName VARCHAR(45) NOT NULL,
    vendorAddress VARCHAR(45) NOT NULL,
    vendorCity VARCHAR(45) NOT NULL,
    vendorState VARCHAR(45) NOT NULL,
    VendorZipCode VARCHAR(10) NOT NULL,
    vendorPhone VARCHAR(20) NOT NULL UNIQUE
);

CREATE TABLE invoices (
    invoiceID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    VendorID INT NOT NULL REFERENCES vendors (vendorID),
    invoiceNumber VARCHAR(45) NOT NULL UNIQUE,
    invoiceDate DATETIME NOT NULL,
    invoiceTotal DECIMAL NOT NULL,
    paymentTotal DECIMAL NOT NULL
);

CREATE TABLE lineItems( 
    lineItemID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    invoiceID INT NOT NULL REFERENCES invoices (invoiceID),
    description VARCHAR(45),
    quantity INT NOT NULL,
    price INT NOT NULL,
    lineItemTotal DECIMAL NOT NULL
);

CREATE UNIQUE INDEX invoiceVendors 
ON invoices (invoiceID,vendorID);

CREATE UNIQUE INDEX lineItemsInvoices 
ON lineItems (lineItemID,invoiceID);

CREATE UNIQUE INDEX invoiceNumberIndex
ON invoices (invoiceNumber);

CREATE USER IF NOT EXISTS ap_user@localhost
IDENTIFIED BY 'sesame';

GRANT SELECT,INSERT,UPDATE
ON ap.* TO 'ap_user'@'localhost';

REVOKE DELETE
ON ap.* FROM 'ap_user'@'localhost';