refactor: reorganize modules and add Linux build tooling

This commit is contained in:
2026-08-09 12:41:08 +08:00
parent 86024fa81d
commit 5cc5fd92ed
1461 changed files with 4054 additions and 4724 deletions

View File

@@ -0,0 +1,102 @@
syntax = "proto3";
package cloud;
option go_package = ".;cloud";
import "blocks.proto";
// 相册服务
service Album {
// 创建相册
rpc CreateAlbum(CreateAlbumRequest) returns (StatusReply);
// 获取相册详情
rpc GetAlbum(IdentRequest) returns (CloudAlbumItem);
// 更新相册
rpc UpdateAlbum(CloudAlbumItem) returns (StatusReply);
// 删除相册
rpc DeleteAlbum(IdentRequest) returns (StatusReply);
// 获取相册列表
rpc ListAlbums(FetchRequest) returns (ListAlbumsResponse);
// 设置封面照片
rpc SetCoverPhoto(SetCoverPhotoRequest) returns (StatusReply);
// 上传照片
rpc UploadPhoto(CloudPhotoItem) returns (StatusReply);
// 获取照片详情
rpc GetPhoto(IdentRequest) returns (CloudPhotoItem);
// 更新照片
rpc UpdatePhoto(CloudPhotoItem) returns (StatusReply);
// 删除照片
rpc DeletePhoto(IdentRequest) returns (StatusReply);
// 获取照片列表
rpc ListPhotos(FetchRequest) returns (ListPhotosResponse);
// 移动照片到其他相册
rpc MovePhoto(MovePhotoRequest) returns (StatusReply);
}
// 请求消息定义
message CreateAlbumRequest {
uint64 cloud_id = 1;
string cloud_identity = 2;
string name = 3; // 相册名称
string description = 4; // 相册描述
string cover_photo = 5; // 封面照片URL
bool is_private = 6; // 是否私有
}
message ListAlbumsResponse {
repeated CloudAlbumItem albums = 1;
int64 total = 2;
}
message SetCoverPhotoRequest {
uint64 album_id = 1;
uint64 photo_id = 2;
}
// 相册模型
message CloudAlbumItem {
uint64 id = 1;
string identity = 2;
string name = 3; // 相册名称
string description = 4; // 相册描述
string cover_photo = 5; // 封面照片URL
bool is_private = 6; // 是否私有
string created_at = 7;
string updated_at = 8;
// 关联关系
repeated CloudPhotoItem photos = 9; // 相册下的照片
}
message ListPhotosResponse {
repeated CloudPhotoItem photos = 1;
int64 total = 2;
}
message MovePhotoRequest {
uint64 photo_id = 1;
uint64 new_album_id = 2;
}
// 照片模型
message CloudPhotoItem {
uint64 id = 1;
string identity = 2;
uint64 album_id = 3; // 专辑ID
string title = 4; // 照片标题
string description = 5; // 照片描述
string file_path = 6; // 文件路径
int64 file_size = 7; // 文件大小
string mime_type = 8; // 文件类型
int32 width = 9; // 图片宽度
int32 height = 10; // 图片高度
string taken_at = 11; // 拍摄时间
string location = 12; // 拍摄地点
string tags = 13; // 标签,逗号分隔
string created_at = 14;
string updated_at = 15;
// 关联关系
CloudAlbumItem album = 16;
}

View File

@@ -0,0 +1,58 @@
syntax = "proto3";
package cloud;
option go_package = ".;cloud";
// 通用响应消息
message Empty {}
// 通用ID请求
message IDRequest {
uint64 id = 1;
}
message IdentRequest{
int64 id = 1; // 唯一ID
string identity = 2; // 唯一码
}
// 通用ID列表请求
message IDListRequest {
repeated uint64 ids = 1;
}
// 列表请求参数
message FetchRequest {
int64 page_no=1 [json_name = "page_no"]; // 页数
int64 page_size=2 [json_name = "page_size"]; // 每页记录数
map<string,string> params=3; // 条件参数,key=val,eg key:category_id=?,vlaue=11
}
// 基础时间戳和ID结构
message StdIicuds {
uint64 id = 1;
string created_at = 2;
string updated_at = 3;
string deleted_at = 4;
}
// 用户身份信息
message StdPassport {
uint64 passport_id = 1;
string passport_identity = 2;
}
// 云盘基础信息
message CloudBase {
uint64 cloud_id = 1;
string cloud_identity = 2;
}
// 状态回复
message StatusReply{
int32 code=1; // 状态码
string message=2; // 状态说明
string details=3; // 数据
int64 timeseq=4; // 响应时间序列
}

