diff --git a/go.mod b/go.mod index 3eaf6b5..8933646 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,18 @@ module protoc-gen-slc go 1.24.0 require ( + git.apinb.com/bsm-sdk/core v0.0.29 golang.org/x/mod v0.24.0 + google.golang.org/grpc v1.71.0 google.golang.org/protobuf v1.36.6 ) + +require ( + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/oklog/ulid/v2 v2.1.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect +) diff --git a/go.sum b/go.sum index 39245e8..aa623a5 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,41 @@ -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +git.apinb.com/bsm-sdk/core v0.0.29 h1:7ibdZw5doJ0AP+7+5G8/HjZysD1frEapHxtemJySfGs= +git.apinb.com/bsm-sdk/core v0.0.29/go.mod h1:FY2knuEVN7d7eHhpkyI+Cj/4oJ34gqZ8xzE7hB3JkOE= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU= +github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= +github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= diff --git a/main.go b/main.go index 6fc53bc..9df01cf 100644 --- a/main.go +++ b/main.go @@ -8,8 +8,10 @@ import ( "os" "path/filepath" "protoc-gen-slc/tpl" + "regexp" "strings" + "git.apinb.com/bsm-sdk/core/utils" "golang.org/x/mod/modfile" "google.golang.org/protobuf/compiler/protogen" "google.golang.org/protobuf/types/pluginpb" @@ -20,6 +22,19 @@ var ServicesName []string func main() { protogen.Options{}.Run(func(gen *protogen.Plugin) error { gen.SupportedFeatures = uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL) + + if !utils.PathExists("./internal") { + os.MkdirAll("./internal", 777) + } + + if !utils.PathExists("./internal/server") { + os.MkdirAll("./internal/server", 777) + } + + if !utils.PathExists("./internal/logic") { + os.MkdirAll("./internal/logic", 777) + } + for _, f := range gen.Files { if len(f.Services) == 0 { continue @@ -29,7 +44,11 @@ func main() { } } - generateNewServerFile(ServicesName) + err := generateNewServerFile(ServicesName) + if err != nil { + return err + + } return nil }) @@ -43,15 +62,10 @@ func generateFiles(gen *protogen.Plugin, file *protogen.File) error { return err } - // // Generate client file - // if err := generateClientFile(gen, file, service); err != nil { - // return err - // } - - // // Generate logic file - // if err := generateLogicFile(gen, file, service); err != nil { - // return err - // } + // Generate logic file + if err := generateLogicFile(gen, file, service); err != nil { + return err + } } return nil @@ -66,26 +80,34 @@ func generateNewServerFile(services []string) error { "pb \"" + moduleName + "/pb\"", } code = strings.ReplaceAll(code, "{import}", strings.Join(newImports, "\n")) + + // register grpc var register []string for _, service := range services { - register = append(register, "pb.Register"+service+"Server(srv, New"+service+"Server())") + register = append(register, "pb.Register"+service+"Server(srv.Grpc, New"+service+"Server())") } - code = strings.ReplaceAll(code, "{register}", strings.Join(register, "\n")) + // register grpc gw + var gw []string + for _, service := range services { + gw = append(gw, "pb.Register"+service+"HandlerFromEndpoint(srv.Ctx, srv.Mux, addr, opts)") + } + code = strings.ReplaceAll(code, "{gw}", strings.Join(gw, "\n")) + // 格式化代码 formattedCode, err := format.Source([]byte(code)) if err != nil { return fmt.Errorf("failed to format generated code: %w", err) } - StringToFile("./server/new.go", string(formattedCode)) + StringToFile("./internal/server/new.go", string(formattedCode)) return nil } func generateServerFile(gen *protogen.Plugin, file *protogen.File, service *protogen.Service) error { - filename := fmt.Sprintf("./server/%s_server.go", strings.ToLower(service.GoName)) + filename := fmt.Sprintf("./internal/server/%s_server.go", strings.ToLower(service.GoName)) moduleName := getModuleName() //create servers. @@ -130,11 +152,50 @@ func generateClientFile(gen *protogen.Plugin, file *protogen.File, service *prot } func generateLogicFile(gen *protogen.Plugin, file *protogen.File, service *protogen.Service) error { - filename := fmt.Sprintf("%s_logic.pb.go", strings.ToLower(service.GoName)) - fmt.Println(filename, file.GoImportPath) + logicPath := "./internal/logic/" + strings.ToLower(service.GoName) + if !utils.PathExists(logicPath) { + os.MkdirAll(logicPath, os.ModePerm) + } + moduleName := getModuleName() + for _, method := range service.Methods { + filename := fmt.Sprintf("%s/%s.go", logicPath, toSnakeCase(method.GoName)) + if utils.PathExists(filename) { + continue + } + code := tpl.LogicFile + + code = strings.ReplaceAll(code, "{methodName}", strings.ToLower(service.GoName)) + imports := []string{ + "pb \"" + moduleName + "/pb\"", + } + + code = strings.ReplaceAll(code, "{import}", strings.Join(imports, "\n")) + commit := strings.TrimSpace(method.Comments.Leading.String()) + code = strings.ReplaceAll(code, "{func}", method.GoName) + code = strings.ReplaceAll(code, "{comment}", commit) + code = strings.ReplaceAll(code, "{input}", method.Input.GoIdent.GoName) + code = strings.ReplaceAll(code, "{output}", method.Output.GoIdent.GoName) + + // formattedCode, err := format.Source([]byte(code)) + // if err != nil { + // return fmt.Errorf("failed to format generated code: %w", err) + // } + + // StringToFile(filename, string(formattedCode)) + StringToFile(filename, code) + } + return nil } +func toSnakeCase(str string) string { + // Use a regular expression to find uppercase letters and insert an underscore before them + re := regexp.MustCompile("([a-z0-9])([A-Z])") + snake := re.ReplaceAllString(str, "${1}_${2}") + // Convert the entire string to lowercase + return strings.ToLower(snake) +} + func methodSignature(g *protogen.GeneratedFile, method *protogen.Method) string { return fmt.Sprintf("%s(ctx context.Context, req pb%s) (*%s, error)", method.GoName, diff --git a/pb/answer.pb.go b/pb/answer.pb.go new file mode 100644 index 0000000..1283564 --- /dev/null +++ b/pb/answer.pb.go @@ -0,0 +1,287 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v6.30.1 +// source: answer.proto + +package survey + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type SubmitAnswerRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SurveyId string `protobuf:"bytes,1,opt,name=survey_id,json=surveyId,proto3" json:"survey_id,omitempty"` + OwnerId string `protobuf:"bytes,2,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"` // 答题者ID + Answer []*AnswerItem `protobuf:"bytes,3,rep,name=answer,proto3" json:"answer,omitempty"` // 答题 + IpAddress string `protobuf:"bytes,4,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"` + UserAgent string `protobuf:"bytes,5,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubmitAnswerRequest) Reset() { + *x = SubmitAnswerRequest{} + mi := &file_answer_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubmitAnswerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitAnswerRequest) ProtoMessage() {} + +func (x *SubmitAnswerRequest) ProtoReflect() protoreflect.Message { + mi := &file_answer_proto_msgTypes[0] + 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 SubmitAnswerRequest.ProtoReflect.Descriptor instead. +func (*SubmitAnswerRequest) Descriptor() ([]byte, []int) { + return file_answer_proto_rawDescGZIP(), []int{0} +} + +func (x *SubmitAnswerRequest) GetSurveyId() string { + if x != nil { + return x.SurveyId + } + return "" +} + +func (x *SubmitAnswerRequest) GetOwnerId() string { + if x != nil { + return x.OwnerId + } + return "" +} + +func (x *SubmitAnswerRequest) GetAnswer() []*AnswerItem { + if x != nil { + return x.Answer + } + return nil +} + +func (x *SubmitAnswerRequest) GetIpAddress() string { + if x != nil { + return x.IpAddress + } + return "" +} + +func (x *SubmitAnswerRequest) GetUserAgent() string { + if x != nil { + return x.UserAgent + } + return "" +} + +type AnswerItem struct { + state protoimpl.MessageState `protogen:"open.v1"` + QuestionId string `protobuf:"bytes,1,opt,name=question_id,json=questionId,proto3" json:"question_id,omitempty"` + Answer []string `protobuf:"bytes,2,rep,name=answer,proto3" json:"answer,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AnswerItem) Reset() { + *x = AnswerItem{} + mi := &file_answer_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AnswerItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnswerItem) ProtoMessage() {} + +func (x *AnswerItem) ProtoReflect() protoreflect.Message { + mi := &file_answer_proto_msgTypes[1] + 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 AnswerItem.ProtoReflect.Descriptor instead. +func (*AnswerItem) Descriptor() ([]byte, []int) { + return file_answer_proto_rawDescGZIP(), []int{1} +} + +func (x *AnswerItem) GetQuestionId() string { + if x != nil { + return x.QuestionId + } + return "" +} + +func (x *AnswerItem) GetAnswer() []string { + if x != nil { + return x.Answer + } + return nil +} + +type ListAnswerReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Data []*AnswerItem `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListAnswerReply) Reset() { + *x = ListAnswerReply{} + mi := &file_answer_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListAnswerReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAnswerReply) ProtoMessage() {} + +func (x *ListAnswerReply) ProtoReflect() protoreflect.Message { + mi := &file_answer_proto_msgTypes[2] + 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 ListAnswerReply.ProtoReflect.Descriptor instead. +func (*ListAnswerReply) Descriptor() ([]byte, []int) { + return file_answer_proto_rawDescGZIP(), []int{2} +} + +func (x *ListAnswerReply) GetData() []*AnswerItem { + if x != nil { + return x.Data + } + return nil +} + +func (x *ListAnswerReply) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +var File_answer_proto protoreflect.FileDescriptor + +const file_answer_proto_rawDesc = "" + + "\n" + + "\fanswer.proto\x12\x06survey\x1a\fblocks.proto\"\xb7\x01\n" + + "\x13SubmitAnswerRequest\x12\x1b\n" + + "\tsurvey_id\x18\x01 \x01(\tR\bsurveyId\x12\x19\n" + + "\bowner_id\x18\x02 \x01(\tR\aownerId\x12*\n" + + "\x06answer\x18\x03 \x03(\v2\x12.survey.AnswerItemR\x06answer\x12\x1d\n" + + "\n" + + "ip_address\x18\x04 \x01(\tR\tipAddress\x12\x1d\n" + + "\n" + + "user_agent\x18\x05 \x01(\tR\tuserAgent\"E\n" + + "\n" + + "AnswerItem\x12\x1f\n" + + "\vquestion_id\x18\x01 \x01(\tR\n" + + "questionId\x12\x16\n" + + "\x06answer\x18\x02 \x03(\tR\x06answer\"O\n" + + "\x0fListAnswerReply\x12&\n" + + "\x04data\x18\x01 \x03(\v2\x12.survey.AnswerItemR\x04data\x12\x14\n" + + "\x05count\x18\x02 \x01(\x03R\x05count2\x7f\n" + + "\x06Answer\x12:\n" + + "\x06Submit\x12\x1b.survey.SubmitAnswerRequest\x1a\x13.survey.StatusReply\x129\n" + + "\bBySurvey\x12\x14.survey.IdentRequest\x1a\x17.survey.ListAnswerReplyB\n" + + "Z\b.;surveyb\x06proto3" + +var ( + file_answer_proto_rawDescOnce sync.Once + file_answer_proto_rawDescData []byte +) + +func file_answer_proto_rawDescGZIP() []byte { + file_answer_proto_rawDescOnce.Do(func() { + file_answer_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_answer_proto_rawDesc), len(file_answer_proto_rawDesc))) + }) + return file_answer_proto_rawDescData +} + +var file_answer_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_answer_proto_goTypes = []any{ + (*SubmitAnswerRequest)(nil), // 0: survey.SubmitAnswerRequest + (*AnswerItem)(nil), // 1: survey.AnswerItem + (*ListAnswerReply)(nil), // 2: survey.ListAnswerReply + (*IdentRequest)(nil), // 3: survey.IdentRequest + (*StatusReply)(nil), // 4: survey.StatusReply +} +var file_answer_proto_depIdxs = []int32{ + 1, // 0: survey.SubmitAnswerRequest.answer:type_name -> survey.AnswerItem + 1, // 1: survey.ListAnswerReply.data:type_name -> survey.AnswerItem + 0, // 2: survey.Answer.Submit:input_type -> survey.SubmitAnswerRequest + 3, // 3: survey.Answer.BySurvey:input_type -> survey.IdentRequest + 4, // 4: survey.Answer.Submit:output_type -> survey.StatusReply + 2, // 5: survey.Answer.BySurvey:output_type -> survey.ListAnswerReply + 4, // [4:6] is the sub-list for method output_type + 2, // [2:4] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_answer_proto_init() } +func file_answer_proto_init() { + if File_answer_proto != nil { + return + } + file_blocks_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_answer_proto_rawDesc), len(file_answer_proto_rawDesc)), + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_answer_proto_goTypes, + DependencyIndexes: file_answer_proto_depIdxs, + MessageInfos: file_answer_proto_msgTypes, + }.Build() + File_answer_proto = out.File + file_answer_proto_goTypes = nil + file_answer_proto_depIdxs = nil +} diff --git a/pb/answer_grpc.pb.go b/pb/answer_grpc.pb.go new file mode 100644 index 0000000..e122035 --- /dev/null +++ b/pb/answer_grpc.pb.go @@ -0,0 +1,163 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v6.30.1 +// source: answer.proto + +package survey + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Answer_Submit_FullMethodName = "/survey.Answer/Submit" + Answer_BySurvey_FullMethodName = "/survey.Answer/BySurvey" +) + +// AnswerClient is the client API for Answer service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// 问卷服务 - 答卷管理 +type AnswerClient interface { + Submit(ctx context.Context, in *SubmitAnswerRequest, opts ...grpc.CallOption) (*StatusReply, error) + BySurvey(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*ListAnswerReply, error) +} + +type answerClient struct { + cc grpc.ClientConnInterface +} + +func NewAnswerClient(cc grpc.ClientConnInterface) AnswerClient { + return &answerClient{cc} +} + +func (c *answerClient) Submit(ctx context.Context, in *SubmitAnswerRequest, opts ...grpc.CallOption) (*StatusReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatusReply) + err := c.cc.Invoke(ctx, Answer_Submit_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *answerClient) BySurvey(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*ListAnswerReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListAnswerReply) + err := c.cc.Invoke(ctx, Answer_BySurvey_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AnswerServer is the server API for Answer service. +// All implementations must embed UnimplementedAnswerServer +// for forward compatibility. +// +// 问卷服务 - 答卷管理 +type AnswerServer interface { + Submit(context.Context, *SubmitAnswerRequest) (*StatusReply, error) + BySurvey(context.Context, *IdentRequest) (*ListAnswerReply, error) + mustEmbedUnimplementedAnswerServer() +} + +// UnimplementedAnswerServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedAnswerServer struct{} + +func (UnimplementedAnswerServer) Submit(context.Context, *SubmitAnswerRequest) (*StatusReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Submit not implemented") +} +func (UnimplementedAnswerServer) BySurvey(context.Context, *IdentRequest) (*ListAnswerReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method BySurvey not implemented") +} +func (UnimplementedAnswerServer) mustEmbedUnimplementedAnswerServer() {} +func (UnimplementedAnswerServer) testEmbeddedByValue() {} + +// UnsafeAnswerServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AnswerServer will +// result in compilation errors. +type UnsafeAnswerServer interface { + mustEmbedUnimplementedAnswerServer() +} + +func RegisterAnswerServer(s grpc.ServiceRegistrar, srv AnswerServer) { + // If the following call pancis, it indicates UnimplementedAnswerServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Answer_ServiceDesc, srv) +} + +func _Answer_Submit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SubmitAnswerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AnswerServer).Submit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Answer_Submit_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AnswerServer).Submit(ctx, req.(*SubmitAnswerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Answer_BySurvey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IdentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AnswerServer).BySurvey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Answer_BySurvey_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AnswerServer).BySurvey(ctx, req.(*IdentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Answer_ServiceDesc is the grpc.ServiceDesc for Answer service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Answer_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "survey.Answer", + HandlerType: (*AnswerServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Submit", + Handler: _Answer_Submit_Handler, + }, + { + MethodName: "BySurvey", + Handler: _Answer_BySurvey_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "answer.proto", +} diff --git a/pb/blocks.pb.go b/pb/blocks.pb.go index 4fb2f54..20d140c 100644 --- a/pb/blocks.pb.go +++ b/pb/blocks.pb.go @@ -4,7 +4,7 @@ // protoc v6.30.1 // source: blocks.proto -package content +package survey import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -21,6 +21,101 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// 问题类型 +type QuestionType int32 + +const ( + QuestionType_SINGLE_CHOICE QuestionType = 0 // 单选题 + QuestionType_MULTIPLE_CHOICE QuestionType = 1 // 多选题 + QuestionType_TEXT QuestionType = 2 // 文本题 + QuestionType_SCALE QuestionType = 3 // 量表题 + QuestionType_RANKING QuestionType = 4 // 排序题 + QuestionType_DATE QuestionType = 5 // 日期题 +) + +// Enum value maps for QuestionType. +var ( + QuestionType_name = map[int32]string{ + 0: "SINGLE_CHOICE", + 1: "MULTIPLE_CHOICE", + 2: "TEXT", + 3: "SCALE", + 4: "RANKING", + 5: "DATE", + } + QuestionType_value = map[string]int32{ + "SINGLE_CHOICE": 0, + "MULTIPLE_CHOICE": 1, + "TEXT": 2, + "SCALE": 3, + "RANKING": 4, + "DATE": 5, + } +) + +func (x QuestionType) Enum() *QuestionType { + p := new(QuestionType) + *p = x + return p +} + +func (x QuestionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QuestionType) Descriptor() protoreflect.EnumDescriptor { + return file_blocks_proto_enumTypes[0].Descriptor() +} + +func (QuestionType) Type() protoreflect.EnumType { + return &file_blocks_proto_enumTypes[0] +} + +func (x QuestionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QuestionType.Descriptor instead. +func (QuestionType) EnumDescriptor() ([]byte, []int) { + return file_blocks_proto_rawDescGZIP(), []int{0} +} + +type Empty struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Empty) Reset() { + *x = Empty{} + mi := &file_blocks_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Empty) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Empty) ProtoMessage() {} + +func (x *Empty) ProtoReflect() protoreflect.Message { + mi := &file_blocks_proto_msgTypes[0] + 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 Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { + return file_blocks_proto_rawDescGZIP(), []int{0} +} + type FetchRequest struct { state protoimpl.MessageState `protogen:"open.v1"` PageNo int64 `protobuf:"varint,1,opt,name=page_no,json=pageNo,proto3" json:"page_no,omitempty"` // 页数 @@ -32,7 +127,7 @@ type FetchRequest struct { func (x *FetchRequest) Reset() { *x = FetchRequest{} - mi := &file_blocks_proto_msgTypes[0] + mi := &file_blocks_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -44,7 +139,7 @@ func (x *FetchRequest) String() string { func (*FetchRequest) ProtoMessage() {} func (x *FetchRequest) ProtoReflect() protoreflect.Message { - mi := &file_blocks_proto_msgTypes[0] + mi := &file_blocks_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57,7 +152,7 @@ func (x *FetchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchRequest.ProtoReflect.Descriptor instead. func (*FetchRequest) Descriptor() ([]byte, []int) { - return file_blocks_proto_rawDescGZIP(), []int{0} + return file_blocks_proto_rawDescGZIP(), []int{1} } func (x *FetchRequest) GetPageNo() int64 { @@ -91,7 +186,7 @@ type IdentRequest struct { func (x *IdentRequest) Reset() { *x = IdentRequest{} - mi := &file_blocks_proto_msgTypes[1] + mi := &file_blocks_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -103,7 +198,7 @@ func (x *IdentRequest) String() string { func (*IdentRequest) ProtoMessage() {} func (x *IdentRequest) ProtoReflect() protoreflect.Message { - mi := &file_blocks_proto_msgTypes[1] + mi := &file_blocks_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -116,7 +211,7 @@ func (x *IdentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IdentRequest.ProtoReflect.Descriptor instead. func (*IdentRequest) Descriptor() ([]byte, []int) { - return file_blocks_proto_rawDescGZIP(), []int{1} + return file_blocks_proto_rawDescGZIP(), []int{2} } func (x *IdentRequest) GetId() int64 { @@ -142,7 +237,7 @@ type VersionRequest struct { func (x *VersionRequest) Reset() { *x = VersionRequest{} - mi := &file_blocks_proto_msgTypes[2] + mi := &file_blocks_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -154,7 +249,7 @@ func (x *VersionRequest) String() string { func (*VersionRequest) ProtoMessage() {} func (x *VersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_blocks_proto_msgTypes[2] + mi := &file_blocks_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -167,7 +262,7 @@ func (x *VersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VersionRequest.ProtoReflect.Descriptor instead. func (*VersionRequest) Descriptor() ([]byte, []int) { - return file_blocks_proto_rawDescGZIP(), []int{2} + return file_blocks_proto_rawDescGZIP(), []int{3} } func (x *VersionRequest) GetVersion() int64 { @@ -186,7 +281,7 @@ type SearchRequest struct { func (x *SearchRequest) Reset() { *x = SearchRequest{} - mi := &file_blocks_proto_msgTypes[3] + mi := &file_blocks_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -198,7 +293,7 @@ func (x *SearchRequest) String() string { func (*SearchRequest) ProtoMessage() {} func (x *SearchRequest) ProtoReflect() protoreflect.Message { - mi := &file_blocks_proto_msgTypes[3] + mi := &file_blocks_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -211,7 +306,7 @@ func (x *SearchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchRequest.ProtoReflect.Descriptor instead. func (*SearchRequest) Descriptor() ([]byte, []int) { - return file_blocks_proto_rawDescGZIP(), []int{3} + return file_blocks_proto_rawDescGZIP(), []int{4} } func (x *SearchRequest) GetKeyword() string { @@ -233,7 +328,7 @@ type StatusReply struct { func (x *StatusReply) Reset() { *x = StatusReply{} - mi := &file_blocks_proto_msgTypes[4] + mi := &file_blocks_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -245,7 +340,7 @@ func (x *StatusReply) String() string { func (*StatusReply) ProtoMessage() {} func (x *StatusReply) ProtoReflect() protoreflect.Message { - mi := &file_blocks_proto_msgTypes[4] + mi := &file_blocks_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -258,7 +353,7 @@ func (x *StatusReply) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusReply.ProtoReflect.Descriptor instead. func (*StatusReply) Descriptor() ([]byte, []int) { - return file_blocks_proto_rawDescGZIP(), []int{4} + return file_blocks_proto_rawDescGZIP(), []int{5} } func (x *StatusReply) GetStatus() int64 { @@ -289,27 +384,39 @@ func (x *StatusReply) GetTimeseq() int64 { return 0 } -type Empty struct { +// 问卷基本信息 +type SurveyItem struct { state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // 问卷ID + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` // 问卷标题 + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // 问卷描述 + CreatorId string `protobuf:"bytes,4,opt,name=creator_id,json=creatorId,proto3" json:"creator_id,omitempty"` // 创建者ID + StartTime string `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` // 开始时间 + EndTime string `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // 结束时间 + IsActive bool `protobuf:"varint,7,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` // 是否激活 + IsAnonymous bool `protobuf:"varint,8,opt,name=is_anonymous,json=isAnonymous,proto3" json:"is_anonymous,omitempty"` // 是否匿名 + Questions []*QuestionItem `protobuf:"bytes,9,rep,name=questions,proto3" json:"questions,omitempty"` // 问题列表 + Tags []string `protobuf:"bytes,10,rep,name=tags,proto3" json:"tags,omitempty"` // 标签 + StyleConfig string `protobuf:"bytes,11,opt,name=style_config,json=styleConfig,proto3" json:"style_config,omitempty"` // 样式配置(JSON) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *Empty) Reset() { - *x = Empty{} - mi := &file_blocks_proto_msgTypes[5] +func (x *SurveyItem) Reset() { + *x = SurveyItem{} + mi := &file_blocks_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *Empty) String() string { +func (x *SurveyItem) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Empty) ProtoMessage() {} +func (*SurveyItem) ProtoMessage() {} -func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_blocks_proto_msgTypes[5] +func (x *SurveyItem) ProtoReflect() protoreflect.Message { + mi := &file_blocks_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -320,20 +427,300 @@ func (x *Empty) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Empty.ProtoReflect.Descriptor instead. -func (*Empty) Descriptor() ([]byte, []int) { - return file_blocks_proto_rawDescGZIP(), []int{5} +// Deprecated: Use SurveyItem.ProtoReflect.Descriptor instead. +func (*SurveyItem) Descriptor() ([]byte, []int) { + return file_blocks_proto_rawDescGZIP(), []int{6} +} + +func (x *SurveyItem) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SurveyItem) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *SurveyItem) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *SurveyItem) GetCreatorId() string { + if x != nil { + return x.CreatorId + } + return "" +} + +func (x *SurveyItem) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *SurveyItem) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + +func (x *SurveyItem) GetIsActive() bool { + if x != nil { + return x.IsActive + } + return false +} + +func (x *SurveyItem) GetIsAnonymous() bool { + if x != nil { + return x.IsAnonymous + } + return false +} + +func (x *SurveyItem) GetQuestions() []*QuestionItem { + if x != nil { + return x.Questions + } + return nil +} + +func (x *SurveyItem) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *SurveyItem) GetStyleConfig() string { + if x != nil { + return x.StyleConfig + } + return "" +} + +// 问题定义 +type QuestionItem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // 问题ID + SurveyId string `protobuf:"bytes,2,opt,name=survey_id,json=surveyId,proto3" json:"survey_id,omitempty"` // 所属问卷ID + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` // 问题标题 + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` // 问题描述 + Type QuestionType `protobuf:"varint,5,opt,name=type,proto3,enum=survey.QuestionType" json:"type,omitempty"` // 问题类型 + IsRequired bool `protobuf:"varint,6,opt,name=is_required,json=isRequired,proto3" json:"is_required,omitempty"` // 是否必答 + Options []*Option `protobuf:"bytes,7,rep,name=options,proto3" json:"options,omitempty"` // 选项(适用于选择题) + MinSelections int32 `protobuf:"varint,8,opt,name=min_selections,json=minSelections,proto3" json:"min_selections,omitempty"` // 最少选择数(多选题) + MaxSelections int32 `protobuf:"varint,9,opt,name=max_selections,json=maxSelections,proto3" json:"max_selections,omitempty"` // 最多选择数(多选题) + Order int32 `protobuf:"varint,10,opt,name=order,proto3" json:"order,omitempty"` // 问题顺序 + Placeholder string `protobuf:"bytes,11,opt,name=placeholder,proto3" json:"placeholder,omitempty"` // 输入提示(文本题) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QuestionItem) Reset() { + *x = QuestionItem{} + mi := &file_blocks_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QuestionItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QuestionItem) ProtoMessage() {} + +func (x *QuestionItem) ProtoReflect() protoreflect.Message { + mi := &file_blocks_proto_msgTypes[7] + 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 QuestionItem.ProtoReflect.Descriptor instead. +func (*QuestionItem) Descriptor() ([]byte, []int) { + return file_blocks_proto_rawDescGZIP(), []int{7} +} + +func (x *QuestionItem) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *QuestionItem) GetSurveyId() string { + if x != nil { + return x.SurveyId + } + return "" +} + +func (x *QuestionItem) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *QuestionItem) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *QuestionItem) GetType() QuestionType { + if x != nil { + return x.Type + } + return QuestionType_SINGLE_CHOICE +} + +func (x *QuestionItem) GetIsRequired() bool { + if x != nil { + return x.IsRequired + } + return false +} + +func (x *QuestionItem) GetOptions() []*Option { + if x != nil { + return x.Options + } + return nil +} + +func (x *QuestionItem) GetMinSelections() int32 { + if x != nil { + return x.MinSelections + } + return 0 +} + +func (x *QuestionItem) GetMaxSelections() int32 { + if x != nil { + return x.MaxSelections + } + return 0 +} + +func (x *QuestionItem) GetOrder() int32 { + if x != nil { + return x.Order + } + return 0 +} + +func (x *QuestionItem) GetPlaceholder() string { + if x != nil { + return x.Placeholder + } + return "" +} + +// 问题选项 +type Option struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // 选项ID + Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` // 选项文本 + Order int32 `protobuf:"varint,3,opt,name=order,proto3" json:"order,omitempty"` // 选项顺序 + ImageUrl string `protobuf:"bytes,4,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` // 选项图片 + Score int32 `protobuf:"varint,5,opt,name=score,proto3" json:"score,omitempty"` // 选项分数(适用于量表) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Option) Reset() { + *x = Option{} + mi := &file_blocks_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Option) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Option) ProtoMessage() {} + +func (x *Option) ProtoReflect() protoreflect.Message { + mi := &file_blocks_proto_msgTypes[8] + 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 Option.ProtoReflect.Descriptor instead. +func (*Option) Descriptor() ([]byte, []int) { + return file_blocks_proto_rawDescGZIP(), []int{8} +} + +func (x *Option) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Option) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +func (x *Option) GetOrder() int32 { + if x != nil { + return x.Order + } + return 0 +} + +func (x *Option) GetImageUrl() string { + if x != nil { + return x.ImageUrl + } + return "" +} + +func (x *Option) GetScore() int32 { + if x != nil { + return x.Score + } + return 0 } var File_blocks_proto protoreflect.FileDescriptor const file_blocks_proto_rawDesc = "" + "\n" + - "\fblocks.proto\x12\acontent\"\xba\x01\n" + + "\fblocks.proto\x12\x06survey\"\a\n" + + "\x05Empty\"\xb9\x01\n" + "\fFetchRequest\x12\x17\n" + "\apage_no\x18\x01 \x01(\x03R\x06pageNo\x12\x1b\n" + - "\tpage_size\x18\x02 \x01(\x03R\bpageSize\x129\n" + - "\x06params\x18\x03 \x03(\v2!.content.FetchRequest.ParamsEntryR\x06params\x1a9\n" + + "\tpage_size\x18\x02 \x01(\x03R\bpageSize\x128\n" + + "\x06params\x18\x03 \x03(\v2 .survey.FetchRequest.ParamsEntryR\x06params\x1a9\n" + "\vParamsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\":\n" + @@ -348,9 +735,51 @@ const file_blocks_proto_rawDesc = "" + "\x06status\x18\x01 \x01(\x03R\x06status\x12\x1a\n" + "\bidentity\x18\x02 \x01(\tR\bidentity\x12\x18\n" + "\amessage\x18\x03 \x01(\tR\amessage\x12\x18\n" + - "\atimeseq\x18\x04 \x01(\x03R\atimeseq\"\a\n" + - "\x05EmptyB\fZ\n" + - "./;contentb\x06proto3" + "\atimeseq\x18\x04 \x01(\x03R\atimeseq\"\xd8\x02\n" + + "\n" + + "SurveyItem\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1d\n" + + "\n" + + "creator_id\x18\x04 \x01(\tR\tcreatorId\x12\x1d\n" + + "\n" + + "start_time\x18\x05 \x01(\tR\tstartTime\x12\x19\n" + + "\bend_time\x18\x06 \x01(\tR\aendTime\x12\x1b\n" + + "\tis_active\x18\a \x01(\bR\bisActive\x12!\n" + + "\fis_anonymous\x18\b \x01(\bR\visAnonymous\x122\n" + + "\tquestions\x18\t \x03(\v2\x14.survey.QuestionItemR\tquestions\x12\x12\n" + + "\x04tags\x18\n" + + " \x03(\tR\x04tags\x12!\n" + + "\fstyle_config\x18\v \x01(\tR\vstyleConfig\"\xee\x02\n" + + "\fQuestionItem\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" + + "\tsurvey_id\x18\x02 \x01(\tR\bsurveyId\x12\x14\n" + + "\x05title\x18\x03 \x01(\tR\x05title\x12 \n" + + "\vdescription\x18\x04 \x01(\tR\vdescription\x12(\n" + + "\x04type\x18\x05 \x01(\x0e2\x14.survey.QuestionTypeR\x04type\x12\x1f\n" + + "\vis_required\x18\x06 \x01(\bR\n" + + "isRequired\x12(\n" + + "\aoptions\x18\a \x03(\v2\x0e.survey.OptionR\aoptions\x12%\n" + + "\x0emin_selections\x18\b \x01(\x05R\rminSelections\x12%\n" + + "\x0emax_selections\x18\t \x01(\x05R\rmaxSelections\x12\x14\n" + + "\x05order\x18\n" + + " \x01(\x05R\x05order\x12 \n" + + "\vplaceholder\x18\v \x01(\tR\vplaceholder\"u\n" + + "\x06Option\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04text\x18\x02 \x01(\tR\x04text\x12\x14\n" + + "\x05order\x18\x03 \x01(\x05R\x05order\x12\x1b\n" + + "\timage_url\x18\x04 \x01(\tR\bimageUrl\x12\x14\n" + + "\x05score\x18\x05 \x01(\x05R\x05score*b\n" + + "\fQuestionType\x12\x11\n" + + "\rSINGLE_CHOICE\x10\x00\x12\x13\n" + + "\x0fMULTIPLE_CHOICE\x10\x01\x12\b\n" + + "\x04TEXT\x10\x02\x12\t\n" + + "\x05SCALE\x10\x03\x12\v\n" + + "\aRANKING\x10\x04\x12\b\n" + + "\x04DATE\x10\x05B\n" + + "Z\b.;surveyb\x06proto3" var ( file_blocks_proto_rawDescOnce sync.Once @@ -364,23 +793,31 @@ func file_blocks_proto_rawDescGZIP() []byte { return file_blocks_proto_rawDescData } -var file_blocks_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_blocks_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_blocks_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_blocks_proto_goTypes = []any{ - (*FetchRequest)(nil), // 0: content.FetchRequest - (*IdentRequest)(nil), // 1: content.IdentRequest - (*VersionRequest)(nil), // 2: content.VersionRequest - (*SearchRequest)(nil), // 3: content.SearchRequest - (*StatusReply)(nil), // 4: content.StatusReply - (*Empty)(nil), // 5: content.Empty - nil, // 6: content.FetchRequest.ParamsEntry + (QuestionType)(0), // 0: survey.QuestionType + (*Empty)(nil), // 1: survey.Empty + (*FetchRequest)(nil), // 2: survey.FetchRequest + (*IdentRequest)(nil), // 3: survey.IdentRequest + (*VersionRequest)(nil), // 4: survey.VersionRequest + (*SearchRequest)(nil), // 5: survey.SearchRequest + (*StatusReply)(nil), // 6: survey.StatusReply + (*SurveyItem)(nil), // 7: survey.SurveyItem + (*QuestionItem)(nil), // 8: survey.QuestionItem + (*Option)(nil), // 9: survey.Option + nil, // 10: survey.FetchRequest.ParamsEntry } var file_blocks_proto_depIdxs = []int32{ - 6, // 0: content.FetchRequest.params:type_name -> content.FetchRequest.ParamsEntry - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 10, // 0: survey.FetchRequest.params:type_name -> survey.FetchRequest.ParamsEntry + 8, // 1: survey.SurveyItem.questions:type_name -> survey.QuestionItem + 0, // 2: survey.QuestionItem.type:type_name -> survey.QuestionType + 9, // 3: survey.QuestionItem.options:type_name -> survey.Option + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] 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 } func init() { file_blocks_proto_init() } @@ -393,13 +830,14 @@ func file_blocks_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_blocks_proto_rawDesc), len(file_blocks_proto_rawDesc)), - NumEnums: 0, - NumMessages: 7, + NumEnums: 1, + NumMessages: 10, NumExtensions: 0, NumServices: 0, }, GoTypes: file_blocks_proto_goTypes, DependencyIndexes: file_blocks_proto_depIdxs, + EnumInfos: file_blocks_proto_enumTypes, MessageInfos: file_blocks_proto_msgTypes, }.Build() File_blocks_proto = out.File diff --git a/pb/category.pb.go b/pb/category.pb.go deleted file mode 100644 index 386ecc2..0000000 --- a/pb/category.pb.go +++ /dev/null @@ -1,585 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.6 -// protoc v6.30.1 -// source: category.proto - -package content - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// 无限极分类 -type CategoryItem struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` - ParentIdentity string `protobuf:"bytes,2,opt,name=parent_identity,json=parentIdentity,proto3" json:"parent_identity,omitempty"` // 为空表示顶级分类 - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` - CoverPath string `protobuf:"bytes,4,opt,name=cover_path,json=coverPath,proto3" json:"cover_path,omitempty"` - Intro string `protobuf:"bytes,5,opt,name=intro,proto3" json:"intro,omitempty"` - CreatedAt string `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt string `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Data []*CategoryItem `protobuf:"bytes,8,rep,name=data,proto3" json:"data,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CategoryItem) Reset() { - *x = CategoryItem{} - mi := &file_category_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CategoryItem) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CategoryItem) ProtoMessage() {} - -func (x *CategoryItem) ProtoReflect() protoreflect.Message { - mi := &file_category_proto_msgTypes[0] - 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 CategoryItem.ProtoReflect.Descriptor instead. -func (*CategoryItem) Descriptor() ([]byte, []int) { - return file_category_proto_rawDescGZIP(), []int{0} -} - -func (x *CategoryItem) GetIdentity() string { - if x != nil { - return x.Identity - } - return "" -} - -func (x *CategoryItem) GetParentIdentity() string { - if x != nil { - return x.ParentIdentity - } - return "" -} - -func (x *CategoryItem) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *CategoryItem) GetCoverPath() string { - if x != nil { - return x.CoverPath - } - return "" -} - -func (x *CategoryItem) GetIntro() string { - if x != nil { - return x.Intro - } - return "" -} - -func (x *CategoryItem) GetCreatedAt() string { - if x != nil { - return x.CreatedAt - } - return "" -} - -func (x *CategoryItem) GetUpdatedAt() string { - if x != nil { - return x.UpdatedAt - } - return "" -} - -func (x *CategoryItem) GetData() []*CategoryItem { - if x != nil { - return x.Data - } - return nil -} - -type CategoryListReply struct { - state protoimpl.MessageState `protogen:"open.v1"` - Data []*CategoryItem `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` - Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CategoryListReply) Reset() { - *x = CategoryListReply{} - mi := &file_category_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CategoryListReply) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CategoryListReply) ProtoMessage() {} - -func (x *CategoryListReply) ProtoReflect() protoreflect.Message { - mi := &file_category_proto_msgTypes[1] - 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 CategoryListReply.ProtoReflect.Descriptor instead. -func (*CategoryListReply) Descriptor() ([]byte, []int) { - return file_category_proto_rawDescGZIP(), []int{1} -} - -func (x *CategoryListReply) GetData() []*CategoryItem { - if x != nil { - return x.Data - } - return nil -} - -func (x *CategoryListReply) GetCount() int64 { - if x != nil { - return x.Count - } - return 0 -} - -type AddCategoryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` // 新增数据的唯一码 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AddCategoryResponse) Reset() { - *x = AddCategoryResponse{} - mi := &file_category_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AddCategoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddCategoryResponse) ProtoMessage() {} - -func (x *AddCategoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_category_proto_msgTypes[2] - 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 AddCategoryResponse.ProtoReflect.Descriptor instead. -func (*AddCategoryResponse) Descriptor() ([]byte, []int) { - return file_category_proto_rawDescGZIP(), []int{2} -} - -func (x *AddCategoryResponse) GetIdentity() string { - if x != nil { - return x.Identity - } - return "" -} - -type AddCategoryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` // - ParentIdentity string `protobuf:"bytes,2,opt,name=parent_identity,json=parentIdentity,proto3" json:"parent_identity,omitempty"` // 为空表示顶级分类 - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` - CoverPath string `protobuf:"bytes,4,opt,name=cover_path,json=coverPath,proto3" json:"cover_path,omitempty"` - Intro string `protobuf:"bytes,5,opt,name=intro,proto3" json:"intro,omitempty"` - CreatedAt string `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt string `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Data []*CategoryItem `protobuf:"bytes,8,rep,name=data,proto3" json:"data,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AddCategoryRequest) Reset() { - *x = AddCategoryRequest{} - mi := &file_category_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AddCategoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddCategoryRequest) ProtoMessage() {} - -func (x *AddCategoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_category_proto_msgTypes[3] - 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 AddCategoryRequest.ProtoReflect.Descriptor instead. -func (*AddCategoryRequest) Descriptor() ([]byte, []int) { - return file_category_proto_rawDescGZIP(), []int{3} -} - -func (x *AddCategoryRequest) GetIdentity() string { - if x != nil { - return x.Identity - } - return "" -} - -func (x *AddCategoryRequest) GetParentIdentity() string { - if x != nil { - return x.ParentIdentity - } - return "" -} - -func (x *AddCategoryRequest) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *AddCategoryRequest) GetCoverPath() string { - if x != nil { - return x.CoverPath - } - return "" -} - -func (x *AddCategoryRequest) GetIntro() string { - if x != nil { - return x.Intro - } - return "" -} - -func (x *AddCategoryRequest) GetCreatedAt() string { - if x != nil { - return x.CreatedAt - } - return "" -} - -func (x *AddCategoryRequest) GetUpdatedAt() string { - if x != nil { - return x.UpdatedAt - } - return "" -} - -func (x *AddCategoryRequest) GetData() []*CategoryItem { - if x != nil { - return x.Data - } - return nil -} - -type ModifyCategoryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` // - ParentIdentity string `protobuf:"bytes,2,opt,name=parent_identity,json=parentIdentity,proto3" json:"parent_identity,omitempty"` // 为空表示顶级分类 - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` - CoverPath string `protobuf:"bytes,4,opt,name=cover_path,json=coverPath,proto3" json:"cover_path,omitempty"` - Intro string `protobuf:"bytes,5,opt,name=intro,proto3" json:"intro,omitempty"` - CreatedAt string `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt string `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Data []*CategoryItem `protobuf:"bytes,8,rep,name=data,proto3" json:"data,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ModifyCategoryRequest) Reset() { - *x = ModifyCategoryRequest{} - mi := &file_category_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ModifyCategoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ModifyCategoryRequest) ProtoMessage() {} - -func (x *ModifyCategoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_category_proto_msgTypes[4] - 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 ModifyCategoryRequest.ProtoReflect.Descriptor instead. -func (*ModifyCategoryRequest) Descriptor() ([]byte, []int) { - return file_category_proto_rawDescGZIP(), []int{4} -} - -func (x *ModifyCategoryRequest) GetIdentity() string { - if x != nil { - return x.Identity - } - return "" -} - -func (x *ModifyCategoryRequest) GetParentIdentity() string { - if x != nil { - return x.ParentIdentity - } - return "" -} - -func (x *ModifyCategoryRequest) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *ModifyCategoryRequest) GetCoverPath() string { - if x != nil { - return x.CoverPath - } - return "" -} - -func (x *ModifyCategoryRequest) GetIntro() string { - if x != nil { - return x.Intro - } - return "" -} - -func (x *ModifyCategoryRequest) GetCreatedAt() string { - if x != nil { - return x.CreatedAt - } - return "" -} - -func (x *ModifyCategoryRequest) GetUpdatedAt() string { - if x != nil { - return x.UpdatedAt - } - return "" -} - -func (x *ModifyCategoryRequest) GetData() []*CategoryItem { - if x != nil { - return x.Data - } - return nil -} - -type DeleteCategoryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` // - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteCategoryRequest) Reset() { - *x = DeleteCategoryRequest{} - mi := &file_category_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteCategoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteCategoryRequest) ProtoMessage() {} - -func (x *DeleteCategoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_category_proto_msgTypes[5] - 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 DeleteCategoryRequest.ProtoReflect.Descriptor instead. -func (*DeleteCategoryRequest) Descriptor() ([]byte, []int) { - return file_category_proto_rawDescGZIP(), []int{5} -} - -func (x *DeleteCategoryRequest) GetIdentity() string { - if x != nil { - return x.Identity - } - return "" -} - -var File_category_proto protoreflect.FileDescriptor - -const file_category_proto_rawDesc = "" + - "\n" + - "\x0ecategory.proto\x12\acontent\x1a\fblocks.proto\"\x87\x02\n" + - "\fCategoryItem\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity\x12'\n" + - "\x0fparent_identity\x18\x02 \x01(\tR\x0eparentIdentity\x12\x14\n" + - "\x05title\x18\x03 \x01(\tR\x05title\x12\x1d\n" + - "\n" + - "cover_path\x18\x04 \x01(\tR\tcoverPath\x12\x14\n" + - "\x05intro\x18\x05 \x01(\tR\x05intro\x12\x1d\n" + - "\n" + - "created_at\x18\x06 \x01(\tR\tcreatedAt\x12\x1d\n" + - "\n" + - "updated_at\x18\a \x01(\tR\tupdatedAt\x12)\n" + - "\x04data\x18\b \x03(\v2\x15.content.CategoryItemR\x04data\"T\n" + - "\x11CategoryListReply\x12)\n" + - "\x04data\x18\x01 \x03(\v2\x15.content.CategoryItemR\x04data\x12\x14\n" + - "\x05count\x18\x02 \x01(\x03R\x05count\"1\n" + - "\x13AddCategoryResponse\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity\"\x8d\x02\n" + - "\x12AddCategoryRequest\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity\x12'\n" + - "\x0fparent_identity\x18\x02 \x01(\tR\x0eparentIdentity\x12\x14\n" + - "\x05title\x18\x03 \x01(\tR\x05title\x12\x1d\n" + - "\n" + - "cover_path\x18\x04 \x01(\tR\tcoverPath\x12\x14\n" + - "\x05intro\x18\x05 \x01(\tR\x05intro\x12\x1d\n" + - "\n" + - "created_at\x18\x06 \x01(\tR\tcreatedAt\x12\x1d\n" + - "\n" + - "updated_at\x18\a \x01(\tR\tupdatedAt\x12)\n" + - "\x04data\x18\b \x03(\v2\x15.content.CategoryItemR\x04data\"\x90\x02\n" + - "\x15ModifyCategoryRequest\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity\x12'\n" + - "\x0fparent_identity\x18\x02 \x01(\tR\x0eparentIdentity\x12\x14\n" + - "\x05title\x18\x03 \x01(\tR\x05title\x12\x1d\n" + - "\n" + - "cover_path\x18\x04 \x01(\tR\tcoverPath\x12\x14\n" + - "\x05intro\x18\x05 \x01(\tR\x05intro\x12\x1d\n" + - "\n" + - "created_at\x18\x06 \x01(\tR\tcreatedAt\x12\x1d\n" + - "\n" + - "updated_at\x18\a \x01(\tR\tupdatedAt\x12)\n" + - "\x04data\x18\b \x03(\v2\x15.content.CategoryItemR\x04data\"3\n" + - "\x15DeleteCategoryRequest\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity2\x9c\x02\n" + - "\bCategory\x12<\n" + - "\fCategoryList\x12\x0e.content.Empty\x1a\x1a.content.CategoryListReply\"\x00\x12J\n" + - "\vAddCategory\x12\x1b.content.AddCategoryRequest\x1a\x1c.content.AddCategoryResponse\"\x00\x12B\n" + - "\x0eModifyCategory\x12\x1e.content.ModifyCategoryRequest\x1a\x0e.content.Empty\"\x00\x12B\n" + - "\x0eDeleteCategory\x12\x1e.content.DeleteCategoryRequest\x1a\x0e.content.Empty\"\x00B\fZ\n" + - "./;contentb\x06proto3" - -var ( - file_category_proto_rawDescOnce sync.Once - file_category_proto_rawDescData []byte -) - -func file_category_proto_rawDescGZIP() []byte { - file_category_proto_rawDescOnce.Do(func() { - file_category_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_category_proto_rawDesc), len(file_category_proto_rawDesc))) - }) - return file_category_proto_rawDescData -} - -var file_category_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_category_proto_goTypes = []any{ - (*CategoryItem)(nil), // 0: content.CategoryItem - (*CategoryListReply)(nil), // 1: content.CategoryListReply - (*AddCategoryResponse)(nil), // 2: content.AddCategoryResponse - (*AddCategoryRequest)(nil), // 3: content.AddCategoryRequest - (*ModifyCategoryRequest)(nil), // 4: content.ModifyCategoryRequest - (*DeleteCategoryRequest)(nil), // 5: content.DeleteCategoryRequest - (*Empty)(nil), // 6: content.Empty -} -var file_category_proto_depIdxs = []int32{ - 0, // 0: content.CategoryItem.data:type_name -> content.CategoryItem - 0, // 1: content.CategoryListReply.data:type_name -> content.CategoryItem - 0, // 2: content.AddCategoryRequest.data:type_name -> content.CategoryItem - 0, // 3: content.ModifyCategoryRequest.data:type_name -> content.CategoryItem - 6, // 4: content.Category.CategoryList:input_type -> content.Empty - 3, // 5: content.Category.AddCategory:input_type -> content.AddCategoryRequest - 4, // 6: content.Category.ModifyCategory:input_type -> content.ModifyCategoryRequest - 5, // 7: content.Category.DeleteCategory:input_type -> content.DeleteCategoryRequest - 1, // 8: content.Category.CategoryList:output_type -> content.CategoryListReply - 2, // 9: content.Category.AddCategory:output_type -> content.AddCategoryResponse - 6, // 10: content.Category.ModifyCategory:output_type -> content.Empty - 6, // 11: content.Category.DeleteCategory:output_type -> content.Empty - 8, // [8:12] is the sub-list for method output_type - 4, // [4:8] 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 -} - -func init() { file_category_proto_init() } -func file_category_proto_init() { - if File_category_proto != nil { - return - } - file_blocks_proto_init() - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_category_proto_rawDesc), len(file_category_proto_rawDesc)), - NumEnums: 0, - NumMessages: 6, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_category_proto_goTypes, - DependencyIndexes: file_category_proto_depIdxs, - MessageInfos: file_category_proto_msgTypes, - }.Build() - File_category_proto = out.File - file_category_proto_goTypes = nil - file_category_proto_depIdxs = nil -} diff --git a/pb/category_grpc.pb.go b/pb/category_grpc.pb.go deleted file mode 100644 index 5ceda42..0000000 --- a/pb/category_grpc.pb.go +++ /dev/null @@ -1,241 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc v6.30.1 -// source: category.proto - -package content - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - Category_CategoryList_FullMethodName = "/content.Category/CategoryList" - Category_AddCategory_FullMethodName = "/content.Category/AddCategory" - Category_ModifyCategory_FullMethodName = "/content.Category/ModifyCategory" - Category_DeleteCategory_FullMethodName = "/content.Category/DeleteCategory" -) - -// CategoryClient is the client API for Category service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -// -// 系统分类 -type CategoryClient interface { - // 分类列表 - CategoryList(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*CategoryListReply, error) - AddCategory(ctx context.Context, in *AddCategoryRequest, opts ...grpc.CallOption) (*AddCategoryResponse, error) - ModifyCategory(ctx context.Context, in *ModifyCategoryRequest, opts ...grpc.CallOption) (*Empty, error) - DeleteCategory(ctx context.Context, in *DeleteCategoryRequest, opts ...grpc.CallOption) (*Empty, error) -} - -type categoryClient struct { - cc grpc.ClientConnInterface -} - -func NewCategoryClient(cc grpc.ClientConnInterface) CategoryClient { - return &categoryClient{cc} -} - -func (c *categoryClient) CategoryList(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*CategoryListReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(CategoryListReply) - err := c.cc.Invoke(ctx, Category_CategoryList_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *categoryClient) AddCategory(ctx context.Context, in *AddCategoryRequest, opts ...grpc.CallOption) (*AddCategoryResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(AddCategoryResponse) - err := c.cc.Invoke(ctx, Category_AddCategory_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *categoryClient) ModifyCategory(ctx context.Context, in *ModifyCategoryRequest, opts ...grpc.CallOption) (*Empty, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(Empty) - err := c.cc.Invoke(ctx, Category_ModifyCategory_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *categoryClient) DeleteCategory(ctx context.Context, in *DeleteCategoryRequest, opts ...grpc.CallOption) (*Empty, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(Empty) - err := c.cc.Invoke(ctx, Category_DeleteCategory_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// CategoryServer is the server API for Category service. -// All implementations must embed UnimplementedCategoryServer -// for forward compatibility. -// -// 系统分类 -type CategoryServer interface { - // 分类列表 - CategoryList(context.Context, *Empty) (*CategoryListReply, error) - AddCategory(context.Context, *AddCategoryRequest) (*AddCategoryResponse, error) - ModifyCategory(context.Context, *ModifyCategoryRequest) (*Empty, error) - DeleteCategory(context.Context, *DeleteCategoryRequest) (*Empty, error) - mustEmbedUnimplementedCategoryServer() -} - -// UnimplementedCategoryServer must be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedCategoryServer struct{} - -func (UnimplementedCategoryServer) CategoryList(context.Context, *Empty) (*CategoryListReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method CategoryList not implemented") -} -func (UnimplementedCategoryServer) AddCategory(context.Context, *AddCategoryRequest) (*AddCategoryResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddCategory not implemented") -} -func (UnimplementedCategoryServer) ModifyCategory(context.Context, *ModifyCategoryRequest) (*Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method ModifyCategory not implemented") -} -func (UnimplementedCategoryServer) DeleteCategory(context.Context, *DeleteCategoryRequest) (*Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteCategory not implemented") -} -func (UnimplementedCategoryServer) mustEmbedUnimplementedCategoryServer() {} -func (UnimplementedCategoryServer) testEmbeddedByValue() {} - -// UnsafeCategoryServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to CategoryServer will -// result in compilation errors. -type UnsafeCategoryServer interface { - mustEmbedUnimplementedCategoryServer() -} - -func RegisterCategoryServer(s grpc.ServiceRegistrar, srv CategoryServer) { - // If the following call pancis, it indicates UnimplementedCategoryServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&Category_ServiceDesc, srv) -} - -func _Category_CategoryList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CategoryServer).CategoryList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Category_CategoryList_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CategoryServer).CategoryList(ctx, req.(*Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _Category_AddCategory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AddCategoryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CategoryServer).AddCategory(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Category_AddCategory_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CategoryServer).AddCategory(ctx, req.(*AddCategoryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Category_ModifyCategory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ModifyCategoryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CategoryServer).ModifyCategory(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Category_ModifyCategory_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CategoryServer).ModifyCategory(ctx, req.(*ModifyCategoryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Category_DeleteCategory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteCategoryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CategoryServer).DeleteCategory(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Category_DeleteCategory_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CategoryServer).DeleteCategory(ctx, req.(*DeleteCategoryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// Category_ServiceDesc is the grpc.ServiceDesc for Category service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var Category_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "content.Category", - HandlerType: (*CategoryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CategoryList", - Handler: _Category_CategoryList_Handler, - }, - { - MethodName: "AddCategory", - Handler: _Category_AddCategory_Handler, - }, - { - MethodName: "ModifyCategory", - Handler: _Category_ModifyCategory_Handler, - }, - { - MethodName: "DeleteCategory", - Handler: _Category_DeleteCategory_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "category.proto", -} diff --git a/pb/post.pb.go b/pb/post.pb.go deleted file mode 100644 index ccd4113..0000000 --- a/pb/post.pb.go +++ /dev/null @@ -1,1018 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.6 -// protoc v6.30.1 -// source: post.proto - -package content - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type DeleteCommentRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` // 需要删除的评论的唯一标识 - PostIdentity string `protobuf:"bytes,2,opt,name=post_identity,json=postIdentity,proto3" json:"post_identity,omitempty"` // 文章唯一标识 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteCommentRequest) Reset() { - *x = DeleteCommentRequest{} - mi := &file_post_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteCommentRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteCommentRequest) ProtoMessage() {} - -func (x *DeleteCommentRequest) ProtoReflect() protoreflect.Message { - mi := &file_post_proto_msgTypes[0] - 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 DeleteCommentRequest.ProtoReflect.Descriptor instead. -func (*DeleteCommentRequest) Descriptor() ([]byte, []int) { - return file_post_proto_rawDescGZIP(), []int{0} -} - -func (x *DeleteCommentRequest) GetIdentity() string { - if x != nil { - return x.Identity - } - return "" -} - -func (x *DeleteCommentRequest) GetPostIdentity() string { - if x != nil { - return x.PostIdentity - } - return "" -} - -type PostItem struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` // 文章唯一标识 - PassportId int64 `protobuf:"varint,2,opt,name=passport_id,json=passportId,proto3" json:"passport_id,omitempty"` // 作者ID - PassportIdentity string `protobuf:"bytes,3,opt,name=passport_identity,json=passportIdentity,proto3" json:"passport_identity,omitempty"` // 作者唯一标识 - CategoryIdentityList []string `protobuf:"bytes,4,rep,name=category_identity_list,json=categoryIdentityList,proto3" json:"category_identity_list,omitempty"` //所属分类Identity 列表 - TagsIdentityList []string `protobuf:"bytes,5,rep,name=tags_identity_list,json=tagsIdentityList,proto3" json:"tags_identity_list,omitempty"` // 标签集 - Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"` - CoverPath string `protobuf:"bytes,7,opt,name=cover_path,json=coverPath,proto3" json:"cover_path,omitempty"` //封面 - Author string `protobuf:"bytes,8,opt,name=author,proto3" json:"author,omitempty"` - Content string `protobuf:"bytes,9,opt,name=content,proto3" json:"content,omitempty"` - TargetUrl string `protobuf:"bytes,10,opt,name=target_url,json=targetUrl,proto3" json:"target_url,omitempty"` // 跳转目标地址 - SourceUrl string `protobuf:"bytes,11,opt,name=source_url,json=sourceUrl,proto3" json:"source_url,omitempty"` // 文章来源地址 - Hits int64 `protobuf:"varint,12,opt,name=hits,proto3" json:"hits,omitempty"` //点击量 - Accessory []string `protobuf:"bytes,13,rep,name=accessory,proto3" json:"accessory,omitempty"` //附件列表 - HasAccessory bool `protobuf:"varint,14,opt,name=has_accessory,json=hasAccessory,proto3" json:"has_accessory,omitempty"` //是否有附件,默认没有 - CreatedAt string `protobuf:"bytes,15,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt string `protobuf:"bytes,16,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Description string `protobuf:"bytes,17,opt,name=description,proto3" json:"description,omitempty"` //简介 - LikeHits int64 `protobuf:"varint,18,opt,name=like_hits,json=likeHits,proto3" json:"like_hits,omitempty"` //点赞量 - UnlikeHits int64 `protobuf:"varint,19,opt,name=unlike_hits,json=unlikeHits,proto3" json:"unlike_hits,omitempty"` //点踩量 - CommentHits int64 `protobuf:"varint,20,opt,name=comment_hits,json=commentHits,proto3" json:"comment_hits,omitempty"` //评论量 - Type int32 `protobuf:"varint,22,opt,name=type,proto3" json:"type,omitempty"` // 用户自定义文章类型 - Rights string `protobuf:"bytes,23,opt,name=rights,proto3" json:"rights,omitempty"` //权限 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PostItem) Reset() { - *x = PostItem{} - mi := &file_post_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PostItem) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PostItem) ProtoMessage() {} - -func (x *PostItem) ProtoReflect() protoreflect.Message { - mi := &file_post_proto_msgTypes[1] - 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 PostItem.ProtoReflect.Descriptor instead. -func (*PostItem) Descriptor() ([]byte, []int) { - return file_post_proto_rawDescGZIP(), []int{1} -} - -func (x *PostItem) GetIdentity() string { - if x != nil { - return x.Identity - } - return "" -} - -func (x *PostItem) GetPassportId() int64 { - if x != nil { - return x.PassportId - } - return 0 -} - -func (x *PostItem) GetPassportIdentity() string { - if x != nil { - return x.PassportIdentity - } - return "" -} - -func (x *PostItem) GetCategoryIdentityList() []string { - if x != nil { - return x.CategoryIdentityList - } - return nil -} - -func (x *PostItem) GetTagsIdentityList() []string { - if x != nil { - return x.TagsIdentityList - } - return nil -} - -func (x *PostItem) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *PostItem) GetCoverPath() string { - if x != nil { - return x.CoverPath - } - return "" -} - -func (x *PostItem) GetAuthor() string { - if x != nil { - return x.Author - } - return "" -} - -func (x *PostItem) GetContent() string { - if x != nil { - return x.Content - } - return "" -} - -func (x *PostItem) GetTargetUrl() string { - if x != nil { - return x.TargetUrl - } - return "" -} - -func (x *PostItem) GetSourceUrl() string { - if x != nil { - return x.SourceUrl - } - return "" -} - -func (x *PostItem) GetHits() int64 { - if x != nil { - return x.Hits - } - return 0 -} - -func (x *PostItem) GetAccessory() []string { - if x != nil { - return x.Accessory - } - return nil -} - -func (x *PostItem) GetHasAccessory() bool { - if x != nil { - return x.HasAccessory - } - return false -} - -func (x *PostItem) GetCreatedAt() string { - if x != nil { - return x.CreatedAt - } - return "" -} - -func (x *PostItem) GetUpdatedAt() string { - if x != nil { - return x.UpdatedAt - } - return "" -} - -func (x *PostItem) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *PostItem) GetLikeHits() int64 { - if x != nil { - return x.LikeHits - } - return 0 -} - -func (x *PostItem) GetUnlikeHits() int64 { - if x != nil { - return x.UnlikeHits - } - return 0 -} - -func (x *PostItem) GetCommentHits() int64 { - if x != nil { - return x.CommentHits - } - return 0 -} - -func (x *PostItem) GetType() int32 { - if x != nil { - return x.Type - } - return 0 -} - -func (x *PostItem) GetRights() string { - if x != nil { - return x.Rights - } - return "" -} - -type PostListRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Page int64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` // 页码,默认第一页 - Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` // 单页显示数量,默认10,最多50 - AuthorIdentity string `protobuf:"bytes,3,opt,name=author_identity,json=authorIdentity,proto3" json:"author_identity,omitempty"` //发布者唯一标识,可选 - CategoryIdentity string `protobuf:"bytes,4,opt,name=category_identity,json=categoryIdentity,proto3" json:"category_identity,omitempty"` // 文章类型,可选 - Keyword string `protobuf:"bytes,5,opt,name=keyword,proto3" json:"keyword,omitempty"` // 根据文章名称模糊查找 - Type int32 `protobuf:"varint,6,opt,name=type,proto3" json:"type,omitempty"` // 根据用户自定义文章类型过滤,可选,默认0,全部查找 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PostListRequest) Reset() { - *x = PostListRequest{} - mi := &file_post_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PostListRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PostListRequest) ProtoMessage() {} - -func (x *PostListRequest) ProtoReflect() protoreflect.Message { - mi := &file_post_proto_msgTypes[2] - 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 PostListRequest.ProtoReflect.Descriptor instead. -func (*PostListRequest) Descriptor() ([]byte, []int) { - return file_post_proto_rawDescGZIP(), []int{2} -} - -func (x *PostListRequest) GetPage() int64 { - if x != nil { - return x.Page - } - return 0 -} - -func (x *PostListRequest) GetSize() int64 { - if x != nil { - return x.Size - } - return 0 -} - -func (x *PostListRequest) GetAuthorIdentity() string { - if x != nil { - return x.AuthorIdentity - } - return "" -} - -func (x *PostListRequest) GetCategoryIdentity() string { - if x != nil { - return x.CategoryIdentity - } - return "" -} - -func (x *PostListRequest) GetKeyword() string { - if x != nil { - return x.Keyword - } - return "" -} - -func (x *PostListRequest) GetType() int32 { - if x != nil { - return x.Type - } - return 0 -} - -type PostListReply struct { - state protoimpl.MessageState `protogen:"open.v1"` - Data []*PostItem `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` - Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PostListReply) Reset() { - *x = PostListReply{} - mi := &file_post_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PostListReply) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PostListReply) ProtoMessage() {} - -func (x *PostListReply) ProtoReflect() protoreflect.Message { - mi := &file_post_proto_msgTypes[3] - 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 PostListReply.ProtoReflect.Descriptor instead. -func (*PostListReply) Descriptor() ([]byte, []int) { - return file_post_proto_rawDescGZIP(), []int{3} -} - -func (x *PostListReply) GetData() []*PostItem { - if x != nil { - return x.Data - } - return nil -} - -func (x *PostListReply) GetCount() int64 { - if x != nil { - return x.Count - } - return 0 -} - -type GetPostRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` // 必传 - AuthorIdentity string `protobuf:"bytes,2,opt,name=author_identity,json=authorIdentity,proto3" json:"author_identity,omitempty"` // 必传 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetPostRequest) Reset() { - *x = GetPostRequest{} - mi := &file_post_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetPostRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetPostRequest) ProtoMessage() {} - -func (x *GetPostRequest) ProtoReflect() protoreflect.Message { - mi := &file_post_proto_msgTypes[4] - 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 GetPostRequest.ProtoReflect.Descriptor instead. -func (*GetPostRequest) Descriptor() ([]byte, []int) { - return file_post_proto_rawDescGZIP(), []int{4} -} - -func (x *GetPostRequest) GetIdentity() string { - if x != nil { - return x.Identity - } - return "" -} - -func (x *GetPostRequest) GetAuthorIdentity() string { - if x != nil { - return x.AuthorIdentity - } - return "" -} - -type CommentItem struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` - PostIdentity string `protobuf:"bytes,2,opt,name=Post_identity,json=PostIdentity,proto3" json:"Post_identity,omitempty"` - ParentIdentity string `protobuf:"bytes,3,opt,name=parent_identity,json=parentIdentity,proto3" json:"parent_identity,omitempty"` - Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` - ReplyIdentity string `protobuf:"bytes,5,opt,name=reply_identity,json=replyIdentity,proto3" json:"reply_identity,omitempty"` // 回复者唯一 标识 - CreatedAt string `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt string `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - List []*CommentItem `protobuf:"bytes,8,rep,name=list,proto3" json:"list,omitempty"` //回复列表 - LikeHits int64 `protobuf:"varint,9,opt,name=like_hits,json=likeHits,proto3" json:"like_hits,omitempty"` //点赞量 - UnlikeHits int64 `protobuf:"varint,10,opt,name=unlike_hits,json=unlikeHits,proto3" json:"unlike_hits,omitempty"` //点踩量 - CommentHits int64 `protobuf:"varint,11,opt,name=comment_hits,json=commentHits,proto3" json:"comment_hits,omitempty"` //评论量 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CommentItem) Reset() { - *x = CommentItem{} - mi := &file_post_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CommentItem) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommentItem) ProtoMessage() {} - -func (x *CommentItem) ProtoReflect() protoreflect.Message { - mi := &file_post_proto_msgTypes[5] - 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 CommentItem.ProtoReflect.Descriptor instead. -func (*CommentItem) Descriptor() ([]byte, []int) { - return file_post_proto_rawDescGZIP(), []int{5} -} - -func (x *CommentItem) GetIdentity() string { - if x != nil { - return x.Identity - } - return "" -} - -func (x *CommentItem) GetPostIdentity() string { - if x != nil { - return x.PostIdentity - } - return "" -} - -func (x *CommentItem) GetParentIdentity() string { - if x != nil { - return x.ParentIdentity - } - return "" -} - -func (x *CommentItem) GetContent() string { - if x != nil { - return x.Content - } - return "" -} - -func (x *CommentItem) GetReplyIdentity() string { - if x != nil { - return x.ReplyIdentity - } - return "" -} - -func (x *CommentItem) GetCreatedAt() string { - if x != nil { - return x.CreatedAt - } - return "" -} - -func (x *CommentItem) GetUpdatedAt() string { - if x != nil { - return x.UpdatedAt - } - return "" -} - -func (x *CommentItem) GetList() []*CommentItem { - if x != nil { - return x.List - } - return nil -} - -func (x *CommentItem) GetLikeHits() int64 { - if x != nil { - return x.LikeHits - } - return 0 -} - -func (x *CommentItem) GetUnlikeHits() int64 { - if x != nil { - return x.UnlikeHits - } - return 0 -} - -func (x *CommentItem) GetCommentHits() int64 { - if x != nil { - return x.CommentHits - } - return 0 -} - -type CommentListRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - PostIdentity string `protobuf:"bytes,1,opt,name=Post_identity,json=PostIdentity,proto3" json:"Post_identity,omitempty"` //必填 - Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` // 页码,默认第一页 - Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` // 单页显示数量,默认10,最多50 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CommentListRequest) Reset() { - *x = CommentListRequest{} - mi := &file_post_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CommentListRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommentListRequest) ProtoMessage() {} - -func (x *CommentListRequest) ProtoReflect() protoreflect.Message { - mi := &file_post_proto_msgTypes[6] - 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 CommentListRequest.ProtoReflect.Descriptor instead. -func (*CommentListRequest) Descriptor() ([]byte, []int) { - return file_post_proto_rawDescGZIP(), []int{6} -} - -func (x *CommentListRequest) GetPostIdentity() string { - if x != nil { - return x.PostIdentity - } - return "" -} - -func (x *CommentListRequest) GetPage() int64 { - if x != nil { - return x.Page - } - return 0 -} - -func (x *CommentListRequest) GetSize() int64 { - if x != nil { - return x.Size - } - return 0 -} - -type CommentListResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - List []*CommentItem `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` - Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CommentListResponse) Reset() { - *x = CommentListResponse{} - mi := &file_post_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CommentListResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommentListResponse) ProtoMessage() {} - -func (x *CommentListResponse) ProtoReflect() protoreflect.Message { - mi := &file_post_proto_msgTypes[7] - 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 CommentListResponse.ProtoReflect.Descriptor instead. -func (*CommentListResponse) Descriptor() ([]byte, []int) { - return file_post_proto_rawDescGZIP(), []int{7} -} - -func (x *CommentListResponse) GetList() []*CommentItem { - if x != nil { - return x.List - } - return nil -} - -func (x *CommentListResponse) GetCount() int64 { - if x != nil { - return x.Count - } - return 0 -} - -type PostOpIdentityRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - PostIdentity string `protobuf:"bytes,1,opt,name=post_identity,json=postIdentity,proto3" json:"post_identity,omitempty"` //必传 - OpIdentity string `protobuf:"bytes,2,opt,name=op_identity,json=opIdentity,proto3" json:"op_identity,omitempty"` // 必传 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PostOpIdentityRequest) Reset() { - *x = PostOpIdentityRequest{} - mi := &file_post_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PostOpIdentityRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PostOpIdentityRequest) ProtoMessage() {} - -func (x *PostOpIdentityRequest) ProtoReflect() protoreflect.Message { - mi := &file_post_proto_msgTypes[8] - 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 PostOpIdentityRequest.ProtoReflect.Descriptor instead. -func (*PostOpIdentityRequest) Descriptor() ([]byte, []int) { - return file_post_proto_rawDescGZIP(), []int{8} -} - -func (x *PostOpIdentityRequest) GetPostIdentity() string { - if x != nil { - return x.PostIdentity - } - return "" -} - -func (x *PostOpIdentityRequest) GetOpIdentity() string { - if x != nil { - return x.OpIdentity - } - return "" -} - -type CommentOpIdentityRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - CommentIdentity string `protobuf:"bytes,1,opt,name=comment_identity,json=commentIdentity,proto3" json:"comment_identity,omitempty"` //必填 - OpIdentity string `protobuf:"bytes,2,opt,name=op_identity,json=opIdentity,proto3" json:"op_identity,omitempty"` //必填 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CommentOpIdentityRequest) Reset() { - *x = CommentOpIdentityRequest{} - mi := &file_post_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CommentOpIdentityRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommentOpIdentityRequest) ProtoMessage() {} - -func (x *CommentOpIdentityRequest) ProtoReflect() protoreflect.Message { - mi := &file_post_proto_msgTypes[9] - 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 CommentOpIdentityRequest.ProtoReflect.Descriptor instead. -func (*CommentOpIdentityRequest) Descriptor() ([]byte, []int) { - return file_post_proto_rawDescGZIP(), []int{9} -} - -func (x *CommentOpIdentityRequest) GetCommentIdentity() string { - if x != nil { - return x.CommentIdentity - } - return "" -} - -func (x *CommentOpIdentityRequest) GetOpIdentity() string { - if x != nil { - return x.OpIdentity - } - return "" -} - -var File_post_proto protoreflect.FileDescriptor - -const file_post_proto_rawDesc = "" + - "\n" + - "\n" + - "post.proto\x12\acontent\x1a\fblocks.proto\"W\n" + - "\x14DeleteCommentRequest\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity\x12#\n" + - "\rpost_identity\x18\x02 \x01(\tR\fpostIdentity\"\xc1\x05\n" + - "\bPostItem\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity\x12\x1f\n" + - "\vpassport_id\x18\x02 \x01(\x03R\n" + - "passportId\x12+\n" + - "\x11passport_identity\x18\x03 \x01(\tR\x10passportIdentity\x124\n" + - "\x16category_identity_list\x18\x04 \x03(\tR\x14categoryIdentityList\x12,\n" + - "\x12tags_identity_list\x18\x05 \x03(\tR\x10tagsIdentityList\x12\x14\n" + - "\x05title\x18\x06 \x01(\tR\x05title\x12\x1d\n" + - "\n" + - "cover_path\x18\a \x01(\tR\tcoverPath\x12\x16\n" + - "\x06author\x18\b \x01(\tR\x06author\x12\x18\n" + - "\acontent\x18\t \x01(\tR\acontent\x12\x1d\n" + - "\n" + - "target_url\x18\n" + - " \x01(\tR\ttargetUrl\x12\x1d\n" + - "\n" + - "source_url\x18\v \x01(\tR\tsourceUrl\x12\x12\n" + - "\x04hits\x18\f \x01(\x03R\x04hits\x12\x1c\n" + - "\taccessory\x18\r \x03(\tR\taccessory\x12#\n" + - "\rhas_accessory\x18\x0e \x01(\bR\fhasAccessory\x12\x1d\n" + - "\n" + - "created_at\x18\x0f \x01(\tR\tcreatedAt\x12\x1d\n" + - "\n" + - "updated_at\x18\x10 \x01(\tR\tupdatedAt\x12 \n" + - "\vdescription\x18\x11 \x01(\tR\vdescription\x12\x1b\n" + - "\tlike_hits\x18\x12 \x01(\x03R\blikeHits\x12\x1f\n" + - "\vunlike_hits\x18\x13 \x01(\x03R\n" + - "unlikeHits\x12!\n" + - "\fcomment_hits\x18\x14 \x01(\x03R\vcommentHits\x12\x12\n" + - "\x04type\x18\x16 \x01(\x05R\x04type\x12\x16\n" + - "\x06rights\x18\x17 \x01(\tR\x06rights\"\xbd\x01\n" + - "\x0fPostListRequest\x12\x12\n" + - "\x04page\x18\x01 \x01(\x03R\x04page\x12\x12\n" + - "\x04size\x18\x02 \x01(\x03R\x04size\x12'\n" + - "\x0fauthor_identity\x18\x03 \x01(\tR\x0eauthorIdentity\x12+\n" + - "\x11category_identity\x18\x04 \x01(\tR\x10categoryIdentity\x12\x18\n" + - "\akeyword\x18\x05 \x01(\tR\akeyword\x12\x12\n" + - "\x04type\x18\x06 \x01(\x05R\x04type\"L\n" + - "\rPostListReply\x12%\n" + - "\x04data\x18\x01 \x03(\v2\x11.content.PostItemR\x04data\x12\x14\n" + - "\x05count\x18\x02 \x01(\x03R\x05count\"U\n" + - "\x0eGetPostRequest\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity\x12'\n" + - "\x0fauthor_identity\x18\x02 \x01(\tR\x0eauthorIdentity\"\x81\x03\n" + - "\vCommentItem\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity\x12#\n" + - "\rPost_identity\x18\x02 \x01(\tR\fPostIdentity\x12'\n" + - "\x0fparent_identity\x18\x03 \x01(\tR\x0eparentIdentity\x12\x18\n" + - "\acontent\x18\x04 \x01(\tR\acontent\x12%\n" + - "\x0ereply_identity\x18\x05 \x01(\tR\rreplyIdentity\x12\x1d\n" + - "\n" + - "created_at\x18\x06 \x01(\tR\tcreatedAt\x12\x1d\n" + - "\n" + - "updated_at\x18\a \x01(\tR\tupdatedAt\x12(\n" + - "\x04list\x18\b \x03(\v2\x14.content.CommentItemR\x04list\x12\x1b\n" + - "\tlike_hits\x18\t \x01(\x03R\blikeHits\x12\x1f\n" + - "\vunlike_hits\x18\n" + - " \x01(\x03R\n" + - "unlikeHits\x12!\n" + - "\fcomment_hits\x18\v \x01(\x03R\vcommentHits\"a\n" + - "\x12CommentListRequest\x12#\n" + - "\rPost_identity\x18\x01 \x01(\tR\fPostIdentity\x12\x12\n" + - "\x04page\x18\x02 \x01(\x03R\x04page\x12\x12\n" + - "\x04size\x18\x03 \x01(\x03R\x04size\"U\n" + - "\x13CommentListResponse\x12(\n" + - "\x04list\x18\x01 \x03(\v2\x14.content.CommentItemR\x04list\x12\x14\n" + - "\x05count\x18\x02 \x01(\x03R\x05count\"]\n" + - "\x15PostOpIdentityRequest\x12#\n" + - "\rpost_identity\x18\x01 \x01(\tR\fpostIdentity\x12\x1f\n" + - "\vop_identity\x18\x02 \x01(\tR\n" + - "opIdentity\"f\n" + - "\x18CommentOpIdentityRequest\x12)\n" + - "\x10comment_identity\x18\x01 \x01(\tR\x0fcommentIdentity\x12\x1f\n" + - "\vop_identity\x18\x02 \x01(\tR\n" + - "opIdentity2\x9a\t\n" + - "\x04Post\x12>\n" + - "\bPostList\x12\x18.content.PostListRequest\x1a\x16.content.PostListReply\"\x00\x127\n" + - "\aGetPost\x12\x17.content.GetPostRequest\x1a\x11.content.PostItem\"\x00\x124\n" + - "\aAddPost\x12\x11.content.PostItem\x1a\x14.content.StatusReply\"\x00\x127\n" + - "\n" + - "ModifyPost\x12\x11.content.PostItem\x1a\x14.content.StatusReply\"\x00\x12;\n" + - "\n" + - "DeletePost\x12\x15.content.IdentRequest\x1a\x14.content.StatusReply\"\x00\x12F\n" + - "\fIncrPostLike\x12\x1e.content.PostOpIdentityRequest\x1a\x14.content.StatusReply\"\x00\x12F\n" + - "\fDescPostLike\x12\x1e.content.PostOpIdentityRequest\x1a\x14.content.StatusReply\"\x00\x12H\n" + - "\x0eIncrPostUnlike\x12\x1e.content.PostOpIdentityRequest\x1a\x14.content.StatusReply\"\x00\x12H\n" + - "\x0eDescPostUnlike\x12\x1e.content.PostOpIdentityRequest\x1a\x14.content.StatusReply\"\x00\x12J\n" + - "\vCommentList\x12\x1b.content.CommentListRequest\x1a\x1c.content.CommentListResponse\"\x00\x12:\n" + - "\n" + - "AddComment\x12\x14.content.CommentItem\x1a\x14.content.StatusReply\"\x00\x12=\n" + - "\rModifyComment\x12\x14.content.CommentItem\x1a\x14.content.StatusReply\"\x00\x12F\n" + - "\rDeleteComment\x12\x1d.content.DeleteCommentRequest\x1a\x14.content.StatusReply\"\x00\x12L\n" + - "\x0fIncrCommentLike\x12!.content.CommentOpIdentityRequest\x1a\x14.content.StatusReply\"\x00\x12L\n" + - "\x0fDescCommentLike\x12!.content.CommentOpIdentityRequest\x1a\x14.content.StatusReply\"\x00\x12N\n" + - "\x11IncrCommentUnlike\x12!.content.CommentOpIdentityRequest\x1a\x14.content.StatusReply\"\x00\x12N\n" + - "\x11DescCommentUnlike\x12!.content.CommentOpIdentityRequest\x1a\x14.content.StatusReply\"\x00B\fZ\n" + - "./;contentb\x06proto3" - -var ( - file_post_proto_rawDescOnce sync.Once - file_post_proto_rawDescData []byte -) - -func file_post_proto_rawDescGZIP() []byte { - file_post_proto_rawDescOnce.Do(func() { - file_post_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_post_proto_rawDesc), len(file_post_proto_rawDesc))) - }) - return file_post_proto_rawDescData -} - -var file_post_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_post_proto_goTypes = []any{ - (*DeleteCommentRequest)(nil), // 0: content.DeleteCommentRequest - (*PostItem)(nil), // 1: content.PostItem - (*PostListRequest)(nil), // 2: content.PostListRequest - (*PostListReply)(nil), // 3: content.PostListReply - (*GetPostRequest)(nil), // 4: content.GetPostRequest - (*CommentItem)(nil), // 5: content.CommentItem - (*CommentListRequest)(nil), // 6: content.CommentListRequest - (*CommentListResponse)(nil), // 7: content.CommentListResponse - (*PostOpIdentityRequest)(nil), // 8: content.PostOpIdentityRequest - (*CommentOpIdentityRequest)(nil), // 9: content.CommentOpIdentityRequest - (*IdentRequest)(nil), // 10: content.IdentRequest - (*StatusReply)(nil), // 11: content.StatusReply -} -var file_post_proto_depIdxs = []int32{ - 1, // 0: content.PostListReply.data:type_name -> content.PostItem - 5, // 1: content.CommentItem.list:type_name -> content.CommentItem - 5, // 2: content.CommentListResponse.list:type_name -> content.CommentItem - 2, // 3: content.Post.PostList:input_type -> content.PostListRequest - 4, // 4: content.Post.GetPost:input_type -> content.GetPostRequest - 1, // 5: content.Post.AddPost:input_type -> content.PostItem - 1, // 6: content.Post.ModifyPost:input_type -> content.PostItem - 10, // 7: content.Post.DeletePost:input_type -> content.IdentRequest - 8, // 8: content.Post.IncrPostLike:input_type -> content.PostOpIdentityRequest - 8, // 9: content.Post.DescPostLike:input_type -> content.PostOpIdentityRequest - 8, // 10: content.Post.IncrPostUnlike:input_type -> content.PostOpIdentityRequest - 8, // 11: content.Post.DescPostUnlike:input_type -> content.PostOpIdentityRequest - 6, // 12: content.Post.CommentList:input_type -> content.CommentListRequest - 5, // 13: content.Post.AddComment:input_type -> content.CommentItem - 5, // 14: content.Post.ModifyComment:input_type -> content.CommentItem - 0, // 15: content.Post.DeleteComment:input_type -> content.DeleteCommentRequest - 9, // 16: content.Post.IncrCommentLike:input_type -> content.CommentOpIdentityRequest - 9, // 17: content.Post.DescCommentLike:input_type -> content.CommentOpIdentityRequest - 9, // 18: content.Post.IncrCommentUnlike:input_type -> content.CommentOpIdentityRequest - 9, // 19: content.Post.DescCommentUnlike:input_type -> content.CommentOpIdentityRequest - 3, // 20: content.Post.PostList:output_type -> content.PostListReply - 1, // 21: content.Post.GetPost:output_type -> content.PostItem - 11, // 22: content.Post.AddPost:output_type -> content.StatusReply - 11, // 23: content.Post.ModifyPost:output_type -> content.StatusReply - 11, // 24: content.Post.DeletePost:output_type -> content.StatusReply - 11, // 25: content.Post.IncrPostLike:output_type -> content.StatusReply - 11, // 26: content.Post.DescPostLike:output_type -> content.StatusReply - 11, // 27: content.Post.IncrPostUnlike:output_type -> content.StatusReply - 11, // 28: content.Post.DescPostUnlike:output_type -> content.StatusReply - 7, // 29: content.Post.CommentList:output_type -> content.CommentListResponse - 11, // 30: content.Post.AddComment:output_type -> content.StatusReply - 11, // 31: content.Post.ModifyComment:output_type -> content.StatusReply - 11, // 32: content.Post.DeleteComment:output_type -> content.StatusReply - 11, // 33: content.Post.IncrCommentLike:output_type -> content.StatusReply - 11, // 34: content.Post.DescCommentLike:output_type -> content.StatusReply - 11, // 35: content.Post.IncrCommentUnlike:output_type -> content.StatusReply - 11, // 36: content.Post.DescCommentUnlike:output_type -> content.StatusReply - 20, // [20:37] is the sub-list for method output_type - 3, // [3:20] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_post_proto_init() } -func file_post_proto_init() { - if File_post_proto != nil { - return - } - file_blocks_proto_init() - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_post_proto_rawDesc), len(file_post_proto_rawDesc)), - NumEnums: 0, - NumMessages: 10, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_post_proto_goTypes, - DependencyIndexes: file_post_proto_depIdxs, - MessageInfos: file_post_proto_msgTypes, - }.Build() - File_post_proto = out.File - file_post_proto_goTypes = nil - file_post_proto_depIdxs = nil -} diff --git a/pb/post_grpc.pb.go b/pb/post_grpc.pb.go deleted file mode 100644 index b7fbf0d..0000000 --- a/pb/post_grpc.pb.go +++ /dev/null @@ -1,759 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc v6.30.1 -// source: post.proto - -package content - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - Post_PostList_FullMethodName = "/content.Post/PostList" - Post_GetPost_FullMethodName = "/content.Post/GetPost" - Post_AddPost_FullMethodName = "/content.Post/AddPost" - Post_ModifyPost_FullMethodName = "/content.Post/ModifyPost" - Post_DeletePost_FullMethodName = "/content.Post/DeletePost" - Post_IncrPostLike_FullMethodName = "/content.Post/IncrPostLike" - Post_DescPostLike_FullMethodName = "/content.Post/DescPostLike" - Post_IncrPostUnlike_FullMethodName = "/content.Post/IncrPostUnlike" - Post_DescPostUnlike_FullMethodName = "/content.Post/DescPostUnlike" - Post_CommentList_FullMethodName = "/content.Post/CommentList" - Post_AddComment_FullMethodName = "/content.Post/AddComment" - Post_ModifyComment_FullMethodName = "/content.Post/ModifyComment" - Post_DeleteComment_FullMethodName = "/content.Post/DeleteComment" - Post_IncrCommentLike_FullMethodName = "/content.Post/IncrCommentLike" - Post_DescCommentLike_FullMethodName = "/content.Post/DescCommentLike" - Post_IncrCommentUnlike_FullMethodName = "/content.Post/IncrCommentUnlike" - Post_DescCommentUnlike_FullMethodName = "/content.Post/DescCommentUnlike" -) - -// PostClient is the client API for Post service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -// -// 正文 -type PostClient interface { - // 文章列表 - PostList(ctx context.Context, in *PostListRequest, opts ...grpc.CallOption) (*PostListReply, error) - // 获取文章详情 - GetPost(ctx context.Context, in *GetPostRequest, opts ...grpc.CallOption) (*PostItem, error) - // 发布文章 - AddPost(ctx context.Context, in *PostItem, opts ...grpc.CallOption) (*StatusReply, error) - // 修改文章 - ModifyPost(ctx context.Context, in *PostItem, opts ...grpc.CallOption) (*StatusReply, error) - // 删除文章 - DeletePost(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) - // 文章点赞处理 - IncrPostLike(ctx context.Context, in *PostOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) - DescPostLike(ctx context.Context, in *PostOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) - // 文章点踩处理 - IncrPostUnlike(ctx context.Context, in *PostOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) - DescPostUnlike(ctx context.Context, in *PostOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) - // 评论列表 - CommentList(ctx context.Context, in *CommentListRequest, opts ...grpc.CallOption) (*CommentListResponse, error) - // 发布评论 - AddComment(ctx context.Context, in *CommentItem, opts ...grpc.CallOption) (*StatusReply, error) - // 修改评论 - ModifyComment(ctx context.Context, in *CommentItem, opts ...grpc.CallOption) (*StatusReply, error) - // 删除评论 - DeleteComment(ctx context.Context, in *DeleteCommentRequest, opts ...grpc.CallOption) (*StatusReply, error) - // 评论点赞处理 - IncrCommentLike(ctx context.Context, in *CommentOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) - DescCommentLike(ctx context.Context, in *CommentOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) - // 评论点踩处理 - IncrCommentUnlike(ctx context.Context, in *CommentOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) - DescCommentUnlike(ctx context.Context, in *CommentOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) -} - -type postClient struct { - cc grpc.ClientConnInterface -} - -func NewPostClient(cc grpc.ClientConnInterface) PostClient { - return &postClient{cc} -} - -func (c *postClient) PostList(ctx context.Context, in *PostListRequest, opts ...grpc.CallOption) (*PostListReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(PostListReply) - err := c.cc.Invoke(ctx, Post_PostList_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) GetPost(ctx context.Context, in *GetPostRequest, opts ...grpc.CallOption) (*PostItem, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(PostItem) - err := c.cc.Invoke(ctx, Post_GetPost_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) AddPost(ctx context.Context, in *PostItem, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_AddPost_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) ModifyPost(ctx context.Context, in *PostItem, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_ModifyPost_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) DeletePost(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_DeletePost_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) IncrPostLike(ctx context.Context, in *PostOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_IncrPostLike_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) DescPostLike(ctx context.Context, in *PostOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_DescPostLike_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) IncrPostUnlike(ctx context.Context, in *PostOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_IncrPostUnlike_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) DescPostUnlike(ctx context.Context, in *PostOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_DescPostUnlike_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) CommentList(ctx context.Context, in *CommentListRequest, opts ...grpc.CallOption) (*CommentListResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(CommentListResponse) - err := c.cc.Invoke(ctx, Post_CommentList_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) AddComment(ctx context.Context, in *CommentItem, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_AddComment_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) ModifyComment(ctx context.Context, in *CommentItem, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_ModifyComment_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) DeleteComment(ctx context.Context, in *DeleteCommentRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_DeleteComment_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) IncrCommentLike(ctx context.Context, in *CommentOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_IncrCommentLike_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) DescCommentLike(ctx context.Context, in *CommentOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_DescCommentLike_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) IncrCommentUnlike(ctx context.Context, in *CommentOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_IncrCommentUnlike_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *postClient) DescCommentUnlike(ctx context.Context, in *CommentOpIdentityRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Post_DescCommentUnlike_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// PostServer is the server API for Post service. -// All implementations must embed UnimplementedPostServer -// for forward compatibility. -// -// 正文 -type PostServer interface { - // 文章列表 - PostList(context.Context, *PostListRequest) (*PostListReply, error) - // 获取文章详情 - GetPost(context.Context, *GetPostRequest) (*PostItem, error) - // 发布文章 - AddPost(context.Context, *PostItem) (*StatusReply, error) - // 修改文章 - ModifyPost(context.Context, *PostItem) (*StatusReply, error) - // 删除文章 - DeletePost(context.Context, *IdentRequest) (*StatusReply, error) - // 文章点赞处理 - IncrPostLike(context.Context, *PostOpIdentityRequest) (*StatusReply, error) - DescPostLike(context.Context, *PostOpIdentityRequest) (*StatusReply, error) - // 文章点踩处理 - IncrPostUnlike(context.Context, *PostOpIdentityRequest) (*StatusReply, error) - DescPostUnlike(context.Context, *PostOpIdentityRequest) (*StatusReply, error) - // 评论列表 - CommentList(context.Context, *CommentListRequest) (*CommentListResponse, error) - // 发布评论 - AddComment(context.Context, *CommentItem) (*StatusReply, error) - // 修改评论 - ModifyComment(context.Context, *CommentItem) (*StatusReply, error) - // 删除评论 - DeleteComment(context.Context, *DeleteCommentRequest) (*StatusReply, error) - // 评论点赞处理 - IncrCommentLike(context.Context, *CommentOpIdentityRequest) (*StatusReply, error) - DescCommentLike(context.Context, *CommentOpIdentityRequest) (*StatusReply, error) - // 评论点踩处理 - IncrCommentUnlike(context.Context, *CommentOpIdentityRequest) (*StatusReply, error) - DescCommentUnlike(context.Context, *CommentOpIdentityRequest) (*StatusReply, error) - mustEmbedUnimplementedPostServer() -} - -// UnimplementedPostServer must be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedPostServer struct{} - -func (UnimplementedPostServer) PostList(context.Context, *PostListRequest) (*PostListReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method PostList not implemented") -} -func (UnimplementedPostServer) GetPost(context.Context, *GetPostRequest) (*PostItem, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetPost not implemented") -} -func (UnimplementedPostServer) AddPost(context.Context, *PostItem) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddPost not implemented") -} -func (UnimplementedPostServer) ModifyPost(context.Context, *PostItem) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method ModifyPost not implemented") -} -func (UnimplementedPostServer) DeletePost(context.Context, *IdentRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeletePost not implemented") -} -func (UnimplementedPostServer) IncrPostLike(context.Context, *PostOpIdentityRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method IncrPostLike not implemented") -} -func (UnimplementedPostServer) DescPostLike(context.Context, *PostOpIdentityRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method DescPostLike not implemented") -} -func (UnimplementedPostServer) IncrPostUnlike(context.Context, *PostOpIdentityRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method IncrPostUnlike not implemented") -} -func (UnimplementedPostServer) DescPostUnlike(context.Context, *PostOpIdentityRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method DescPostUnlike not implemented") -} -func (UnimplementedPostServer) CommentList(context.Context, *CommentListRequest) (*CommentListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CommentList not implemented") -} -func (UnimplementedPostServer) AddComment(context.Context, *CommentItem) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddComment not implemented") -} -func (UnimplementedPostServer) ModifyComment(context.Context, *CommentItem) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method ModifyComment not implemented") -} -func (UnimplementedPostServer) DeleteComment(context.Context, *DeleteCommentRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteComment not implemented") -} -func (UnimplementedPostServer) IncrCommentLike(context.Context, *CommentOpIdentityRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method IncrCommentLike not implemented") -} -func (UnimplementedPostServer) DescCommentLike(context.Context, *CommentOpIdentityRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method DescCommentLike not implemented") -} -func (UnimplementedPostServer) IncrCommentUnlike(context.Context, *CommentOpIdentityRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method IncrCommentUnlike not implemented") -} -func (UnimplementedPostServer) DescCommentUnlike(context.Context, *CommentOpIdentityRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method DescCommentUnlike not implemented") -} -func (UnimplementedPostServer) mustEmbedUnimplementedPostServer() {} -func (UnimplementedPostServer) testEmbeddedByValue() {} - -// UnsafePostServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to PostServer will -// result in compilation errors. -type UnsafePostServer interface { - mustEmbedUnimplementedPostServer() -} - -func RegisterPostServer(s grpc.ServiceRegistrar, srv PostServer) { - // If the following call pancis, it indicates UnimplementedPostServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&Post_ServiceDesc, srv) -} - -func _Post_PostList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PostListRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).PostList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_PostList_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).PostList(ctx, req.(*PostListRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_GetPost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetPostRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).GetPost(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_GetPost_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).GetPost(ctx, req.(*GetPostRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_AddPost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PostItem) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).AddPost(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_AddPost_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).AddPost(ctx, req.(*PostItem)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_ModifyPost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PostItem) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).ModifyPost(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_ModifyPost_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).ModifyPost(ctx, req.(*PostItem)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_DeletePost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(IdentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).DeletePost(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_DeletePost_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).DeletePost(ctx, req.(*IdentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_IncrPostLike_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PostOpIdentityRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).IncrPostLike(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_IncrPostLike_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).IncrPostLike(ctx, req.(*PostOpIdentityRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_DescPostLike_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PostOpIdentityRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).DescPostLike(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_DescPostLike_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).DescPostLike(ctx, req.(*PostOpIdentityRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_IncrPostUnlike_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PostOpIdentityRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).IncrPostUnlike(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_IncrPostUnlike_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).IncrPostUnlike(ctx, req.(*PostOpIdentityRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_DescPostUnlike_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PostOpIdentityRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).DescPostUnlike(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_DescPostUnlike_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).DescPostUnlike(ctx, req.(*PostOpIdentityRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_CommentList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommentListRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).CommentList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_CommentList_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).CommentList(ctx, req.(*CommentListRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_AddComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommentItem) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).AddComment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_AddComment_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).AddComment(ctx, req.(*CommentItem)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_ModifyComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommentItem) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).ModifyComment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_ModifyComment_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).ModifyComment(ctx, req.(*CommentItem)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_DeleteComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteCommentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).DeleteComment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_DeleteComment_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).DeleteComment(ctx, req.(*DeleteCommentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_IncrCommentLike_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommentOpIdentityRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).IncrCommentLike(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_IncrCommentLike_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).IncrCommentLike(ctx, req.(*CommentOpIdentityRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_DescCommentLike_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommentOpIdentityRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).DescCommentLike(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_DescCommentLike_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).DescCommentLike(ctx, req.(*CommentOpIdentityRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_IncrCommentUnlike_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommentOpIdentityRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).IncrCommentUnlike(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_IncrCommentUnlike_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).IncrCommentUnlike(ctx, req.(*CommentOpIdentityRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Post_DescCommentUnlike_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommentOpIdentityRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PostServer).DescCommentUnlike(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Post_DescCommentUnlike_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PostServer).DescCommentUnlike(ctx, req.(*CommentOpIdentityRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// Post_ServiceDesc is the grpc.ServiceDesc for Post service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var Post_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "content.Post", - HandlerType: (*PostServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "PostList", - Handler: _Post_PostList_Handler, - }, - { - MethodName: "GetPost", - Handler: _Post_GetPost_Handler, - }, - { - MethodName: "AddPost", - Handler: _Post_AddPost_Handler, - }, - { - MethodName: "ModifyPost", - Handler: _Post_ModifyPost_Handler, - }, - { - MethodName: "DeletePost", - Handler: _Post_DeletePost_Handler, - }, - { - MethodName: "IncrPostLike", - Handler: _Post_IncrPostLike_Handler, - }, - { - MethodName: "DescPostLike", - Handler: _Post_DescPostLike_Handler, - }, - { - MethodName: "IncrPostUnlike", - Handler: _Post_IncrPostUnlike_Handler, - }, - { - MethodName: "DescPostUnlike", - Handler: _Post_DescPostUnlike_Handler, - }, - { - MethodName: "CommentList", - Handler: _Post_CommentList_Handler, - }, - { - MethodName: "AddComment", - Handler: _Post_AddComment_Handler, - }, - { - MethodName: "ModifyComment", - Handler: _Post_ModifyComment_Handler, - }, - { - MethodName: "DeleteComment", - Handler: _Post_DeleteComment_Handler, - }, - { - MethodName: "IncrCommentLike", - Handler: _Post_IncrCommentLike_Handler, - }, - { - MethodName: "DescCommentLike", - Handler: _Post_DescCommentLike_Handler, - }, - { - MethodName: "IncrCommentUnlike", - Handler: _Post_IncrCommentUnlike_Handler, - }, - { - MethodName: "DescCommentUnlike", - Handler: _Post_DescCommentUnlike_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "post.proto", -} diff --git a/pb/question.pb.go b/pb/question.pb.go new file mode 100644 index 0000000..918dce4 --- /dev/null +++ b/pb/question.pb.go @@ -0,0 +1,210 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v6.30.1 +// source: question.proto + +package survey + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type BySurveyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SurveyId string `protobuf:"bytes,1,opt,name=survey_id,json=surveyId,proto3" json:"survey_id,omitempty"` + QuestionIds []string `protobuf:"bytes,2,rep,name=question_ids,json=questionIds,proto3" json:"question_ids,omitempty"` // 按顺序排列的问题ID + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BySurveyRequest) Reset() { + *x = BySurveyRequest{} + mi := &file_question_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BySurveyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BySurveyRequest) ProtoMessage() {} + +func (x *BySurveyRequest) ProtoReflect() protoreflect.Message { + mi := &file_question_proto_msgTypes[0] + 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 BySurveyRequest.ProtoReflect.Descriptor instead. +func (*BySurveyRequest) Descriptor() ([]byte, []int) { + return file_question_proto_rawDescGZIP(), []int{0} +} + +func (x *BySurveyRequest) GetSurveyId() string { + if x != nil { + return x.SurveyId + } + return "" +} + +func (x *BySurveyRequest) GetQuestionIds() []string { + if x != nil { + return x.QuestionIds + } + return nil +} + +type ListQuestionReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Data []*QuestionItem `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListQuestionReply) Reset() { + *x = ListQuestionReply{} + mi := &file_question_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListQuestionReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListQuestionReply) ProtoMessage() {} + +func (x *ListQuestionReply) ProtoReflect() protoreflect.Message { + mi := &file_question_proto_msgTypes[1] + 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 ListQuestionReply.ProtoReflect.Descriptor instead. +func (*ListQuestionReply) Descriptor() ([]byte, []int) { + return file_question_proto_rawDescGZIP(), []int{1} +} + +func (x *ListQuestionReply) GetData() []*QuestionItem { + if x != nil { + return x.Data + } + return nil +} + +func (x *ListQuestionReply) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +var File_question_proto protoreflect.FileDescriptor + +const file_question_proto_rawDesc = "" + + "\n" + + "\x0equestion.proto\x12\x06survey\x1a\fblocks.proto\"Q\n" + + "\x0fBySurveyRequest\x12\x1b\n" + + "\tsurvey_id\x18\x01 \x01(\tR\bsurveyId\x12!\n" + + "\fquestion_ids\x18\x02 \x03(\tR\vquestionIds\"S\n" + + "\x11ListQuestionReply\x12(\n" + + "\x04data\x18\x01 \x03(\v2\x14.survey.QuestionItemR\x04data\x12\x14\n" + + "\x05count\x18\x02 \x01(\x03R\x05count2\xa0\x02\n" + + "\bQuestion\x120\n" + + "\x03Add\x12\x14.survey.QuestionItem\x1a\x13.survey.StatusReply\x123\n" + + "\x06Update\x12\x14.survey.QuestionItem\x1a\x13.survey.StatusReply\x123\n" + + "\x06Delete\x12\x14.survey.IdentRequest\x1a\x13.survey.StatusReply\x128\n" + + "\x05Fetch\x12\x14.survey.FetchRequest\x1a\x19.survey.ListQuestionReply\x12>\n" + + "\bBySurvey\x12\x17.survey.BySurveyRequest\x1a\x19.survey.ListQuestionReplyB\n" + + "Z\b.;surveyb\x06proto3" + +var ( + file_question_proto_rawDescOnce sync.Once + file_question_proto_rawDescData []byte +) + +func file_question_proto_rawDescGZIP() []byte { + file_question_proto_rawDescOnce.Do(func() { + file_question_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_question_proto_rawDesc), len(file_question_proto_rawDesc))) + }) + return file_question_proto_rawDescData +} + +var file_question_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_question_proto_goTypes = []any{ + (*BySurveyRequest)(nil), // 0: survey.BySurveyRequest + (*ListQuestionReply)(nil), // 1: survey.ListQuestionReply + (*QuestionItem)(nil), // 2: survey.QuestionItem + (*IdentRequest)(nil), // 3: survey.IdentRequest + (*FetchRequest)(nil), // 4: survey.FetchRequest + (*StatusReply)(nil), // 5: survey.StatusReply +} +var file_question_proto_depIdxs = []int32{ + 2, // 0: survey.ListQuestionReply.data:type_name -> survey.QuestionItem + 2, // 1: survey.Question.Add:input_type -> survey.QuestionItem + 2, // 2: survey.Question.Update:input_type -> survey.QuestionItem + 3, // 3: survey.Question.Delete:input_type -> survey.IdentRequest + 4, // 4: survey.Question.Fetch:input_type -> survey.FetchRequest + 0, // 5: survey.Question.BySurvey:input_type -> survey.BySurveyRequest + 5, // 6: survey.Question.Add:output_type -> survey.StatusReply + 5, // 7: survey.Question.Update:output_type -> survey.StatusReply + 5, // 8: survey.Question.Delete:output_type -> survey.StatusReply + 1, // 9: survey.Question.Fetch:output_type -> survey.ListQuestionReply + 1, // 10: survey.Question.BySurvey:output_type -> survey.ListQuestionReply + 6, // [6:11] is the sub-list for method output_type + 1, // [1:6] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_question_proto_init() } +func file_question_proto_init() { + if File_question_proto != nil { + return + } + file_blocks_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_question_proto_rawDesc), len(file_question_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_question_proto_goTypes, + DependencyIndexes: file_question_proto_depIdxs, + MessageInfos: file_question_proto_msgTypes, + }.Build() + File_question_proto = out.File + file_question_proto_goTypes = nil + file_question_proto_depIdxs = nil +} diff --git a/pb/question_grpc.pb.go b/pb/question_grpc.pb.go new file mode 100644 index 0000000..f4f9d9e --- /dev/null +++ b/pb/question_grpc.pb.go @@ -0,0 +1,277 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v6.30.1 +// source: question.proto + +package survey + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Question_Add_FullMethodName = "/survey.Question/Add" + Question_Update_FullMethodName = "/survey.Question/Update" + Question_Delete_FullMethodName = "/survey.Question/Delete" + Question_Fetch_FullMethodName = "/survey.Question/Fetch" + Question_BySurvey_FullMethodName = "/survey.Question/BySurvey" +) + +// QuestionClient is the client API for Question service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// 问卷服务 - 问题管理 +type QuestionClient interface { + Add(ctx context.Context, in *QuestionItem, opts ...grpc.CallOption) (*StatusReply, error) + Update(ctx context.Context, in *QuestionItem, opts ...grpc.CallOption) (*StatusReply, error) + Delete(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) + Fetch(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*ListQuestionReply, error) + BySurvey(ctx context.Context, in *BySurveyRequest, opts ...grpc.CallOption) (*ListQuestionReply, error) +} + +type questionClient struct { + cc grpc.ClientConnInterface +} + +func NewQuestionClient(cc grpc.ClientConnInterface) QuestionClient { + return &questionClient{cc} +} + +func (c *questionClient) Add(ctx context.Context, in *QuestionItem, opts ...grpc.CallOption) (*StatusReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatusReply) + err := c.cc.Invoke(ctx, Question_Add_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *questionClient) Update(ctx context.Context, in *QuestionItem, opts ...grpc.CallOption) (*StatusReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatusReply) + err := c.cc.Invoke(ctx, Question_Update_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *questionClient) Delete(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatusReply) + err := c.cc.Invoke(ctx, Question_Delete_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *questionClient) Fetch(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*ListQuestionReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListQuestionReply) + err := c.cc.Invoke(ctx, Question_Fetch_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *questionClient) BySurvey(ctx context.Context, in *BySurveyRequest, opts ...grpc.CallOption) (*ListQuestionReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListQuestionReply) + err := c.cc.Invoke(ctx, Question_BySurvey_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QuestionServer is the server API for Question service. +// All implementations must embed UnimplementedQuestionServer +// for forward compatibility. +// +// 问卷服务 - 问题管理 +type QuestionServer interface { + Add(context.Context, *QuestionItem) (*StatusReply, error) + Update(context.Context, *QuestionItem) (*StatusReply, error) + Delete(context.Context, *IdentRequest) (*StatusReply, error) + Fetch(context.Context, *FetchRequest) (*ListQuestionReply, error) + BySurvey(context.Context, *BySurveyRequest) (*ListQuestionReply, error) + mustEmbedUnimplementedQuestionServer() +} + +// UnimplementedQuestionServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedQuestionServer struct{} + +func (UnimplementedQuestionServer) Add(context.Context, *QuestionItem) (*StatusReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Add not implemented") +} +func (UnimplementedQuestionServer) Update(context.Context, *QuestionItem) (*StatusReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") +} +func (UnimplementedQuestionServer) Delete(context.Context, *IdentRequest) (*StatusReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedQuestionServer) Fetch(context.Context, *FetchRequest) (*ListQuestionReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Fetch not implemented") +} +func (UnimplementedQuestionServer) BySurvey(context.Context, *BySurveyRequest) (*ListQuestionReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method BySurvey not implemented") +} +func (UnimplementedQuestionServer) mustEmbedUnimplementedQuestionServer() {} +func (UnimplementedQuestionServer) testEmbeddedByValue() {} + +// UnsafeQuestionServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QuestionServer will +// result in compilation errors. +type UnsafeQuestionServer interface { + mustEmbedUnimplementedQuestionServer() +} + +func RegisterQuestionServer(s grpc.ServiceRegistrar, srv QuestionServer) { + // If the following call pancis, it indicates UnimplementedQuestionServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Question_ServiceDesc, srv) +} + +func _Question_Add_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QuestionItem) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QuestionServer).Add(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Question_Add_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QuestionServer).Add(ctx, req.(*QuestionItem)) + } + return interceptor(ctx, in, info, handler) +} + +func _Question_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QuestionItem) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QuestionServer).Update(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Question_Update_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QuestionServer).Update(ctx, req.(*QuestionItem)) + } + return interceptor(ctx, in, info, handler) +} + +func _Question_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IdentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QuestionServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Question_Delete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QuestionServer).Delete(ctx, req.(*IdentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Question_Fetch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FetchRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QuestionServer).Fetch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Question_Fetch_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QuestionServer).Fetch(ctx, req.(*FetchRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Question_BySurvey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BySurveyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QuestionServer).BySurvey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Question_BySurvey_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QuestionServer).BySurvey(ctx, req.(*BySurveyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Question_ServiceDesc is the grpc.ServiceDesc for Question service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Question_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "survey.Question", + HandlerType: (*QuestionServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Add", + Handler: _Question_Add_Handler, + }, + { + MethodName: "Update", + Handler: _Question_Update_Handler, + }, + { + MethodName: "Delete", + Handler: _Question_Delete_Handler, + }, + { + MethodName: "Fetch", + Handler: _Question_Fetch_Handler, + }, + { + MethodName: "BySurvey", + Handler: _Question_BySurvey_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "question.proto", +} diff --git a/pb/report.pb.go b/pb/report.pb.go new file mode 100644 index 0000000..1e3d115 --- /dev/null +++ b/pb/report.pb.go @@ -0,0 +1,152 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v6.30.1 +// source: report.proto + +package survey + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type SurveyStats struct { + state protoimpl.MessageState `protogen:"open.v1"` + SurveyId string `protobuf:"bytes,1,opt,name=survey_id,json=surveyId,proto3" json:"survey_id,omitempty"` + ResponseCount int32 `protobuf:"varint,2,opt,name=response_count,json=responseCount,proto3" json:"response_count,omitempty"` + QuestionStats map[string]int64 `protobuf:"bytes,3,rep,name=question_stats,json=questionStats,proto3" json:"question_stats,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // key为question_id + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SurveyStats) Reset() { + *x = SurveyStats{} + mi := &file_report_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SurveyStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SurveyStats) ProtoMessage() {} + +func (x *SurveyStats) ProtoReflect() protoreflect.Message { + mi := &file_report_proto_msgTypes[0] + 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 SurveyStats.ProtoReflect.Descriptor instead. +func (*SurveyStats) Descriptor() ([]byte, []int) { + return file_report_proto_rawDescGZIP(), []int{0} +} + +func (x *SurveyStats) GetSurveyId() string { + if x != nil { + return x.SurveyId + } + return "" +} + +func (x *SurveyStats) GetResponseCount() int32 { + if x != nil { + return x.ResponseCount + } + return 0 +} + +func (x *SurveyStats) GetQuestionStats() map[string]int64 { + if x != nil { + return x.QuestionStats + } + return nil +} + +var File_report_proto protoreflect.FileDescriptor + +const file_report_proto_rawDesc = "" + + "\n" + + "\freport.proto\x12\x06survey\x1a\fblocks.proto\"\xe2\x01\n" + + "\vSurveyStats\x12\x1b\n" + + "\tsurvey_id\x18\x01 \x01(\tR\bsurveyId\x12%\n" + + "\x0eresponse_count\x18\x02 \x01(\x05R\rresponseCount\x12M\n" + + "\x0equestion_stats\x18\x03 \x03(\v2&.survey.SurveyStats.QuestionStatsEntryR\rquestionStats\x1a@\n" + + "\x12QuestionStatsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\x03R\x05value:\x028\x012E\n" + + "\x06Report\x12;\n" + + "\x0eGetSurveyStats\x12\x14.survey.IdentRequest\x1a\x13.survey.SurveyStatsB\n" + + "Z\b.;surveyb\x06proto3" + +var ( + file_report_proto_rawDescOnce sync.Once + file_report_proto_rawDescData []byte +) + +func file_report_proto_rawDescGZIP() []byte { + file_report_proto_rawDescOnce.Do(func() { + file_report_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_report_proto_rawDesc), len(file_report_proto_rawDesc))) + }) + return file_report_proto_rawDescData +} + +var file_report_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_report_proto_goTypes = []any{ + (*SurveyStats)(nil), // 0: survey.SurveyStats + nil, // 1: survey.SurveyStats.QuestionStatsEntry + (*IdentRequest)(nil), // 2: survey.IdentRequest +} +var file_report_proto_depIdxs = []int32{ + 1, // 0: survey.SurveyStats.question_stats:type_name -> survey.SurveyStats.QuestionStatsEntry + 2, // 1: survey.Report.GetSurveyStats:input_type -> survey.IdentRequest + 0, // 2: survey.Report.GetSurveyStats:output_type -> survey.SurveyStats + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_report_proto_init() } +func file_report_proto_init() { + if File_report_proto != nil { + return + } + file_blocks_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_report_proto_rawDesc), len(file_report_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_report_proto_goTypes, + DependencyIndexes: file_report_proto_depIdxs, + MessageInfos: file_report_proto_msgTypes, + }.Build() + File_report_proto = out.File + file_report_proto_goTypes = nil + file_report_proto_depIdxs = nil +} diff --git a/pb/report_grpc.pb.go b/pb/report_grpc.pb.go new file mode 100644 index 0000000..b3d2cb8 --- /dev/null +++ b/pb/report_grpc.pb.go @@ -0,0 +1,125 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v6.30.1 +// source: report.proto + +package survey + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Report_GetSurveyStats_FullMethodName = "/survey.Report/GetSurveyStats" +) + +// ReportClient is the client API for Report service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// 问卷服务 - 统计分析 +type ReportClient interface { + GetSurveyStats(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*SurveyStats, error) +} + +type reportClient struct { + cc grpc.ClientConnInterface +} + +func NewReportClient(cc grpc.ClientConnInterface) ReportClient { + return &reportClient{cc} +} + +func (c *reportClient) GetSurveyStats(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*SurveyStats, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SurveyStats) + err := c.cc.Invoke(ctx, Report_GetSurveyStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ReportServer is the server API for Report service. +// All implementations must embed UnimplementedReportServer +// for forward compatibility. +// +// 问卷服务 - 统计分析 +type ReportServer interface { + GetSurveyStats(context.Context, *IdentRequest) (*SurveyStats, error) + mustEmbedUnimplementedReportServer() +} + +// UnimplementedReportServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedReportServer struct{} + +func (UnimplementedReportServer) GetSurveyStats(context.Context, *IdentRequest) (*SurveyStats, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSurveyStats not implemented") +} +func (UnimplementedReportServer) mustEmbedUnimplementedReportServer() {} +func (UnimplementedReportServer) testEmbeddedByValue() {} + +// UnsafeReportServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ReportServer will +// result in compilation errors. +type UnsafeReportServer interface { + mustEmbedUnimplementedReportServer() +} + +func RegisterReportServer(s grpc.ServiceRegistrar, srv ReportServer) { + // If the following call pancis, it indicates UnimplementedReportServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Report_ServiceDesc, srv) +} + +func _Report_GetSurveyStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IdentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReportServer).GetSurveyStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Report_GetSurveyStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReportServer).GetSurveyStats(ctx, req.(*IdentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Report_ServiceDesc is the grpc.ServiceDesc for Report service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Report_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "survey.Report", + HandlerType: (*ReportServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetSurveyStats", + Handler: _Report_GetSurveyStats_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "report.proto", +} diff --git a/pb/share.pb.go b/pb/share.pb.go new file mode 100644 index 0000000..2d3b245 --- /dev/null +++ b/pb/share.pb.go @@ -0,0 +1,251 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v6.30.1 +// source: share.proto + +package survey + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ListShareReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Data []*ShareItem `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListShareReply) Reset() { + *x = ListShareReply{} + mi := &file_share_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListShareReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListShareReply) ProtoMessage() {} + +func (x *ListShareReply) ProtoReflect() protoreflect.Message { + mi := &file_share_proto_msgTypes[0] + 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 ListShareReply.ProtoReflect.Descriptor instead. +func (*ListShareReply) Descriptor() ([]byte, []int) { + return file_share_proto_rawDescGZIP(), []int{0} +} + +func (x *ListShareReply) GetData() []*ShareItem { + if x != nil { + return x.Data + } + return nil +} + +func (x *ListShareReply) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +// 分享链接 +type ShareItem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // 分享ID + SurveyId string `protobuf:"bytes,2,opt,name=survey_id,json=surveyId,proto3" json:"survey_id,omitempty"` // 问卷ID + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` // 分享URL + CreatorId string `protobuf:"bytes,4,opt,name=creator_id,json=creatorId,proto3" json:"creator_id,omitempty"` // 创建者ID + ExpiresAt int64 `protobuf:"varint,6,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` // 过期时间 + MaxResponses int32 `protobuf:"varint,7,opt,name=max_responses,json=maxResponses,proto3" json:"max_responses,omitempty"` // 最大回答数(0表示不限) + IsActive bool `protobuf:"varint,8,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` // 是否激活 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ShareItem) Reset() { + *x = ShareItem{} + mi := &file_share_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ShareItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShareItem) ProtoMessage() {} + +func (x *ShareItem) ProtoReflect() protoreflect.Message { + mi := &file_share_proto_msgTypes[1] + 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 ShareItem.ProtoReflect.Descriptor instead. +func (*ShareItem) Descriptor() ([]byte, []int) { + return file_share_proto_rawDescGZIP(), []int{1} +} + +func (x *ShareItem) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ShareItem) GetSurveyId() string { + if x != nil { + return x.SurveyId + } + return "" +} + +func (x *ShareItem) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *ShareItem) GetCreatorId() string { + if x != nil { + return x.CreatorId + } + return "" +} + +func (x *ShareItem) GetExpiresAt() int64 { + if x != nil { + return x.ExpiresAt + } + return 0 +} + +func (x *ShareItem) GetMaxResponses() int32 { + if x != nil { + return x.MaxResponses + } + return 0 +} + +func (x *ShareItem) GetIsActive() bool { + if x != nil { + return x.IsActive + } + return false +} + +var File_share_proto protoreflect.FileDescriptor + +const file_share_proto_rawDesc = "" + + "\n" + + "\vshare.proto\x12\x06survey\x1a\fblocks.proto\"M\n" + + "\x0eListShareReply\x12%\n" + + "\x04data\x18\x01 \x03(\v2\x11.survey.ShareItemR\x04data\x12\x14\n" + + "\x05count\x18\x02 \x01(\x03R\x05count\"\xca\x01\n" + + "\tShareItem\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" + + "\tsurvey_id\x18\x02 \x01(\tR\bsurveyId\x12\x10\n" + + "\x03url\x18\x03 \x01(\tR\x03url\x12\x1d\n" + + "\n" + + "creator_id\x18\x04 \x01(\tR\tcreatorId\x12\x1d\n" + + "\n" + + "expires_at\x18\x06 \x01(\x03R\texpiresAt\x12#\n" + + "\rmax_responses\x18\a \x01(\x05R\fmaxResponses\x12\x1b\n" + + "\tis_active\x18\b \x01(\bR\bisActive2\xaa\x01\n" + + "\x05Share\x123\n" + + "\x06Create\x12\x14.survey.IdentRequest\x1a\x13.survey.StatusReply\x125\n" + + "\x05Fetch\x12\x14.survey.FetchRequest\x1a\x16.survey.ListShareReply\x125\n" + + "\tSetStatus\x12\x13.survey.StatusReply\x1a\x13.survey.StatusReplyB\n" + + "Z\b.;surveyb\x06proto3" + +var ( + file_share_proto_rawDescOnce sync.Once + file_share_proto_rawDescData []byte +) + +func file_share_proto_rawDescGZIP() []byte { + file_share_proto_rawDescOnce.Do(func() { + file_share_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_share_proto_rawDesc), len(file_share_proto_rawDesc))) + }) + return file_share_proto_rawDescData +} + +var file_share_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_share_proto_goTypes = []any{ + (*ListShareReply)(nil), // 0: survey.ListShareReply + (*ShareItem)(nil), // 1: survey.ShareItem + (*IdentRequest)(nil), // 2: survey.IdentRequest + (*FetchRequest)(nil), // 3: survey.FetchRequest + (*StatusReply)(nil), // 4: survey.StatusReply +} +var file_share_proto_depIdxs = []int32{ + 1, // 0: survey.ListShareReply.data:type_name -> survey.ShareItem + 2, // 1: survey.Share.Create:input_type -> survey.IdentRequest + 3, // 2: survey.Share.Fetch:input_type -> survey.FetchRequest + 4, // 3: survey.Share.SetStatus:input_type -> survey.StatusReply + 4, // 4: survey.Share.Create:output_type -> survey.StatusReply + 0, // 5: survey.Share.Fetch:output_type -> survey.ListShareReply + 4, // 6: survey.Share.SetStatus:output_type -> survey.StatusReply + 4, // [4:7] is the sub-list for method output_type + 1, // [1:4] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_share_proto_init() } +func file_share_proto_init() { + if File_share_proto != nil { + return + } + file_blocks_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_share_proto_rawDesc), len(file_share_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_share_proto_goTypes, + DependencyIndexes: file_share_proto_depIdxs, + MessageInfos: file_share_proto_msgTypes, + }.Build() + File_share_proto = out.File + file_share_proto_goTypes = nil + file_share_proto_depIdxs = nil +} diff --git a/pb/share_grpc.pb.go b/pb/share_grpc.pb.go new file mode 100644 index 0000000..8fd00a1 --- /dev/null +++ b/pb/share_grpc.pb.go @@ -0,0 +1,201 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v6.30.1 +// source: share.proto + +package survey + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Share_Create_FullMethodName = "/survey.Share/Create" + Share_Fetch_FullMethodName = "/survey.Share/Fetch" + Share_SetStatus_FullMethodName = "/survey.Share/SetStatus" +) + +// ShareClient is the client API for Share service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// 问卷服务 - 分享管理 +type ShareClient interface { + Create(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) + Fetch(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*ListShareReply, error) + SetStatus(ctx context.Context, in *StatusReply, opts ...grpc.CallOption) (*StatusReply, error) +} + +type shareClient struct { + cc grpc.ClientConnInterface +} + +func NewShareClient(cc grpc.ClientConnInterface) ShareClient { + return &shareClient{cc} +} + +func (c *shareClient) Create(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatusReply) + err := c.cc.Invoke(ctx, Share_Create_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *shareClient) Fetch(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*ListShareReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListShareReply) + err := c.cc.Invoke(ctx, Share_Fetch_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *shareClient) SetStatus(ctx context.Context, in *StatusReply, opts ...grpc.CallOption) (*StatusReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatusReply) + err := c.cc.Invoke(ctx, Share_SetStatus_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ShareServer is the server API for Share service. +// All implementations must embed UnimplementedShareServer +// for forward compatibility. +// +// 问卷服务 - 分享管理 +type ShareServer interface { + Create(context.Context, *IdentRequest) (*StatusReply, error) + Fetch(context.Context, *FetchRequest) (*ListShareReply, error) + SetStatus(context.Context, *StatusReply) (*StatusReply, error) + mustEmbedUnimplementedShareServer() +} + +// UnimplementedShareServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedShareServer struct{} + +func (UnimplementedShareServer) Create(context.Context, *IdentRequest) (*StatusReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedShareServer) Fetch(context.Context, *FetchRequest) (*ListShareReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Fetch not implemented") +} +func (UnimplementedShareServer) SetStatus(context.Context, *StatusReply) (*StatusReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetStatus not implemented") +} +func (UnimplementedShareServer) mustEmbedUnimplementedShareServer() {} +func (UnimplementedShareServer) testEmbeddedByValue() {} + +// UnsafeShareServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ShareServer will +// result in compilation errors. +type UnsafeShareServer interface { + mustEmbedUnimplementedShareServer() +} + +func RegisterShareServer(s grpc.ServiceRegistrar, srv ShareServer) { + // If the following call pancis, it indicates UnimplementedShareServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Share_ServiceDesc, srv) +} + +func _Share_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IdentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ShareServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Share_Create_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ShareServer).Create(ctx, req.(*IdentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Share_Fetch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FetchRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ShareServer).Fetch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Share_Fetch_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ShareServer).Fetch(ctx, req.(*FetchRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Share_SetStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatusReply) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ShareServer).SetStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Share_SetStatus_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ShareServer).SetStatus(ctx, req.(*StatusReply)) + } + return interceptor(ctx, in, info, handler) +} + +// Share_ServiceDesc is the grpc.ServiceDesc for Share service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Share_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "survey.Share", + HandlerType: (*ShareServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _Share_Create_Handler, + }, + { + MethodName: "Fetch", + Handler: _Share_Fetch_Handler, + }, + { + MethodName: "SetStatus", + Handler: _Share_SetStatus_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "share.proto", +} diff --git a/pb/survey.pb.go b/pb/survey.pb.go new file mode 100644 index 0000000..9d01add --- /dev/null +++ b/pb/survey.pb.go @@ -0,0 +1,154 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v6.30.1 +// source: survey.proto + +package survey + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ListSurveyReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Data []*SurveyItem `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListSurveyReply) Reset() { + *x = ListSurveyReply{} + mi := &file_survey_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListSurveyReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListSurveyReply) ProtoMessage() {} + +func (x *ListSurveyReply) ProtoReflect() protoreflect.Message { + mi := &file_survey_proto_msgTypes[0] + 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 ListSurveyReply.ProtoReflect.Descriptor instead. +func (*ListSurveyReply) Descriptor() ([]byte, []int) { + return file_survey_proto_rawDescGZIP(), []int{0} +} + +func (x *ListSurveyReply) GetData() []*SurveyItem { + if x != nil { + return x.Data + } + return nil +} + +func (x *ListSurveyReply) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +var File_survey_proto protoreflect.FileDescriptor + +const file_survey_proto_rawDesc = "" + + "\n" + + "\fsurvey.proto\x12\x06survey\x1a\fblocks.proto\"O\n" + + "\x0fListSurveyReply\x12&\n" + + "\x04data\x18\x01 \x03(\v2\x12.survey.SurveyItemR\x04data\x12\x14\n" + + "\x05count\x18\x02 \x01(\x03R\x05count2\x8c\x02\n" + + "\x06Survey\x121\n" + + "\x06Create\x12\x12.survey.SurveyItem\x1a\x13.survey.StatusReply\x12/\n" + + "\x03Get\x12\x14.survey.IdentRequest\x1a\x12.survey.SurveyItem\x121\n" + + "\x06Update\x12\x12.survey.SurveyItem\x1a\x13.survey.StatusReply\x123\n" + + "\x06Delete\x12\x14.survey.IdentRequest\x1a\x13.survey.StatusReply\x126\n" + + "\x05Fetch\x12\x14.survey.FetchRequest\x1a\x17.survey.ListSurveyReplyB\n" + + "Z\b.;surveyb\x06proto3" + +var ( + file_survey_proto_rawDescOnce sync.Once + file_survey_proto_rawDescData []byte +) + +func file_survey_proto_rawDescGZIP() []byte { + file_survey_proto_rawDescOnce.Do(func() { + file_survey_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_survey_proto_rawDesc), len(file_survey_proto_rawDesc))) + }) + return file_survey_proto_rawDescData +} + +var file_survey_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_survey_proto_goTypes = []any{ + (*ListSurveyReply)(nil), // 0: survey.ListSurveyReply + (*SurveyItem)(nil), // 1: survey.SurveyItem + (*IdentRequest)(nil), // 2: survey.IdentRequest + (*FetchRequest)(nil), // 3: survey.FetchRequest + (*StatusReply)(nil), // 4: survey.StatusReply +} +var file_survey_proto_depIdxs = []int32{ + 1, // 0: survey.ListSurveyReply.data:type_name -> survey.SurveyItem + 1, // 1: survey.Survey.Create:input_type -> survey.SurveyItem + 2, // 2: survey.Survey.Get:input_type -> survey.IdentRequest + 1, // 3: survey.Survey.Update:input_type -> survey.SurveyItem + 2, // 4: survey.Survey.Delete:input_type -> survey.IdentRequest + 3, // 5: survey.Survey.Fetch:input_type -> survey.FetchRequest + 4, // 6: survey.Survey.Create:output_type -> survey.StatusReply + 1, // 7: survey.Survey.Get:output_type -> survey.SurveyItem + 4, // 8: survey.Survey.Update:output_type -> survey.StatusReply + 4, // 9: survey.Survey.Delete:output_type -> survey.StatusReply + 0, // 10: survey.Survey.Fetch:output_type -> survey.ListSurveyReply + 6, // [6:11] is the sub-list for method output_type + 1, // [1:6] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_survey_proto_init() } +func file_survey_proto_init() { + if File_survey_proto != nil { + return + } + file_blocks_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_survey_proto_rawDesc), len(file_survey_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_survey_proto_goTypes, + DependencyIndexes: file_survey_proto_depIdxs, + MessageInfos: file_survey_proto_msgTypes, + }.Build() + File_survey_proto = out.File + file_survey_proto_goTypes = nil + file_survey_proto_depIdxs = nil +} diff --git a/pb/survey_grpc.pb.go b/pb/survey_grpc.pb.go new file mode 100644 index 0000000..b1a4998 --- /dev/null +++ b/pb/survey_grpc.pb.go @@ -0,0 +1,277 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v6.30.1 +// source: survey.proto + +package survey + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Survey_Create_FullMethodName = "/survey.Survey/Create" + Survey_Get_FullMethodName = "/survey.Survey/Get" + Survey_Update_FullMethodName = "/survey.Survey/Update" + Survey_Delete_FullMethodName = "/survey.Survey/Delete" + Survey_Fetch_FullMethodName = "/survey.Survey/Fetch" +) + +// SurveyClient is the client API for Survey service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// 问卷服务 - 问卷管理 +type SurveyClient interface { + Create(ctx context.Context, in *SurveyItem, opts ...grpc.CallOption) (*StatusReply, error) + Get(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*SurveyItem, error) + Update(ctx context.Context, in *SurveyItem, opts ...grpc.CallOption) (*StatusReply, error) + Delete(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) + Fetch(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*ListSurveyReply, error) +} + +type surveyClient struct { + cc grpc.ClientConnInterface +} + +func NewSurveyClient(cc grpc.ClientConnInterface) SurveyClient { + return &surveyClient{cc} +} + +func (c *surveyClient) Create(ctx context.Context, in *SurveyItem, opts ...grpc.CallOption) (*StatusReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatusReply) + err := c.cc.Invoke(ctx, Survey_Create_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *surveyClient) Get(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*SurveyItem, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SurveyItem) + err := c.cc.Invoke(ctx, Survey_Get_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *surveyClient) Update(ctx context.Context, in *SurveyItem, opts ...grpc.CallOption) (*StatusReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatusReply) + err := c.cc.Invoke(ctx, Survey_Update_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *surveyClient) Delete(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatusReply) + err := c.cc.Invoke(ctx, Survey_Delete_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *surveyClient) Fetch(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*ListSurveyReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListSurveyReply) + err := c.cc.Invoke(ctx, Survey_Fetch_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// SurveyServer is the server API for Survey service. +// All implementations must embed UnimplementedSurveyServer +// for forward compatibility. +// +// 问卷服务 - 问卷管理 +type SurveyServer interface { + Create(context.Context, *SurveyItem) (*StatusReply, error) + Get(context.Context, *IdentRequest) (*SurveyItem, error) + Update(context.Context, *SurveyItem) (*StatusReply, error) + Delete(context.Context, *IdentRequest) (*StatusReply, error) + Fetch(context.Context, *FetchRequest) (*ListSurveyReply, error) + mustEmbedUnimplementedSurveyServer() +} + +// UnimplementedSurveyServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedSurveyServer struct{} + +func (UnimplementedSurveyServer) Create(context.Context, *SurveyItem) (*StatusReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedSurveyServer) Get(context.Context, *IdentRequest) (*SurveyItem, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedSurveyServer) Update(context.Context, *SurveyItem) (*StatusReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") +} +func (UnimplementedSurveyServer) Delete(context.Context, *IdentRequest) (*StatusReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedSurveyServer) Fetch(context.Context, *FetchRequest) (*ListSurveyReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Fetch not implemented") +} +func (UnimplementedSurveyServer) mustEmbedUnimplementedSurveyServer() {} +func (UnimplementedSurveyServer) testEmbeddedByValue() {} + +// UnsafeSurveyServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to SurveyServer will +// result in compilation errors. +type UnsafeSurveyServer interface { + mustEmbedUnimplementedSurveyServer() +} + +func RegisterSurveyServer(s grpc.ServiceRegistrar, srv SurveyServer) { + // If the following call pancis, it indicates UnimplementedSurveyServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Survey_ServiceDesc, srv) +} + +func _Survey_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SurveyItem) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SurveyServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Survey_Create_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SurveyServer).Create(ctx, req.(*SurveyItem)) + } + return interceptor(ctx, in, info, handler) +} + +func _Survey_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IdentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SurveyServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Survey_Get_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SurveyServer).Get(ctx, req.(*IdentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Survey_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SurveyItem) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SurveyServer).Update(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Survey_Update_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SurveyServer).Update(ctx, req.(*SurveyItem)) + } + return interceptor(ctx, in, info, handler) +} + +func _Survey_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IdentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SurveyServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Survey_Delete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SurveyServer).Delete(ctx, req.(*IdentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Survey_Fetch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FetchRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SurveyServer).Fetch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Survey_Fetch_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SurveyServer).Fetch(ctx, req.(*FetchRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Survey_ServiceDesc is the grpc.ServiceDesc for Survey service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Survey_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "survey.Survey", + HandlerType: (*SurveyServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _Survey_Create_Handler, + }, + { + MethodName: "Get", + Handler: _Survey_Get_Handler, + }, + { + MethodName: "Update", + Handler: _Survey_Update_Handler, + }, + { + MethodName: "Delete", + Handler: _Survey_Delete_Handler, + }, + { + MethodName: "Fetch", + Handler: _Survey_Fetch_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "survey.proto", +} diff --git a/pb/tags.pb.go b/pb/tags.pb.go deleted file mode 100644 index fcb1879..0000000 --- a/pb/tags.pb.go +++ /dev/null @@ -1,247 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.6 -// protoc v6.30.1 -// source: tags.proto - -package content - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// 无限极标签 -type TagsItem struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` - ParentIdentity string `protobuf:"bytes,2,opt,name=parent_identity,json=parentIdentity,proto3" json:"parent_identity,omitempty"` // 为空表示顶级主题 - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` - CoverPath string `protobuf:"bytes,4,opt,name=cover_path,json=coverPath,proto3" json:"cover_path,omitempty"` - Intro string `protobuf:"bytes,5,opt,name=intro,proto3" json:"intro,omitempty"` - List []*TagsItem `protobuf:"bytes,9,rep,name=list,proto3" json:"list,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TagsItem) Reset() { - *x = TagsItem{} - mi := &file_tags_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TagsItem) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TagsItem) ProtoMessage() {} - -func (x *TagsItem) ProtoReflect() protoreflect.Message { - mi := &file_tags_proto_msgTypes[0] - 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 TagsItem.ProtoReflect.Descriptor instead. -func (*TagsItem) Descriptor() ([]byte, []int) { - return file_tags_proto_rawDescGZIP(), []int{0} -} - -func (x *TagsItem) GetIdentity() string { - if x != nil { - return x.Identity - } - return "" -} - -func (x *TagsItem) GetParentIdentity() string { - if x != nil { - return x.ParentIdentity - } - return "" -} - -func (x *TagsItem) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *TagsItem) GetCoverPath() string { - if x != nil { - return x.CoverPath - } - return "" -} - -func (x *TagsItem) GetIntro() string { - if x != nil { - return x.Intro - } - return "" -} - -func (x *TagsItem) GetList() []*TagsItem { - if x != nil { - return x.List - } - return nil -} - -type TagsListReply struct { - state protoimpl.MessageState `protogen:"open.v1"` - List []*TagsItem `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` - Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TagsListReply) Reset() { - *x = TagsListReply{} - mi := &file_tags_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TagsListReply) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TagsListReply) ProtoMessage() {} - -func (x *TagsListReply) ProtoReflect() protoreflect.Message { - mi := &file_tags_proto_msgTypes[1] - 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 TagsListReply.ProtoReflect.Descriptor instead. -func (*TagsListReply) Descriptor() ([]byte, []int) { - return file_tags_proto_rawDescGZIP(), []int{1} -} - -func (x *TagsListReply) GetList() []*TagsItem { - if x != nil { - return x.List - } - return nil -} - -func (x *TagsListReply) GetCount() int64 { - if x != nil { - return x.Count - } - return 0 -} - -var File_tags_proto protoreflect.FileDescriptor - -const file_tags_proto_rawDesc = "" + - "\n" + - "\n" + - "tags.proto\x12\acontent\x1a\fblocks.proto\"\xc1\x01\n" + - "\bTagsItem\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity\x12'\n" + - "\x0fparent_identity\x18\x02 \x01(\tR\x0eparentIdentity\x12\x14\n" + - "\x05title\x18\x03 \x01(\tR\x05title\x12\x1d\n" + - "\n" + - "cover_path\x18\x04 \x01(\tR\tcoverPath\x12\x14\n" + - "\x05intro\x18\x05 \x01(\tR\x05intro\x12%\n" + - "\x04list\x18\t \x03(\v2\x11.content.TagsItemR\x04list\"L\n" + - "\rTagsListReply\x12%\n" + - "\x04list\x18\x01 \x03(\v2\x11.content.TagsItemR\x04list\x12\x14\n" + - "\x05count\x18\x02 \x01(\x03R\x05count2\xef\x01\n" + - "\x04Tags\x12;\n" + - "\bTagsList\x12\x15.content.IdentRequest\x1a\x16.content.TagsListReply\"\x00\x124\n" + - "\aAddTags\x12\x11.content.TagsItem\x1a\x14.content.StatusReply\"\x00\x127\n" + - "\n" + - "ModifyTags\x12\x11.content.TagsItem\x1a\x14.content.StatusReply\"\x00\x12;\n" + - "\n" + - "DeleteTags\x12\x15.content.IdentRequest\x1a\x14.content.StatusReply\"\x00B\fZ\n" + - "./;contentb\x06proto3" - -var ( - file_tags_proto_rawDescOnce sync.Once - file_tags_proto_rawDescData []byte -) - -func file_tags_proto_rawDescGZIP() []byte { - file_tags_proto_rawDescOnce.Do(func() { - file_tags_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_tags_proto_rawDesc), len(file_tags_proto_rawDesc))) - }) - return file_tags_proto_rawDescData -} - -var file_tags_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_tags_proto_goTypes = []any{ - (*TagsItem)(nil), // 0: content.TagsItem - (*TagsListReply)(nil), // 1: content.TagsListReply - (*IdentRequest)(nil), // 2: content.IdentRequest - (*StatusReply)(nil), // 3: content.StatusReply -} -var file_tags_proto_depIdxs = []int32{ - 0, // 0: content.TagsItem.list:type_name -> content.TagsItem - 0, // 1: content.TagsListReply.list:type_name -> content.TagsItem - 2, // 2: content.Tags.TagsList:input_type -> content.IdentRequest - 0, // 3: content.Tags.AddTags:input_type -> content.TagsItem - 0, // 4: content.Tags.ModifyTags:input_type -> content.TagsItem - 2, // 5: content.Tags.DeleteTags:input_type -> content.IdentRequest - 1, // 6: content.Tags.TagsList:output_type -> content.TagsListReply - 3, // 7: content.Tags.AddTags:output_type -> content.StatusReply - 3, // 8: content.Tags.ModifyTags:output_type -> content.StatusReply - 3, // 9: content.Tags.DeleteTags:output_type -> content.StatusReply - 6, // [6:10] is the sub-list for method output_type - 2, // [2:6] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_tags_proto_init() } -func file_tags_proto_init() { - if File_tags_proto != nil { - return - } - file_blocks_proto_init() - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_tags_proto_rawDesc), len(file_tags_proto_rawDesc)), - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_tags_proto_goTypes, - DependencyIndexes: file_tags_proto_depIdxs, - MessageInfos: file_tags_proto_msgTypes, - }.Build() - File_tags_proto = out.File - file_tags_proto_goTypes = nil - file_tags_proto_depIdxs = nil -} diff --git a/pb/tags_grpc.pb.go b/pb/tags_grpc.pb.go deleted file mode 100644 index c3f2c7c..0000000 --- a/pb/tags_grpc.pb.go +++ /dev/null @@ -1,247 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc v6.30.1 -// source: tags.proto - -package content - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - Tags_TagsList_FullMethodName = "/content.Tags/TagsList" - Tags_AddTags_FullMethodName = "/content.Tags/AddTags" - Tags_ModifyTags_FullMethodName = "/content.Tags/ModifyTags" - Tags_DeleteTags_FullMethodName = "/content.Tags/DeleteTags" -) - -// TagsClient is the client API for Tags service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -// -// 标签 -type TagsClient interface { - // 标签列表 - TagsList(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*TagsListReply, error) - // 创建标签 - AddTags(ctx context.Context, in *TagsItem, opts ...grpc.CallOption) (*StatusReply, error) - // 修改标签 - ModifyTags(ctx context.Context, in *TagsItem, opts ...grpc.CallOption) (*StatusReply, error) - // 删除标签 - DeleteTags(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) -} - -type tagsClient struct { - cc grpc.ClientConnInterface -} - -func NewTagsClient(cc grpc.ClientConnInterface) TagsClient { - return &tagsClient{cc} -} - -func (c *tagsClient) TagsList(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*TagsListReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TagsListReply) - err := c.cc.Invoke(ctx, Tags_TagsList_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tagsClient) AddTags(ctx context.Context, in *TagsItem, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Tags_AddTags_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tagsClient) ModifyTags(ctx context.Context, in *TagsItem, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Tags_ModifyTags_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tagsClient) DeleteTags(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatusReply) - err := c.cc.Invoke(ctx, Tags_DeleteTags_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// TagsServer is the server API for Tags service. -// All implementations must embed UnimplementedTagsServer -// for forward compatibility. -// -// 标签 -type TagsServer interface { - // 标签列表 - TagsList(context.Context, *IdentRequest) (*TagsListReply, error) - // 创建标签 - AddTags(context.Context, *TagsItem) (*StatusReply, error) - // 修改标签 - ModifyTags(context.Context, *TagsItem) (*StatusReply, error) - // 删除标签 - DeleteTags(context.Context, *IdentRequest) (*StatusReply, error) - mustEmbedUnimplementedTagsServer() -} - -// UnimplementedTagsServer must be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedTagsServer struct{} - -func (UnimplementedTagsServer) TagsList(context.Context, *IdentRequest) (*TagsListReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method TagsList not implemented") -} -func (UnimplementedTagsServer) AddTags(context.Context, *TagsItem) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddTags not implemented") -} -func (UnimplementedTagsServer) ModifyTags(context.Context, *TagsItem) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method ModifyTags not implemented") -} -func (UnimplementedTagsServer) DeleteTags(context.Context, *IdentRequest) (*StatusReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteTags not implemented") -} -func (UnimplementedTagsServer) mustEmbedUnimplementedTagsServer() {} -func (UnimplementedTagsServer) testEmbeddedByValue() {} - -// UnsafeTagsServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to TagsServer will -// result in compilation errors. -type UnsafeTagsServer interface { - mustEmbedUnimplementedTagsServer() -} - -func RegisterTagsServer(s grpc.ServiceRegistrar, srv TagsServer) { - // If the following call pancis, it indicates UnimplementedTagsServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&Tags_ServiceDesc, srv) -} - -func _Tags_TagsList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(IdentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TagsServer).TagsList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Tags_TagsList_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TagsServer).TagsList(ctx, req.(*IdentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Tags_AddTags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TagsItem) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TagsServer).AddTags(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Tags_AddTags_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TagsServer).AddTags(ctx, req.(*TagsItem)) - } - return interceptor(ctx, in, info, handler) -} - -func _Tags_ModifyTags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TagsItem) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TagsServer).ModifyTags(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Tags_ModifyTags_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TagsServer).ModifyTags(ctx, req.(*TagsItem)) - } - return interceptor(ctx, in, info, handler) -} - -func _Tags_DeleteTags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(IdentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TagsServer).DeleteTags(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Tags_DeleteTags_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TagsServer).DeleteTags(ctx, req.(*IdentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// Tags_ServiceDesc is the grpc.ServiceDesc for Tags service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var Tags_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "content.Tags", - HandlerType: (*TagsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "TagsList", - Handler: _Tags_TagsList_Handler, - }, - { - MethodName: "AddTags", - Handler: _Tags_AddTags_Handler, - }, - { - MethodName: "ModifyTags", - Handler: _Tags_ModifyTags_Handler, - }, - { - MethodName: "DeleteTags", - Handler: _Tags_DeleteTags_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "tags.proto", -} diff --git a/proto/answer.proto b/proto/answer.proto new file mode 100644 index 0000000..4aa5b75 --- /dev/null +++ b/proto/answer.proto @@ -0,0 +1,28 @@ +syntax = "proto3"; +package survey; +option go_package = ".;survey"; +import "blocks.proto"; + +// 问卷服务 - 答卷管理 +service Answer { + rpc Submit (SubmitAnswerRequest) returns (StatusReply); + rpc BySurvey (IdentRequest) returns (ListAnswerReply); +} + +message SubmitAnswerRequest { + string survey_id = 1; + string owner_id = 2; // 答题者ID + repeated AnswerItem answer = 3; // 答题 + string ip_address = 4; + string user_agent = 5; +} + +message AnswerItem { + string question_id = 1; + repeated string answer = 2; +} + +message ListAnswerReply { + repeated AnswerItem data = 1; + int64 count = 2; +} \ No newline at end of file diff --git a/proto/blocks.proto b/proto/blocks.proto index b9eeed8..fced7f6 100644 --- a/proto/blocks.proto +++ b/proto/blocks.proto @@ -1,6 +1,10 @@ syntax = "proto3"; -package content; -option go_package = "./;content"; +package survey; +option go_package = ".;survey"; + + +message Empty{ +} message FetchRequest { int64 page_no=1; // 页数 @@ -30,5 +34,52 @@ message StatusReply{ int64 timeseq=4; // 响应时间序列 } -message Empty{ + +// 问卷基本信息 +message SurveyItem { + string id = 1; // 问卷ID + string title = 2; // 问卷标题 + string description = 3; // 问卷描述 + string creator_id = 4; // 创建者ID + string start_time = 5; // 开始时间 + string end_time = 6; // 结束时间 + bool is_active = 7; // 是否激活 + bool is_anonymous = 8; // 是否匿名 + repeated QuestionItem questions = 9; // 问题列表 + repeated string tags = 10; // 标签 + string style_config = 11; // 样式配置(JSON) + } + +// 问题类型 +enum QuestionType { + SINGLE_CHOICE = 0; // 单选题 + MULTIPLE_CHOICE = 1; // 多选题 + TEXT = 2; // 文本题 + SCALE = 3; // 量表题 + RANKING = 4; // 排序题 + DATE = 5; // 日期题 +} + +// 问题定义 +message QuestionItem { + string id = 1; // 问题ID + string survey_id = 2; // 所属问卷ID + string title = 3; // 问题标题 + string description = 4; // 问题描述 + QuestionType type = 5; // 问题类型 + bool is_required = 6; // 是否必答 + repeated Option options = 7; // 选项(适用于选择题) + int32 min_selections = 8; // 最少选择数(多选题) + int32 max_selections = 9; // 最多选择数(多选题) + int32 order = 10; // 问题顺序 + string placeholder = 11; // 输入提示(文本题) +} + +// 问题选项 +message Option { + string id = 1; // 选项ID + string text = 2; // 选项文本 + int32 order = 3; // 选项顺序 + string image_url = 4; // 选项图片 + int32 score = 5; // 选项分数(适用于量表) } \ No newline at end of file diff --git a/proto/category.proto b/proto/category.proto deleted file mode 100644 index 6e35cee..0000000 --- a/proto/category.proto +++ /dev/null @@ -1,59 +0,0 @@ -syntax = "proto3"; -package content; -option go_package = "./;content"; -import "blocks.proto"; - -// 系统分类 -service Category { - //分类列表 - rpc CategoryList (Empty) returns (CategoryListReply) {}; - rpc AddCategory (AddCategoryRequest) returns (AddCategoryResponse) {}; - rpc ModifyCategory (ModifyCategoryRequest) returns (Empty) {}; - rpc DeleteCategory (DeleteCategoryRequest) returns (Empty) {}; -} - -// 无限极分类 -message CategoryItem{ - string identity = 1; - string parent_identity = 2; // 为空表示顶级分类 - string title = 3; - string cover_path = 4; - string intro=5; - string created_at = 6; - string updated_at = 7; - repeated CategoryItem data = 8; -} - -message CategoryListReply { - repeated CategoryItem data = 1; - int64 count = 2; -} - -message AddCategoryResponse{ - string identity = 1; // 新增数据的唯一码 -} - -message AddCategoryRequest{ - string identity = 1; // - string parent_identity = 2; // 为空表示顶级分类 - string title = 3; - string cover_path = 4; - string intro=5; - string created_at = 6; - string updated_at = 7; - repeated CategoryItem data = 8; -} -message ModifyCategoryRequest{ - string identity = 1; // - string parent_identity = 2; // 为空表示顶级分类 - string title = 3; - string cover_path = 4; - string intro=5; - string created_at = 6; - string updated_at = 7; - repeated CategoryItem data = 8; -} - -message DeleteCategoryRequest{ - string identity = 1; // -} \ No newline at end of file diff --git a/proto/post.proto b/proto/post.proto deleted file mode 100644 index 5f528f0..0000000 --- a/proto/post.proto +++ /dev/null @@ -1,133 +0,0 @@ -syntax = "proto3"; -package content; -option go_package = "./;content"; -import "blocks.proto"; - -// 正文 -service Post{ - //文章列表 - rpc PostList(PostListRequest) returns (PostListReply) {}; - - //获取文章详情 - rpc GetPost (GetPostRequest) returns (PostItem) {}; - - //发布文章 - rpc AddPost(PostItem) returns (StatusReply) {}; - - //修改文章 - rpc ModifyPost(PostItem) returns (StatusReply) {}; - - //删除文章 - rpc DeletePost(IdentRequest) returns (StatusReply) {}; - - // 文章点赞处理 - rpc IncrPostLike(PostOpIdentityRequest) returns (StatusReply) {}; - rpc DescPostLike(PostOpIdentityRequest) returns (StatusReply) {}; - - // 文章点踩处理 - rpc IncrPostUnlike(PostOpIdentityRequest) returns (StatusReply) {}; - rpc DescPostUnlike(PostOpIdentityRequest) returns (StatusReply) {}; - - //评论列表 - rpc CommentList(CommentListRequest) returns (CommentListResponse) {}; - - //发布评论 - rpc AddComment(CommentItem) returns (StatusReply) {}; - - //修改评论 - rpc ModifyComment(CommentItem) returns (StatusReply) {}; - - //删除评论 - rpc DeleteComment(DeleteCommentRequest) returns (StatusReply) {}; - - // 评论点赞处理 - rpc IncrCommentLike(CommentOpIdentityRequest) returns (StatusReply) {}; - rpc DescCommentLike(CommentOpIdentityRequest) returns (StatusReply) {}; - - // 评论点踩处理 - rpc IncrCommentUnlike(CommentOpIdentityRequest) returns (StatusReply) {}; - rpc DescCommentUnlike(CommentOpIdentityRequest) returns (StatusReply) {}; - } -message DeleteCommentRequest{ - string identity = 1; // 需要删除的评论的唯一标识 - string post_identity = 2; // 文章唯一标识 -} -message PostItem{ - string identity = 1; // 文章唯一标识 - int64 passport_id =2; // 作者ID - string passport_identity =3; // 作者唯一标识 - repeated string category_identity_list = 4; //所属分类Identity 列表 - repeated string tags_identity_list = 5; // 标签集 - string title = 6; - string cover_path = 7; //封面 - string author = 8; - string content = 9; - string target_url = 10;// 跳转目标地址 - string source_url = 11; // 文章来源地址 - int64 hits = 12; //点击量 - repeated string accessory = 13; //附件列表 - bool has_accessory = 14;//是否有附件,默认没有 - string created_at=15; - string updated_at=16; - string description = 17;//简介 - int64 like_hits = 18; //点赞量 - int64 unlike_hits = 19; //点踩量 - int64 comment_hits = 20; //评论量 - int32 type = 22;// 用户自定义文章类型 - string rights=23; //权限 -} - - - message PostListRequest{ - int64 page = 1; // 页码,默认第一页 - int64 size = 2; // 单页显示数量,默认10,最多50 - string author_identity = 3; //发布者唯一标识,可选 - string category_identity = 4; // 文章类型,可选 - string keyword = 5;// 根据文章名称模糊查找 - int32 type = 6;// 根据用户自定义文章类型过滤,可选,默认0,全部查找 - -} -message PostListReply{ - repeated PostItem data = 1; - int64 count = 2; -} - -message GetPostRequest { - string identity = 1; // 必传 - string author_identity = 2; // 必传 -} - -message CommentItem { - string identity = 1; - string Post_identity = 2; - string parent_identity = 3; - string content = 4; - string reply_identity = 5;// 回复者唯一 标识 - string created_at = 6; - string updated_at = 7; - repeated CommentItem list = 8;//回复列表 - int64 like_hits = 9; //点赞量 - int64 unlike_hits = 10; //点踩量 - int64 comment_hits = 11; //评论量 -} - -message CommentListRequest{ - string Post_identity = 1;//必填 - int64 page = 2; // 页码,默认第一页 - int64 size = 3; // 单页显示数量,默认10,最多50 -} - -message CommentListResponse{ - repeated CommentItem list =1; - int64 count = 2; -} - -message PostOpIdentityRequest{ - string post_identity = 1; //必传 - string op_identity = 2; // 必传 -} - -message CommentOpIdentityRequest{ - string comment_identity = 1; //必填 - string op_identity = 2;//必填 -} \ No newline at end of file diff --git a/proto/question.proto b/proto/question.proto new file mode 100644 index 0000000..610e6f0 --- /dev/null +++ b/proto/question.proto @@ -0,0 +1,23 @@ +syntax = "proto3"; +package survey; +option go_package = ".;survey"; +import "blocks.proto"; + +// 问卷服务 - 问题管理 +service Question { + rpc Add (QuestionItem) returns (StatusReply); + rpc Update (QuestionItem) returns (StatusReply); + rpc Delete (IdentRequest) returns (StatusReply); + rpc Fetch (FetchRequest) returns (ListQuestionReply); + rpc BySurvey (BySurveyRequest) returns (ListQuestionReply); +} + +message BySurveyRequest { + string survey_id = 1; + repeated string question_ids = 2; // 按顺序排列的问题ID +} + +message ListQuestionReply { + repeated QuestionItem data = 1; + int64 count = 2; +} \ No newline at end of file diff --git a/proto/report.proto b/proto/report.proto new file mode 100644 index 0000000..6ad7fc1 --- /dev/null +++ b/proto/report.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; +package survey; +option go_package = ".;survey"; +import "blocks.proto"; + +// 问卷服务 - 统计分析 +service Report { + rpc GetSurveyStats (IdentRequest) returns (SurveyStats); +} + +message SurveyStats { + string survey_id = 1; + int32 response_count = 2; + map question_stats = 3; // key为question_id +} diff --git a/proto/share.proto b/proto/share.proto new file mode 100644 index 0000000..6ce2fc7 --- /dev/null +++ b/proto/share.proto @@ -0,0 +1,27 @@ +syntax = "proto3"; +package survey; +option go_package = ".;survey"; +import "blocks.proto"; + +// 问卷服务 - 分享管理 +service Share { + rpc Create (IdentRequest) returns (StatusReply); + rpc Fetch (FetchRequest) returns (ListShareReply); + rpc SetStatus (StatusReply) returns (StatusReply); +} + +message ListShareReply { + repeated ShareItem data = 1; + int64 count = 2; +} + +// 分享链接 +message ShareItem { + string id = 1; // 分享ID + string survey_id = 2; // 问卷ID + string url = 3; // 分享URL + string creator_id = 4; // 创建者ID + int64 expires_at = 6; // 过期时间 + int32 max_responses = 7; // 最大回答数(0表示不限) + bool is_active = 8; // 是否激活 +} \ No newline at end of file diff --git a/proto/survey.proto b/proto/survey.proto new file mode 100644 index 0000000..54ee0c8 --- /dev/null +++ b/proto/survey.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; +package survey; +option go_package = ".;survey"; +import "blocks.proto"; + +// 问卷服务 - 问卷管理 +service Survey { + rpc Create (SurveyItem) returns (StatusReply); + rpc Get (IdentRequest) returns (SurveyItem); + rpc Update (SurveyItem) returns (StatusReply); + rpc Delete (IdentRequest) returns (StatusReply); + rpc Fetch (FetchRequest) returns (ListSurveyReply); +} + +message ListSurveyReply { + repeated SurveyItem data = 1; + int64 count = 2; +} \ No newline at end of file diff --git a/proto/tags.proto b/proto/tags.proto deleted file mode 100644 index 35024fd..0000000 --- a/proto/tags.proto +++ /dev/null @@ -1,34 +0,0 @@ -syntax = "proto3"; -package content; -option go_package = "./;content"; -import "blocks.proto"; - -// 标签 -service Tags { - //标签列表 - rpc TagsList (IdentRequest) returns (TagsListReply) {}; - - //创建标签 - rpc AddTags(TagsItem) returns (StatusReply) {}; - - //修改标签 - rpc ModifyTags(TagsItem) returns (StatusReply) {}; - - //删除标签 - rpc DeleteTags(IdentRequest) returns (StatusReply) {}; -} - -// 无限极标签 -message TagsItem{ - string identity = 1; - string parent_identity = 2; // 为空表示顶级主题 - string title = 3; - string cover_path = 4; - string intro=5; - repeated TagsItem list = 9; -} - -message TagsListReply { - repeated TagsItem list = 1; - int64 count = 2; -} \ No newline at end of file diff --git a/server/category_server.go b/server/category_server.go deleted file mode 100644 index 9a6ce53..0000000 --- a/server/category_server.go +++ /dev/null @@ -1,33 +0,0 @@ -// Code generated by protoc-gen-slc. DO NOT EDIT. -package server - -import ( - "context" - "protoc-gen-slc/internal/logic/category" - pb "protoc-gen-slc/pb" -) - -type CategoryServer struct { - pb.UnimplementedCategoryServer -} - -func NewCategoryServer() *CategoryServer { - return &CategoryServer{} -} - -// 分类列表 -func (s *CategoryServer) CategoryList(ctx context.Context, in *pb.Empty) (*pb.CategoryListReply, error) { - return category.CategoryList(ctx, in) -} - -func (s *CategoryServer) AddCategory(ctx context.Context, in *pb.AddCategoryRequest) (*pb.AddCategoryResponse, error) { - return category.AddCategory(ctx, in) -} - -func (s *CategoryServer) ModifyCategory(ctx context.Context, in *pb.ModifyCategoryRequest) (*pb.Empty, error) { - return category.ModifyCategory(ctx, in) -} - -func (s *CategoryServer) DeleteCategory(ctx context.Context, in *pb.DeleteCategoryRequest) (*pb.Empty, error) { - return category.DeleteCategory(ctx, in) -} diff --git a/server/new.go b/server/new.go deleted file mode 100644 index bd1b738..0000000 --- a/server/new.go +++ /dev/null @@ -1,21 +0,0 @@ -// Code generated by protoc-gen-slc. DO NOT EDIT. -package server - -import ( - "google.golang.org/grpc" - "google.golang.org/grpc/reflection" - pb "protoc-gen-slc/pb" -) - -func New() *grpc.Server { - srv := grpc.NewServer() - - // register service to grpc.Server - pb.RegisterCategoryServer(srv, NewCategoryServer()) - pb.RegisterPostServer(srv, NewPostServer()) - pb.RegisterTagsServer(srv, NewTagsServer()) - - reflection.Register(srv) - - return srv -} diff --git a/server/post_server.go b/server/post_server.go deleted file mode 100644 index 3f768c4..0000000 --- a/server/post_server.go +++ /dev/null @@ -1,97 +0,0 @@ -// Code generated by protoc-gen-slc. DO NOT EDIT. -package server - -import ( - "context" - "protoc-gen-slc/internal/logic/post" - pb "protoc-gen-slc/pb" -) - -type PostServer struct { - pb.UnimplementedPostServer -} - -func NewPostServer() *PostServer { - return &PostServer{} -} - -// 文章列表 -func (s *PostServer) PostList(ctx context.Context, in *pb.PostListRequest) (*pb.PostListReply, error) { - return post.PostList(ctx, in) -} - -// 获取文章详情 -func (s *PostServer) GetPost(ctx context.Context, in *pb.GetPostRequest) (*pb.PostItem, error) { - return post.GetPost(ctx, in) -} - -// 发布文章 -func (s *PostServer) AddPost(ctx context.Context, in *pb.PostItem) (*pb.StatusReply, error) { - return post.AddPost(ctx, in) -} - -// 修改文章 -func (s *PostServer) ModifyPost(ctx context.Context, in *pb.PostItem) (*pb.StatusReply, error) { - return post.ModifyPost(ctx, in) -} - -// 删除文章 -func (s *PostServer) DeletePost(ctx context.Context, in *pb.IdentRequest) (*pb.StatusReply, error) { - return post.DeletePost(ctx, in) -} - -// 文章点赞处理 -func (s *PostServer) IncrPostLike(ctx context.Context, in *pb.PostOpIdentityRequest) (*pb.StatusReply, error) { - return post.IncrPostLike(ctx, in) -} - -func (s *PostServer) DescPostLike(ctx context.Context, in *pb.PostOpIdentityRequest) (*pb.StatusReply, error) { - return post.DescPostLike(ctx, in) -} - -// 文章点踩处理 -func (s *PostServer) IncrPostUnlike(ctx context.Context, in *pb.PostOpIdentityRequest) (*pb.StatusReply, error) { - return post.IncrPostUnlike(ctx, in) -} - -func (s *PostServer) DescPostUnlike(ctx context.Context, in *pb.PostOpIdentityRequest) (*pb.StatusReply, error) { - return post.DescPostUnlike(ctx, in) -} - -// 评论列表 -func (s *PostServer) CommentList(ctx context.Context, in *pb.CommentListRequest) (*pb.CommentListResponse, error) { - return post.CommentList(ctx, in) -} - -// 发布评论 -func (s *PostServer) AddComment(ctx context.Context, in *pb.CommentItem) (*pb.StatusReply, error) { - return post.AddComment(ctx, in) -} - -// 修改评论 -func (s *PostServer) ModifyComment(ctx context.Context, in *pb.CommentItem) (*pb.StatusReply, error) { - return post.ModifyComment(ctx, in) -} - -// 删除评论 -func (s *PostServer) DeleteComment(ctx context.Context, in *pb.DeleteCommentRequest) (*pb.StatusReply, error) { - return post.DeleteComment(ctx, in) -} - -// 评论点赞处理 -func (s *PostServer) IncrCommentLike(ctx context.Context, in *pb.CommentOpIdentityRequest) (*pb.StatusReply, error) { - return post.IncrCommentLike(ctx, in) -} - -func (s *PostServer) DescCommentLike(ctx context.Context, in *pb.CommentOpIdentityRequest) (*pb.StatusReply, error) { - return post.DescCommentLike(ctx, in) -} - -// 评论点踩处理 -func (s *PostServer) IncrCommentUnlike(ctx context.Context, in *pb.CommentOpIdentityRequest) (*pb.StatusReply, error) { - return post.IncrCommentUnlike(ctx, in) -} - -func (s *PostServer) DescCommentUnlike(ctx context.Context, in *pb.CommentOpIdentityRequest) (*pb.StatusReply, error) { - return post.DescCommentUnlike(ctx, in) -} diff --git a/server/tags_server.go b/server/tags_server.go deleted file mode 100644 index 371dc92..0000000 --- a/server/tags_server.go +++ /dev/null @@ -1,36 +0,0 @@ -// Code generated by protoc-gen-slc. DO NOT EDIT. -package server - -import ( - "context" - "protoc-gen-slc/internal/logic/tags" - pb "protoc-gen-slc/pb" -) - -type TagsServer struct { - pb.UnimplementedTagsServer -} - -func NewTagsServer() *TagsServer { - return &TagsServer{} -} - -// 标签列表 -func (s *TagsServer) TagsList(ctx context.Context, in *pb.IdentRequest) (*pb.TagsListReply, error) { - return tags.TagsList(ctx, in) -} - -// 创建标签 -func (s *TagsServer) AddTags(ctx context.Context, in *pb.TagsItem) (*pb.StatusReply, error) { - return tags.AddTags(ctx, in) -} - -// 修改标签 -func (s *TagsServer) ModifyTags(ctx context.Context, in *pb.TagsItem) (*pb.StatusReply, error) { - return tags.ModifyTags(ctx, in) -} - -// 删除标签 -func (s *TagsServer) DeleteTags(ctx context.Context, in *pb.IdentRequest) (*pb.StatusReply, error) { - return tags.DeleteTags(ctx, in) -} diff --git a/tpl/logic.go b/tpl/logic.go new file mode 100644 index 0000000..38168a5 --- /dev/null +++ b/tpl/logic.go @@ -0,0 +1,23 @@ +package tpl + +var LogicFile = `package {methodName} + +import ( + "context" + {import} + "git.apinb.com/bsm-sdk/core/service" +) + +{comment} +func {func}(ctx context.Context, in *pb.{input}) (reply *pb.{output},err error) { + // parse authorization meta. + _, err = service.ParseMetaCtx(ctx, nil) + if err != nil { + return nil, err + } + + // TODO: add your logic code & delete this line. + + return +} +` diff --git a/tpl/server.go b/tpl/server.go index d8d243a..ffd90c7 100644 --- a/tpl/server.go +++ b/tpl/server.go @@ -5,22 +5,59 @@ var NewFile = ` package server import ( + "context" + "net/http" + "os" + "strings" {import} + "git.apinb.com/bsm-sdk/core/vars" "google.golang.org/grpc" "google.golang.org/grpc/reflection" + gwRuntime "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" ) -func New() *grpc.Server { - srv := grpc.NewServer() +type Server struct { + Grpc *grpc.Server + Ctx context.Context + Mux *gwRuntime.ServeMux +} + +func New(addr string) *Server { + srv := &Server{Ctx: context.Background(), Grpc: grpc.NewServer(), Mux: gwRuntime.NewServeMux()} // register service to grpc.Server {register} - reflection.Register(srv) + reflection.Register(srv.Grpc) + + // 将服务注册到Gateway + opts := []grpc.DialOption{grpc.WithInsecure()} + {gw} + + // Register services swagger + srv.RegisterSwagger() + return srv } +// RegisterSwagger 注册swagger +func (s *Server) RegisterSwagger() { + srvKey := strings.ToLower(vars.ServiceKey) + s.Mux.HandlePath("GET", "/"+srvKey+".swagger.json", func(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { + w.Header().Set("Content-Type", "application/json") + bytes, err := os.ReadFile("./swagger/" + srvKey + ".swagger.json") + if err != nil { + w.WriteHeader(http.StatusNotFound) + w.Write([]byte(err.Error())) + return + } + w.Write(bytes) + return + + }) +} + ` var Server = `