DROP TABLE IF EXISTS `users`;
CREATE TABLE IF NOT EXISTS `users` (
    `id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
    `uuid` varchar(150) NOT NULL COMMENT 'uuid',
    `username` varchar(191) NOT NULL COMMENT '''用户名''',
    `nickname` varchar(255) DEFAULT NULL COMMENT '昵称',
    `email` varchar(80) DEFAULT NULL COMMENT '邮箱',
    `password` varchar(150) NOT NULL COMMENT '密码',
    `avatar` varchar(250) NOT NULL COMMENT '头像',
    `create_at` datetime(3) DEFAULT NULL,
    `update_at` datetime(3) DEFAULT NULL,
    `delete_at` bigint DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `username` (`username`),
    UNIQUE KEY `idx_uuid` (`uuid`),
    UNIQUE KEY `username_2` (`username`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '用户表';


DROP TABLE IF EXISTS `user_friends`;
CREATE TABLE IF NOT EXISTS `user_friends` (
    `id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
    `created_at` datetime(3) DEFAULT NULL COMMENT '创建时间',
    `updated_at` datetime(3) DEFAULT NULL COMMENT '更新时间',
    `deleted_at` bigint unsigned DEFAULT NULL COMMENT '删除时间戳',
    `user_id` int DEFAULT NULL COMMENT '用户ID',
    `friend_id` int DEFAULT NULL COMMENT '好友ID',
    PRIMARY KEY (`id`),
    KEY `idx_user_friends_user_id` (`user_id`),
    KEY `idx_user_friends_friend_id` (`friend_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '好友信息表';


DROP TABLE IF EXISTS `messages`;
CREATE TABLE IF NOT EXISTS `messages` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
  `created_at` datetime(3) DEFAULT NULL COMMENT '创建时间',
  `updated_at` datetime(3) DEFAULT NULL COMMENT '更新时间',
  `deleted_at` bigint unsigned DEFAULT NULL COMMENT '删除时间戳',
  `from_user_id` int DEFAULT NULL COMMENT '发送人ID',
  `to_user_id` int DEFAULT NULL COMMENT '发送对象ID',
  `content` varchar(2500) DEFAULT NULL COMMENT '消息内容',
  `url` varchar(350) DEFAULT NULL COMMENT '''文件或者图片地址''',
  `pic` text COMMENT '缩略图',
  `message_type` smallint DEFAULT NULL COMMENT '''消息类型：1单聊，2群聊''',
  `content_type` smallint DEFAULT NULL COMMENT '''消息内容类型：1文字，2语音，3视频''',
  PRIMARY KEY (`id`),
  KEY `idx_messages_deleted_at` (`deleted_at`),
  KEY `idx_messages_from_user_id` (`from_user_id`),
  KEY `idx_messages_to_user_id` (`to_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT '消息表';


DROP TABLE IF EXISTS `groups`;
CREATE TABLE IF NOT EXISTS  `groups` (
  `id` int NOT NULL AUTO_INCREMENT,
  `created_at` datetime(3) DEFAULT NULL,
  `updated_at` datetime(3) DEFAULT NULL,
  `deleted_at` bigint unsigned DEFAULT NULL,
  `user_id` int DEFAULT NULL COMMENT '''群主ID''',
  `name` varchar(150) DEFAULT NULL COMMENT '''群名称',
  `notice` varchar(350) DEFAULT NULL COMMENT '''群公告',
  `uuid` varchar(150) NOT NULL COMMENT '''uuid''',
  PRIMARY KEY (`id`),
  KEY `idx_groups_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT '群组表';


DROP TABLE IF EXISTS `group_members`;
CREATE TABLE  IF NOT EXISTS `group_members` (
  `id` int NOT NULL AUTO_INCREMENT,
  `created_at` datetime(3) DEFAULT NULL,
  `updated_at` datetime(3) DEFAULT NULL,
  `deleted_at` bigint unsigned DEFAULT NULL,
  `user_id` int DEFAULT NULL COMMENT '''用户ID''',
  `group_id` int DEFAULT NULL COMMENT '''群组ID''',
  `nickname` varchar(350) DEFAULT NULL COMMENT '''昵称',
  `mute` smallint DEFAULT NULL COMMENT '''是否禁言''',
  PRIMARY KEY (`id`),
  KEY `idx_group_members_user_id` (`user_id`),
  KEY `idx_group_members_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT '群组成员表';