View File

@@ -0,0 +1,57 @@
syntax = "proto3";
package cloud;
option go_package = ".;cloud";
import "blocks.proto";
// 书签服务
service Bookmark {
// 创建书签
rpc CreateBookmark(CreateBookmarkRequest) returns (StatusReply);
// 获取书签详情
rpc GetBookmark(IDRequest) returns (CloudBookmarkItem);
// 更新书签
rpc UpdateBookmark(CloudBookmarkItem) returns (StatusReply);
// 删除书签
rpc DeleteBookmark(IDRequest) returns (StatusReply);
// 获取书签列表
rpc ListBookmarks(FetchRequest) returns (ListBookmarksResponse);
// 导入书签
rpc ImportBookmarks(ImportBookmarksRequest) returns (StatusReply);
}
message CreateBookmarkRequest {
uint64 cloud_id = 1;
string cloud_identity = 2;
string title = 3; // 标题
string url = 4; // 网址
string description = 5; // 描述
string category = 6; // 分类
string tags = 7; // 标签
string icon = 8; // 网站图标URL
bool is_private = 9; // 是否私有
}
message ListBookmarksResponse {
repeated CloudBookmarkItem bookmarks = 1;
int64 total = 2;
}
message ImportBookmarksRequest {
string data = 1; // JSON格式的书签数据
string format = 2; // 导入格式: chrome, firefox, safari, etc.
}
// 网址收藏夹模型
message CloudBookmarkItem {
uint64 id = 1;
string identity = 2;
string title = 3; // 标题
string url = 4; // 网址
string description = 5; // 描述
string category = 6; // 分类
string tags = 7; // 标签
string icon = 8; // 网站图标URL
bool is_private = 9; // 是否私有
string created_at = 10;
string updated_at = 11;
}

View File

@@ -0,0 +1,122 @@
syntax = "proto3";
package cloud;
option go_package = ".;cloud";
import "blocks.proto";
// 云盘目录服务
service Disk {
// 创建目录
rpc CreateDir(CreateDirRequest) returns (StatusReply);
// 获取目录详情
rpc GetDir(IdentRequest) returns (CloudDiskDirItem);
// 更新目录
rpc UpdateDir(CloudDiskDirItem) returns (StatusReply);
// 删除目录
rpc DeleteDir(IdentRequest) returns (StatusReply);
// 获取目录列表
rpc ListDirs(FetchRequest) returns (ListDirsResponse);
// 获取目录树
rpc GetDirTree(IdentRequest) returns (CloudDiskDirItem);
// 移动目录
rpc MoveDir(MoveDirRequest) returns (StatusReply);
// 上传文件
rpc UploadFile(CloudDiskFileRequest) returns (StatusReply);
// 获取文件详情
rpc GetFile(IdentRequest) returns (CloudDiskFileItem);
// 更新文件
rpc UpdateFile(CloudDiskFileItem) returns (StatusReply);
// 删除文件
rpc DeleteFile(IdentRequest) returns (StatusReply);
// 获取文件列表
rpc ListFiles(FetchRequest) returns (ListFilesResponse);
// 移动文件
rpc MoveFile(MoveFileRequest) returns (StatusReply);
// 复制文件
rpc CopyFile(CopyFileRequest) returns (StatusReply);
// 搜索文件
rpc SearchFiles(FetchRequest) returns (ListFilesResponse);
}
message CreateDirRequest {
uint64 cloud_id = 1;
string cloud_identity = 2;
uint64 parent_id = 3; // 支持嵌套目录
string name = 4; // 目录名称
string path = 5; // 完整路径
}
// 请求消息定义
message ListDirsResponse {
repeated CloudDiskDirItem dirs = 1;
int64 total = 2;
}
// 云盘目录模型
message CloudDiskDirItem {
uint64 id = 1;
string identity = 2;
uint64 parent_id = 3; // 支持嵌套目录
string name = 4; // 目录名称
string path = 5; // 完整路径
string created_at = 6;
string updated_at = 7;
// 自关联
CloudDiskDirItem parent = 8; // 父级目录
repeated CloudDiskDirItem subdirectories = 9; // 子级目录
repeated CloudDiskFileItem files = 10; // 文件
}
message MoveDirRequest {
uint64 id = 1;
uint64 new_parent_id = 2;
}
message ListFilesResponse {
repeated CloudDiskFileItem files = 1;
int64 total = 2;
}
message MoveFileRequest {
uint64 id = 1;
uint64 new_directory_id = 2;
}
message CopyFileRequest {
uint64 id = 1;
uint64 target_directory_id = 2;
string new_name = 3;
}
message CloudDiskFileRequest {
uint64 cloud_id = 1;
string cloud_identity = 2;
uint64 directory_id = 3; // 文件所属目录
string name = 4; // 文件名
string original_name = 5; // 原始文件名
int64 size = 6; // 文件大小 (bytes)
string mime_type = 7; // 文件类型
string storage_path = 8; // 实际存储路径
string hash = 9; // 文件哈希,用于去重
}
// 云盘文件
message CloudDiskFileItem {
uint64 id = 1;
string identity = 2;
uint64 directory_id = 3; // 文件所属目录
string name = 4; // 文件名
string original_name = 5; // 原始文件名
int64 size = 6; // 文件大小 (bytes)
string mime_type = 7; // 文件类型
string storage_path = 8; // 实际存储路径
string hash = 9; // 文件哈希,用于去重
string created_at = 10;
string updated_at = 11;
// 关联关系
CloudDiskDirItem directory = 12; // 文件所属目录
}

