add Upload and Download files

This commit is contained in:
2026-07-12 18:05:52 +07:00
parent 2ecc6ecd6a
commit 487b1aa436
13 changed files with 854 additions and 63 deletions
+223 -41
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc v7.35.0
// protoc v7.35.1
// source: main.proto
package proto
@@ -9,6 +9,7 @@ package proto
import (
_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"
_ "google.golang.org/genproto/googleapis/api/annotations"
httpbody "google.golang.org/genproto/googleapis/api/httpbody"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
@@ -1220,12 +1221,160 @@ func (x *GetPermissionsRsp) GetPermissions() []string {
return nil
}
type UploadFileReq struct {
state protoimpl.MessageState `protogen:"open.v1"`
Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"`
Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *UploadFileReq) Reset() {
*x = UploadFileReq{}
mi := &file_main_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UploadFileReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UploadFileReq) ProtoMessage() {}
func (x *UploadFileReq) ProtoReflect() protoreflect.Message {
mi := &file_main_proto_msgTypes[25]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UploadFileReq.ProtoReflect.Descriptor instead.
func (*UploadFileReq) Descriptor() ([]byte, []int) {
return file_main_proto_rawDescGZIP(), []int{25}
}
func (x *UploadFileReq) GetFilename() string {
if x != nil {
return x.Filename
}
return ""
}
func (x *UploadFileReq) GetData() []byte {
if x != nil {
return x.Data
}
return nil
}
type UploadFileRsp struct {
state protoimpl.MessageState `protogen:"open.v1"`
Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"`
Filename string `protobuf:"bytes,2,opt,name=filename,proto3" json:"filename,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *UploadFileRsp) Reset() {
*x = UploadFileRsp{}
mi := &file_main_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UploadFileRsp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UploadFileRsp) ProtoMessage() {}
func (x *UploadFileRsp) ProtoReflect() protoreflect.Message {
mi := &file_main_proto_msgTypes[26]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UploadFileRsp.ProtoReflect.Descriptor instead.
func (*UploadFileRsp) Descriptor() ([]byte, []int) {
return file_main_proto_rawDescGZIP(), []int{26}
}
func (x *UploadFileRsp) GetError() string {
if x != nil {
return x.Error
}
return ""
}
func (x *UploadFileRsp) GetFilename() string {
if x != nil {
return x.Filename
}
return ""
}
type DownloadFileReq struct {
state protoimpl.MessageState `protogen:"open.v1"`
Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *DownloadFileReq) Reset() {
*x = DownloadFileReq{}
mi := &file_main_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DownloadFileReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DownloadFileReq) ProtoMessage() {}
func (x *DownloadFileReq) ProtoReflect() protoreflect.Message {
mi := &file_main_proto_msgTypes[27]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DownloadFileReq.ProtoReflect.Descriptor instead.
func (*DownloadFileReq) Descriptor() ([]byte, []int) {
return file_main_proto_rawDescGZIP(), []int{27}
}
func (x *DownloadFileReq) GetFilename() string {
if x != nil {
return x.Filename
}
return ""
}
var File_main_proto protoreflect.FileDescriptor
const file_main_proto_rawDesc = "" +
"\n" +
"\n" +
"main.proto\x12\x1ecrabs.evening_detective_server\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\t\n" +
"main.proto\x12\x1ecrabs.evening_detective_server\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a\x19google/api/httpbody.proto\"\t\n" +
"\aPingReq\"\t\n" +
"\aPingRsp\"\x1d\n" +
"\aEchoReq\x12\x12\n" +
@@ -1291,33 +1440,58 @@ const file_main_proto_rawDesc = "" +
"\x11GetPermissionsReq\"K\n" +
"\x11GetPermissionsRsp\x12\x14\n" +
"\x05error\x18\x01 \x01(\tR\x05error\x12 \n" +
"\vpermissions\x18\x02 \x03(\tR\vpermissions2\x9e\r\n" +
"\x16EveningDetectiveServer\x12{\n" +
"\x04Ping\x12'.crabs.evening_detective_server.PingReq\x1a'.crabs.evening_detective_server.PingRsp\"!\x92A\bb\x06\n" +
"\vpermissions\x18\x02 \x03(\tR\vpermissions\"?\n" +
"\rUploadFileReq\x12\x1a\n" +
"\bfilename\x18\x01 \x01(\tR\bfilename\x12\x12\n" +
"\x04data\x18\x02 \x01(\fR\x04data\"A\n" +
"\rUploadFileRsp\x12\x14\n" +
"\x05error\x18\x01 \x01(\tR\x05error\x12\x1a\n" +
"\bfilename\x18\x02 \x01(\tR\bfilename\"-\n" +
"\x0fDownloadFileReq\x12\x1a\n" +
"\bfilename\x18\x01 \x01(\tR\bfilename2\x9d\x17\n" +
"\x16EveningDetectiveServer\x12\xa6\x01\n" +
"\x04Ping\x12'.crabs.evening_detective_server.PingReq\x1a'.crabs.evening_detective_server.PingRsp\"L\x92A3\x12)Проверить доступностьb\x06\n" +
"\x04\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x10\x12\x0e/api/test/ping\x12{\n" +
"\x04Echo\x12'.crabs.evening_detective_server.EchoReq\x1a'.crabs.evening_detective_server.EchoRsp\"!\x92A\bb\x06\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x10\x12\x0e/api/test/ping\x12\xaf\x01\n" +
"\x04Echo\x12'.crabs.evening_detective_server.EchoReq\x1a'.crabs.evening_detective_server.EchoRsp\"U\x92A<\x122Проверить обработку данныхb\x06\n" +
"\x04\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x10\"\x0e/api/test/echo\x12\x86\x01\n" +
"\x06Signup\x12).crabs.evening_detective_server.SignupReq\x1a).crabs.evening_detective_server.SignupRsp\"&\x92A\bb\x06\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x10\"\x0e/api/test/echo\x12\xd0\x01\n" +
"\x06Signup\x12).crabs.evening_detective_server.SignupReq\x1a).crabs.evening_detective_server.SignupRsp\"p\x92AR\n" +
"\"Регистрация и вход\x12$Зарегистрироватьсяb\x06\n" +
"\x04\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/api/auth/signup\x12\xab\x01\n" +
"\x0fRefreshPassword\x122.crabs.evening_detective_server.RefreshPasswordReq\x1a2.crabs.evening_detective_server.RefreshPasswordRsp\"0\x92A\bb\x06\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/api/auth/signup\x12\xee\x01\n" +
"\x0fRefreshPassword\x122.crabs.evening_detective_server.RefreshPasswordReq\x1a2.crabs.evening_detective_server.RefreshPasswordRsp\"s\x92AK\n" +
"\"Регистрация и вход\x12\x1dОбновить парольb\x06\n" +
"\x04\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/api/auth/refresh-password\x12\x82\x01\n" +
"\x05Login\x12(.crabs.evening_detective_server.LoginReq\x1a(.crabs.evening_detective_server.LoginRsp\"%\x92A\bb\x06\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/api/auth/refresh-password\x12\xe3\x01\n" +
"\x05Login\x12(.crabs.evening_detective_server.LoginReq\x1a(.crabs.evening_detective_server.LoginRsp\"\x85\x01\x92Ah\n" +
"\"Регистрация и вход\x12:Войти и получить токена доступаb\x06\n" +
"\x04\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/api/auth/login\x12\x8a\x01\n" +
"\aRefresh\x12*.crabs.evening_detective_server.RefreshReq\x1a*.crabs.evening_detective_server.RefreshRsp\"'\x92A\bb\x06\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/api/auth/login\x12\xdc\x01\n" +
"\aRefresh\x12*.crabs.evening_detective_server.RefreshReq\x1a*.crabs.evening_detective_server.RefreshRsp\"y\x92AZ\n" +
"\"Регистрация и вход\x12,Обновить токена доступаb\x06\n" +
"\x04\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/auth/refresh\x12x\n" +
"\bGetUsers\x12+.crabs.evening_detective_server.GetUsersReq\x1a+.crabs.evening_detective_server.GetUsersRsp\"\x12\x82\xd3\xe4\x93\x02\f\x12\n" +
"/api/users\x12\x86\x01\n" +
"\vGetUserById\x12..crabs.evening_detective_server.GetUserByIdReq\x1a..crabs.evening_detective_server.GetUserByIdRsp\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/users/{id}\x12r\n" +
"\x05GetMe\x12(.crabs.evening_detective_server.GetMeReq\x1a(.crabs.evening_detective_server.GetMeRsp\"\x15\x82\xd3\xe4\x93\x02\x0f\x12\r/api/users/me\x12\x92\x01\n" +
"\vAddUserRole\x12..crabs.evening_detective_server.AddUserRoleReq\x1a..crabs.evening_detective_server.AddUserRoleRsp\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/users/{id}/role/add\x12\x9e\x01\n" +
"\x0eDeleteUserRole\x121.crabs.evening_detective_server.DeleteUserRoleReq\x1a1.crabs.evening_detective_server.DeleteUserRoleRsp\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/users/{id}/role/delete\x12\x93\x01\n" +
"\x0eGetPermissions\x121.crabs.evening_detective_server.GetPermissionsReq\x1a1.crabs.evening_detective_server.GetPermissionsRsp\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/api/ui/permissionsB\xd7\x01\x92A\xc8\x01\x12U\n" +
"\x00\x12\x00\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/auth/refresh\x12\xcb\x01\n" +
"\bGetUsers\x12+.crabs.evening_detective_server.GetUsersReq\x1a+.crabs.evening_detective_server.GetUsersRsp\"e\x92AP\n" +
"\x18Пользователи\x124Получить всех пользователей\x82\xd3\xe4\x93\x02\f\x12\n" +
"/api/users\x12\xd6\x01\n" +
"\vGetUserById\x12..crabs.evening_detective_server.GetUserByIdReq\x1a..crabs.evening_detective_server.GetUserByIdRsp\"g\x92AM\n" +
"\x18Пользователи\x121Получить пользователя по id\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/users/{id}\x12\xc2\x01\n" +
"\x05GetMe\x12(.crabs.evening_detective_server.GetMeReq\x1a(.crabs.evening_detective_server.GetMeRsp\"e\x92AM\n" +
"\x18Пользователи\x121Получить информацию о себе\x82\xd3\xe4\x93\x02\x0f\x12\r/api/users/me\x12\xe3\x01\n" +
"\vAddUserRole\x12..crabs.evening_detective_server.AddUserRoleReq\x1a..crabs.evening_detective_server.AddUserRoleRsp\"t\x92AN\n" +
"\x18Пользователи\x122Добавить пользователю роль\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/users/{id}/role/add\x12\xf0\x01\n" +
"\x0eDeleteUserRole\x121.crabs.evening_detective_server.DeleteUserRoleReq\x1a1.crabs.evening_detective_server.DeleteUserRoleRsp\"x\x92AO\n" +
"\x18Пользователи\x123Забрать у пользователя роль\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/users/{id}/role/delete\x12\x81\x02\n" +
"\x0eGetPermissions\x121.crabs.evening_detective_server.GetPermissionsReq\x1a1.crabs.evening_detective_server.GetPermissionsRsp\"\x88\x01\x92Aj\n" +
"\x0eДоступы\x12XПолучить список доступных элементов интерфейса\x82\xd3\xe4\x93\x02\x15\x12\x13/api/ui/permissions\x12\xb4\x01\n" +
"\n" +
"UploadFile\x12-.crabs.evening_detective_server.UploadFileReq\x1a-.crabs.evening_detective_server.UploadFileRsp\"H\x92A)\n" +
"\n" +
"Файлы\x12\x1bЗагрузить файл\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/files/upload\x12\x9e\x01\n" +
"\fDownloadFile\x12/.crabs.evening_detective_server.DownloadFileReq\x1a\x14.google.api.HttpBody\"G\x92A'\n" +
"\n" +
"Файлы\x12\x19Получить файл\x82\xd3\xe4\x93\x02\x17\x12\x15/api/files/{filename}B\xd7\x01\x92A\xc8\x01\x12U\n" +
"KДокументация сервиса \"Вечерний детектив\"2\x06v0.1.0Z]\n" +
"[\n" +
"\n" +
@@ -1338,7 +1512,7 @@ func file_main_proto_rawDescGZIP() []byte {
return file_main_proto_rawDescData
}
var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 25)
var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
var file_main_proto_goTypes = []any{
(*PingReq)(nil), // 0: crabs.evening_detective_server.PingReq
(*PingRsp)(nil), // 1: crabs.evening_detective_server.PingRsp
@@ -1365,11 +1539,15 @@ var file_main_proto_goTypes = []any{
(*DeleteUserRoleRsp)(nil), // 22: crabs.evening_detective_server.DeleteUserRoleRsp
(*GetPermissionsReq)(nil), // 23: crabs.evening_detective_server.GetPermissionsReq
(*GetPermissionsRsp)(nil), // 24: crabs.evening_detective_server.GetPermissionsRsp
(*timestamppb.Timestamp)(nil), // 25: google.protobuf.Timestamp
(*UploadFileReq)(nil), // 25: crabs.evening_detective_server.UploadFileReq
(*UploadFileRsp)(nil), // 26: crabs.evening_detective_server.UploadFileRsp
(*DownloadFileReq)(nil), // 27: crabs.evening_detective_server.DownloadFileReq
(*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp
(*httpbody.HttpBody)(nil), // 29: google.api.HttpBody
}
var file_main_proto_depIdxs = []int32{
14, // 0: crabs.evening_detective_server.GetUsersRsp.users:type_name -> crabs.evening_detective_server.User
25, // 1: crabs.evening_detective_server.User.created_at:type_name -> google.protobuf.Timestamp
28, // 1: crabs.evening_detective_server.User.created_at:type_name -> google.protobuf.Timestamp
14, // 2: crabs.evening_detective_server.GetUserByIdRsp.user:type_name -> crabs.evening_detective_server.User
14, // 3: crabs.evening_detective_server.GetMeRsp.user:type_name -> crabs.evening_detective_server.User
0, // 4: crabs.evening_detective_server.EveningDetectiveServer.Ping:input_type -> crabs.evening_detective_server.PingReq
@@ -1384,20 +1562,24 @@ var file_main_proto_depIdxs = []int32{
19, // 13: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:input_type -> crabs.evening_detective_server.AddUserRoleReq
21, // 14: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:input_type -> crabs.evening_detective_server.DeleteUserRoleReq
23, // 15: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:input_type -> crabs.evening_detective_server.GetPermissionsReq
1, // 16: crabs.evening_detective_server.EveningDetectiveServer.Ping:output_type -> crabs.evening_detective_server.PingRsp
3, // 17: crabs.evening_detective_server.EveningDetectiveServer.Echo:output_type -> crabs.evening_detective_server.EchoRsp
5, // 18: crabs.evening_detective_server.EveningDetectiveServer.Signup:output_type -> crabs.evening_detective_server.SignupRsp
7, // 19: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:output_type -> crabs.evening_detective_server.RefreshPasswordRsp
9, // 20: crabs.evening_detective_server.EveningDetectiveServer.Login:output_type -> crabs.evening_detective_server.LoginRsp
11, // 21: crabs.evening_detective_server.EveningDetectiveServer.Refresh:output_type -> crabs.evening_detective_server.RefreshRsp
13, // 22: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:output_type -> crabs.evening_detective_server.GetUsersRsp
16, // 23: crabs.evening_detective_server.EveningDetectiveServer.GetUserById:output_type -> crabs.evening_detective_server.GetUserByIdRsp
18, // 24: crabs.evening_detective_server.EveningDetectiveServer.GetMe:output_type -> crabs.evening_detective_server.GetMeRsp
20, // 25: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:output_type -> crabs.evening_detective_server.AddUserRoleRsp
22, // 26: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:output_type -> crabs.evening_detective_server.DeleteUserRoleRsp
24, // 27: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:output_type -> crabs.evening_detective_server.GetPermissionsRsp
16, // [16:28] is the sub-list for method output_type
4, // [4:16] is the sub-list for method input_type
25, // 16: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:input_type -> crabs.evening_detective_server.UploadFileReq
27, // 17: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:input_type -> crabs.evening_detective_server.DownloadFileReq
1, // 18: crabs.evening_detective_server.EveningDetectiveServer.Ping:output_type -> crabs.evening_detective_server.PingRsp
3, // 19: crabs.evening_detective_server.EveningDetectiveServer.Echo:output_type -> crabs.evening_detective_server.EchoRsp
5, // 20: crabs.evening_detective_server.EveningDetectiveServer.Signup:output_type -> crabs.evening_detective_server.SignupRsp
7, // 21: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:output_type -> crabs.evening_detective_server.RefreshPasswordRsp
9, // 22: crabs.evening_detective_server.EveningDetectiveServer.Login:output_type -> crabs.evening_detective_server.LoginRsp
11, // 23: crabs.evening_detective_server.EveningDetectiveServer.Refresh:output_type -> crabs.evening_detective_server.RefreshRsp
13, // 24: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:output_type -> crabs.evening_detective_server.GetUsersRsp
16, // 25: crabs.evening_detective_server.EveningDetectiveServer.GetUserById:output_type -> crabs.evening_detective_server.GetUserByIdRsp
18, // 26: crabs.evening_detective_server.EveningDetectiveServer.GetMe:output_type -> crabs.evening_detective_server.GetMeRsp
20, // 27: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:output_type -> crabs.evening_detective_server.AddUserRoleRsp
22, // 28: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:output_type -> crabs.evening_detective_server.DeleteUserRoleRsp
24, // 29: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:output_type -> crabs.evening_detective_server.GetPermissionsRsp
26, // 30: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:output_type -> crabs.evening_detective_server.UploadFileRsp
29, // 31: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:output_type -> google.api.HttpBody
18, // [18:32] is the sub-list for method output_type
4, // [4:18] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
@@ -1414,7 +1596,7 @@ func file_main_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_main_proto_rawDesc), len(file_main_proto_rawDesc)),
NumEnums: 0,
NumMessages: 25,
NumMessages: 28,
NumExtensions: 0,
NumServices: 1,
},