+--
+-- TABLE application
+--
+CREATE TABLE IF NOT EXISTS `application` (
+ `id` int unsigned NOT NULL auto_increment COMMENT 'generated index',
+ `client_id` varchar(64) NOT NULL COMMENT '',
+ `client_secret` varchar(64) NOT NULL COMMENT '',
+ `name` varchar(255) NOT NULL COMMENT '',
+ `redirect_uri` varchar(255) NOT NULL COMMENT '',
+ `website` varchar(255) COMMENT '',
+ `scopes` varchar(255) COMMENT '',
+ `read` boolean COMMENT 'Read scope',
+ `write` boolean COMMENT 'Write scope',
+ `follow` boolean COMMENT 'Follow scope',
+ PRIMARY KEY(`id`),
+ UNIQUE INDEX `client_id` (`client_id`)
+) DEFAULT COLLATE utf8mb4_general_ci COMMENT='OAuth application';
+
+--
+-- TABLE application-token
+--
+CREATE TABLE IF NOT EXISTS `application-token` (
+ `application-id` int unsigned NOT NULL COMMENT '',
+ `uid` mediumint unsigned NOT NULL COMMENT 'Owner User id',
+ `code` varchar(64) NOT NULL COMMENT '',
+ `access_token` varchar(64) NOT NULL COMMENT '',
+ `created_at` datetime NOT NULL COMMENT 'creation time',
+ `scopes` varchar(255) COMMENT '',
+ `read` boolean COMMENT 'Read scope',
+ `write` boolean COMMENT 'Write scope',
+ `follow` boolean COMMENT 'Follow scope',
+ PRIMARY KEY(`application-id`,`uid`),
+ INDEX `uid_id` (`uid`,`application-id`),
+ FOREIGN KEY (`application-id`) REFERENCES `application` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
+ FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
+) DEFAULT COLLATE utf8mb4_general_ci COMMENT='OAuth user token';
+