View File

@@ -0,0 +1,84 @@
syntax = "proto3";
package cloud;
option go_package = ".;cloud";
import "blocks.proto";
// 笔记服务
service Note {
// 创建笔记
rpc CreateNote(CreateNoteRequest) returns (StatusReply);
// 获取笔记详情
rpc GetNote(IdentRequest) returns (CloudNoteItem);
// 更新笔记
rpc UpdateNote(CloudNoteItem) returns (StatusReply);
// 删除笔记
rpc DeleteNote(IdentRequest) returns (StatusReply);
// 获取笔记列表
rpc ListNotes(FetchRequest) returns (ListNotesResponse);
// 置顶/取消置顶笔记
rpc TogglePin(TogglePinRequest) returns (StatusReply);
// 增加浏览次数
rpc IncrementViews(IdentRequest) returns (StatusReply);
// 搜索笔记
rpc SearchNotes(FetchRequest) returns (ListNotesResponse);
// 上传附件
rpc InsertAttachment(NoteAttachmentItem) returns (StatusReply);
// 删除附件
rpc DeleteAttachment(IdentRequest) returns (StatusReply);
}
// 请求消息定义
message CreateNoteRequest {
uint64 cloud_id = 1;
string cloud_identity = 2;
string title = 3; // 标题
string content = 4; // 内容
string category = 5; // 分类
string tags = 6; // 标签,逗号分隔
bool is_markdown = 7; // 是否是markdown格式
bool is_pinned = 8; // 是否是置顶
bool is_private = 9; // 是否是私有
}
message ListNotesResponse {
repeated CloudNoteItem notes = 1;
int64 total = 2;
}
message TogglePinRequest {
uint64 id = 1;
bool is_pinned = 2;
}
// 知识笔记模型
message CloudNoteItem {
uint64 id = 1;
string identity = 2;
string title = 3; // 标题
string content = 4; // 内容
string category = 5; // 分类
string tags = 6; // 标签,逗号分隔
bool is_markdown = 7; // 是否是markdown格式
bool is_pinned = 8; // 是否是置顶
bool is_private = 9; // 是否是私有
int32 views = 10; // 浏览次数
string created_at = 11;
string updated_at = 12;
// 关联关系
repeated NoteAttachmentItem attachments = 13;
}
// 笔记附件模型
message NoteAttachmentItem {
uint64 id = 1;
uint64 note_id = 2; // 笔记ID
string file_name = 3; // 文件名
string file_path = 4; // 文件路径
int64 file_size = 5; // 文件大小
string mime_type = 6; // 文件类型
string created_at = 7; // 创建时间
}

View File

