paster_core
Paster 服务端核心模块,使用字节跳动开源的微服务 RPC 框架 KiteX ,以 Apache Thrift 作为通信协议。
Todo:
- 实现 KiteX 服务注册扩展接口,使用 Consul 服务注册
- 新增 frame 层,通过 PreProcessor, PostProcessor 优化 KiteX 框架请求处理日志
- 利用 SQLite 生成 .db 文件,初始化 MySQL
- 将项目打包成 Dokcer 镜像
- ...
namespace go ameidance.paster.core
enum LanguageType {
PLAIN = 0
CPP = 1
JAVA = 2
PYTHON = 3
GO = 4
MD = 5
}
struct PostInfo {
1: required string Content
2: required LanguageType Language
3: required string Nickname
4: required bool IsDisposable
5: optional i64 CreateTime
}
struct CommentInfo {
1: required string Content
2: required string Nickname
3: optional i64 CreateTime
}
struct GetPostRequest {
1: required i64 Id
2: optional string Password
}
struct GetPostResponse {
1: optional PostInfo Info
254: required i32 StatusCode
255: required string StatusMessage
}
struct SavePostRequest {
1: required PostInfo Info
2: optional string Password
}
struct SavePostResponse {
1: optional i64 Id
254: required i32 StatusCode
255: required string StatusMessage
}
struct DeletePostRequest {
1: required i64 Id
}
struct DeletePostResponse {
254: required i32 StatusCode
255: required string StatusMessage
}
struct GetCommentsRequest {
1: required i64 PostId
2: optional string Password
}
struct GetCommentsResponse {
1: optional list Info
254: required i32 StatusCode
255: required string StatusMessage
}
struct SaveCommentRequest {
1: required CommentInfo Info
2: required i64 PostId
3: optional string Password
}
struct SaveCommentResponse {
254: required i32 StatusCode
255: required string StatusMessage
}
service PasterCoreService {
GetPostResponse GetPost(1: GetPostRequest req)
SavePostResponse SavePost(1: SavePostRequest req)
DeletePostResponse DeletePost(1: DeletePostRequest req)
GetCommentsResponse GetComments(1: GetCommentsRequest req)
SaveCommentResponse SaveComment(1: SaveCommentRequest req)
}
SET NAMES utf8mb4;
SET
FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for comment
-- ----------------------------
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '评论自增 ID',
`post_id` bigint NOT NULL COMMENT '文本自增 ID',
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '评论内容',
`nickname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '评论人昵称',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_fk_post_id` (`post_id`),
CONSTRAINT `idx_fk_post_id` FOREIGN KEY (`post_id`) REFERENCES `post` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for post
-- ----------------------------
DROP TABLE IF EXISTS `post`;
CREATE TABLE `post`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '文本自增 ID',
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文本内容',
`lang` smallint NOT NULL DEFAULT '0' COMMENT '文本语言',
`passwd` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '密码',
`nickname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文本作者昵称',
`is_disposable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否阅后即焚',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
SET
FOREIGN_KEY_CHECKS = 1;