CREATE TABLE company ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, active BOOLEAN NOT NULL DEFAULT TRUE, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE employee ( id BIGINT AUTO_INCREMENT PRIMARY KEY, company_id BIGINT NOT NULL, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, active BOOLEAN NOT NULL DEFAULT TRUE, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_employee_company FOREIGN KEY (company_id) REFERENCES company(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE product ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, price_cents INT NOT NULL DEFAULT 0, icon_placeholder VARCHAR(50) DEFAULT 'coffee', active BOOLEAN NOT NULL DEFAULT TRUE, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE tally_entry ( id BIGINT AUTO_INCREMENT PRIMARY KEY, employee_id BIGINT NOT NULL, product_id BIGINT NOT NULL, month_key VARCHAR(7) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_tally_employee FOREIGN KEY (employee_id) REFERENCES employee(id), CONSTRAINT fk_tally_product FOREIGN KEY (product_id) REFERENCES product(id), INDEX idx_tally_month (month_key), INDEX idx_tally_employee_month (employee_id, month_key) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE access_link ( id BIGINT AUTO_INCREMENT PRIMARY KEY, token VARCHAR(64) NOT NULL UNIQUE, role VARCHAR(20) NOT NULL, company_id BIGINT, description VARCHAR(255), active BOOLEAN NOT NULL DEFAULT TRUE, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_access_link_company FOREIGN KEY (company_id) REFERENCES company(id), CONSTRAINT chk_role CHECK (role IN ('COMPANY_ADMIN', 'PROVIDER_ADMIN')) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;