@@ -0,0 +1,62 @@
syntax = "proto3";
package cloud;
option go_package = ".;cloud";
import "blocks.proto";
// 隐私数据服务
service Private {
// 创建隐私数据
rpc CreatePrivateData(CreatePrivateDataRequest) returns (StatusReply);
// 获取隐私数据详情
rpc GetPrivateData(IdentRequest) returns (CloudPrivateItem);
// 更新隐私数据
rpc UpdatePrivateData(CloudPrivateItem) returns (StatusReply);
// 删除隐私数据
rpc DeletePrivateData(IdentRequest) returns (StatusReply);
// 获取隐私数据列表
rpc ListPrivateData(FetchRequest) returns (ListPrivateDataResponse);
// 按类型获取隐私数据
rpc GetPrivateDataByType(FetchRequest) returns (ListPrivateDataResponse);
// 搜索隐私数据
rpc SearchPrivateData(FetchRequest) returns (ListPrivateDataResponse);
// 加密数据
rpc EncryptData(DataRequest) returns (StatusReply);
// 解密数据
rpc DecryptData(DataRequest) returns (StatusReply);
}
// 请求消息定义
message CreatePrivateDataRequest {
uint64 cloud_id = 1;
string cloud_identity = 2;
string data_type = 3; // 数据类型: password, card, document, etc.
string title = 4; // 标题
string description = 5; // 描述
string data = 6; // 加密存储的实际数据
bool is_encrypted = 7; // 是否已加密
string tags = 8; // 标签
}
message ListPrivateDataResponse {
repeated CloudPrivateItem data = 1;
int64 total = 2;
}
message DataRequest {
string data = 1; // 数据
string key = 2; // 密钥KEY
}
// 个人隐私数据模型
message CloudPrivateItem {
uint64 id = 1;
string identity = 2;
string data_type = 3; // 数据类型: password, card, document, etc.
string title = 4; // 标题
string description = 5; // 描述
string data = 6; // 加密存储的实际数据
bool is_encrypted = 7; // 是否已加密
string tags = 8; // 标签
string created_at = 9;
string updated_at = 10;
}

View File

@@ -0,0 +1,56 @@
syntax = "proto3";
package cloud;
option go_package = ".;cloud";
import "blocks.proto";
// 分享服务
service Share {
// 创建分享
rpc CreateShare(CreateShareRequest) returns (StatusReply);
// 获取分享详情
rpc GetShare(IdentRequest) returns (CloudShareItem);
// 删除分享
rpc DeleteShare(IdentRequest) returns (StatusReply);
// 获取分享列表
rpc ListShares(FetchRequest) returns (ListSharesResponse);
// 验证分享密码
rpc ValidateSharePassword(ValidateSharePasswordRequest) returns (StatusReply);
}
// 请求消息定义
message CreateShareRequest {
uint64 cloud_id = 1;
string cloud_identity = 2;
string share_type = 3; // file, album, note, etc.
uint64 resource_id = 4; // 对应资源的ID
string share_token = 5; // 分享令牌
string password = 6; // 可选分享密码
string expires_at = 7; // 过期时间
bool is_public = 8; // 是否公开
}
message ListSharesResponse {
repeated CloudShareItem shares = 1;
int64 total = 2;
}
message ValidateSharePasswordRequest {
string identity = 1;
string password = 2;
}
// 分享系统模型
message CloudShareItem {
uint64 id = 1;
string identity = 2;
string share_type = 3; // file, album, note, etc.
uint64 resource_id = 4; // 对应资源的ID
string share_token = 5; // 分享令牌
string password = 6; // 可选分享密码
string expires_at = 7; // 过期时间
int32 view_count = 8; // 浏览次数
int32 download_count = 9; // 下载次数
bool is_public = 10; // 是否公开
string created_at = 11;
string updated_at = 12;
}

View File

@@ -0,0 +1,44 @@
syntax = "proto3";
package cloud;
option go_package = ".;cloud";
import "blocks.proto";
import "disk.proto";
import "album.proto";
import "note.proto";
import "bookmark.proto";
import "private.proto";
import "share.proto";
service Space {
// 获取空间数据
rpc Get(Empty) returns (CloudSpace);
// 获取空间数据
rpc GetByKeyIdentifier(IdentRequest) returns (CloudSpace);
}
// 系统统计和配置模型
message CloudSpace {
uint64 id = 1;
string identity = 2;
int64 total_storage = 3; // 总存储空间
int64 used_storage = 4; // 已用存储空间
int64 max_storage = 5; // 最大存储空间
int32 file_count = 6; // 文件数量
int32 album_count = 7; // 相册数量
int32 photo_count = 8; // 照片数量
int32 note_count = 9; // 笔记数量
int32 bookmark_count = 10; // 书签数量
int32 private_count = 11; // 私有数量
string created_at = 12;
string updated_at = 13;
// 关联关系
repeated CloudDiskDirItem cloud_disk_dirs = 14; // 关联云盘目录
repeated CloudAlbumItem cloud_albums = 15; // 关联相册
repeated CloudNoteItem cloud_notes = 16; // 关联笔记
repeated CloudBookmarkItem cloud_bookmarks = 17; // 关联书签
repeated CloudPrivateItem cloud_private = 18; // 关联私有数据
repeated CloudShareItem cloud_shares = 19; // 关联分享
}