-- CreateTable CREATE TABLE `users` ( `id` VARCHAR(191) NOT NULL, `email` VARCHAR(191) NOT NULL, `passwordHash` VARCHAR(191) NOT NULL, `name` VARCHAR(191) NOT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, UNIQUE INDEX `users_email_key`(`email`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `companies` ( `id` VARCHAR(191) NOT NULL, `name` VARCHAR(191) NOT NULL, `legalForm` VARCHAR(191) NULL, `taxId` VARCHAR(191) NULL, `vatId` VARCHAR(191) NULL, `address` VARCHAR(191) NOT NULL, `zip` VARCHAR(191) NOT NULL, `city` VARCHAR(191) NOT NULL, `country` VARCHAR(191) NOT NULL DEFAULT 'DE', `email` VARCHAR(191) NULL, `phone` VARCHAR(191) NULL, `website` VARCHAR(191) NULL, `bankIban` VARCHAR(191) NULL, `bankBic` VARCHAR(191) NULL, `bankName` VARCHAR(191) NULL, `invoicePrefix` VARCHAR(191) NOT NULL DEFAULT 'RE', `invoiceSequence` INTEGER NOT NULL DEFAULT 0, `userId` VARCHAR(191) NOT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `customers` ( `id` VARCHAR(191) NOT NULL, `companyId` VARCHAR(191) NOT NULL, `name` VARCHAR(191) NOT NULL, `vatId` VARCHAR(191) NULL, `taxId` VARCHAR(191) NULL, `address` VARCHAR(191) NOT NULL, `zip` VARCHAR(191) NOT NULL, `city` VARCHAR(191) NOT NULL, `country` VARCHAR(191) NOT NULL DEFAULT 'DE', `email` VARCHAR(191) NULL, `phone` VARCHAR(191) NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `invoices` ( `id` VARCHAR(191) NOT NULL, `number` VARCHAR(191) NOT NULL, `companyId` VARCHAR(191) NOT NULL, `customerId` VARCHAR(191) NOT NULL, `issueDate` DATETIME(3) NOT NULL, `deliveryDate` DATETIME(3) NULL, `dueDate` DATETIME(3) NOT NULL, `status` ENUM('DRAFT', 'SENT', 'PAID', 'CANCELLED') NOT NULL DEFAULT 'DRAFT', `notes` TEXT NULL, `netTotal` DECIMAL(10, 2) NOT NULL, `taxTotal` DECIMAL(10, 2) NOT NULL, `grossTotal` DECIMAL(10, 2) NOT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, UNIQUE INDEX `invoices_companyId_number_key`(`companyId`, `number`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `invoice_items` ( `id` VARCHAR(191) NOT NULL, `invoiceId` VARCHAR(191) NOT NULL, `position` INTEGER NOT NULL, `description` TEXT NOT NULL, `quantity` DECIMAL(10, 3) NOT NULL, `unit` VARCHAR(191) NULL, `unitPrice` DECIMAL(10, 2) NOT NULL, `taxRate` DECIMAL(5, 2) NOT NULL, `netAmount` DECIMAL(10, 2) NOT NULL, `taxAmount` DECIMAL(10, 2) NOT NULL, `grossAmount` DECIMAL(10, 2) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- AddForeignKey ALTER TABLE `companies` ADD CONSTRAINT `companies_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `customers` ADD CONSTRAINT `customers_companyId_fkey` FOREIGN KEY (`companyId`) REFERENCES `companies`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `invoices` ADD CONSTRAINT `invoices_companyId_fkey` FOREIGN KEY (`companyId`) REFERENCES `companies`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `invoices` ADD CONSTRAINT `invoices_customerId_fkey` FOREIGN KEY (`customerId`) REFERENCES `customers`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `invoice_items` ADD CONSTRAINT `invoice_items_invoiceId_fkey` FOREIGN KEY (`invoiceId`) REFERENCES `invoices`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;