START TRANSACTION;

-- --------------------------------------------------------

--
-- Table structure for table `directory_poll_queue`
--

DROP TABLE IF EXISTS `directory_poll_queue`;
CREATE TABLE `directory_poll_queue` (
  `directory_url` varchar(190) NOT NULL,
  `added`         datetime     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `last_polled`   datetime              DEFAULT NULL,
  `next_poll`     datetime     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `retries_count` int(11)      NOT NULL DEFAULT '0'
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- --------------------------------------------------------

--
-- Table structure for table `photo`
--

DROP TABLE IF EXISTS `photo`;
CREATE TABLE `photo` (
  `profile_id` int(11)    NOT NULL,
  `data`       mediumblob NOT NULL
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- --------------------------------------------------------

--
-- Table structure for table `profile`
--

DROP TABLE IF EXISTS `profile`;
CREATE TABLE `profile` (
  `id`            int(11)      NOT NULL,
  `name`          char(255)    NOT NULL,
  `server_id`     int(11)      NOT NULL,
  `username`      varchar(100) NOT NULL,
  `addr`          varchar(150) NOT NULL,
  `account_type`  varchar(20)  NOT NULL DEFAULT 'People',
  `pdesc`         char(255)    NOT NULL,
  `locality`      char(255)    NOT NULL,
  `region`        char(255)    NOT NULL,
  `country`       char(255)    NOT NULL,
  `profile_url`   char(255)    NOT NULL,
  `dfrn_request`  varchar(250)          DEFAULT NULL,
  `photo`         char(255)    NOT NULL,
  `tags`          longtext     NOT NULL,
  `filled_fields` tinyint(4)   NOT NULL DEFAULT '0',
  `last_activity` varchar(7)            DEFAULT NULL,
  `available`     tinyint(1)   NOT NULL DEFAULT '1',
  `created`       datetime     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated`       datetime     NOT NULL DEFAULT CURRENT_TIMESTAMP
  ON UPDATE CURRENT_TIMESTAMP,
  `hidden`        tinyint(4)   NOT NULL DEFAULT '0'
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- --------------------------------------------------------

--
-- Table structure for table `profile_poll_queue`
--

DROP TABLE IF EXISTS `profile_poll_queue`;
CREATE TABLE `profile_poll_queue` (
  `profile_url`   varchar(190) NOT NULL,
  `added`         datetime     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `last_polled`   datetime              DEFAULT NULL
  ON UPDATE CURRENT_TIMESTAMP,
  `next_poll`     datetime     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `retries_count` int(11)      NOT NULL DEFAULT '0'
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- --------------------------------------------------------

--
-- Table structure for table `server`
--

DROP TABLE IF EXISTS `server`;
CREATE TABLE `server` (
  `id`            int(10) UNSIGNED NOT NULL,
  `base_url`      varchar(190)     NOT NULL,
  `path`          varchar(190)     NOT NULL,
  `health_score`  int(11)          NOT NULL DEFAULT '0',
  `noscrape_url`  varchar(255)              DEFAULT NULL,
  `first_noticed` datetime         NOT NULL,
  `last_seen`     datetime                  DEFAULT NULL,
  `name`          varchar(255)              DEFAULT NULL,
  `version`       varchar(255)              DEFAULT NULL,
  `addons`        mediumtext,
  `reg_policy`    char(32)                  DEFAULT NULL,
  `info`          text,
  `admin_name`    varchar(255)              DEFAULT NULL,
  `admin_profile` varchar(255)              DEFAULT NULL,
  `ssl_state`     bit(1)                    DEFAULT NULL,
  `ssl_grade`     varchar(3)                DEFAULT NULL,
  `available`     tinyint(1)       NOT NULL DEFAULT '1',
  `hidden`        tinyint(1)       NOT NULL DEFAULT '0'
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- --------------------------------------------------------

--
-- Table structure for table `server_alias`
--

DROP TABLE IF EXISTS `server_alias`;
CREATE TABLE `server_alias` (
  `server_id` int(11)      NOT NULL,
  `alias`     varchar(190) NOT NULL,
  `timestamp` datetime     NOT NULL DEFAULT CURRENT_TIMESTAMP
  ON UPDATE CURRENT_TIMESTAMP
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- --------------------------------------------------------

--
-- Table structure for table `server_poll_queue`
--

DROP TABLE IF EXISTS `server_poll_queue`;
CREATE TABLE `server_poll_queue` (
  `base_url`      varchar(190) NOT NULL,
  `added`         datetime     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `request_count` int(11)      NOT NULL DEFAULT '1',
  `last_polled`   datetime              DEFAULT NULL
  ON UPDATE CURRENT_TIMESTAMP,
  `next_poll`     datetime     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `retries_count` int(11)      NOT NULL DEFAULT '0'
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- --------------------------------------------------------

--
-- Table structure for table `site_probe`
--

DROP TABLE IF EXISTS `site_probe`;
CREATE TABLE `site_probe` (
  `server_id`    int(10) UNSIGNED NOT NULL,
  `timestamp`    datetime         NOT NULL,
  `request_time` int(10) UNSIGNED NOT NULL,
  `avg_ping`     int(11) DEFAULT NULL,
  `speed_score`  int(11) DEFAULT NULL
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- --------------------------------------------------------

--
-- Table structure for table `site_scrape`
--

DROP TABLE IF EXISTS `site_scrape`;
CREATE TABLE `site_scrape` (
  `id`           int(10) UNSIGNED NOT NULL,
  `server_id`    int(10) UNSIGNED NOT NULL,
  `performed`    datetime         NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `request_time` int(10) UNSIGNED NOT NULL,
  `scrape_time`  int(10) UNSIGNED NOT NULL,
  `photo_time`   int(10) UNSIGNED NOT NULL,
  `total_time`   int(10) UNSIGNED NOT NULL
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- --------------------------------------------------------

--
-- Table structure for table `tag`
--

DROP TABLE IF EXISTS `tag`;
CREATE TABLE `tag` (
  `profile_id` int(11)   NOT NULL,
  `term`       char(255) NOT NULL
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `directory_poll_queue`
--
ALTER TABLE `directory_poll_queue`
  ADD PRIMARY KEY (`directory_url`);

--
-- Indexes for table `photo`
--
ALTER TABLE `photo`
  ADD UNIQUE KEY `profile_id` (`profile_id`);

--
-- Indexes for table `profile`
--
ALTER TABLE `profile`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `addr` (`addr`),
  ADD UNIQUE KEY `profile_url` (`profile_url`(190)),
  ADD KEY `profile_sorting` (`filled_fields`, `last_activity`, `updated`),
  ADD KEY `site_id` (`server_id`);
ALTER TABLE `profile`
  ADD FULLTEXT KEY `profile-ft` (`name`, `pdesc`, `profile_url`, `locality`, `region`, `country`);

--
-- Indexes for table `profile_poll_queue`
--
ALTER TABLE `profile_poll_queue`
  ADD PRIMARY KEY (`profile_url`);

--
-- Indexes for table `server`
--
ALTER TABLE `server`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `base_url` (`base_url`) USING BTREE,
  ADD KEY `health_score` (`health_score`),
  ADD KEY `last_seen` (`last_seen`) USING BTREE;

--
-- Indexes for table `server_alias`
--
ALTER TABLE `server_alias`
  ADD PRIMARY KEY (`alias`, `server_id`);

--
-- Indexes for table `server_poll_queue`
--
ALTER TABLE `server_poll_queue`
  ADD PRIMARY KEY (`base_url`);

--
-- Indexes for table `site_probe`
--
ALTER TABLE `site_probe`
  ADD PRIMARY KEY (`server_id`, `timestamp`);

--
-- Indexes for table `site_scrape`
--
ALTER TABLE `site_scrape`
  ADD PRIMARY KEY (`id`),
  ADD KEY `performed` (`performed`) USING BTREE,
  ADD KEY `server_id` (`server_id`) USING BTREE;

--
-- Indexes for table `tag`
--
ALTER TABLE `tag`
  ADD PRIMARY KEY (`profile_id`, `term`(190)) USING BTREE;

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `profile`
--
ALTER TABLE `profile`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `server`
--
ALTER TABLE `server`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `site_scrape`
--
ALTER TABLE `site_scrape`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
COMMIT;
