create database if not exists `intimate_extractor`;
use intimate_extractor;

CREATE TABLE IF NOT EXISTS `streamer` (
  `uid`           bigint AUTO_INCREMENT COMMENT '自增UID, 便于查询定位',
  `platform`      varchar(255) NOT NULL COMMENT '平台',
  `user_id`     varchar(255) NOT NULL COMMENT '用户唯一UID',
  `user_name`   varchar(255) DEFAULT NULL COMMENT '用户名字 区别于ID',
  `live_url`      text COMMENT '直播的url', 
  `channel`       varchar(128) DEFAULT NULL COMMENT'所属 频道,分类 未必所有平台都有明确的标签',
  `ext`           json DEFAULT NULL COMMENT '扩展类型, 把一些可能需要但是没字段的数据放在json扩展',

  `is_update_streamer` tinyint(1) DEFAULT 0 COMMENT '是否需要持续更新streamer的信息. 1为需要,0则否',
  `is_update_url` tinyint(1) DEFAULT 0 COMMENT '是否需要持续更新update_url. 1为需要,0则否',
  `update_url`    json DEFAULT NULL COMMENT '更新数据的url, 如直播url, profile url等',
  `update_interval` int  DEFAULT 30 COMMENT '分钟单位, 默认30分钟, 下次更新的时间间隔',
  `update_time`   Timestamp   NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `latest_log_uid` bigint COMMENT '最新更新的日志表的uid, 方便关联',  

  `error_msg` text DEFAULT NULL COMMENT '错误信息',
  `operator`      int DEFAULT 0 COMMENT '操作标志位, 根据不同解析方法有不同标志',

  PRIMARY KEY (`uid`),
  UNIQUE KEY `platform_user_id_idx` (`platform`, `user_id`),
  KEY `platform_idx` (`platform`),
  KEY `user_id_idx` (`user_id`),
  KEY `user_name_idx` (`user_name`),
  KEY `channel_idx` (`channel`),
  KEY `update_time_idx` (`update_time`),
  KEY `operator_idx` (`operator`)
);

CREATE TABLE IF NOT EXISTS `collect_log` (
  `log_uid`        bigint AUTO_INCREMENT COMMENT '日志自增UID',
  `streamer_uid`     bigint COMMENT '对应streamer表的UID',
  `platform` varchar(255) NOT NULL COMMENT '平台名称, 方便于搜索日志分类',
  `user_id` varchar(255) NOT NULL COMMENT '用户UID',

  `is_live_streaming` tinyint(1) DEFAULT 0 COMMENT '是否正在直播',
  `is_error` tinyint(1) DEFAULT 0 COMMENT '是否采集数据的时候出错, 便于定位错误',

  `followers` bigint(11) DEFAULT NULL COMMENT '关注数',
  `views` bigint(11) DEFAULT NULL COMMENT '当前直播的观众',
  `giver` json DEFAULT NULL COMMENT '打赏礼物者,和一些金额数据等, 数据类型异于平台',
  `gratuity` bigint(11) DEFAULT NULL COMMENT '打赏值的总值, 数据类型异于平台',

  `live_title` text DEFAULT NULL COMMENT '直播标题',
  `live_start_time` Timestamp   NULL DEFAULT NULL COMMENT '直播开始时间',
  `live_end_time` Timestamp  NULL DEFAULT NULL COMMENT '直播结束时间',
  `update_time` Timestamp  NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据日志更新时间',
  `tags` json DEFAULT NULL COMMENT '主播直播的类型标签, 非永久固定',
  `ext` json DEFAULT NULL COMMENT '扩展字段, 用于一些数据不存在的字段, 便于记录扩展',
  
  `error_msg` text DEFAULT NULL COMMENT '错误信息',

  PRIMARY KEY (`log_uid`),
  KEY `streamer_uid_idx` (`streamer_uid`),
  KEY `platform_idx` (`platform`),
  KEY `user_id_idx` (`user_id`),
  KEY `is_live_streaming_idx` (`is_live_streaming`),
  KEY `is_error_idx` (`is_error`),
  KEY `followers_idx` (`followers`),
  KEY `views_idx` (`views`),
  KEY `gratuity_idx` (`gratuity`),
  KEY `update_time_idx` (`update_time`)
) 