90 lines
3.8 KiB
SQL
90 lines
3.8 KiB
SQL
-- AlterTable
|
|
ALTER TABLE `orders` ADD COLUMN `contract_accepted_at` DATETIME(3) NULL;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `contract_parties` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`business_name` VARCHAR(100) NOT NULL DEFAULT '',
|
|
`brand_name` VARCHAR(60) NOT NULL DEFAULT '',
|
|
`credit_code` VARCHAR(18) NOT NULL DEFAULT '',
|
|
`operator_name` VARCHAR(30) NOT NULL DEFAULT '',
|
|
`phone` VARCHAR(20) NOT NULL DEFAULT '',
|
|
`address` VARCHAR(200) NOT NULL DEFAULT '',
|
|
`premises_type` VARCHAR(10) NOT NULL DEFAULT 'LEASED',
|
|
`lease_end_date` DATE NULL,
|
|
`standard_lesson_price` INTEGER NOT NULL DEFAULT 0,
|
|
`signature_image` MEDIUMBLOB NULL,
|
|
`signature_sha256` VARCHAR(64) NULL,
|
|
`signature_updated_at` DATETIME(3) NULL,
|
|
`updated_at` DATETIME(3) NOT NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `membership_contracts` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`contract_no` VARCHAR(32) NOT NULL,
|
|
`user_id` VARCHAR(191) NOT NULL,
|
|
`membership_id` VARCHAR(191) NOT NULL,
|
|
`order_id` VARCHAR(191) NULL,
|
|
`source` ENUM('PURCHASE', 'LEGACY') NOT NULL,
|
|
`status` ENUM('PENDING_SIGN', 'SIGNED', 'VOIDED') NOT NULL DEFAULT 'PENDING_SIGN',
|
|
`require_before_booking` BOOLEAN NOT NULL DEFAULT false,
|
|
`template_version` VARCHAR(32) NOT NULL,
|
|
`terms` JSON NOT NULL,
|
|
`party_name` VARCHAR(30) NULL,
|
|
`party_phone` VARCHAR(20) NULL,
|
|
`document` JSON NULL,
|
|
`content_sha256` VARCHAR(64) NULL,
|
|
`signature_image` MEDIUMBLOB NULL,
|
|
`signature_sha256` VARCHAR(64) NULL,
|
|
`party_b_signature_image` MEDIUMBLOB NULL,
|
|
`party_b_name` VARCHAR(100) NULL,
|
|
`signed_at` DATETIME(3) NULL,
|
|
`signer_ip` VARCHAR(64) NULL,
|
|
`signer_user_agent` VARCHAR(300) NULL,
|
|
`signer_device` VARCHAR(200) NULL,
|
|
`voided_at` DATETIME(3) NULL,
|
|
`voided_by` VARCHAR(191) NULL,
|
|
`void_reason` VARCHAR(200) NULL,
|
|
`created_by` VARCHAR(191) NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL,
|
|
|
|
UNIQUE INDEX `membership_contracts_contract_no_key`(`contract_no`),
|
|
UNIQUE INDEX `membership_contracts_order_id_key`(`order_id`),
|
|
INDEX `membership_contracts_user_id_status_idx`(`user_id`, `status`),
|
|
INDEX `membership_contracts_membership_id_status_idx`(`membership_id`, `status`),
|
|
INDEX `membership_contracts_status_created_at_idx`(`status`, `created_at`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `contract_events` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`contract_id` VARCHAR(191) NOT NULL,
|
|
`action` VARCHAR(20) NOT NULL,
|
|
`actor_id` VARCHAR(191) NULL,
|
|
`ip` VARCHAR(64) NULL,
|
|
`user_agent` VARCHAR(300) NULL,
|
|
`detail` JSON NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
INDEX `contract_events_contract_id_created_at_idx`(`contract_id`, `created_at`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `membership_contracts` ADD CONSTRAINT `membership_contracts_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `membership_contracts` ADD CONSTRAINT `membership_contracts_membership_id_fkey` FOREIGN KEY (`membership_id`) REFERENCES `memberships`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `membership_contracts` ADD CONSTRAINT `membership_contracts_order_id_fkey` FOREIGN KEY (`order_id`) REFERENCES `orders`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `contract_events` ADD CONSTRAINT `contract_events_contract_id_fkey` FOREIGN KEY (`contract_id`) REFERENCES `membership_contracts`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|