102 lines
4.2 KiB
SQL
102 lines
4.2 KiB
SQL
-- CreateTable
|
|
CREATE TABLE `users` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`email` VARCHAR(191) NOT NULL,
|
|
`password` VARCHAR(191) NOT NULL,
|
|
`display_name` VARCHAR(191) NOT NULL,
|
|
`role` ENUM('admin', 'user') NOT NULL DEFAULT 'user',
|
|
`email_verified_at` DATETIME(3) NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL,
|
|
|
|
UNIQUE INDEX `users_email_key`(`email`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `meetings` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`uuid` VARCHAR(191) NOT NULL,
|
|
`title` VARCHAR(191) NOT NULL,
|
|
`type` ENUM('instant', 'scheduled') NOT NULL,
|
|
`status` ENUM('scheduled', 'active', 'ended') NOT NULL DEFAULT 'scheduled',
|
|
`scheduled_at` DATETIME(3) NULL,
|
|
`host_user_id` INTEGER NOT NULL,
|
|
`started_at` DATETIME(3) NULL,
|
|
`ended_at` DATETIME(3) NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL,
|
|
|
|
UNIQUE INDEX `meetings_uuid_key`(`uuid`),
|
|
INDEX `meetings_uuid_idx`(`uuid`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `meeting_participants` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`meeting_id` INTEGER NOT NULL,
|
|
`user_id` INTEGER NULL,
|
|
`guest_name` VARCHAR(191) NULL,
|
|
`identity` VARCHAR(191) NOT NULL,
|
|
`role` ENUM('host', 'co_host', 'participant') NOT NULL DEFAULT 'participant',
|
|
`status` ENUM('pending', 'admitted', 'denied', 'left') NOT NULL DEFAULT 'pending',
|
|
`requested_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`admitted_at` DATETIME(3) NULL,
|
|
`left_at` DATETIME(3) NULL,
|
|
|
|
INDEX `meeting_participants_meeting_id_status_idx`(`meeting_id`, `status`),
|
|
UNIQUE INDEX `meeting_participants_meeting_id_identity_key`(`meeting_id`, `identity`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `notes` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`meeting_id` INTEGER NOT NULL,
|
|
`user_id` INTEGER NOT NULL,
|
|
`content` TEXT NOT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL,
|
|
|
|
UNIQUE INDEX `notes_meeting_id_user_id_key`(`meeting_id`, `user_id`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `recordings` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`meeting_id` INTEGER NOT NULL,
|
|
`egress_id` VARCHAR(191) NOT NULL,
|
|
`status` ENUM('in_progress', 'processing', 'completed', 'failed') NOT NULL DEFAULT 'in_progress',
|
|
`storage_path` VARCHAR(191) NULL,
|
|
`file_size_bytes` BIGINT NULL,
|
|
`duration_seconds` INTEGER NULL,
|
|
`started_by_user_id` INTEGER NOT NULL,
|
|
`started_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`completed_at` DATETIME(3) NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `meetings` ADD CONSTRAINT `meetings_host_user_id_fkey` FOREIGN KEY (`host_user_id`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `meeting_participants` ADD CONSTRAINT `meeting_participants_meeting_id_fkey` FOREIGN KEY (`meeting_id`) REFERENCES `meetings`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `meeting_participants` ADD CONSTRAINT `meeting_participants_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `notes` ADD CONSTRAINT `notes_meeting_id_fkey` FOREIGN KEY (`meeting_id`) REFERENCES `meetings`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `notes` ADD CONSTRAINT `notes_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `recordings` ADD CONSTRAINT `recordings_meeting_id_fkey` FOREIGN KEY (`meeting_id`) REFERENCES `meetings`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `recordings` ADD CONSTRAINT `recordings_started_by_user_id_fkey` FOREIGN KEY (`started_by_user_id`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|