32 lines
1.6 KiB
SQL
32 lines
1.6 KiB
SQL
CREATE TABLE IF NOT EXISTS `user_family` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`owner_user_id` BIGINT NOT NULL COMMENT 'Owner User ID',
|
|
`max_members` INT NOT NULL DEFAULT 5 COMMENT 'Max members in family',
|
|
`status` TINYINT NOT NULL DEFAULT 1 COMMENT 'Status: 1=active, 0=disabled',
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|
`deleted_at` DATETIME(3) DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uniq_owner_user_id` (`owner_user_id`),
|
|
KEY `idx_status` (`status`),
|
|
KEY `idx_deleted_at` (`deleted_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `user_family_member` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`family_id` BIGINT NOT NULL COMMENT 'Family ID',
|
|
`user_id` BIGINT NOT NULL COMMENT 'Member User ID',
|
|
`role` TINYINT NOT NULL DEFAULT 2 COMMENT 'Role: 1=owner, 2=member',
|
|
`status` TINYINT NOT NULL DEFAULT 1 COMMENT 'Status: 1=active, 2=left, 3=removed',
|
|
`join_source` VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'Join source',
|
|
`joined_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`left_at` DATETIME(3) DEFAULT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|
`deleted_at` DATETIME(3) DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uniq_user_id` (`user_id`),
|
|
KEY `idx_family_status` (`family_id`, `status`),
|
|
KEY `idx_deleted_at` (`deleted_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|