225 lines
8.8 KiB
SQL
225 lines
8.8 KiB
SQL
-- CreateTable
|
|
CREATE TABLE `tenants` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`slug` VARCHAR(191) NOT NULL,
|
|
`isActive` BOOLEAN NOT NULL DEFAULT true,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
UNIQUE INDEX `tenants_slug_key`(`slug`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `users` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`tenantId` VARCHAR(191) NOT NULL,
|
|
`email` VARCHAR(191) NOT NULL,
|
|
`password` VARCHAR(191) NOT NULL,
|
|
`firstName` VARCHAR(191) NULL,
|
|
`lastName` VARCHAR(191) NULL,
|
|
`isActive` BOOLEAN NOT NULL DEFAULT true,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `users_tenantId_idx`(`tenantId`),
|
|
UNIQUE INDEX `users_tenantId_email_key`(`tenantId`, `email`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `roles` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`tenantId` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`guardName` VARCHAR(191) NOT NULL DEFAULT 'api',
|
|
`description` VARCHAR(191) NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `roles_tenantId_idx`(`tenantId`),
|
|
UNIQUE INDEX `roles_tenantId_name_guardName_key`(`tenantId`, `name`, `guardName`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `permissions` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`tenantId` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`guardName` VARCHAR(191) NOT NULL DEFAULT 'api',
|
|
`description` VARCHAR(191) NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `permissions_tenantId_idx`(`tenantId`),
|
|
UNIQUE INDEX `permissions_tenantId_name_guardName_key`(`tenantId`, `name`, `guardName`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `user_roles` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`userId` VARCHAR(191) NOT NULL,
|
|
`roleId` VARCHAR(191) NOT NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
INDEX `user_roles_userId_idx`(`userId`),
|
|
INDEX `user_roles_roleId_idx`(`roleId`),
|
|
UNIQUE INDEX `user_roles_userId_roleId_key`(`userId`, `roleId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `role_permissions` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`roleId` VARCHAR(191) NOT NULL,
|
|
`permissionId` VARCHAR(191) NOT NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
INDEX `role_permissions_roleId_idx`(`roleId`),
|
|
INDEX `role_permissions_permissionId_idx`(`permissionId`),
|
|
UNIQUE INDEX `role_permissions_roleId_permissionId_key`(`roleId`, `permissionId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `object_definitions` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`tenantId` VARCHAR(191) NOT NULL,
|
|
`apiName` VARCHAR(191) NOT NULL,
|
|
`label` VARCHAR(191) NOT NULL,
|
|
`pluralLabel` VARCHAR(191) NULL,
|
|
`description` TEXT NULL,
|
|
`isSystem` BOOLEAN NOT NULL DEFAULT false,
|
|
`tableName` VARCHAR(191) NULL,
|
|
`isActive` BOOLEAN NOT NULL DEFAULT true,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `object_definitions_tenantId_idx`(`tenantId`),
|
|
UNIQUE INDEX `object_definitions_tenantId_apiName_key`(`tenantId`, `apiName`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `field_definitions` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`objectId` VARCHAR(191) NOT NULL,
|
|
`apiName` VARCHAR(191) NOT NULL,
|
|
`label` VARCHAR(191) NOT NULL,
|
|
`type` VARCHAR(191) NOT NULL,
|
|
`description` TEXT NULL,
|
|
`isRequired` BOOLEAN NOT NULL DEFAULT false,
|
|
`isUnique` BOOLEAN NOT NULL DEFAULT false,
|
|
`isReadonly` BOOLEAN NOT NULL DEFAULT false,
|
|
`isLookup` BOOLEAN NOT NULL DEFAULT false,
|
|
`referenceTo` VARCHAR(191) NULL,
|
|
`defaultValue` VARCHAR(191) NULL,
|
|
`options` JSON NULL,
|
|
`validationRules` JSON NULL,
|
|
`isActive` BOOLEAN NOT NULL DEFAULT true,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `field_definitions_objectId_idx`(`objectId`),
|
|
UNIQUE INDEX `field_definitions_objectId_apiName_key`(`objectId`, `apiName`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `accounts` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`tenantId` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`status` VARCHAR(191) NOT NULL DEFAULT 'active',
|
|
`ownerId` VARCHAR(191) NOT NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `accounts_tenantId_idx`(`tenantId`),
|
|
INDEX `accounts_ownerId_idx`(`ownerId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `apps` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`tenantId` VARCHAR(191) NOT NULL,
|
|
`slug` VARCHAR(191) NOT NULL,
|
|
`label` VARCHAR(191) NOT NULL,
|
|
`description` TEXT NULL,
|
|
`icon` VARCHAR(191) NULL,
|
|
`isActive` BOOLEAN NOT NULL DEFAULT true,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `apps_tenantId_idx`(`tenantId`),
|
|
UNIQUE INDEX `apps_tenantId_slug_key`(`tenantId`, `slug`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `app_pages` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`appId` VARCHAR(191) NOT NULL,
|
|
`slug` VARCHAR(191) NOT NULL,
|
|
`label` VARCHAR(191) NOT NULL,
|
|
`type` VARCHAR(191) NOT NULL,
|
|
`objectApiName` VARCHAR(191) NULL,
|
|
`objectId` VARCHAR(191) NULL,
|
|
`config` JSON NULL,
|
|
`sortOrder` INTEGER NOT NULL DEFAULT 0,
|
|
`isActive` BOOLEAN NOT NULL DEFAULT true,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `app_pages_appId_idx`(`appId`),
|
|
INDEX `app_pages_objectId_idx`(`objectId`),
|
|
UNIQUE INDEX `app_pages_appId_slug_key`(`appId`, `slug`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `users` ADD CONSTRAINT `users_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `roles` ADD CONSTRAINT `roles_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `permissions` ADD CONSTRAINT `permissions_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `user_roles` ADD CONSTRAINT `user_roles_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `user_roles` ADD CONSTRAINT `user_roles_roleId_fkey` FOREIGN KEY (`roleId`) REFERENCES `roles`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `role_permissions` ADD CONSTRAINT `role_permissions_roleId_fkey` FOREIGN KEY (`roleId`) REFERENCES `roles`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `role_permissions` ADD CONSTRAINT `role_permissions_permissionId_fkey` FOREIGN KEY (`permissionId`) REFERENCES `permissions`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `object_definitions` ADD CONSTRAINT `object_definitions_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `field_definitions` ADD CONSTRAINT `field_definitions_objectId_fkey` FOREIGN KEY (`objectId`) REFERENCES `object_definitions`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `accounts` ADD CONSTRAINT `accounts_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `accounts` ADD CONSTRAINT `accounts_ownerId_fkey` FOREIGN KEY (`ownerId`) REFERENCES `users`(`id`) ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `apps` ADD CONSTRAINT `apps_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `app_pages` ADD CONSTRAINT `app_pages_appId_fkey` FOREIGN KEY (`appId`) REFERENCES `apps`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `app_pages` ADD CONSTRAINT `app_pages_objectId_fkey` FOREIGN KEY (`objectId`) REFERENCES `object_definitions`(`id`) ON UPDATE CASCADE;
|