master
liuhaotian 2022-01-19 19:39:04 +08:00
parent 61c2b8264d
commit ab78141e7d
36 changed files with 1939 additions and 211 deletions

8
.idea/.gitignore vendored 100644
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="Go" enabled="true" />
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/backend.iml" filepath="$PROJECT_DIR$/.idea/backend.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml 100644
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -4,11 +4,24 @@ import (
"fmt"
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/error_process"
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/model"
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/pkg"
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/service"
"git.icechen.cn/monorepo/backend/pkg/api"
"git.icechen.cn/monorepo/backend/pkg/proto/brahma/murders"
"github.com/go-playground/validator/v10"
"github.com/gofiber/fiber/v2"
ctxLogger "github.com/luizsuper/ctxLoggers"
"github.com/pkg/errors"
"go.uber.org/zap"
"google.golang.org/grpc"
"log"
"strconv"
"time"
)
var (
pageIsNotInt = api.WarpFError(errors.New("page 参数错误"))
limitIsNotInt = api.WarpFError(errors.New("limit 参数错误"))
)
func GetScriptsH(ctx *fiber.Ctx) error {
@ -76,23 +89,56 @@ func DeleteScriptsH(ctx *fiber.Ctx) error {
return ctx.JSON(success(nil))
}
//func HelloWorld() error {
// // Set up a connection to the server.
// conn, err := grpc.Dial("localhost:3000", grpc.WithInsecure(), grpc.WithBlock())
// if err != nil {
// log.Fatalf("did not connect: %v", err)
// }
// defer conn.Close()
// c := murder.NewHelloWorldClient(conn)
//
// // Contact the server and print out its response.
// ctx, cancel := context.WithTimeout(context.Background(), time.Second)
// defer cancel()
// r, err := c.Login(ctx, &murder.HelloRequest{Code: "lht"})
//
// if err != nil {
// log.Fatalf("could not greet: %v", err)
// }
// log.Printf("Greeting: %s", r.Token)
// return nil
//}
func GetScriptApi(ctx *fiber.Ctx) error {
//todo:调通中间层
//todo:换成服务
conn, err := grpc.Dial("localhost:3000", grpc.WithInsecure(), grpc.WithBlock())
if err != nil {
log.Fatalf("did not connect: %v", err)
}
outgoingContext, cancelFunc := pkg.TransFiberCtx2NewOutgoingContext(ctx, 3*time.Second)
defer conn.Close()
defer cancelFunc()
c := murders.NewMurdersClient(conn)
page := ctx.Query("page", "1")
limit := ctx.Query("size", "10")
p, err := strconv.Atoi(page)
if err != nil {
ctxLogger.Error(ctx.UserContext(), pageIsNotInt.Error(), zap.String("page", page))
return pageIsNotInt
}
l, err := strconv.Atoi(limit)
if err != nil {
ctxLogger.Error(ctx.UserContext(), limitIsNotInt.Error(), zap.String("limit", limit))
return pageIsNotInt
}
validate := validator.New()
err = validate.Var(p, "gte=0")
if err != nil {
ctxLogger.Error(ctx.UserContext(), limitIsNotInt.Error(), zap.String("limit", limit))
return api.WarpFError(err)
}
err = validate.Var(l, "gte=-1")
if err != nil {
ctxLogger.Error(ctx.UserContext(), limitIsNotInt.Error(), zap.String("limit", limit))
return api.WarpFError(err)
}
p64 := int64(p)
l64 := int64(l)
condition := murders.QueryCondition{
Page: &p64,
Size: &l64,
QueryMap: nil,
}
scripts, err := c.GetScripts(outgoingContext, &condition)
if err != nil {
return api.WarpFError(err)
}
return ctx.JSON(scripts)
}

View File

@ -0,0 +1,21 @@
package pkg
import (
"context"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/utils"
"google.golang.org/grpc/metadata"
"time"
)
func TransFiberCtx2NewOutgoingContext(fCtx *fiber.Ctx, time time.Duration) (context.Context, context.CancelFunc) {
ctx := fCtx.UserContext()
md := metadata.MD{}
if value, ok := ctx.Value(fiber.HeaderXRequestID).(string); ok {
md = metadata.Pairs(fiber.HeaderXRequestID, value)
} else {
md = metadata.Pairs(fiber.HeaderXRequestID, utils.UUIDv4())
}
//3s 过期超时
return context.WithTimeout(metadata.NewOutgoingContext(ctx, md), time)
}

View File

@ -19,7 +19,7 @@ const (
tag = "/tag"
category = "/category"
scripts = "/scripts"
hello = "/hello"
script = "/script"
)
var (
@ -110,6 +110,10 @@ func routerInit() {
scriptsGroup.Delete("", func(ctx *fiber.Ctx) error {
return handler.DeleteScriptsH(ctx)
})
scriptGroup := app.Group(script)
scriptGroup.Get("", func(ctx *fiber.Ctx) error {
return handler.GetScriptApi(ctx)
})
}

View File

@ -1,7 +1,75 @@
package main
import "fmt"
import (
"bytes"
"fmt"
"go.dedis.ch/protobuf"
)
type QueryCondition struct {
Page *int
Size *int
QueryMap map[string]string
}
type (
ints []int
strs []string
scripts []Script
)
type Script struct {
ScriptName string `json:"script_name" gorm:"column:script_name"`
ScriptIntro string `json:"script_intro" gorm:"column:script_intro"`
ScriptTag ints `json:"script_tag" gorm:"column:script_tag"`
ScriptScore float64 `json:"script_score" gorm:"column:script_score"`
GroupDuration int `json:"group_duration" gorm:"column:group_duration"`
ScriptCoverUrl string `json:"script_cover_url" gorm:"column:script_cover_url"`
ScriptTextContext string `json:"script_text_context" gorm:"column:script_text_context"`
ScriptPlotScore float64 `json:"script_plot_score" gorm:"column:script_plot_score"`
ScriptImageContent strs `json:"script_image_content" gorm:"column:script_image_content"`
ScriptMalePlayer int `json:"script_male_player" gorm:"column:script_male_player"`
ScriptFemalePlayer int `json:"script_female_player" gorm:"column:script_female_player"`
ScriptDifficultDegree string `json:"script_difficult_degree" gorm:"column:script_difficult_degree"`
ScriptPlayerLimit int `json:"script_player_limit" gorm:"column:script_player_limit"`
Uuid string `json:"uuid" gorm:"column:uuid" valid:"no_empty"`
ScriptComplexScore float64 `json:"script_complex_score" gorm:"column:script_complex_score"`
Qid string `json:"qid" gorm:"column:qid"`
IsDel int `json:"-" gorm:"column:is_del"`
}
type Scripts struct {
Scripts scripts `json:"scripts" `
}
type (
Tag struct {
Value string `json:"value" gorm:"column:value"`
Uuid int `json:"uuid" gorm:"primary_key" valid:"no_empty"`
IsDel int `json:"-" gorm:"column:is_del" value:"1|0"`
Cs []Category `json:"categories,omitempty" gorm:"many2many:c_tag;foreignKey:Uuid;joinForeignKey:TagUid;References:Uuid;JoinReferences:CategoryUid" valid:"no_empty"`
}
)
type (
Category struct {
Value string `json:"value" gorm:"column:value"`
Uuid string `json:"uuid" gorm:"primary_key" valid:"no_empty"`
IsDel int `json:"-" gorm:"column:is_del"`
Tags []Tag `json:"tags,omitempty" gorm:"many2many:c_tag;foreignKey:Uuid;joinForeignKey:CategoryUid;References:Uuid;JoinReferences:TagUid" valid:"no_empty"`
}
)
func main() {
fmt.Println("我是个示例")
w := &bytes.Buffer{}
types := []interface{}{
Tag{},
Category{},
}
err := protobuf.GenerateProtobufDefinition(w, types, nil, nil)
if err != nil {
fmt.Println(err)
}
fmt.Println(w.String())
}

View File

@ -0,0 +1,51 @@
package model
import (
"database/sql/driver"
"encoding/json"
)
type (
ints []int
strs []string
)
type Scripts struct {
ScriptName string `json:"script_name" gorm:"column:script_name"`
ScriptIntro string `json:"script_intro" gorm:"column:script_intro"`
ScriptTag ints `json:"script_tag" gorm:"column:script_tag"`
ScriptScore float64 `json:"script_score" gorm:"column:script_score"`
GroupDuration int `json:"group_duration" gorm:"column:group_duration"`
ScriptCoverUrl string `json:"script_cover_url" gorm:"column:script_cover_url"`
ScriptTextContext string `json:"script_text_context" gorm:"column:script_text_context"`
ScriptPlotScore float64 `json:"script_plot_score" gorm:"column:script_plot_score"`
ScriptImageContent strs `json:"script_image_content" gorm:"column:script_image_content"`
ScriptMalePlayer int `json:"script_male_player" gorm:"column:script_male_player"`
ScriptFemalePlayer int `json:"script_female_player" gorm:"column:script_female_player"`
ScriptDifficultDegree string `json:"script_difficult_degree" gorm:"column:script_difficult_degree"`
ScriptPlayerLimit int `json:"script_player_limit" gorm:"column:script_player_limit"`
Uuid string `json:"uuid" gorm:"column:uuid" valid:"no_empty"`
ScriptComplexScore float64 `json:"script_complex_score" gorm:"column:script_complex_score"`
Qid string `json:"qid" gorm:"column:qid"`
IsDel int `json:"-" gorm:"column:is_del"`
}
func (m *Scripts) TableName() string {
return "scripts"
}
func (p ints) Value() (driver.Value, error) {
return json.Marshal(p)
}
func (p *ints) Scan(input interface{}) error {
return json.Unmarshal(input.([]byte), &p)
}
func (p strs) Value() (driver.Value, error) {
return json.Marshal(p)
}
func (p *strs) Scan(input interface{}) error {
return json.Unmarshal(input.([]byte), &p)
}

View File

@ -0,0 +1,72 @@
package pkg
import (
"context"
"github.com/pkg/errors"
"time"
)
type Finish struct {
IsDone bool
Err error
}
type Worker interface {
Work(ctx context.Context, finishChan chan<- Finish)
}
type WorkerInterFace struct {
}
func (w WorkerInterFace) Work(ctx context.Context, finishChan chan<- Finish) {
panic("implement me")
}
func Run(timeout time.Duration, ctx context.Context, workers ...Worker) error {
cancel, cancelFunc := context.WithTimeout(ctx, timeout)
finishSignal := make(chan Finish)
errs := make([]error, 0)
defer cancelFunc()
for _, worker := range workers {
go worker.Work(cancel, finishSignal)
}
for i := 0; i < len(workers); i++ {
if f := <-finishSignal; !f.IsDone {
errs = append(errs, f.Err)
if len(errs) == 1 {
cancelFunc()
}
}
}
close(finishSignal)
if len(errs) != 0 {
return errs[0]
}
return nil
}
func SafeSend(ch chan<- Finish, value Finish) {
defer func() {
if recover() != nil {
}
}()
ch <- value // panic if ch is closed
}
func Watcher(ctx context.Context, ch chan<- Finish) {
go func() {
loop:
for {
select {
//无论主动还是被动推出。总会
case <-ctx.Done():
SafeSend(ch, Finish{
IsDone: false,
Err: errors.New(""),
})
break loop
}
}
}()
}

View File

@ -0,0 +1 @@
package pkg

View File

@ -1,31 +0,0 @@
package servesr
import (
"context"
"fmt"
"git.icechen.cn/monorepo/backend/pkg/proto/brahma/murder"
"google.golang.org/grpc"
"log"
"net"
)
type helloRequet struct {
murder.UnimplementedHelloWorldServer
}
func (helloRequet) Login(ctx context.Context, name *murder.HelloRequest) (*murder.HelloResponse, error) {
return &murder.HelloResponse{Token: name.Code}, nil
}
func RpcServer() {
lis, err := net.Listen("tcp", ":3000")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
s := grpc.NewServer()
murder.RegisterHelloWorldServer(s, &helloRequet{})
fmt.Println("lark server run in :3000")
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}

View File

@ -0,0 +1,53 @@
package servesr
import (
"context"
"errors"
"git.icechen.cn/monorepo/backend/app/brahma/service/token/internal/model"
"git.icechen.cn/monorepo/backend/app/brahma/service/token/internal/pkg"
"git.icechen.cn/monorepo/backend/pkg/orm"
"git.icechen.cn/monorepo/backend/pkg/proto/brahma/murders"
"git.icechen.cn/monorepo/backend/pkg/proto/brahma/murders/script"
"time"
)
type Script struct {
murders.UnimplementedMurdersServer
pkg.WorkerInterFace
queryMap *murders.QueryCondition
scriptModel *[]model.Scripts
}
func (s *Script) GetScripts(ctx context.Context, queryMap *murders.QueryCondition) (*script.Scripts, error) {
s.queryMap = queryMap
err := pkg.Run(1*time.Second, ctx, s)
if err != nil {
return nil, err
}
return nil, err
}
func (s *Script) Work(ctx context.Context, finishChan chan<- pkg.Finish) {
go pkg.Watcher(ctx, finishChan)
db, err := orm.GetContextDB(ctx, orm.DB)
if err != nil {
pkg.SafeSend(finishChan, pkg.Finish{
IsDone: false,
Err: err,
})
}
i := new([]model.Scripts)
if num := db.Find(i).RowsAffected; num < 0 {
pkg.SafeSend(finishChan, pkg.Finish{
IsDone: false,
Err: errors.New("RowsAffected < 0"),
})
}
s.scriptModel = i
pkg.SafeSend(finishChan, pkg.Finish{
IsDone: true,
Err: nil,
})
}

View File

@ -0,0 +1,24 @@
package servesr
import (
"fmt"
"git.icechen.cn/monorepo/backend/pkg/proto/brahma/murders"
"git.icechen.cn/monorepo/backend/pkg/rpc"
ctxLogger "github.com/luizsuper/ctxLoggers"
"go.uber.org/zap"
"google.golang.org/grpc"
"net"
)
func RpcServer() {
lis, err := net.Listen("tcp", ":3000")
if err != nil {
ctxLogger.Info(nil, "brahma server start up error", zap.String("error", err.Error()))
}
s := grpc.NewServer(grpc.UnaryInterceptor(rpc.Interceptor))
murders.RegisterMurdersServer(s, &Script{})
fmt.Println("lark server run in :3000")
if err := s.Serve(lis); err != nil {
ctxLogger.Info(nil, "brahma server start up error", zap.String("error", err.Error()))
}
}

View File

@ -0,0 +1 @@
package servesr

View File

@ -1,9 +1,8 @@
package main
import (
servesr "git.icechen.cn/monorepo/backend/app/brahma/service/token/internal/server"
)
import servesr "git.icechen.cn/monorepo/backend/app/brahma/service/token/internal/server"
func main() {
servesr.RpcServer()
}

2
go.mod
View File

@ -8,7 +8,7 @@ require (
github.com/google/uuid v1.1.2
github.com/jinzhu/copier v0.3.4
github.com/larksuite/oapi-sdk-go v1.1.43
github.com/luizsuper/ctxLoggers v1.0.3
github.com/luizsuper/ctxLoggers v1.0.4
github.com/pkg/errors v0.9.1
github.com/spf13/cast v1.4.1
go.etcd.io/etcd/client/v3 v3.5.1

45
go.sum
View File

@ -28,7 +28,6 @@ github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmf
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI=
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@ -57,16 +56,13 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU=
github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho=
github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-playground/validator/v10 v10.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0=
github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
github.com/go-redis/redis/v8 v8.2.2/go.mod h1:ysgGY09J/QeDYbu3HikWEIPCwaeOkuNoTgKayTEaEOw=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
@ -136,14 +132,11 @@ github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47e
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/larksuite/oapi-sdk-go v1.1.43 h1:DVUAbiYOfE+1yPyTKYofxcEpB027nhq9Lfk2DaLX960=
github.com/larksuite/oapi-sdk-go v1.1.43/go.mod h1:7ybKAbVdKBjXuX0YrMTfnWUyCaIe/zeI1wqjNfN9XOk=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
@ -155,8 +148,8 @@ github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkL
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA=
github.com/lestrrat-go/strftime v1.0.5 h1:A7H3tT8DhTz8u65w+JRpiBxM4dINQhUXAZnhBa2xeOE=
github.com/lestrrat-go/strftime v1.0.5/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR76fd03sz+Qz4g=
github.com/luizsuper/ctxLoggers v1.0.3 h1:u7YGzxhXb2uHm2sJxoO70xfpHz97PC7wIsmsX43Auzc=
github.com/luizsuper/ctxLoggers v1.0.3/go.mod h1:wjnYowzWZwBJ7eWVwtcZN9Vbb4DdW8VHKSXzCvsdjIo=
github.com/luizsuper/ctxLoggers v1.0.4 h1:0RQiu7/yBgwA3okueOb4C4ltxbbhZHcrBXewwHjUCDA=
github.com/luizsuper/ctxLoggers v1.0.4/go.mod h1:wjnYowzWZwBJ7eWVwtcZN9Vbb4DdW8VHKSXzCvsdjIo=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
@ -177,7 +170,6 @@ github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9k
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@ -200,9 +192,6 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
@ -234,6 +223,15 @@ github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7Fw
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
go.dedis.ch/fixbuf v1.0.3 h1:hGcV9Cd/znUxlusJ64eAlExS+5cJDIyTyEG+otu5wQs=
go.dedis.ch/fixbuf v1.0.3/go.mod h1:yzJMt34Wa5xD37V5RTdmp38cz3QhMagdGoem9anUalw=
go.dedis.ch/kyber/v3 v3.0.4/go.mod h1:OzvaEnPvKlyrWyp3kGXlFdp7ap1VC6RkZDTaPikqhsQ=
go.dedis.ch/kyber/v3 v3.0.9 h1:i0ZbOQocHUjfFasBiUql5zVeC7u/vahFd96DFA8UOWk=
go.dedis.ch/kyber/v3 v3.0.9/go.mod h1:rhNjUUg6ahf8HEg5HUvVBYoWY4boAafX8tYxX+PS+qg=
go.dedis.ch/protobuf v1.0.5/go.mod h1:eIV4wicvi6JK0q/QnfIEGeSFNG0ZeB24kzut5+HaRLo=
go.dedis.ch/protobuf v1.0.7/go.mod h1:pv5ysfkDX/EawiPqcW3ikOxsL5t+BqnV6xHSmE79KI4=
go.dedis.ch/protobuf v1.0.11 h1:FTYVIEzY/bfl37lu3pR4lIj+F9Vp1jE8oh91VmxKgLo=
go.dedis.ch/protobuf v1.0.11/go.mod h1:97QR256dnkimeNdfmURz0wAMNVbd1VmLXhG1CrTYrJ4=
go.etcd.io/etcd/api/v3 v3.5.1 h1:v28cktvBq+7vGyJXF8G+rWJmj+1XUmMtqcLnH8hDocM=
go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
go.etcd.io/etcd/client/pkg/v3 v3.5.1 h1:XIQcHCFSG53bJETYeRJtIxdLv2EWRGxcfzR8lSnTH4E=
@ -256,11 +254,11 @@ go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
go.uber.org/zap v1.20.0 h1:N4oPlghZwYG55MlU6LXk/Zp00FVNE9X9wrYO8CEs4lc=
go.uber.org/zap v1.20.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 h1:0es+/5331RGQPcXlMfP+WrnIIS6dNnNRe0WB02W0F4M=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@ -308,6 +306,7 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@ -332,7 +331,6 @@ golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220111092808-5a964db01320 h1:0jf+tOCoZ3LyutmCOWpVni1chK4VfFLhRsDK7MhqGRY=
golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@ -386,16 +384,13 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

View File

@ -65,7 +65,8 @@ func GetFibberRecoverConfig() recover.Config {
// FibberUserCtxWithTraceHandler 把fibberCtx的traceId 置入UserCtx中
func FibberUserCtxWithTraceHandler(c *fiber.Ctx) error {
c.SetUserContext(context.WithValue(context.Background(), fiber.HeaderXRequestID, c.Response().Header.Peek(fiber.HeaderXRequestID)))
peek := c.Response().Header.Peek(fiber.HeaderXRequestID)
c.SetUserContext(context.WithValue(context.Background(), fiber.HeaderXRequestID, string(peek)))
return c.Next()
}

View File

@ -12,7 +12,8 @@ import (
var (
EndPoints = "ENDPOINTS"
EndAddress = "etcd." + env.Namespace + ":2379"
//EndAddress = "etcd." + env.Namespace + ":2379"
EndAddress = "127.0.0.1:2379"
)
var (

94
pkg/orm/trrace.go 100644
View File

@ -0,0 +1,94 @@
package orm
import (
"context"
times "git.icechen.cn/monorepo/backend/pkg/time"
"github.com/gofiber/fiber/v2"
ctxLogger "github.com/luizsuper/ctxLoggers"
"github.com/spf13/cast"
"go.uber.org/zap"
"gorm.io/gorm"
"gorm.io/gorm/utils"
"time"
)
func GetContextDB(ctx context.Context, db *gorm.DB) (*gorm.DB, error) {
if err := db.Use(&TracePlugin{}); err != nil {
return nil, err
}
return db.WithContext(ctx), nil
}
type SQL struct {
Timestamp string `json:"timestamp"` // 时间格式2006-01-02 15:04:05
Stack string `json:"stack"` // 文件地址和行号
SQL string `json:"sql"` // SQL 语句
Rows int64 `json:"rows_affected"` // 影响行数
CostSeconds float64 `json:"cost_seconds"` // 执行时长(单位秒)
}
const (
callBackBeforeName = "core:before"
callBackAfterName = "core:after"
startTime = "_start_time"
)
type TracePlugin struct{}
func (op *TracePlugin) Name() string {
return "tracePlugin"
}
func (op *TracePlugin) Initialize(db *gorm.DB) (err error) {
// 开始前
_ = db.Callback().Create().Before("gorm:before_create").Register(callBackBeforeName, before)
_ = db.Callback().Query().Before("gorm:query").Register(callBackBeforeName, before)
_ = db.Callback().Delete().Before("gorm:before_delete").Register(callBackBeforeName, before)
_ = db.Callback().Update().Before("gorm:setup_reflect_value").Register(callBackBeforeName, before)
_ = db.Callback().Row().Before("gorm:row").Register(callBackBeforeName, before)
_ = db.Callback().Raw().Before("gorm:raw").Register(callBackBeforeName, before)
// 结束后
_ = db.Callback().Create().After("gorm:after_create").Register(callBackAfterName, after)
_ = db.Callback().Query().After("gorm:after_query").Register(callBackAfterName, after)
_ = db.Callback().Delete().After("gorm:after_delete").Register(callBackAfterName, after)
_ = db.Callback().Update().After("gorm:after_update").Register(callBackAfterName, after)
_ = db.Callback().Row().After("gorm:row").Register(callBackAfterName, after)
_ = db.Callback().Raw().After("gorm:raw").Register(callBackAfterName, after)
return
}
//记录db开始时间
func before(db *gorm.DB) {
db.InstanceSet(startTime, time.Now())
return
}
func after(db *gorm.DB) {
_ctx := db.Statement.Context
ctx, ok := _ctx.(context.Context)
if !ok {
return
}
defer ctx.Done()
_ts, isExist := db.InstanceGet(startTime)
if !isExist {
return
}
ts, ok := _ts.(time.Time)
if !ok {
return
}
sql := db.Dialector.Explain(db.Statement.SQL.String(), db.Statement.Vars...)
sqlInfo := new(SQL)
sqlInfo.Timestamp = times.CSTLayoutString()
sqlInfo.SQL = sql
sqlInfo.Stack = utils.FileWithLineNum()
sqlInfo.Rows = db.Statement.RowsAffected
sqlInfo.CostSeconds = time.Since(ts).Seconds()
ctxLogger.FInfo(nil, "sql", zap.Any("info", sqlInfo), zap.String("trace_id", cast.ToString(ctx.Value(fiber.HeaderXRequestID))))
return
}

View File

@ -2,7 +2,7 @@
// versions:
// protoc-gen-go v1.27.1
// protoc v3.19.3
// source: murder/hello.proto
// source: hello.proto
package murder
@ -20,53 +20,6 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type HelloRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
}
func (x *HelloRequest) Reset() {
*x = HelloRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_murder_hello_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *HelloRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HelloRequest) ProtoMessage() {}
func (x *HelloRequest) ProtoReflect() protoreflect.Message {
mi := &file_murder_hello_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use HelloRequest.ProtoReflect.Descriptor instead.
func (*HelloRequest) Descriptor() ([]byte, []int) {
return file_murder_hello_proto_rawDescGZIP(), []int{0}
}
func (x *HelloRequest) GetCode() string {
if x != nil {
return x.Code
}
return ""
}
type HelloResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -78,7 +31,7 @@ type HelloResponse struct {
func (x *HelloResponse) Reset() {
*x = HelloResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_murder_hello_proto_msgTypes[1]
mi := &file_hello_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -91,7 +44,7 @@ func (x *HelloResponse) String() string {
func (*HelloResponse) ProtoMessage() {}
func (x *HelloResponse) ProtoReflect() protoreflect.Message {
mi := &file_murder_hello_proto_msgTypes[1]
mi := &file_hello_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -104,7 +57,7 @@ func (x *HelloResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use HelloResponse.ProtoReflect.Descriptor instead.
func (*HelloResponse) Descriptor() ([]byte, []int) {
return file_murder_hello_proto_rawDescGZIP(), []int{1}
return file_hello_proto_rawDescGZIP(), []int{0}
}
func (x *HelloResponse) GetToken() string {
@ -114,74 +67,148 @@ func (x *HelloResponse) GetToken() string {
return ""
}
var File_murder_hello_proto protoreflect.FileDescriptor
type QueryCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
var file_murder_hello_proto_rawDesc = []byte{
0x0a, 0x12, 0x6d, 0x75, 0x72, 0x64, 0x65, 0x72, 0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x22, 0x0a, 0x0c, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x25, 0x0a, 0x0d, 0x48, 0x65, 0x6c,
0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f,
0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
0x32, 0x56, 0x0a, 0x0a, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x12, 0x48,
0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1d, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c,
0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x2e,
0x69, 0x63, 0x65, 0x63, 0x68, 0x65, 0x6e, 0x2e, 0x63, 0x6e, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72,
0x65, 0x70, 0x6f, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x62, 0x72, 0x61, 0x68, 0x6d, 0x61, 0x2f, 0x6d, 0x75, 0x72,
0x64, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
Page *int64 `protobuf:"zigzag64,1,opt,name=page,proto3,oneof" json:"page,omitempty"`
Size *int64 `protobuf:"zigzag64,2,opt,name=size,proto3,oneof" json:"size,omitempty"`
QueryMap map[string]string `protobuf:"bytes,3,rep,name=query_map,json=queryMap,proto3" json:"query_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *QueryCondition) Reset() {
*x = QueryCondition{}
if protoimpl.UnsafeEnabled {
mi := &file_hello_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryCondition) ProtoMessage() {}
func (x *QueryCondition) ProtoReflect() protoreflect.Message {
mi := &file_hello_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use QueryCondition.ProtoReflect.Descriptor instead.
func (*QueryCondition) Descriptor() ([]byte, []int) {
return file_hello_proto_rawDescGZIP(), []int{1}
}
func (x *QueryCondition) GetPage() int64 {
if x != nil && x.Page != nil {
return *x.Page
}
return 0
}
func (x *QueryCondition) GetSize() int64 {
if x != nil && x.Size != nil {
return *x.Size
}
return 0
}
func (x *QueryCondition) GetQueryMap() map[string]string {
if x != nil {
return x.QueryMap
}
return nil
}
var File_hello_proto protoreflect.FileDescriptor
var file_hello_proto_rawDesc = []byte{
0x0a, 0x0b, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x65,
0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x0a,
0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x25, 0x0a, 0x0d, 0x48, 0x65,
0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74,
0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65,
0x6e, 0x22, 0xdd, 0x01, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x12, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a,
0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x48, 0x01, 0x52, 0x04, 0x73,
0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f,
0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72,
0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4d,
0x61, 0x70, 0x1a, 0x3b, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42,
0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a,
0x65, 0x32, 0xa7, 0x01, 0x0a, 0x0a, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x57, 0x6f, 0x72, 0x6c, 0x64,
0x12, 0x48, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c,
0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70,
0x6c, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0a, 0x47, 0x65,
0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70,
0x6c, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x1e, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c,
0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x37, 0x67,
0x69, 0x74, 0x2e, 0x69, 0x63, 0x65, 0x63, 0x68, 0x65, 0x6e, 0x2e, 0x63, 0x6e, 0x2f, 0x6d, 0x6f,
0x6e, 0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70,
0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x62, 0x72, 0x61, 0x68, 0x6d, 0x61, 0x2f,
0x6d, 0x75, 0x72, 0x64, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_murder_hello_proto_rawDescOnce sync.Once
file_murder_hello_proto_rawDescData = file_murder_hello_proto_rawDesc
file_hello_proto_rawDescOnce sync.Once
file_hello_proto_rawDescData = file_hello_proto_rawDesc
)
func file_murder_hello_proto_rawDescGZIP() []byte {
file_murder_hello_proto_rawDescOnce.Do(func() {
file_murder_hello_proto_rawDescData = protoimpl.X.CompressGZIP(file_murder_hello_proto_rawDescData)
func file_hello_proto_rawDescGZIP() []byte {
file_hello_proto_rawDescOnce.Do(func() {
file_hello_proto_rawDescData = protoimpl.X.CompressGZIP(file_hello_proto_rawDescData)
})
return file_murder_hello_proto_rawDescData
return file_hello_proto_rawDescData
}
var file_murder_hello_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_murder_hello_proto_goTypes = []interface{}{
(*HelloRequest)(nil), // 0: example_service.HelloRequest
(*HelloResponse)(nil), // 1: example_service.HelloResponse
var file_hello_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_hello_proto_goTypes = []interface{}{
(*HelloResponse)(nil), // 0: example_service.HelloResponse
(*QueryCondition)(nil), // 1: example_service.QueryCondition
nil, // 2: example_service.QueryCondition.QueryMapEntry
(*HelloRequest)(nil), // 3: example_service.HelloRequest
}
var file_murder_hello_proto_depIdxs = []int32{
0, // 0: example_service.HelloWorld.Login:input_type -> example_service.HelloRequest
1, // 1: example_service.HelloWorld.Login:output_type -> example_service.HelloResponse
1, // [1:2] is the sub-list for method output_type
0, // [0:1] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
var file_hello_proto_depIdxs = []int32{
2, // 0: example_service.QueryCondition.query_map:type_name -> example_service.QueryCondition.QueryMapEntry
3, // 1: example_service.HelloWorld.Login:input_type -> example_service.HelloRequest
1, // 2: example_service.HelloWorld.GetScripts:input_type -> example_service.QueryCondition
0, // 3: example_service.HelloWorld.Login:output_type -> example_service.HelloResponse
0, // 4: example_service.HelloWorld.GetScripts:output_type -> example_service.HelloResponse
3, // [3:5] is the sub-list for method output_type
1, // [1:3] 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_murder_hello_proto_init() }
func file_murder_hello_proto_init() {
if File_murder_hello_proto != nil {
func init() { file_hello_proto_init() }
func file_hello_proto_init() {
if File_hello_proto != nil {
return
}
file_name_proto_init()
if !protoimpl.UnsafeEnabled {
file_murder_hello_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HelloRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_murder_hello_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
file_hello_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HelloResponse); i {
case 0:
return &v.state
@ -193,23 +220,36 @@ func file_murder_hello_proto_init() {
return nil
}
}
file_hello_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryCondition); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_hello_proto_msgTypes[1].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_murder_hello_proto_rawDesc,
RawDescriptor: file_hello_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumMessages: 3,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_murder_hello_proto_goTypes,
DependencyIndexes: file_murder_hello_proto_depIdxs,
MessageInfos: file_murder_hello_proto_msgTypes,
GoTypes: file_hello_proto_goTypes,
DependencyIndexes: file_hello_proto_depIdxs,
MessageInfos: file_hello_proto_msgTypes,
}.Build()
File_murder_hello_proto = out.File
file_murder_hello_proto_rawDesc = nil
file_murder_hello_proto_goTypes = nil
file_murder_hello_proto_depIdxs = nil
File_hello_proto = out.File
file_hello_proto_rawDesc = nil
file_hello_proto_goTypes = nil
file_hello_proto_depIdxs = nil
}

View File

@ -1,17 +1,19 @@
syntax = "proto3";
import "name.proto";
option go_package = "git.icechen.cn/monorepo/backend/pkg/proto/brahma/murder";
package murder;
package example_service;
service HelloWorld {
rpc Login (HelloRequest) returns (HelloResponse) {}
}
message HelloRequest {
string code = 1;
service murder {
rpc Login (murder.HelloRequest) returns (HelloResponse) {}
rpc GetScripts(QueryCondition) returns(HelloResponse){}
}
message HelloResponse {
string token = 1;
}
message QueryCondition {
optional sint64 page = 1;
optional sint64 size = 2;
map<string, string> query_map = 3;
}

View File

@ -2,7 +2,7 @@
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.19.3
// source: murder/hello.proto
// source: hello.proto
package murder
@ -23,6 +23,7 @@ const _ = grpc.SupportPackageIsVersion7
// 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 HelloWorldClient interface {
Login(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloResponse, error)
GetScripts(ctx context.Context, in *QueryCondition, opts ...grpc.CallOption) (*HelloResponse, error)
}
type helloWorldClient struct {
@ -42,11 +43,21 @@ func (c *helloWorldClient) Login(ctx context.Context, in *HelloRequest, opts ...
return out, nil
}
func (c *helloWorldClient) GetScripts(ctx context.Context, in *QueryCondition, opts ...grpc.CallOption) (*HelloResponse, error) {
out := new(HelloResponse)
err := c.cc.Invoke(ctx, "/example_service.HelloWorld/GetScripts", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// HelloWorldServer is the server API for HelloWorld service.
// All implementations must embed UnimplementedHelloWorldServer
// for forward compatibility
type HelloWorldServer interface {
Login(context.Context, *HelloRequest) (*HelloResponse, error)
GetScripts(context.Context, *QueryCondition) (*HelloResponse, error)
mustEmbedUnimplementedHelloWorldServer()
}
@ -57,6 +68,9 @@ type UnimplementedHelloWorldServer struct {
func (UnimplementedHelloWorldServer) Login(context.Context, *HelloRequest) (*HelloResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Login not implemented")
}
func (UnimplementedHelloWorldServer) GetScripts(context.Context, *QueryCondition) (*HelloResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetScripts not implemented")
}
func (UnimplementedHelloWorldServer) mustEmbedUnimplementedHelloWorldServer() {}
// UnsafeHelloWorldServer may be embedded to opt out of forward compatibility for this service.
@ -88,6 +102,24 @@ func _HelloWorld_Login_Handler(srv interface{}, ctx context.Context, dec func(in
return interceptor(ctx, in, info, handler)
}
func _HelloWorld_GetScripts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryCondition)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(HelloWorldServer).GetScripts(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/example_service.HelloWorld/GetScripts",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(HelloWorldServer).GetScripts(ctx, req.(*QueryCondition))
}
return interceptor(ctx, in, info, handler)
}
// HelloWorld_ServiceDesc is the grpc.ServiceDesc for HelloWorld service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@ -99,7 +131,11 @@ var HelloWorld_ServiceDesc = grpc.ServiceDesc{
MethodName: "Login",
Handler: _HelloWorld_Login_Handler,
},
{
MethodName: "GetScripts",
Handler: _HelloWorld_GetScripts_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "murder/hello.proto",
Metadata: "hello.proto",
}

View File

@ -0,0 +1,145 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.27.1
// protoc v3.19.3
// source: name.proto
package murder
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
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 HelloRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
}
func (x *HelloRequest) Reset() {
*x = HelloRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_name_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *HelloRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HelloRequest) ProtoMessage() {}
func (x *HelloRequest) ProtoReflect() protoreflect.Message {
mi := &file_name_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use HelloRequest.ProtoReflect.Descriptor instead.
func (*HelloRequest) Descriptor() ([]byte, []int) {
return file_name_proto_rawDescGZIP(), []int{0}
}
func (x *HelloRequest) GetCode() string {
if x != nil {
return x.Code
}
return ""
}
var File_name_proto protoreflect.FileDescriptor
var file_name_proto_rawDesc = []byte{
0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x65, 0x78,
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x22, 0x0a,
0x0c, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x2e, 0x69, 0x63, 0x65, 0x63, 0x68, 0x65, 0x6e,
0x2e, 0x63, 0x6e, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x62, 0x61, 0x63,
0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x62,
0x72, 0x61, 0x68, 0x6d, 0x61, 0x2f, 0x6d, 0x75, 0x72, 0x64, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (
file_name_proto_rawDescOnce sync.Once
file_name_proto_rawDescData = file_name_proto_rawDesc
)
func file_name_proto_rawDescGZIP() []byte {
file_name_proto_rawDescOnce.Do(func() {
file_name_proto_rawDescData = protoimpl.X.CompressGZIP(file_name_proto_rawDescData)
})
return file_name_proto_rawDescData
}
var file_name_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_name_proto_goTypes = []interface{}{
(*HelloRequest)(nil), // 0: example_service.HelloRequest
}
var file_name_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_name_proto_init() }
func file_name_proto_init() {
if File_name_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_name_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HelloRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_name_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_name_proto_goTypes,
DependencyIndexes: file_name_proto_depIdxs,
MessageInfos: file_name_proto_msgTypes,
}.Build()
File_name_proto = out.File
file_name_proto_rawDesc = nil
file_name_proto_goTypes = nil
file_name_proto_depIdxs = nil
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
option go_package = "git.icechen.cn/monorepo/backend/pkg/proto/brahma/murder";
package murder;
message HelloRequest {
string code = 1;
}

View File

@ -0,0 +1,14 @@
syntax = "proto3";
import "name.proto";
option go_package = "git.icechen.cn/monorepo/backend/pkg/proto/brahma/murder";
package murder;
message HelloResponse {
string token = 1;
}
message QueryCondition {
optional sint64 page = 1;
optional sint64 size = 2;
map<string, string> query_map = 3;
}

View File

@ -0,0 +1,377 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.27.1
// protoc v3.19.3
// source: script.proto
package script
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
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 Script struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ScriptName string `protobuf:"bytes,1,opt,name=script_name,json=scriptName,proto3" json:"script_name,omitempty"`
ScriptIntro string `protobuf:"bytes,2,opt,name=script_intro,json=scriptIntro,proto3" json:"script_intro,omitempty"`
ScriptTag []string `protobuf:"bytes,3,rep,name=script_tag,json=scriptTag,proto3" json:"script_tag,omitempty"`
ScriptScore float64 `protobuf:"fixed64,4,opt,name=script_score,json=scriptScore,proto3" json:"script_score,omitempty"`
GroupDuration int64 `protobuf:"zigzag64,5,opt,name=group_duration,json=groupDuration,proto3" json:"group_duration,omitempty"`
ScriptCoverUrl string `protobuf:"bytes,6,opt,name=script_cover_url,json=scriptCoverUrl,proto3" json:"script_cover_url,omitempty"`
ScriptTextContext string `protobuf:"bytes,7,opt,name=script_text_context,json=scriptTextContext,proto3" json:"script_text_context,omitempty"`
ScriptPlotScore float64 `protobuf:"fixed64,8,opt,name=script_plot_score,json=scriptPlotScore,proto3" json:"script_plot_score,omitempty"`
ScriptImageContent []string `protobuf:"bytes,9,rep,name=script_image_content,json=scriptImageContent,proto3" json:"script_image_content,omitempty"`
ScriptMalePlayer int64 `protobuf:"zigzag64,10,opt,name=script_male_player,json=scriptMalePlayer,proto3" json:"script_male_player,omitempty"`
ScriptFemalePlayer int64 `protobuf:"zigzag64,11,opt,name=script_female_player,json=scriptFemalePlayer,proto3" json:"script_female_player,omitempty"`
ScriptDifficultDegree string `protobuf:"bytes,12,opt,name=script_difficult_degree,json=scriptDifficultDegree,proto3" json:"script_difficult_degree,omitempty"`
ScriptPlayerLimit int64 `protobuf:"zigzag64,13,opt,name=script_player_limit,json=scriptPlayerLimit,proto3" json:"script_player_limit,omitempty"`
Uuid string `protobuf:"bytes,14,opt,name=uuid,proto3" json:"uuid,omitempty"`
ScriptComplexScore float64 `protobuf:"fixed64,15,opt,name=script_complex_score,json=scriptComplexScore,proto3" json:"script_complex_score,omitempty"`
Qid string `protobuf:"bytes,16,opt,name=qid,proto3" json:"qid,omitempty"`
IsDel int64 `protobuf:"zigzag64,17,opt,name=is_del,json=isDel,proto3" json:"is_del,omitempty"`
}
func (x *Script) Reset() {
*x = Script{}
if protoimpl.UnsafeEnabled {
mi := &file_script_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Script) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Script) ProtoMessage() {}
func (x *Script) ProtoReflect() protoreflect.Message {
mi := &file_script_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Script.ProtoReflect.Descriptor instead.
func (*Script) Descriptor() ([]byte, []int) {
return file_script_proto_rawDescGZIP(), []int{0}
}
func (x *Script) GetScriptName() string {
if x != nil {
return x.ScriptName
}
return ""
}
func (x *Script) GetScriptIntro() string {
if x != nil {
return x.ScriptIntro
}
return ""
}
func (x *Script) GetScriptTag() []string {
if x != nil {
return x.ScriptTag
}
return nil
}
func (x *Script) GetScriptScore() float64 {
if x != nil {
return x.ScriptScore
}
return 0
}
func (x *Script) GetGroupDuration() int64 {
if x != nil {
return x.GroupDuration
}
return 0
}
func (x *Script) GetScriptCoverUrl() string {
if x != nil {
return x.ScriptCoverUrl
}
return ""
}
func (x *Script) GetScriptTextContext() string {
if x != nil {
return x.ScriptTextContext
}
return ""
}
func (x *Script) GetScriptPlotScore() float64 {
if x != nil {
return x.ScriptPlotScore
}
return 0
}
func (x *Script) GetScriptImageContent() []string {
if x != nil {
return x.ScriptImageContent
}
return nil
}
func (x *Script) GetScriptMalePlayer() int64 {
if x != nil {
return x.ScriptMalePlayer
}
return 0
}
func (x *Script) GetScriptFemalePlayer() int64 {
if x != nil {
return x.ScriptFemalePlayer
}
return 0
}
func (x *Script) GetScriptDifficultDegree() string {
if x != nil {
return x.ScriptDifficultDegree
}
return ""
}
func (x *Script) GetScriptPlayerLimit() int64 {
if x != nil {
return x.ScriptPlayerLimit
}
return 0
}
func (x *Script) GetUuid() string {
if x != nil {
return x.Uuid
}
return ""
}
func (x *Script) GetScriptComplexScore() float64 {
if x != nil {
return x.ScriptComplexScore
}
return 0
}
func (x *Script) GetQid() string {
if x != nil {
return x.Qid
}
return ""
}
func (x *Script) GetIsDel() int64 {
if x != nil {
return x.IsDel
}
return 0
}
type Scripts struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Scripts []*Script `protobuf:"bytes,1,rep,name=scripts,proto3" json:"scripts,omitempty"`
}
func (x *Scripts) Reset() {
*x = Scripts{}
if protoimpl.UnsafeEnabled {
mi := &file_script_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Scripts) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Scripts) ProtoMessage() {}
func (x *Scripts) ProtoReflect() protoreflect.Message {
mi := &file_script_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Scripts.ProtoReflect.Descriptor instead.
func (*Scripts) Descriptor() ([]byte, []int) {
return file_script_proto_rawDescGZIP(), []int{1}
}
func (x *Scripts) GetScripts() []*Script {
if x != nil {
return x.Scripts
}
return nil
}
var File_script_proto protoreflect.FileDescriptor
var file_script_proto_rawDesc = []byte{
0x0a, 0x0c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06,
0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0xa4, 0x05, 0x0a, 0x06, 0x53, 0x63, 0x72, 0x69, 0x70,
0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74,
0x72, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x49, 0x6e, 0x74, 0x72, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f,
0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x72, 0x69, 0x70,
0x74, 0x54, 0x61, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x73,
0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x73, 0x63, 0x72, 0x69,
0x70, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70,
0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x12, 0x52,
0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28,
0x0a, 0x10, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75,
0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x43, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x63, 0x72, 0x69,
0x70, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18,
0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x54, 0x65, 0x78,
0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x63, 0x72, 0x69,
0x70, 0x74, 0x5f, 0x70, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20,
0x01, 0x28, 0x01, 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x6c, 0x6f, 0x74, 0x53,
0x63, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x69,
0x6d, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x03,
0x28, 0x09, 0x52, 0x12, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x5f, 0x6d, 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x12, 0x52, 0x10, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4d, 0x61, 0x6c, 0x65, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x66,
0x65, 0x6d, 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01,
0x28, 0x12, 0x52, 0x12, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x46, 0x65, 0x6d, 0x61, 0x6c, 0x65,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x5f, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x65, 0x67, 0x72, 0x65,
0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44,
0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x44, 0x65, 0x67, 0x72, 0x65, 0x65, 0x12, 0x2e,
0x0a, 0x13, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f,
0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x11, 0x73, 0x63, 0x72,
0x69, 0x70, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12,
0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75,
0x69, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x6d,
0x70, 0x6c, 0x65, 0x78, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01,
0x52, 0x12, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x53,
0x63, 0x6f, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x71, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c,
0x18, 0x11, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x22, 0x33, 0x0a,
0x07, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x73, 0x63, 0x72, 0x69,
0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x63, 0x72, 0x69,
0x70, 0x74, 0x2e, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x07, 0x73, 0x63, 0x72, 0x69, 0x70,
0x74, 0x73, 0x42, 0x41, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x2e, 0x69, 0x63, 0x65, 0x63, 0x68, 0x65,
0x6e, 0x2e, 0x63, 0x6e, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x62, 0x61,
0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
0x62, 0x72, 0x61, 0x68, 0x6d, 0x61, 0x2f, 0x6d, 0x75, 0x72, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x73,
0x63, 0x72, 0x69, 0x70, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_script_proto_rawDescOnce sync.Once
file_script_proto_rawDescData = file_script_proto_rawDesc
)
func file_script_proto_rawDescGZIP() []byte {
file_script_proto_rawDescOnce.Do(func() {
file_script_proto_rawDescData = protoimpl.X.CompressGZIP(file_script_proto_rawDescData)
})
return file_script_proto_rawDescData
}
var file_script_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_script_proto_goTypes = []interface{}{
(*Script)(nil), // 0: script.Script
(*Scripts)(nil), // 1: script.Scripts
}
var file_script_proto_depIdxs = []int32{
0, // 0: script.Scripts.scripts:type_name -> script.Script
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
}
func init() { file_script_proto_init() }
func file_script_proto_init() {
if File_script_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_script_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Script); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_script_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Scripts); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_script_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_script_proto_goTypes,
DependencyIndexes: file_script_proto_depIdxs,
MessageInfos: file_script_proto_msgTypes,
}.Build()
File_script_proto = out.File
file_script_proto_rawDesc = nil
file_script_proto_goTypes = nil
file_script_proto_depIdxs = nil
}

View File

@ -0,0 +1,27 @@
syntax = "proto3";
option go_package = "git.icechen.cn/monorepo/backend/pkg/proto/brahma/murders/script";
package script;
message Script {
string script_name = 1;
string script_intro = 2;
repeated string script_tag = 3;
double script_score = 4;
sint64 group_duration = 5;
string script_cover_url = 6;
string script_text_context = 7;
double script_plot_score = 8;
repeated string script_image_content = 9;
sint64 script_male_player = 10;
sint64 script_female_player = 11;
string script_difficult_degree = 12;
sint64 script_player_limit = 13;
string uuid = 14;
double script_complex_score = 15;
string qid = 16;
sint64 is_del = 17;
}
message Scripts {
repeated Script scripts = 1;
}

View File

@ -0,0 +1,184 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.27.1
// protoc v3.19.3
// source: service.proto
package murders
import (
script "git.icechen.cn/monorepo/backend/pkg/proto/brahma/murders/script"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
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 QueryCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Page *int64 `protobuf:"zigzag64,1,opt,name=page,proto3,oneof" json:"page,omitempty"`
Size *int64 `protobuf:"zigzag64,2,opt,name=size,proto3,oneof" json:"size,omitempty"`
QueryMap map[string]string `protobuf:"bytes,3,rep,name=query_map,json=queryMap,proto3" json:"query_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *QueryCondition) Reset() {
*x = QueryCondition{}
if protoimpl.UnsafeEnabled {
mi := &file_service_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryCondition) ProtoMessage() {}
func (x *QueryCondition) ProtoReflect() protoreflect.Message {
mi := &file_service_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use QueryCondition.ProtoReflect.Descriptor instead.
func (*QueryCondition) Descriptor() ([]byte, []int) {
return file_service_proto_rawDescGZIP(), []int{0}
}
func (x *QueryCondition) GetPage() int64 {
if x != nil && x.Page != nil {
return *x.Page
}
return 0
}
func (x *QueryCondition) GetSize() int64 {
if x != nil && x.Size != nil {
return *x.Size
}
return 0
}
func (x *QueryCondition) GetQueryMap() map[string]string {
if x != nil {
return x.QueryMap
}
return nil
}
var File_service_proto protoreflect.FileDescriptor
var file_service_proto_rawDesc = []byte{
0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x06, 0x6d, 0x75, 0x72, 0x64, 0x65, 0x72, 0x1a, 0x13, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f,
0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd4, 0x01, 0x0a,
0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x48, 0x00, 0x52,
0x04, 0x70, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x48, 0x01, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01,
0x01, 0x12, 0x41, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x75, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x51, 0x75,
0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x51, 0x75, 0x65,
0x72, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x71, 0x75, 0x65, 0x72,
0x79, 0x4d, 0x61, 0x70, 0x1a, 0x3b, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x70,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73,
0x69, 0x7a, 0x65, 0x32, 0x42, 0x0a, 0x07, 0x6d, 0x75, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x37,
0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x6d,
0x75, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x0f, 0x2e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2e, 0x53, 0x63,
0x72, 0x69, 0x70, 0x74, 0x73, 0x22, 0x00, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x2e, 0x69,
0x63, 0x65, 0x63, 0x68, 0x65, 0x6e, 0x2e, 0x63, 0x6e, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x65,
0x70, 0x6f, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x62, 0x72, 0x61, 0x68, 0x6d, 0x61, 0x2f, 0x6d, 0x75, 0x72, 0x64,
0x65, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_service_proto_rawDescOnce sync.Once
file_service_proto_rawDescData = file_service_proto_rawDesc
)
func file_service_proto_rawDescGZIP() []byte {
file_service_proto_rawDescOnce.Do(func() {
file_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_proto_rawDescData)
})
return file_service_proto_rawDescData
}
var file_service_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_service_proto_goTypes = []interface{}{
(*QueryCondition)(nil), // 0: murder.QueryCondition
nil, // 1: murder.QueryCondition.QueryMapEntry
(*script.Scripts)(nil), // 2: script.Scripts
}
var file_service_proto_depIdxs = []int32{
1, // 0: murder.QueryCondition.query_map:type_name -> murder.QueryCondition.QueryMapEntry
0, // 1: murder.murders.GetScripts:input_type -> murder.QueryCondition
2, // 2: murder.murders.GetScripts:output_type -> script.Scripts
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_service_proto_init() }
func file_service_proto_init() {
if File_service_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryCondition); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_service_proto_msgTypes[0].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_service_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_proto_goTypes,
DependencyIndexes: file_service_proto_depIdxs,
MessageInfos: file_service_proto_msgTypes,
}.Build()
File_service_proto = out.File
file_service_proto_rawDesc = nil
file_service_proto_goTypes = nil
file_service_proto_depIdxs = nil
}

View File

@ -0,0 +1,14 @@
syntax = "proto3";
import "script/script.proto";
option go_package = "git.icechen.cn/monorepo/backend/pkg/proto/brahma/murders";
package murder;
service murders{
rpc GetScripts(QueryCondition) returns(script.Scripts){}
}
message QueryCondition {
optional sint64 page = 1;
optional sint64 size = 2;
map<string, string> query_map = 3;
}

View File

@ -0,0 +1,106 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.19.3
// source: service.proto
package murders
import (
context "context"
script "git.icechen.cn/monorepo/backend/pkg/proto/brahma/murders/script"
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.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
// MurdersClient is the client API for Murders 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 MurdersClient interface {
GetScripts(ctx context.Context, in *QueryCondition, opts ...grpc.CallOption) (*script.Scripts, error)
}
type murdersClient struct {
cc grpc.ClientConnInterface
}
func NewMurdersClient(cc grpc.ClientConnInterface) MurdersClient {
return &murdersClient{cc}
}
func (c *murdersClient) GetScripts(ctx context.Context, in *QueryCondition, opts ...grpc.CallOption) (*script.Scripts, error) {
out := new(script.Scripts)
err := c.cc.Invoke(ctx, "/murder.murders/GetScripts", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// MurdersServer is the server API for Murders service.
// All implementations must embed UnimplementedMurdersServer
// for forward compatibility
type MurdersServer interface {
GetScripts(context.Context, *QueryCondition) (*script.Scripts, error)
mustEmbedUnimplementedMurdersServer()
}
// UnimplementedMurdersServer must be embedded to have forward compatible implementations.
type UnimplementedMurdersServer struct {
}
func (UnimplementedMurdersServer) GetScripts(context.Context, *QueryCondition) (*script.Scripts, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetScripts not implemented")
}
func (UnimplementedMurdersServer) mustEmbedUnimplementedMurdersServer() {}
// UnsafeMurdersServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to MurdersServer will
// result in compilation errors.
type UnsafeMurdersServer interface {
mustEmbedUnimplementedMurdersServer()
}
func RegisterMurdersServer(s grpc.ServiceRegistrar, srv MurdersServer) {
s.RegisterService(&Murders_ServiceDesc, srv)
}
func _Murders_GetScripts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryCondition)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MurdersServer).GetScripts(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/murder.murders/GetScripts",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MurdersServer).GetScripts(ctx, req.(*QueryCondition))
}
return interceptor(ctx, in, info, handler)
}
// Murders_ServiceDesc is the grpc.ServiceDesc for Murders service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var Murders_ServiceDesc = grpc.ServiceDesc{
ServiceName: "murder.murders",
HandlerType: (*MurdersServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GetScripts",
Handler: _Murders_GetScripts_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service.proto",
}

View File

@ -0,0 +1,265 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.27.1
// protoc v3.19.3
// source: tag.proto
package tag
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
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 Category struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"`
IsDel int64 `protobuf:"zigzag64,3,opt,name=is_del,json=isDel,proto3" json:"is_del,omitempty"`
Tags []*Tag `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty"`
}
func (x *Category) Reset() {
*x = Category{}
if protoimpl.UnsafeEnabled {
mi := &file_tag_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Category) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Category) ProtoMessage() {}
func (x *Category) ProtoReflect() protoreflect.Message {
mi := &file_tag_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Category.ProtoReflect.Descriptor instead.
func (*Category) Descriptor() ([]byte, []int) {
return file_tag_proto_rawDescGZIP(), []int{0}
}
func (x *Category) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
func (x *Category) GetUuid() string {
if x != nil {
return x.Uuid
}
return ""
}
func (x *Category) GetIsDel() int64 {
if x != nil {
return x.IsDel
}
return 0
}
func (x *Category) GetTags() []*Tag {
if x != nil {
return x.Tags
}
return nil
}
type Tag struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
Uuid int64 `protobuf:"zigzag64,2,opt,name=uuid,proto3" json:"uuid,omitempty"`
IsDel int64 `protobuf:"zigzag64,3,opt,name=is_del,json=isDel,proto3" json:"is_del,omitempty"`
Cs *Category `protobuf:"bytes,4,opt,name=cs,proto3" json:"cs,omitempty"`
}
func (x *Tag) Reset() {
*x = Tag{}
if protoimpl.UnsafeEnabled {
mi := &file_tag_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Tag) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Tag) ProtoMessage() {}
func (x *Tag) ProtoReflect() protoreflect.Message {
mi := &file_tag_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Tag.ProtoReflect.Descriptor instead.
func (*Tag) Descriptor() ([]byte, []int) {
return file_tag_proto_rawDescGZIP(), []int{1}
}
func (x *Tag) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
func (x *Tag) GetUuid() int64 {
if x != nil {
return x.Uuid
}
return 0
}
func (x *Tag) GetIsDel() int64 {
if x != nil {
return x.IsDel
}
return 0
}
func (x *Tag) GetCs() *Category {
if x != nil {
return x.Cs
}
return nil
}
var File_tag_proto protoreflect.FileDescriptor
var file_tag_proto_rawDesc = []byte{
0x0a, 0x09, 0x74, 0x61, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x74, 0x61, 0x67,
0x22, 0x69, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c,
0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x12, 0x1c, 0x0a,
0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x74, 0x61,
0x67, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x65, 0x0a, 0x03, 0x54,
0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06,
0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, 0x69, 0x73,
0x44, 0x65, 0x6c, 0x12, 0x1d, 0x0a, 0x02, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x0d, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x02,
0x63, 0x73, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x2e, 0x69, 0x63, 0x65, 0x63, 0x68, 0x65,
0x6e, 0x2e, 0x63, 0x6e, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x62, 0x61,
0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
0x62, 0x72, 0x61, 0x68, 0x6d, 0x61, 0x2f, 0x6d, 0x75, 0x72, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x74,
0x61, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_tag_proto_rawDescOnce sync.Once
file_tag_proto_rawDescData = file_tag_proto_rawDesc
)
func file_tag_proto_rawDescGZIP() []byte {
file_tag_proto_rawDescOnce.Do(func() {
file_tag_proto_rawDescData = protoimpl.X.CompressGZIP(file_tag_proto_rawDescData)
})
return file_tag_proto_rawDescData
}
var file_tag_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_tag_proto_goTypes = []interface{}{
(*Category)(nil), // 0: tag.Category
(*Tag)(nil), // 1: tag.Tag
}
var file_tag_proto_depIdxs = []int32{
1, // 0: tag.Category.tags:type_name -> tag.Tag
0, // 1: tag.Tag.cs:type_name -> tag.Category
2, // [2:2] is the sub-list for method output_type
2, // [2:2] 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_tag_proto_init() }
func file_tag_proto_init() {
if File_tag_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_tag_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Category); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_tag_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Tag); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_tag_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_tag_proto_goTypes,
DependencyIndexes: file_tag_proto_depIdxs,
MessageInfos: file_tag_proto_msgTypes,
}.Build()
File_tag_proto = out.File
file_tag_proto_rawDesc = nil
file_tag_proto_goTypes = nil
file_tag_proto_depIdxs = nil
}

View File

@ -0,0 +1,17 @@
syntax = "proto3";
option go_package = "git.icechen.cn/monorepo/backend/pkg/proto/brahma/murders/tag";
package tag;
message Category {
string value = 1;
string uuid = 2;
sint64 is_del = 3;
repeated Tag tags = 4;
}
message Tag {
string value = 1;
sint64 uuid = 2;
sint64 is_del = 3;
Category cs = 4;
}

View File

@ -0,0 +1,37 @@
package rpc
import (
"context"
"fmt"
"git.icechen.cn/monorepo/backend/pkg/env"
"github.com/gofiber/fiber/v2"
ctxLogger "github.com/luizsuper/ctxLoggers"
"go.uber.org/zap"
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
"strings"
"time"
)
// Interceptor 将requestId 存入ctx记录出入参数记录时间
func Interceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo,
handler grpc.UnaryHandler) (interface{}, error) {
serverName := env.Namespace + "-" + env.AppName + "-" + "service"
startTime := time.Now()
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
fmt.Printf("get metadata error")
}
if t, ok := md[strings.ToLower(fiber.HeaderXRequestID)]; ok {
ctx = context.WithValue(ctx, fiber.HeaderXRequestID, t[0])
}
ctxLogger.Debug(ctx, serverName, zap.String("gRPC method", fmt.Sprintf(" %s", info.FullMethod)), zap.Any("req", req))
resp, err := handler(ctx, req)
costSeconds := time.Since(startTime).Seconds()
if err != nil {
ctxLogger.Debug(ctx, serverName, zap.String("gRPC method", fmt.Sprintf(" %s", info.FullMethod)), zap.Float64("cost_time", costSeconds), zap.String("errorReason", err.Error()))
} else {
ctxLogger.Debug(ctx, serverName, zap.String("gRPC method", fmt.Sprintf(" %s, %v", info.FullMethod, resp)), zap.Float64("cost_time", costSeconds), zap.Any("resp", resp))
}
return resp, err
}

25
pkg/time/time.go 100644
View File

@ -0,0 +1,25 @@
package times
import "time"
var (
cst *time.Location
)
func init() {
var err error
if cst, err = time.LoadLocation("Asia/Shanghai"); err != nil {
panic(err)
}
// 默认设置为中国时区
time.Local = cst
}
// CSTLayout China Standard Time Layout
const CSTLayout = "2006-01-02 15:04:05"
func CSTLayoutString() string {
ts := time.Now()
return ts.In(cst).Format(CSTLayout)
}