diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..8866613 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,68 @@ +name: Generate docs +on: [push] + +jobs: + docs: + name: Generate docs + runs-on: ubuntu-latest + steps: + - name: Set up Go 1.13 + uses: actions/setup-go@v2 + with: + go-version: 1.13 + id: go + + - name: Install Protoc + uses: arduino/setup-protoc@master + + - name: Check out this code + uses: actions/checkout@v2 + with: + path: services + + - name: Check out micro code + uses: actions/checkout@v2 + with: + repository: 'micro/micro' + path: 'micro' + ref: 'master' + + - name: Enable caching + uses: actions/cache@v2 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + - name: Install protoc gen micro plugin + working-directory: micro/cmd/protoc-gen-micro + run: | + go get -u github.com/golang/protobuf/protoc-gen-go + go install + + - name: Install redoc cli + run: | + # https://github.com/actions/virtual-environments/issues/599 + sudo npm install -g redoc-cli + + - name: Install openapi plugin + working-directory: micro/cmd/protoc-gen-openapi + run: | + go install + + - name: Install hugo + run: sudo snap install hugo --channel=extended + + - name: Generate openapi spec and html + working-directory: services + run: | + go run cmd/docgen/main.go . + + - name: Deploy + uses: s0/git-publish-subdir-action@develop + env: + REPO: self + BRANCH: gh-pages + FOLDER: services/docs + GITHUB_TOKEN: ${{ secrets.GH_PAT }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f8bbd2d --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +api-protobuf.json +api-*.json +redoc-static.html +!docs diff --git a/blog/Makefile b/blog/Makefile index f45b9a4..25f53aa 100644 --- a/blog/Makefile +++ b/blog/Makefile @@ -7,8 +7,13 @@ init: go get github.com/micro/micro/v3/cmd/protoc-gen-micro .PHONY: proto proto: - protoc --proto_path=$$GOPATH/src:. --micro_out=. --go_out=:. proto/blog.proto - + protoc --openapi_out=. --proto_path=$$GOPATH/src:. --micro_out=. --go_out=:. proto/blog.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=$$GOPATH/src:. --micro_out=. --go_out=:. proto/blog.proto + @redoc-cli bundle api-protobuf.json + .PHONY: build build: go build -o blog *.go diff --git a/blog/comments/proto/comments.proto b/blog/comments/proto/comments.proto index 8e28846..37c3da9 100644 --- a/blog/comments/proto/comments.proto +++ b/blog/comments/proto/comments.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package comments; +option go_package = "proto;comments"; service Comments { rpc New(NewRequest) returns (NewResponse) {} diff --git a/blog/feeds/proto/feeds.pb.go b/blog/feeds/proto/feeds.pb.go deleted file mode 100644 index bf3bc02..0000000 --- a/blog/feeds/proto/feeds.pb.go +++ /dev/null @@ -1,340 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: proto/feeds.proto - -package feeds - -import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package - -type Feed struct { - // rss feed name - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // rss feed url - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Feed) Reset() { *m = Feed{} } -func (m *Feed) String() string { return proto.CompactTextString(m) } -func (*Feed) ProtoMessage() {} -func (*Feed) Descriptor() ([]byte, []int) { - return fileDescriptor_dd517c38176c13bf, []int{0} -} - -func (m *Feed) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Feed.Unmarshal(m, b) -} -func (m *Feed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Feed.Marshal(b, m, deterministic) -} -func (m *Feed) XXX_Merge(src proto.Message) { - xxx_messageInfo_Feed.Merge(m, src) -} -func (m *Feed) XXX_Size() int { - return xxx_messageInfo_Feed.Size(m) -} -func (m *Feed) XXX_DiscardUnknown() { - xxx_messageInfo_Feed.DiscardUnknown(m) -} - -var xxx_messageInfo_Feed proto.InternalMessageInfo - -func (m *Feed) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Feed) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -type Entry struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` - Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` - Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` - Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` - Date int64 `protobuf:"varint,6,opt,name=date,proto3" json:"date,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Entry) Reset() { *m = Entry{} } -func (m *Entry) String() string { return proto.CompactTextString(m) } -func (*Entry) ProtoMessage() {} -func (*Entry) Descriptor() ([]byte, []int) { - return fileDescriptor_dd517c38176c13bf, []int{1} -} - -func (m *Entry) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Entry.Unmarshal(m, b) -} -func (m *Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Entry.Marshal(b, m, deterministic) -} -func (m *Entry) XXX_Merge(src proto.Message) { - xxx_messageInfo_Entry.Merge(m, src) -} -func (m *Entry) XXX_Size() int { - return xxx_messageInfo_Entry.Size(m) -} -func (m *Entry) XXX_DiscardUnknown() { - xxx_messageInfo_Entry.DiscardUnknown(m) -} - -var xxx_messageInfo_Entry proto.InternalMessageInfo - -func (m *Entry) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Entry) GetDomain() string { - if m != nil { - return m.Domain - } - return "" -} - -func (m *Entry) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *Entry) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Entry) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *Entry) GetDate() int64 { - if m != nil { - return m.Date - } - return 0 -} - -type NewRequest struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NewRequest) Reset() { *m = NewRequest{} } -func (m *NewRequest) String() string { return proto.CompactTextString(m) } -func (*NewRequest) ProtoMessage() {} -func (*NewRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd517c38176c13bf, []int{2} -} - -func (m *NewRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NewRequest.Unmarshal(m, b) -} -func (m *NewRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NewRequest.Marshal(b, m, deterministic) -} -func (m *NewRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NewRequest.Merge(m, src) -} -func (m *NewRequest) XXX_Size() int { - return xxx_messageInfo_NewRequest.Size(m) -} -func (m *NewRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NewRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NewRequest proto.InternalMessageInfo - -func (m *NewRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *NewRequest) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -type NewResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NewResponse) Reset() { *m = NewResponse{} } -func (m *NewResponse) String() string { return proto.CompactTextString(m) } -func (*NewResponse) ProtoMessage() {} -func (*NewResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd517c38176c13bf, []int{3} -} - -func (m *NewResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NewResponse.Unmarshal(m, b) -} -func (m *NewResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NewResponse.Marshal(b, m, deterministic) -} -func (m *NewResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NewResponse.Merge(m, src) -} -func (m *NewResponse) XXX_Size() int { - return xxx_messageInfo_NewResponse.Size(m) -} -func (m *NewResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NewResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_NewResponse proto.InternalMessageInfo - -type EntriesRequest struct { - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *EntriesRequest) Reset() { *m = EntriesRequest{} } -func (m *EntriesRequest) String() string { return proto.CompactTextString(m) } -func (*EntriesRequest) ProtoMessage() {} -func (*EntriesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd517c38176c13bf, []int{4} -} - -func (m *EntriesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EntriesRequest.Unmarshal(m, b) -} -func (m *EntriesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EntriesRequest.Marshal(b, m, deterministic) -} -func (m *EntriesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_EntriesRequest.Merge(m, src) -} -func (m *EntriesRequest) XXX_Size() int { - return xxx_messageInfo_EntriesRequest.Size(m) -} -func (m *EntriesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_EntriesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_EntriesRequest proto.InternalMessageInfo - -func (m *EntriesRequest) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -type EntriesResponse struct { - Entries []*Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *EntriesResponse) Reset() { *m = EntriesResponse{} } -func (m *EntriesResponse) String() string { return proto.CompactTextString(m) } -func (*EntriesResponse) ProtoMessage() {} -func (*EntriesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd517c38176c13bf, []int{5} -} - -func (m *EntriesResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EntriesResponse.Unmarshal(m, b) -} -func (m *EntriesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EntriesResponse.Marshal(b, m, deterministic) -} -func (m *EntriesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_EntriesResponse.Merge(m, src) -} -func (m *EntriesResponse) XXX_Size() int { - return xxx_messageInfo_EntriesResponse.Size(m) -} -func (m *EntriesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_EntriesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_EntriesResponse proto.InternalMessageInfo - -func (m *EntriesResponse) GetEntries() []*Entry { - if m != nil { - return m.Entries - } - return nil -} - -func init() { - proto.RegisterType((*Feed)(nil), "feeds.Feed") - proto.RegisterType((*Entry)(nil), "feeds.Entry") - proto.RegisterType((*NewRequest)(nil), "feeds.NewRequest") - proto.RegisterType((*NewResponse)(nil), "feeds.NewResponse") - proto.RegisterType((*EntriesRequest)(nil), "feeds.EntriesRequest") - proto.RegisterType((*EntriesResponse)(nil), "feeds.EntriesResponse") -} - -func init() { - proto.RegisterFile("proto/feeds.proto", fileDescriptor_dd517c38176c13bf) -} - -var fileDescriptor_dd517c38176c13bf = []byte{ - // 282 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x51, 0x3d, 0x4f, 0xc3, 0x30, - 0x10, 0x25, 0xcd, 0x97, 0xb8, 0xd0, 0x42, 0x4f, 0x50, 0x59, 0x9d, 0x50, 0x06, 0xd4, 0x01, 0x05, - 0x29, 0x4c, 0xc0, 0x86, 0x04, 0x23, 0x43, 0x46, 0xb6, 0x40, 0x0e, 0x29, 0x52, 0x6b, 0x97, 0xd8, - 0x15, 0xe2, 0x07, 0xf0, 0xbf, 0x71, 0x2e, 0x76, 0x53, 0x31, 0xb1, 0xbd, 0xf7, 0xf2, 0xde, 0xdd, - 0xcb, 0x19, 0xe6, 0xdb, 0x4e, 0x19, 0x75, 0xf3, 0x41, 0xd4, 0xe8, 0x82, 0x31, 0xc6, 0x4c, 0xf2, - 0x6b, 0x88, 0x9e, 0x2d, 0x40, 0x84, 0x48, 0xd6, 0x1b, 0x12, 0xc1, 0x65, 0xb0, 0x3a, 0xae, 0x18, - 0xe3, 0x19, 0x84, 0xbb, 0x6e, 0x2d, 0x26, 0x2c, 0xf5, 0x30, 0xff, 0x09, 0x20, 0x7e, 0x92, 0xa6, - 0xfb, 0xc6, 0x19, 0x4c, 0xda, 0xc6, 0xb9, 0x2d, 0xc2, 0x05, 0x24, 0x8d, 0xda, 0xd4, 0xad, 0x74, - 0x76, 0xc7, 0xfc, 0x8c, 0x70, 0x3f, 0x03, 0xcf, 0x21, 0x36, 0xad, 0x59, 0x93, 0x88, 0x58, 0x1b, - 0x08, 0x0a, 0x48, 0xdf, 0x95, 0x34, 0x24, 0x8d, 0x88, 0x59, 0xf7, 0xb4, 0x6f, 0xd6, 0xd4, 0x86, - 0x44, 0x62, 0xe5, 0xb0, 0x62, 0x9c, 0x97, 0x00, 0x2f, 0xf4, 0x55, 0xd1, 0xe7, 0x8e, 0xb4, 0xf9, - 0x67, 0xf7, 0x29, 0x64, 0x9c, 0xd1, 0x5b, 0x25, 0x35, 0xe5, 0x39, 0xcc, 0xfa, 0x3f, 0x69, 0x49, - 0xfb, 0x31, 0x2e, 0x12, 0x8c, 0x91, 0x3b, 0x38, 0xdd, 0x7b, 0x86, 0x18, 0x5e, 0x41, 0x4a, 0x83, - 0x64, 0x8d, 0xe1, 0x2a, 0x2b, 0x4f, 0x8a, 0xe1, 0xaa, 0x7c, 0x96, 0xca, 0x7f, 0x2c, 0x35, 0xc4, - 0xfd, 0x5d, 0x35, 0x16, 0x10, 0xda, 0xb5, 0x38, 0x77, 0xb6, 0xb1, 0xf6, 0x12, 0x0f, 0x25, 0xd7, - 0xea, 0x08, 0xef, 0x21, 0x75, 0x3b, 0xf1, 0xe2, 0x60, 0xf4, 0xd8, 0x73, 0xb9, 0xf8, 0x2b, 0xfb, - 0xec, 0xe3, 0xf4, 0x35, 0xe3, 0xc7, 0x7d, 0x60, 0xc3, 0x5b, 0xc2, 0xe4, 0xf6, 0x37, 0x00, 0x00, - 0xff, 0xff, 0x66, 0x49, 0x14, 0x45, 0xfe, 0x01, 0x00, 0x00, -} diff --git a/blog/handler/blog.go b/blog/handler/blog.go index 3cea2a2..abf9977 100644 --- a/blog/handler/blog.go +++ b/blog/handler/blog.go @@ -3,10 +3,10 @@ package handler import ( "context" - comments "github.com/micro/services/blog/comments/proto" - posts "github.com/micro/services/blog/posts/proto" + comments "github.com/micro/services/comments/proto" + posts "github.com/micro/services/posts/proto" proto "github.com/micro/services/blog/proto" - tags "github.com/micro/services/blog/tags/proto" + tags "github.com/micro/services/tags/proto" ) type Blog struct { diff --git a/blog/main.go b/blog/main.go index 8a0b243..e8a472a 100644 --- a/blog/main.go +++ b/blog/main.go @@ -1,11 +1,11 @@ package main import ( - comments "github.com/micro/services/blog/comments/proto" + comments "github.com/micro/services/comments/proto" "github.com/micro/services/blog/handler" - posts "github.com/micro/services/blog/posts/proto" + posts "github.com/micro/services/posts/proto" proto "github.com/micro/services/blog/proto" - tags "github.com/micro/services/blog/tags/proto" + tags "github.com/micro/services/tags/proto" "github.com/micro/micro/v3/service" "github.com/micro/micro/v3/service/logger" diff --git a/blog/posts/README.md b/blog/posts/README.md deleted file mode 100644 index 96b2257..0000000 --- a/blog/posts/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Post Service - -The posts service stores posts - -## Usage - -### Create a post - -``` -micro call posts Posts.Save '{"post":{"id":"1","title":"How to Micro","content":"Simply put, Micro is awesome."}}' -micro call posts Posts.Save '{"post":{"id":"2","title":"Fresh posts are fresh","content":"This post is fresher than the How to Micro one"}}' -``` - -### Create a post with tags - -``` -micro call posts Posts.Save '{"post":{"id":"3","title":"How to do epic things with Micro","content":"Everything is awesome.","tagNames":["a","b"]}}' -``` - -### Query posts - -``` -micro call posts Posts.Query '{}' -micro call posts Posts.Query '{"slug":"how-to-micro"}' -micro call posts Posts.Query '{"offset": 10, "limit": 10}' -``` - -### Delete posts - -``` -micro call posts Posts.Delete '{"offset": 10, "limit": 10}' -``` diff --git a/blog/posts/proto/posts.pb.go b/blog/posts/proto/posts.pb.go deleted file mode 100644 index a9386c8..0000000 --- a/blog/posts/proto/posts.pb.go +++ /dev/null @@ -1,498 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: proto/posts.proto - -package posts - -import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package - -type Post struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` - Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` - Created int64 `protobuf:"varint,5,opt,name=created,proto3" json:"created,omitempty"` - Updated int64 `protobuf:"varint,6,opt,name=updated,proto3" json:"updated,omitempty"` - Author string `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` - Tags []string `protobuf:"bytes,8,rep,name=tags,proto3" json:"tags,omitempty"` - Metadata map[string]string `protobuf:"bytes,9,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Image string `protobuf:"bytes,19,opt,name=image,proto3" json:"image,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Post) Reset() { *m = Post{} } -func (m *Post) String() string { return proto.CompactTextString(m) } -func (*Post) ProtoMessage() {} -func (*Post) Descriptor() ([]byte, []int) { - return fileDescriptor_e93dc7d934d9dc10, []int{0} -} - -func (m *Post) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Post.Unmarshal(m, b) -} -func (m *Post) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Post.Marshal(b, m, deterministic) -} -func (m *Post) XXX_Merge(src proto.Message) { - xxx_messageInfo_Post.Merge(m, src) -} -func (m *Post) XXX_Size() int { - return xxx_messageInfo_Post.Size(m) -} -func (m *Post) XXX_DiscardUnknown() { - xxx_messageInfo_Post.DiscardUnknown(m) -} - -var xxx_messageInfo_Post proto.InternalMessageInfo - -func (m *Post) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Post) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Post) GetSlug() string { - if m != nil { - return m.Slug - } - return "" -} - -func (m *Post) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *Post) GetCreated() int64 { - if m != nil { - return m.Created - } - return 0 -} - -func (m *Post) GetUpdated() int64 { - if m != nil { - return m.Updated - } - return 0 -} - -func (m *Post) GetAuthor() string { - if m != nil { - return m.Author - } - return "" -} - -func (m *Post) GetTags() []string { - if m != nil { - return m.Tags - } - return nil -} - -func (m *Post) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *Post) GetImage() string { - if m != nil { - return m.Image - } - return "" -} - -// Query posts. Acts as a listing when no id or slug provided. -// Gets a single post by id or slug if any of them provided. -type QueryRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` - Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` - Offset int64 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` - Limit int64 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *QueryRequest) Reset() { *m = QueryRequest{} } -func (m *QueryRequest) String() string { return proto.CompactTextString(m) } -func (*QueryRequest) ProtoMessage() {} -func (*QueryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e93dc7d934d9dc10, []int{1} -} - -func (m *QueryRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_QueryRequest.Unmarshal(m, b) -} -func (m *QueryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_QueryRequest.Marshal(b, m, deterministic) -} -func (m *QueryRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryRequest.Merge(m, src) -} -func (m *QueryRequest) XXX_Size() int { - return xxx_messageInfo_QueryRequest.Size(m) -} -func (m *QueryRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryRequest proto.InternalMessageInfo - -func (m *QueryRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *QueryRequest) GetSlug() string { - if m != nil { - return m.Slug - } - return "" -} - -func (m *QueryRequest) GetTag() string { - if m != nil { - return m.Tag - } - return "" -} - -func (m *QueryRequest) GetOffset() int64 { - if m != nil { - return m.Offset - } - return 0 -} - -func (m *QueryRequest) GetLimit() int64 { - if m != nil { - return m.Limit - } - return 0 -} - -type QueryResponse struct { - Posts []*Post `protobuf:"bytes,1,rep,name=posts,proto3" json:"posts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *QueryResponse) Reset() { *m = QueryResponse{} } -func (m *QueryResponse) String() string { return proto.CompactTextString(m) } -func (*QueryResponse) ProtoMessage() {} -func (*QueryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e93dc7d934d9dc10, []int{2} -} - -func (m *QueryResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_QueryResponse.Unmarshal(m, b) -} -func (m *QueryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_QueryResponse.Marshal(b, m, deterministic) -} -func (m *QueryResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryResponse.Merge(m, src) -} -func (m *QueryResponse) XXX_Size() int { - return xxx_messageInfo_QueryResponse.Size(m) -} -func (m *QueryResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryResponse proto.InternalMessageInfo - -func (m *QueryResponse) GetPosts() []*Post { - if m != nil { - return m.Posts - } - return nil -} - -type SaveRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` - Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` - Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // When updating a post and wanting to delete all tags, - // send a list of tags with only one member being an empty string [""] - Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` - Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Image string `protobuf:"bytes,8,opt,name=image,proto3" json:"image,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SaveRequest) Reset() { *m = SaveRequest{} } -func (m *SaveRequest) String() string { return proto.CompactTextString(m) } -func (*SaveRequest) ProtoMessage() {} -func (*SaveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e93dc7d934d9dc10, []int{3} -} - -func (m *SaveRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SaveRequest.Unmarshal(m, b) -} -func (m *SaveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SaveRequest.Marshal(b, m, deterministic) -} -func (m *SaveRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SaveRequest.Merge(m, src) -} -func (m *SaveRequest) XXX_Size() int { - return xxx_messageInfo_SaveRequest.Size(m) -} -func (m *SaveRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SaveRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SaveRequest proto.InternalMessageInfo - -func (m *SaveRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *SaveRequest) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *SaveRequest) GetSlug() string { - if m != nil { - return m.Slug - } - return "" -} - -func (m *SaveRequest) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *SaveRequest) GetTimestamp() int64 { - if m != nil { - return m.Timestamp - } - return 0 -} - -func (m *SaveRequest) GetTags() []string { - if m != nil { - return m.Tags - } - return nil -} - -func (m *SaveRequest) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *SaveRequest) GetImage() string { - if m != nil { - return m.Image - } - return "" -} - -type SaveResponse struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SaveResponse) Reset() { *m = SaveResponse{} } -func (m *SaveResponse) String() string { return proto.CompactTextString(m) } -func (*SaveResponse) ProtoMessage() {} -func (*SaveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e93dc7d934d9dc10, []int{4} -} - -func (m *SaveResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SaveResponse.Unmarshal(m, b) -} -func (m *SaveResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SaveResponse.Marshal(b, m, deterministic) -} -func (m *SaveResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SaveResponse.Merge(m, src) -} -func (m *SaveResponse) XXX_Size() int { - return xxx_messageInfo_SaveResponse.Size(m) -} -func (m *SaveResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SaveResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_SaveResponse proto.InternalMessageInfo - -func (m *SaveResponse) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -type DeleteRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteRequest) Reset() { *m = DeleteRequest{} } -func (m *DeleteRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteRequest) ProtoMessage() {} -func (*DeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e93dc7d934d9dc10, []int{5} -} - -func (m *DeleteRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteRequest.Unmarshal(m, b) -} -func (m *DeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteRequest.Marshal(b, m, deterministic) -} -func (m *DeleteRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteRequest.Merge(m, src) -} -func (m *DeleteRequest) XXX_Size() int { - return xxx_messageInfo_DeleteRequest.Size(m) -} -func (m *DeleteRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteRequest proto.InternalMessageInfo - -func (m *DeleteRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -type DeleteResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteResponse) Reset() { *m = DeleteResponse{} } -func (m *DeleteResponse) String() string { return proto.CompactTextString(m) } -func (*DeleteResponse) ProtoMessage() {} -func (*DeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e93dc7d934d9dc10, []int{6} -} - -func (m *DeleteResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteResponse.Unmarshal(m, b) -} -func (m *DeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteResponse.Marshal(b, m, deterministic) -} -func (m *DeleteResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteResponse.Merge(m, src) -} -func (m *DeleteResponse) XXX_Size() int { - return xxx_messageInfo_DeleteResponse.Size(m) -} -func (m *DeleteResponse) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteResponse proto.InternalMessageInfo - -func init() { - proto.RegisterType((*Post)(nil), "posts.Post") - proto.RegisterMapType((map[string]string)(nil), "posts.Post.MetadataEntry") - proto.RegisterType((*QueryRequest)(nil), "posts.QueryRequest") - proto.RegisterType((*QueryResponse)(nil), "posts.QueryResponse") - proto.RegisterType((*SaveRequest)(nil), "posts.SaveRequest") - proto.RegisterMapType((map[string]string)(nil), "posts.SaveRequest.MetadataEntry") - proto.RegisterType((*SaveResponse)(nil), "posts.SaveResponse") - proto.RegisterType((*DeleteRequest)(nil), "posts.DeleteRequest") - proto.RegisterType((*DeleteResponse)(nil), "posts.DeleteResponse") -} - -func init() { - proto.RegisterFile("proto/posts.proto", fileDescriptor_e93dc7d934d9dc10) -} - -var fileDescriptor_e93dc7d934d9dc10 = []byte{ - // 447 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x54, 0xcb, 0xae, 0xd3, 0x40, - 0x0c, 0x25, 0xcf, 0xb6, 0xee, 0xed, 0x55, 0x71, 0x0b, 0x1a, 0x22, 0x04, 0x25, 0x2b, 0x56, 0x45, - 0x14, 0x10, 0x08, 0x58, 0xc2, 0x12, 0x09, 0xc2, 0x17, 0x0c, 0x74, 0x5a, 0x22, 0xf2, 0x22, 0x33, - 0xa9, 0xd4, 0xff, 0x61, 0xc3, 0x7f, 0xf0, 0x61, 0xcc, 0x2b, 0x21, 0x29, 0x54, 0x77, 0xd3, 0x9d, - 0x8f, 0x3d, 0xb6, 0x8f, 0xcf, 0x89, 0x02, 0xb7, 0xab, 0xba, 0x14, 0xe5, 0x93, 0xaa, 0xe4, 0x82, - 0xaf, 0x75, 0x8c, 0x81, 0x06, 0xf1, 0x6f, 0x17, 0xfc, 0x8f, 0x32, 0xc2, 0x6b, 0x70, 0xd3, 0x2d, - 0x71, 0x56, 0xce, 0xe3, 0x49, 0x22, 0x23, 0x5c, 0x42, 0x20, 0x52, 0x91, 0x31, 0xe2, 0xea, 0x94, - 0x01, 0x88, 0xe0, 0xf3, 0xac, 0xd9, 0x13, 0x4f, 0x27, 0x75, 0x8c, 0x04, 0x46, 0x5f, 0xcb, 0x42, - 0xb0, 0x42, 0x10, 0x5f, 0xa7, 0x5b, 0xa8, 0x2b, 0x35, 0xa3, 0x82, 0x6d, 0x49, 0x20, 0x2b, 0x5e, - 0xd2, 0x42, 0x55, 0x69, 0xaa, 0xad, 0xae, 0x84, 0xa6, 0x62, 0x21, 0xde, 0x85, 0x90, 0x36, 0xe2, - 0x5b, 0x59, 0x93, 0x91, 0x1e, 0x66, 0x91, 0xda, 0x2c, 0xe8, 0x9e, 0x93, 0xf1, 0xca, 0x53, 0x9b, - 0x55, 0x8c, 0x2f, 0x60, 0x9c, 0x33, 0x41, 0x65, 0x23, 0x25, 0x13, 0x99, 0x9f, 0x6e, 0xee, 0xad, - 0xcd, 0x8d, 0xea, 0xa4, 0xf5, 0x07, 0x5b, 0x7b, 0x5f, 0x88, 0xfa, 0x98, 0x74, 0x4f, 0xd5, 0x69, - 0x69, 0x4e, 0xf7, 0x8c, 0x2c, 0xcc, 0x69, 0x1a, 0x44, 0x6f, 0x60, 0x36, 0x68, 0xc0, 0x39, 0x78, - 0xdf, 0xd9, 0xd1, 0x4a, 0xa2, 0x42, 0xd5, 0x78, 0xa0, 0x59, 0xd3, 0x69, 0xa2, 0xc1, 0x6b, 0xf7, - 0x95, 0x13, 0xd7, 0x70, 0xf5, 0xa9, 0x61, 0x72, 0x0b, 0xfb, 0xd1, 0xb0, 0xff, 0xa8, 0xd9, 0xea, - 0xe6, 0xf6, 0x74, 0x93, 0xf3, 0xe5, 0x15, 0x56, 0x4a, 0x15, 0xaa, 0xdb, 0xcb, 0xdd, 0x8e, 0x33, - 0x23, 0xa4, 0x97, 0x58, 0xa4, 0xf6, 0x66, 0x69, 0x9e, 0x0a, 0xab, 0xa2, 0x01, 0xf1, 0x06, 0x66, - 0x76, 0x27, 0xaf, 0xca, 0x82, 0x33, 0x7c, 0x04, 0xc6, 0x54, 0xb9, 0x57, 0x69, 0x31, 0xed, 0x69, - 0x91, 0x58, 0xbb, 0x7f, 0xba, 0x30, 0xfd, 0x4c, 0x0f, 0xec, 0x1c, 0xcf, 0x4b, 0xb8, 0x7e, 0x1f, - 0x26, 0x22, 0xcd, 0xe5, 0x74, 0x9a, 0x57, 0x96, 0xf1, 0xdf, 0x44, 0xe7, 0x63, 0xd8, 0xf3, 0xf1, - 0x6d, 0xcf, 0xc7, 0x91, 0xe6, 0xbe, 0xb2, 0xdc, 0x7b, 0x5c, 0x6f, 0xb6, 0x73, 0x7c, 0x31, 0x3b, - 0x1f, 0xc0, 0x95, 0xd9, 0x6c, 0x95, 0x3d, 0x91, 0x29, 0x7e, 0x08, 0xb3, 0x77, 0x2c, 0x63, 0xe2, - 0x9c, 0x8e, 0xf1, 0x1c, 0xae, 0xdb, 0x07, 0x66, 0xc4, 0xe6, 0x97, 0x03, 0x81, 0x72, 0x82, 0xe3, - 0x73, 0x08, 0xb4, 0x6f, 0xb8, 0xb0, 0x47, 0xf6, 0xbf, 0x9c, 0x68, 0x39, 0x4c, 0x9a, 0xee, 0xf8, - 0x16, 0x3e, 0x05, 0x5f, 0x51, 0x42, 0xfc, 0x57, 0x99, 0x68, 0x31, 0xc8, 0x75, 0x2d, 0x2f, 0x21, - 0x34, 0x24, 0xb0, 0x1d, 0x3a, 0x20, 0x1d, 0xdd, 0x39, 0xc9, 0xb6, 0x8d, 0x5f, 0x42, 0xfd, 0x8b, - 0x78, 0xf6, 0x27, 0x00, 0x00, 0xff, 0xff, 0x17, 0x84, 0x7a, 0xa4, 0x37, 0x04, 0x00, 0x00, -} diff --git a/blog/proto/blog.pb.go b/blog/proto/blog.pb.go index 472054c..066875d 100644 --- a/blog/proto/blog.pb.go +++ b/blog/proto/blog.pb.go @@ -1,116 +1,211 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 // source: proto/blog.proto package blog import ( - fmt "fmt" proto "github.com/golang/protobuf/proto" - proto1 "github.com/micro/services/blog/posts/proto" - math "math" + proto1 "github.com/micro/services/posts/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +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) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 type LatestRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *LatestRequest) Reset() { *m = LatestRequest{} } -func (m *LatestRequest) String() string { return proto.CompactTextString(m) } -func (*LatestRequest) ProtoMessage() {} +func (x *LatestRequest) Reset() { + *x = LatestRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_blog_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LatestRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LatestRequest) ProtoMessage() {} + +func (x *LatestRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_blog_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 LatestRequest.ProtoReflect.Descriptor instead. func (*LatestRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_fc5203cdc85000bc, []int{0} + return file_proto_blog_proto_rawDescGZIP(), []int{0} } -func (m *LatestRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LatestRequest.Unmarshal(m, b) -} -func (m *LatestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LatestRequest.Marshal(b, m, deterministic) -} -func (m *LatestRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LatestRequest.Merge(m, src) -} -func (m *LatestRequest) XXX_Size() int { - return xxx_messageInfo_LatestRequest.Size(m) -} -func (m *LatestRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LatestRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_LatestRequest proto.InternalMessageInfo - type LatestResponse struct { - Latest *proto1.Post `protobuf:"bytes,1,opt,name=latest,proto3" json:"latest,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Latest *proto1.Post `protobuf:"bytes,1,opt,name=latest,proto3" json:"latest,omitempty"` } -func (m *LatestResponse) Reset() { *m = LatestResponse{} } -func (m *LatestResponse) String() string { return proto.CompactTextString(m) } -func (*LatestResponse) ProtoMessage() {} +func (x *LatestResponse) Reset() { + *x = LatestResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_blog_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LatestResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LatestResponse) ProtoMessage() {} + +func (x *LatestResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_blog_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 LatestResponse.ProtoReflect.Descriptor instead. func (*LatestResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_fc5203cdc85000bc, []int{1} + return file_proto_blog_proto_rawDescGZIP(), []int{1} } -func (m *LatestResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LatestResponse.Unmarshal(m, b) -} -func (m *LatestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LatestResponse.Marshal(b, m, deterministic) -} -func (m *LatestResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LatestResponse.Merge(m, src) -} -func (m *LatestResponse) XXX_Size() int { - return xxx_messageInfo_LatestResponse.Size(m) -} -func (m *LatestResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LatestResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_LatestResponse proto.InternalMessageInfo - -func (m *LatestResponse) GetLatest() *proto1.Post { - if m != nil { - return m.Latest +func (x *LatestResponse) GetLatest() *proto1.Post { + if x != nil { + return x.Latest } return nil } -func init() { - proto.RegisterType((*LatestRequest)(nil), "blog.LatestRequest") - proto.RegisterType((*LatestResponse)(nil), "blog.LatestResponse") +var File_proto_blog_proto protoreflect.FileDescriptor + +var file_proto_blog_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x62, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x04, 0x62, 0x6c, 0x6f, 0x67, 0x1a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x2f, 0x62, 0x6c, 0x6f, 0x67, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x0f, 0x0a, 0x0d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x35, 0x0a, 0x0e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x73, 0x74, + 0x52, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x32, 0x3d, 0x0a, 0x04, 0x42, 0x6c, 0x6f, 0x67, + 0x12, 0x35, 0x0a, 0x06, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x13, 0x2e, 0x62, 0x6c, 0x6f, + 0x67, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x14, 0x2e, 0x62, 0x6c, 0x6f, 0x67, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("proto/blog.proto", fileDescriptor_fc5203cdc85000bc) +var ( + file_proto_blog_proto_rawDescOnce sync.Once + file_proto_blog_proto_rawDescData = file_proto_blog_proto_rawDesc +) + +func file_proto_blog_proto_rawDescGZIP() []byte { + file_proto_blog_proto_rawDescOnce.Do(func() { + file_proto_blog_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_blog_proto_rawDescData) + }) + return file_proto_blog_proto_rawDescData } -var fileDescriptor_fc5203cdc85000bc = []byte{ - // 169 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x12, 0x28, 0x28, 0xca, 0x2f, - 0xc9, 0xd7, 0x4f, 0xca, 0xc9, 0x4f, 0xd7, 0x03, 0x33, 0x85, 0x58, 0x40, 0x6c, 0x29, 0xb3, 0xf4, - 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0xdc, 0xcc, 0xe4, 0xa2, 0x7c, 0xfd, - 0xe2, 0xd4, 0xa2, 0xb2, 0xcc, 0xe4, 0xd4, 0x62, 0xb0, 0x5a, 0xfd, 0x82, 0xfc, 0xe2, 0x92, 0x62, - 0x7d, 0x88, 0x66, 0x30, 0x1b, 0xa2, 0x5b, 0x89, 0x9f, 0x8b, 0xd7, 0x27, 0xb1, 0x24, 0xb5, 0xb8, - 0x24, 0x28, 0xb5, 0xb0, 0x14, 0x48, 0x29, 0x99, 0x72, 0xf1, 0xc1, 0x04, 0x8a, 0x0b, 0xf2, 0xf3, - 0x8a, 0x53, 0x85, 0x94, 0xb9, 0xd8, 0x72, 0xc0, 0x22, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0xdc, 0x46, - 0xdc, 0x7a, 0x10, 0x03, 0x02, 0x80, 0x64, 0x10, 0x54, 0xca, 0xc8, 0x96, 0x8b, 0xc5, 0x09, 0x68, - 0x8f, 0x90, 0x29, 0x17, 0x1b, 0x44, 0xbb, 0x90, 0xb0, 0x1e, 0xd8, 0x91, 0x28, 0xa6, 0x4b, 0x89, - 0xa0, 0x0a, 0x42, 0x6c, 0x50, 0x62, 0x48, 0x62, 0x03, 0xbb, 0xc6, 0x18, 0x10, 0x00, 0x00, 0xff, - 0xff, 0xc0, 0x99, 0x61, 0x2b, 0xdf, 0x00, 0x00, 0x00, +var file_proto_blog_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_proto_blog_proto_goTypes = []interface{}{ + (*LatestRequest)(nil), // 0: blog.LatestRequest + (*LatestResponse)(nil), // 1: blog.LatestResponse + (*proto1.Post)(nil), // 2: posts.Post +} +var file_proto_blog_proto_depIdxs = []int32{ + 2, // 0: blog.LatestResponse.latest:type_name -> posts.Post + 0, // 1: blog.Blog.Latest:input_type -> blog.LatestRequest + 1, // 2: blog.Blog.Latest:output_type -> blog.LatestResponse + 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_proto_blog_proto_init() } +func file_proto_blog_proto_init() { + if File_proto_blog_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_blog_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LatestRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_blog_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LatestResponse); 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_proto_blog_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_blog_proto_goTypes, + DependencyIndexes: file_proto_blog_proto_depIdxs, + MessageInfos: file_proto_blog_proto_msgTypes, + }.Build() + File_proto_blog_proto = out.File + file_proto_blog_proto_rawDesc = nil + file_proto_blog_proto_goTypes = nil + file_proto_blog_proto_depIdxs = nil } diff --git a/blog/proto/blog.pb.micro.go b/blog/proto/blog.pb.micro.go index 8939448..8b2be42 100644 --- a/blog/proto/blog.pb.micro.go +++ b/blog/proto/blog.pb.micro.go @@ -6,7 +6,7 @@ package blog import ( fmt "fmt" proto "github.com/golang/protobuf/proto" - _ "github.com/micro/services/blog/posts/proto" + _ "github.com/micro/services/posts/proto" math "math" ) diff --git a/blog/proto/blog.proto b/blog/proto/blog.proto index 429ca78..56e2002 100644 --- a/blog/proto/blog.proto +++ b/blog/proto/blog.proto @@ -1,8 +1,9 @@ syntax = "proto3"; package blog; +option go_package = "proto;blog"; -import "github.com/micro/services/blog/posts/proto/posts.proto"; +import "github.com/micro/services/posts/proto/posts.proto"; service Blog { rpc Latest(LatestRequest) returns (LatestResponse) {} diff --git a/blog/skip b/blog/skip new file mode 100644 index 0000000..e69de29 diff --git a/blog/tags/proto/tags.pb.go b/blog/tags/proto/tags.pb.go deleted file mode 100644 index 626ffe9..0000000 --- a/blog/tags/proto/tags.pb.go +++ /dev/null @@ -1,510 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: github.com/micro/services/blog/tags/proto/tags.proto - -package tags - -import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package - -type Tag struct { - // Type is useful for namespacing and listing across resources, - // ie. list tags for posts, customers etc. - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Count int64 `protobuf:"varint,5,opt,name=count,proto3" json:"count,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Tag) Reset() { *m = Tag{} } -func (m *Tag) String() string { return proto.CompactTextString(m) } -func (*Tag) ProtoMessage() {} -func (*Tag) Descriptor() ([]byte, []int) { - return fileDescriptor_fc76523216c4be8e, []int{0} -} - -func (m *Tag) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Tag.Unmarshal(m, b) -} -func (m *Tag) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Tag.Marshal(b, m, deterministic) -} -func (m *Tag) XXX_Merge(src proto.Message) { - xxx_messageInfo_Tag.Merge(m, src) -} -func (m *Tag) XXX_Size() int { - return xxx_messageInfo_Tag.Size(m) -} -func (m *Tag) XXX_DiscardUnknown() { - xxx_messageInfo_Tag.DiscardUnknown(m) -} - -var xxx_messageInfo_Tag proto.InternalMessageInfo - -func (m *Tag) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *Tag) GetSlug() string { - if m != nil { - return m.Slug - } - return "" -} - -func (m *Tag) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Tag) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Tag) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -type AddRequest struct { - ResourceID string `protobuf:"bytes,1,opt,name=resourceID,proto3" json:"resourceID,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` - ResourceCreated int64 `protobuf:"varint,4,opt,name=resourceCreated,proto3" json:"resourceCreated,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AddRequest) Reset() { *m = AddRequest{} } -func (m *AddRequest) String() string { return proto.CompactTextString(m) } -func (*AddRequest) ProtoMessage() {} -func (*AddRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_fc76523216c4be8e, []int{1} -} - -func (m *AddRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AddRequest.Unmarshal(m, b) -} -func (m *AddRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AddRequest.Marshal(b, m, deterministic) -} -func (m *AddRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AddRequest.Merge(m, src) -} -func (m *AddRequest) XXX_Size() int { - return xxx_messageInfo_AddRequest.Size(m) -} -func (m *AddRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AddRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_AddRequest proto.InternalMessageInfo - -func (m *AddRequest) GetResourceID() string { - if m != nil { - return m.ResourceID - } - return "" -} - -func (m *AddRequest) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *AddRequest) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *AddRequest) GetResourceCreated() int64 { - if m != nil { - return m.ResourceCreated - } - return 0 -} - -type AddResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AddResponse) Reset() { *m = AddResponse{} } -func (m *AddResponse) String() string { return proto.CompactTextString(m) } -func (*AddResponse) ProtoMessage() {} -func (*AddResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_fc76523216c4be8e, []int{2} -} - -func (m *AddResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AddResponse.Unmarshal(m, b) -} -func (m *AddResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AddResponse.Marshal(b, m, deterministic) -} -func (m *AddResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AddResponse.Merge(m, src) -} -func (m *AddResponse) XXX_Size() int { - return xxx_messageInfo_AddResponse.Size(m) -} -func (m *AddResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AddResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_AddResponse proto.InternalMessageInfo - -type RemoveRequest struct { - ResourceID string `protobuf:"bytes,1,opt,name=resourceID,proto3" json:"resourceID,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *RemoveRequest) Reset() { *m = RemoveRequest{} } -func (m *RemoveRequest) String() string { return proto.CompactTextString(m) } -func (*RemoveRequest) ProtoMessage() {} -func (*RemoveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_fc76523216c4be8e, []int{3} -} - -func (m *RemoveRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RemoveRequest.Unmarshal(m, b) -} -func (m *RemoveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RemoveRequest.Marshal(b, m, deterministic) -} -func (m *RemoveRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RemoveRequest.Merge(m, src) -} -func (m *RemoveRequest) XXX_Size() int { - return xxx_messageInfo_RemoveRequest.Size(m) -} -func (m *RemoveRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RemoveRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_RemoveRequest proto.InternalMessageInfo - -func (m *RemoveRequest) GetResourceID() string { - if m != nil { - return m.ResourceID - } - return "" -} - -func (m *RemoveRequest) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *RemoveRequest) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -type RemoveResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *RemoveResponse) Reset() { *m = RemoveResponse{} } -func (m *RemoveResponse) String() string { return proto.CompactTextString(m) } -func (*RemoveResponse) ProtoMessage() {} -func (*RemoveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_fc76523216c4be8e, []int{4} -} - -func (m *RemoveResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RemoveResponse.Unmarshal(m, b) -} -func (m *RemoveResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RemoveResponse.Marshal(b, m, deterministic) -} -func (m *RemoveResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_RemoveResponse.Merge(m, src) -} -func (m *RemoveResponse) XXX_Size() int { - return xxx_messageInfo_RemoveResponse.Size(m) -} -func (m *RemoveResponse) XXX_DiscardUnknown() { - xxx_messageInfo_RemoveResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_RemoveResponse proto.InternalMessageInfo - -type UpdateRequest struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateRequest) Reset() { *m = UpdateRequest{} } -func (m *UpdateRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateRequest) ProtoMessage() {} -func (*UpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_fc76523216c4be8e, []int{5} -} - -func (m *UpdateRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateRequest.Unmarshal(m, b) -} -func (m *UpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateRequest.Marshal(b, m, deterministic) -} -func (m *UpdateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateRequest.Merge(m, src) -} -func (m *UpdateRequest) XXX_Size() int { - return xxx_messageInfo_UpdateRequest.Size(m) -} -func (m *UpdateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateRequest proto.InternalMessageInfo - -func (m *UpdateRequest) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *UpdateRequest) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *UpdateRequest) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -type UpdateResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateResponse) Reset() { *m = UpdateResponse{} } -func (m *UpdateResponse) String() string { return proto.CompactTextString(m) } -func (*UpdateResponse) ProtoMessage() {} -func (*UpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_fc76523216c4be8e, []int{6} -} - -func (m *UpdateResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateResponse.Unmarshal(m, b) -} -func (m *UpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateResponse.Marshal(b, m, deterministic) -} -func (m *UpdateResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateResponse.Merge(m, src) -} -func (m *UpdateResponse) XXX_Size() int { - return xxx_messageInfo_UpdateResponse.Size(m) -} -func (m *UpdateResponse) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateResponse proto.InternalMessageInfo - -// ListRequest: list either by resource id or type. -// Optionally filter by min or max count. -type ListRequest struct { - ResourceID string `protobuf:"bytes,1,opt,name=resourceID,proto3" json:"resourceID,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - MinCount int64 `protobuf:"varint,3,opt,name=minCount,proto3" json:"minCount,omitempty"` - MaxCount int64 `protobuf:"varint,4,opt,name=maxCount,proto3" json:"maxCount,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ListRequest) Reset() { *m = ListRequest{} } -func (m *ListRequest) String() string { return proto.CompactTextString(m) } -func (*ListRequest) ProtoMessage() {} -func (*ListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_fc76523216c4be8e, []int{7} -} - -func (m *ListRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListRequest.Unmarshal(m, b) -} -func (m *ListRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListRequest.Marshal(b, m, deterministic) -} -func (m *ListRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListRequest.Merge(m, src) -} -func (m *ListRequest) XXX_Size() int { - return xxx_messageInfo_ListRequest.Size(m) -} -func (m *ListRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListRequest proto.InternalMessageInfo - -func (m *ListRequest) GetResourceID() string { - if m != nil { - return m.ResourceID - } - return "" -} - -func (m *ListRequest) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *ListRequest) GetMinCount() int64 { - if m != nil { - return m.MinCount - } - return 0 -} - -func (m *ListRequest) GetMaxCount() int64 { - if m != nil { - return m.MaxCount - } - return 0 -} - -type ListResponse struct { - Tags []*Tag `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ListResponse) Reset() { *m = ListResponse{} } -func (m *ListResponse) String() string { return proto.CompactTextString(m) } -func (*ListResponse) ProtoMessage() {} -func (*ListResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_fc76523216c4be8e, []int{8} -} - -func (m *ListResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListResponse.Unmarshal(m, b) -} -func (m *ListResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListResponse.Marshal(b, m, deterministic) -} -func (m *ListResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListResponse.Merge(m, src) -} -func (m *ListResponse) XXX_Size() int { - return xxx_messageInfo_ListResponse.Size(m) -} -func (m *ListResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListResponse proto.InternalMessageInfo - -func (m *ListResponse) GetTags() []*Tag { - if m != nil { - return m.Tags - } - return nil -} - -func init() { - proto.RegisterType((*Tag)(nil), "tags.Tag") - proto.RegisterType((*AddRequest)(nil), "tags.AddRequest") - proto.RegisterType((*AddResponse)(nil), "tags.AddResponse") - proto.RegisterType((*RemoveRequest)(nil), "tags.RemoveRequest") - proto.RegisterType((*RemoveResponse)(nil), "tags.RemoveResponse") - proto.RegisterType((*UpdateRequest)(nil), "tags.UpdateRequest") - proto.RegisterType((*UpdateResponse)(nil), "tags.UpdateResponse") - proto.RegisterType((*ListRequest)(nil), "tags.ListRequest") - proto.RegisterType((*ListResponse)(nil), "tags.ListResponse") -} - -func init() { - proto.RegisterFile("github.com/micro/services/blog/tags/proto/tags.proto", fileDescriptor_fc76523216c4be8e) -} - -var fileDescriptor_fc76523216c4be8e = []byte{ - // 406 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x53, 0x41, 0x4f, 0xab, 0x40, - 0x10, 0x2e, 0x5d, 0xda, 0xbc, 0x0e, 0xaf, 0xef, 0xf5, 0xed, 0xeb, 0x81, 0x90, 0x68, 0x08, 0x27, - 0x0e, 0x5a, 0x92, 0xaa, 0x3f, 0xa0, 0xa9, 0x17, 0x13, 0x4f, 0xa4, 0x1e, 0x8c, 0x27, 0x0a, 0x1b, - 0xdc, 0xa4, 0xb0, 0xc8, 0x2e, 0x8d, 0x8d, 0x17, 0xff, 0xa3, 0x7f, 0xc8, 0xb0, 0x0b, 0xb8, 0xad, - 0x8d, 0x17, 0xbd, 0xcd, 0x7c, 0xc3, 0xcc, 0xf7, 0xed, 0x37, 0x03, 0x5c, 0xa6, 0x54, 0x3c, 0x56, - 0xeb, 0x59, 0xcc, 0xb2, 0x20, 0xa3, 0x71, 0xc9, 0x02, 0x4e, 0xca, 0x2d, 0x8d, 0x09, 0x0f, 0xd6, - 0x1b, 0x96, 0x06, 0x22, 0x4a, 0x79, 0x50, 0x94, 0x4c, 0x30, 0x19, 0xce, 0x64, 0x88, 0xcd, 0x3a, - 0xf6, 0x5e, 0x00, 0xad, 0xa2, 0x14, 0x63, 0x30, 0xc5, 0xae, 0x20, 0xb6, 0xe1, 0x1a, 0xfe, 0x28, - 0x94, 0x71, 0x8d, 0xf1, 0x4d, 0x95, 0xda, 0x7d, 0x85, 0xd5, 0x31, 0x9e, 0xc2, 0x40, 0x50, 0xb1, - 0x21, 0x36, 0x92, 0xa0, 0x4a, 0xb0, 0x0b, 0x56, 0x42, 0x78, 0x5c, 0xd2, 0x42, 0x50, 0x96, 0xdb, - 0xa6, 0xac, 0xe9, 0x50, 0xdd, 0x17, 0xb3, 0x2a, 0x17, 0xf6, 0xc0, 0x35, 0x7c, 0x14, 0xaa, 0xc4, - 0x7b, 0x35, 0x00, 0x16, 0x49, 0x12, 0x92, 0xa7, 0x8a, 0x70, 0x81, 0x4f, 0x01, 0x4a, 0xc2, 0x59, - 0x55, 0xc6, 0xe4, 0xe6, 0xba, 0x91, 0xa2, 0x21, 0x9d, 0xc8, 0xbe, 0x26, 0xf2, 0xb8, 0x20, 0x1f, - 0xfe, 0xb6, 0x7d, 0xcb, 0x92, 0x44, 0x82, 0x24, 0x52, 0x14, 0x0a, 0x0f, 0x61, 0x6f, 0x0c, 0x96, - 0x54, 0xc0, 0x0b, 0x96, 0x73, 0xe2, 0xdd, 0xc3, 0x38, 0x24, 0x19, 0xdb, 0x92, 0x1f, 0xd7, 0xe4, - 0x4d, 0xe0, 0x4f, 0x3b, 0xba, 0x21, 0x7b, 0x80, 0xf1, 0x5d, 0x91, 0x44, 0xa2, 0x23, 0x3b, 0xb6, - 0x85, 0x6e, 0x58, 0xff, 0x0b, 0xc7, 0xd1, 0x27, 0xc7, 0x6b, 0xba, 0x76, 0x78, 0x43, 0xb7, 0x03, - 0xeb, 0x96, 0x72, 0xf1, 0x9d, 0x97, 0x39, 0xf0, 0x2b, 0xa3, 0xf9, 0x52, 0x6e, 0x12, 0x49, 0x43, - 0xbb, 0x5c, 0xd6, 0xa2, 0x67, 0x55, 0x33, 0x9b, 0x5a, 0x93, 0x7b, 0xe7, 0xf0, 0x5b, 0x51, 0x2b, - 0x29, 0xf8, 0x04, 0xe4, 0xf5, 0xd9, 0x86, 0x8b, 0x7c, 0x6b, 0x3e, 0x9a, 0xc9, 0xb3, 0x5c, 0x45, - 0x69, 0x28, 0xe1, 0xf9, 0x9b, 0x01, 0xe6, 0x2a, 0x4a, 0x39, 0x3e, 0x03, 0xb4, 0x48, 0x12, 0x3c, - 0x51, 0x1f, 0x7c, 0x9c, 0x8a, 0xf3, 0x4f, 0x43, 0x9a, 0xe7, 0xf5, 0xf0, 0x15, 0x0c, 0x95, 0xc3, - 0xf8, 0xbf, 0x2a, 0xef, 0xad, 0xd2, 0x99, 0xee, 0x83, 0x5d, 0x5b, 0x00, 0x66, 0x2d, 0x0e, 0x37, - 0x33, 0x35, 0x8f, 0x1c, 0xac, 0x43, 0x3a, 0x8f, 0xb2, 0xb6, 0xe5, 0xd9, 0xdb, 0x62, 0xcb, 0x73, - 0xe0, 0x7e, 0x6f, 0x3d, 0x94, 0xff, 0xdd, 0xc5, 0x7b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0xb1, - 0x3f, 0xea, 0xaf, 0x03, 0x00, 0x00, -} diff --git a/chat/Makefile b/chat/Makefile new file mode 100644 index 0000000..a0f820f --- /dev/null +++ b/chat/Makefile @@ -0,0 +1,27 @@ + +GOPATH:=$(shell go env GOPATH) +.PHONY: init +init: + go get -u github.com/golang/protobuf/proto + go get -u github.com/golang/protobuf/protoc-gen-go + go get github.com/micro/micro/v3/cmd/protoc-gen-micro +.PHONY: proto +proto: + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/chat.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/chat.proto + @redoc-cli bundle api-chat.json + +.PHONY: build +build: + go build -o chat *.go + +.PHONY: test +test: + go test -v ./... -cover + +.PHONY: docker +docker: + docker build . -t chat:latest diff --git a/chat/README.md b/chat/README.md index 7410db8..ab67e6c 100644 --- a/chat/README.md +++ b/chat/README.md @@ -1,14 +1,25 @@ -# Chat Service - The chat service is an example Micro service which leverages bidirectional streaming, the store and events to build a chat backend. There is both a server and client which can be run together to demonstrate the application (see client/main.go for more instructions on running the service). +# Chat Service + The service is documented inline and is designed to act as a reference for the events package. -### Calling the service +## Create a chat -You can call the service via the CLI: +### cURL + +```bash +> curl 'https://api.m3o.com/chat/New' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{"user_ids":["JohnBarry"]}'; +{ + "chat_id": "3c9ea66c-d516-45d4-abe8-082089e18b27" +} +``` + +### CLI -Create a chat: ```bash > micro chat new --user_ids=JohnBarry { @@ -16,13 +27,49 @@ Create a chat: } ``` -Send a message to the chat: +## Send a message to the chat + +### cURL + +```bash +> curl 'https://api.m3o.com/chat/Send' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{"user_id": "John", "subject": "Hello", "text": "Hey Barry"}'; +{} +``` + +### CLI + ```bash > micro chat send --chat_id=bed4f0f0-da12-46d2-90d2-17ae1714a214 --user_id=John --subject=Hello --text='Hey Barry' {} ``` -View the chat history +## View the chat history + +### cURL + +```bash +> curl 'https://api.m3o.com/chat/Send' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{"chat_id": "bed4f0f0-da12-46d2-90d2-17ae1714a214"}'; +{ + "messages": [ + { + "id": "a61284a8-f471-4734-9192-640d89762e98", + "client_id": "6ba0d2a6-96fa-47d8-8f6f-7f75b4cc8b3e", + "chat_id": "bed4f0f0-da12-46d2-90d2-17ae1714a214", + "user_id": "John", + "subject": "Hello", + "text": "Hey Barry" + } + ] +} +``` + +### CLI ```bash > micro chat history --chat_id=bed4f0f0-da12-46d2-90d2-17ae1714a214 { diff --git a/chat/proto/chat.pb.go b/chat/proto/chat.pb.go index 50d0379..2741d98 100644 --- a/chat/proto/chat.pb.go +++ b/chat/proto/chat.pb.go @@ -1,101 +1,122 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// source: github.com/micro/services/chat/proto/chat.proto +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 +// source: proto/chat.proto package chat import ( - fmt "fmt" proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +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) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 // NewRequest contains the infromation needed to create a new chat type NewRequest struct { - UserIds []string `protobuf:"bytes,1,rep,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserIds []string `protobuf:"bytes,1,rep,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` } -func (m *NewRequest) Reset() { *m = NewRequest{} } -func (m *NewRequest) String() string { return proto.CompactTextString(m) } -func (*NewRequest) ProtoMessage() {} +func (x *NewRequest) Reset() { + *x = NewRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_chat_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NewRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewRequest) ProtoMessage() {} + +func (x *NewRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_chat_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 NewRequest.ProtoReflect.Descriptor instead. func (*NewRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_4935707190cdb38c, []int{0} + return file_proto_chat_proto_rawDescGZIP(), []int{0} } -func (m *NewRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NewRequest.Unmarshal(m, b) -} -func (m *NewRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NewRequest.Marshal(b, m, deterministic) -} -func (m *NewRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NewRequest.Merge(m, src) -} -func (m *NewRequest) XXX_Size() int { - return xxx_messageInfo_NewRequest.Size(m) -} -func (m *NewRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NewRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NewRequest proto.InternalMessageInfo - -func (m *NewRequest) GetUserIds() []string { - if m != nil { - return m.UserIds +func (x *NewRequest) GetUserIds() []string { + if x != nil { + return x.UserIds } return nil } // NewResponse contains the chat id for the users type NewResponse struct { - ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *NewResponse) Reset() { *m = NewResponse{} } -func (m *NewResponse) String() string { return proto.CompactTextString(m) } -func (*NewResponse) ProtoMessage() {} +func (x *NewResponse) Reset() { + *x = NewResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_chat_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NewResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewResponse) ProtoMessage() {} + +func (x *NewResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_chat_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 NewResponse.ProtoReflect.Descriptor instead. func (*NewResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_4935707190cdb38c, []int{1} + return file_proto_chat_proto_rawDescGZIP(), []int{1} } -func (m *NewResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NewResponse.Unmarshal(m, b) -} -func (m *NewResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NewResponse.Marshal(b, m, deterministic) -} -func (m *NewResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NewResponse.Merge(m, src) -} -func (m *NewResponse) XXX_Size() int { - return xxx_messageInfo_NewResponse.Size(m) -} -func (m *NewResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NewResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_NewResponse proto.InternalMessageInfo - -func (m *NewResponse) GetChatId() string { - if m != nil { - return m.ChatId +func (x *NewResponse) GetChatId() string { + if x != nil { + return x.ChatId } return "" } @@ -104,86 +125,106 @@ func (m *NewResponse) GetChatId() string { // historical messages, however in a real life application we'd introduce some form of pagination // here, only loading the older messages when required. type HistoryRequest struct { - ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *HistoryRequest) Reset() { *m = HistoryRequest{} } -func (m *HistoryRequest) String() string { return proto.CompactTextString(m) } -func (*HistoryRequest) ProtoMessage() {} +func (x *HistoryRequest) Reset() { + *x = HistoryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_chat_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HistoryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HistoryRequest) ProtoMessage() {} + +func (x *HistoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_chat_proto_msgTypes[2] + 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 HistoryRequest.ProtoReflect.Descriptor instead. func (*HistoryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_4935707190cdb38c, []int{2} + return file_proto_chat_proto_rawDescGZIP(), []int{2} } -func (m *HistoryRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HistoryRequest.Unmarshal(m, b) -} -func (m *HistoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HistoryRequest.Marshal(b, m, deterministic) -} -func (m *HistoryRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_HistoryRequest.Merge(m, src) -} -func (m *HistoryRequest) XXX_Size() int { - return xxx_messageInfo_HistoryRequest.Size(m) -} -func (m *HistoryRequest) XXX_DiscardUnknown() { - xxx_messageInfo_HistoryRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_HistoryRequest proto.InternalMessageInfo - -func (m *HistoryRequest) GetChatId() string { - if m != nil { - return m.ChatId +func (x *HistoryRequest) GetChatId() string { + if x != nil { + return x.ChatId } return "" } // HistoryResponse contains the historical messages in a chat type HistoryResponse struct { - Messages []*Message `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Messages []*Message `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` } -func (m *HistoryResponse) Reset() { *m = HistoryResponse{} } -func (m *HistoryResponse) String() string { return proto.CompactTextString(m) } -func (*HistoryResponse) ProtoMessage() {} +func (x *HistoryResponse) Reset() { + *x = HistoryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_chat_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HistoryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HistoryResponse) ProtoMessage() {} + +func (x *HistoryResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_chat_proto_msgTypes[3] + 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 HistoryResponse.ProtoReflect.Descriptor instead. func (*HistoryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_4935707190cdb38c, []int{3} + return file_proto_chat_proto_rawDescGZIP(), []int{3} } -func (m *HistoryResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HistoryResponse.Unmarshal(m, b) -} -func (m *HistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HistoryResponse.Marshal(b, m, deterministic) -} -func (m *HistoryResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_HistoryResponse.Merge(m, src) -} -func (m *HistoryResponse) XXX_Size() int { - return xxx_messageInfo_HistoryResponse.Size(m) -} -func (m *HistoryResponse) XXX_DiscardUnknown() { - xxx_messageInfo_HistoryResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_HistoryResponse proto.InternalMessageInfo - -func (m *HistoryResponse) GetMessages() []*Message { - if m != nil { - return m.Messages +func (x *HistoryResponse) GetMessages() []*Message { + if x != nil { + return x.Messages } return nil } // SendRequest contains a single message to send to a chat type SendRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // a client side id, should be validated by the server to make the request retry safe ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` // id of the chat the message is being sent to / from @@ -193,106 +234,121 @@ type SendRequest struct { // subject of the message Subject string `protobuf:"bytes,4,opt,name=subject,proto3" json:"subject,omitempty"` // text of the message - Text string `protobuf:"bytes,5,opt,name=text,proto3" json:"text,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Text string `protobuf:"bytes,5,opt,name=text,proto3" json:"text,omitempty"` } -func (m *SendRequest) Reset() { *m = SendRequest{} } -func (m *SendRequest) String() string { return proto.CompactTextString(m) } -func (*SendRequest) ProtoMessage() {} +func (x *SendRequest) Reset() { + *x = SendRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_chat_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendRequest) ProtoMessage() {} + +func (x *SendRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_chat_proto_msgTypes[4] + 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 SendRequest.ProtoReflect.Descriptor instead. func (*SendRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_4935707190cdb38c, []int{4} + return file_proto_chat_proto_rawDescGZIP(), []int{4} } -func (m *SendRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SendRequest.Unmarshal(m, b) -} -func (m *SendRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SendRequest.Marshal(b, m, deterministic) -} -func (m *SendRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SendRequest.Merge(m, src) -} -func (m *SendRequest) XXX_Size() int { - return xxx_messageInfo_SendRequest.Size(m) -} -func (m *SendRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SendRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SendRequest proto.InternalMessageInfo - -func (m *SendRequest) GetClientId() string { - if m != nil { - return m.ClientId +func (x *SendRequest) GetClientId() string { + if x != nil { + return x.ClientId } return "" } -func (m *SendRequest) GetChatId() string { - if m != nil { - return m.ChatId +func (x *SendRequest) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *SendRequest) GetUserId() string { - if m != nil { - return m.UserId +func (x *SendRequest) GetUserId() string { + if x != nil { + return x.UserId } return "" } -func (m *SendRequest) GetSubject() string { - if m != nil { - return m.Subject +func (x *SendRequest) GetSubject() string { + if x != nil { + return x.Subject } return "" } -func (m *SendRequest) GetText() string { - if m != nil { - return m.Text +func (x *SendRequest) GetText() string { + if x != nil { + return x.Text } return "" } // SendResponse is a blank message returned when a message is successfully created type SendResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *SendResponse) Reset() { *m = SendResponse{} } -func (m *SendResponse) String() string { return proto.CompactTextString(m) } -func (*SendResponse) ProtoMessage() {} +func (x *SendResponse) Reset() { + *x = SendResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_chat_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendResponse) ProtoMessage() {} + +func (x *SendResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_chat_proto_msgTypes[5] + 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 SendResponse.ProtoReflect.Descriptor instead. func (*SendResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_4935707190cdb38c, []int{5} + return file_proto_chat_proto_rawDescGZIP(), []int{5} } -func (m *SendResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SendResponse.Unmarshal(m, b) -} -func (m *SendResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SendResponse.Marshal(b, m, deterministic) -} -func (m *SendResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SendResponse.Merge(m, src) -} -func (m *SendResponse) XXX_Size() int { - return xxx_messageInfo_SendResponse.Size(m) -} -func (m *SendResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SendResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_SendResponse proto.InternalMessageInfo - // Message sent to a chat type Message struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // id of the message, allocated by the server Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // a client side id, should be validated by the server to make the request retry safe @@ -306,126 +362,289 @@ type Message struct { // subject of the message Subject string `protobuf:"bytes,6,opt,name=subject,proto3" json:"subject,omitempty"` // text of the message - Text string `protobuf:"bytes,7,opt,name=text,proto3" json:"text,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Text string `protobuf:"bytes,7,opt,name=text,proto3" json:"text,omitempty"` } -func (m *Message) Reset() { *m = Message{} } -func (m *Message) String() string { return proto.CompactTextString(m) } -func (*Message) ProtoMessage() {} +func (x *Message) Reset() { + *x = Message{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_chat_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Message) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Message) ProtoMessage() {} + +func (x *Message) ProtoReflect() protoreflect.Message { + mi := &file_proto_chat_proto_msgTypes[6] + 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 Message.ProtoReflect.Descriptor instead. func (*Message) Descriptor() ([]byte, []int) { - return fileDescriptor_4935707190cdb38c, []int{6} + return file_proto_chat_proto_rawDescGZIP(), []int{6} } -func (m *Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Message.Unmarshal(m, b) -} -func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Message.Marshal(b, m, deterministic) -} -func (m *Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_Message.Merge(m, src) -} -func (m *Message) XXX_Size() int { - return xxx_messageInfo_Message.Size(m) -} -func (m *Message) XXX_DiscardUnknown() { - xxx_messageInfo_Message.DiscardUnknown(m) -} - -var xxx_messageInfo_Message proto.InternalMessageInfo - -func (m *Message) GetId() string { - if m != nil { - return m.Id +func (x *Message) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Message) GetClientId() string { - if m != nil { - return m.ClientId +func (x *Message) GetClientId() string { + if x != nil { + return x.ClientId } return "" } -func (m *Message) GetChatId() string { - if m != nil { - return m.ChatId +func (x *Message) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *Message) GetUserId() string { - if m != nil { - return m.UserId +func (x *Message) GetUserId() string { + if x != nil { + return x.UserId } return "" } -func (m *Message) GetSentAt() int64 { - if m != nil { - return m.SentAt +func (x *Message) GetSentAt() int64 { + if x != nil { + return x.SentAt } return 0 } -func (m *Message) GetSubject() string { - if m != nil { - return m.Subject +func (x *Message) GetSubject() string { + if x != nil { + return x.Subject } return "" } -func (m *Message) GetText() string { - if m != nil { - return m.Text +func (x *Message) GetText() string { + if x != nil { + return x.Text } return "" } -func init() { - proto.RegisterType((*NewRequest)(nil), "chat.NewRequest") - proto.RegisterType((*NewResponse)(nil), "chat.NewResponse") - proto.RegisterType((*HistoryRequest)(nil), "chat.HistoryRequest") - proto.RegisterType((*HistoryResponse)(nil), "chat.HistoryResponse") - proto.RegisterType((*SendRequest)(nil), "chat.SendRequest") - proto.RegisterType((*SendResponse)(nil), "chat.SendResponse") - proto.RegisterType((*Message)(nil), "chat.Message") +var File_proto_chat_proto protoreflect.FileDescriptor + +var file_proto_chat_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x04, 0x63, 0x68, 0x61, 0x74, 0x22, 0x27, 0x0a, 0x0a, 0x4e, 0x65, 0x77, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x73, 0x22, 0x26, 0x0a, 0x0b, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, 0x29, 0x0a, 0x0e, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, + 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, + 0x61, 0x74, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x0f, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x68, 0x61, 0x74, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, + 0x0e, 0x0a, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xaf, 0x01, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x65, + 0x6e, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x65, 0x6e, + 0x74, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, + 0x74, 0x32, 0xc6, 0x01, 0x0a, 0x04, 0x43, 0x68, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x03, 0x4e, 0x65, + 0x77, 0x12, 0x10, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4e, 0x65, 0x77, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x14, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, + 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x11, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, + 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x63, 0x68, 0x61, 0x74, + 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, + 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x0d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x0d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x0c, 0x5a, 0x0a, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x3b, 0x63, 0x68, 0x61, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("github.com/micro/services/chat/proto/chat.proto", fileDescriptor_4935707190cdb38c) +var ( + file_proto_chat_proto_rawDescOnce sync.Once + file_proto_chat_proto_rawDescData = file_proto_chat_proto_rawDesc +) + +func file_proto_chat_proto_rawDescGZIP() []byte { + file_proto_chat_proto_rawDescOnce.Do(func() { + file_proto_chat_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_chat_proto_rawDescData) + }) + return file_proto_chat_proto_rawDescData } -var fileDescriptor_4935707190cdb38c = []byte{ - // 405 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xcf, 0x6e, 0xda, 0x40, - 0x10, 0xc6, 0xb5, 0xb6, 0xeb, 0x85, 0xa1, 0xa5, 0xed, 0xaa, 0x15, 0xae, 0x7b, 0x41, 0x3e, 0xb4, - 0x50, 0x54, 0x5c, 0x51, 0x29, 0x97, 0xe4, 0x92, 0x70, 0x09, 0x87, 0x70, 0x70, 0x6e, 0xb9, 0x20, - 0x63, 0xaf, 0x60, 0xa3, 0x60, 0x13, 0xef, 0x3a, 0x24, 0xaf, 0x90, 0x97, 0xc9, 0x5b, 0xe4, 0xb9, - 0xa2, 0xfd, 0x03, 0xd8, 0x51, 0x90, 0x72, 0x9b, 0xf9, 0x66, 0x3c, 0xfb, 0xfb, 0x76, 0xd6, 0x10, - 0x2e, 0x98, 0x58, 0x96, 0xf3, 0x61, 0x92, 0xaf, 0xc2, 0x15, 0x4b, 0x8a, 0x3c, 0xe4, 0xb4, 0xb8, - 0x63, 0x09, 0xe5, 0x61, 0xb2, 0x8c, 0x45, 0xb8, 0x2e, 0x72, 0x91, 0xab, 0x70, 0xa8, 0x42, 0xe2, - 0xc8, 0x38, 0xf8, 0x0d, 0x30, 0xa5, 0x9b, 0x88, 0xde, 0x96, 0x94, 0x0b, 0xf2, 0x03, 0x1a, 0x25, - 0xa7, 0xc5, 0x8c, 0xa5, 0xdc, 0x43, 0x5d, 0xbb, 0xd7, 0x8c, 0xb0, 0xcc, 0x27, 0x29, 0x0f, 0x7e, - 0x41, 0x4b, 0x35, 0xf2, 0x75, 0x9e, 0x71, 0x4a, 0x3a, 0x80, 0xe5, 0xf7, 0x33, 0x96, 0x7a, 0xa8, - 0x8b, 0x7a, 0xcd, 0xc8, 0x95, 0xe9, 0x24, 0x0d, 0xfa, 0xd0, 0x3e, 0x67, 0x5c, 0xe4, 0xc5, 0xc3, - 0x76, 0xe8, 0xc1, 0xd6, 0x13, 0xf8, 0xbc, 0x6b, 0x35, 0x63, 0xfb, 0xd0, 0x58, 0x51, 0xce, 0xe3, - 0x05, 0xd5, 0x00, 0xad, 0xd1, 0xa7, 0xa1, 0x62, 0xbe, 0xd0, 0x6a, 0xb4, 0x2b, 0x07, 0x8f, 0x08, - 0x5a, 0x97, 0x34, 0x4b, 0xb7, 0xc7, 0xfc, 0x84, 0x66, 0x72, 0xc3, 0x68, 0x56, 0x39, 0xa8, 0xa1, - 0x85, 0x49, 0x5a, 0x65, 0xb0, 0xaa, 0x0c, 0xb2, 0x60, 0x1c, 0x7b, 0xb6, 0x2e, 0x68, 0xc3, 0xc4, - 0x03, 0xcc, 0xcb, 0xf9, 0x35, 0x4d, 0x84, 0xe7, 0xa8, 0xc2, 0x36, 0x25, 0x04, 0x1c, 0x41, 0xef, - 0x85, 0xf7, 0x41, 0xc9, 0x2a, 0x0e, 0xda, 0xf0, 0x51, 0xb3, 0x68, 0x1f, 0xc1, 0x13, 0x02, 0x6c, - 0x90, 0x49, 0x1b, 0xac, 0x1d, 0x91, 0xc5, 0xd2, 0x3a, 0xa8, 0x75, 0x18, 0xd4, 0x3e, 0x04, 0xea, - 0xd4, 0x40, 0x3b, 0x80, 0xb9, 0x1c, 0x16, 0x6b, 0x22, 0x3b, 0x72, 0x65, 0x7a, 0x2a, 0xaa, 0x0e, - 0xdc, 0xb7, 0x1d, 0xe0, 0xbd, 0x83, 0xd1, 0x33, 0x02, 0x67, 0xbc, 0x8c, 0x05, 0xf9, 0x03, 0xf6, - 0x94, 0x6e, 0xc8, 0x17, 0x7d, 0xef, 0xfb, 0xc7, 0xe1, 0x7f, 0xad, 0x28, 0x66, 0x5d, 0x47, 0x80, - 0xcd, 0x06, 0xc9, 0x37, 0x5d, 0xad, 0xef, 0xde, 0xff, 0xfe, 0x4a, 0x35, 0xdf, 0xfd, 0x05, 0x47, - 0x5e, 0x17, 0x31, 0x23, 0x2b, 0x6b, 0xf4, 0x49, 0x55, 0x32, 0xed, 0x03, 0xc0, 0xe3, 0x3c, 0xcb, - 0x24, 0x7a, 0xfd, 0x39, 0xf8, 0xf5, 0xb4, 0x87, 0xfe, 0xa1, 0xb3, 0xc1, 0x55, 0xff, 0x3d, 0xbf, - 0xc2, 0xb1, 0x0c, 0xe7, 0xae, 0x8a, 0xff, 0xbf, 0x04, 0x00, 0x00, 0xff, 0xff, 0x38, 0x55, 0x82, - 0x43, 0x3e, 0x03, 0x00, 0x00, +var file_proto_chat_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_proto_chat_proto_goTypes = []interface{}{ + (*NewRequest)(nil), // 0: chat.NewRequest + (*NewResponse)(nil), // 1: chat.NewResponse + (*HistoryRequest)(nil), // 2: chat.HistoryRequest + (*HistoryResponse)(nil), // 3: chat.HistoryResponse + (*SendRequest)(nil), // 4: chat.SendRequest + (*SendResponse)(nil), // 5: chat.SendResponse + (*Message)(nil), // 6: chat.Message +} +var file_proto_chat_proto_depIdxs = []int32{ + 6, // 0: chat.HistoryResponse.messages:type_name -> chat.Message + 0, // 1: chat.Chat.New:input_type -> chat.NewRequest + 2, // 2: chat.Chat.History:input_type -> chat.HistoryRequest + 4, // 3: chat.Chat.Send:input_type -> chat.SendRequest + 6, // 4: chat.Chat.Connect:input_type -> chat.Message + 1, // 5: chat.Chat.New:output_type -> chat.NewResponse + 3, // 6: chat.Chat.History:output_type -> chat.HistoryResponse + 5, // 7: chat.Chat.Send:output_type -> chat.SendResponse + 6, // 8: chat.Chat.Connect:output_type -> chat.Message + 5, // [5:9] is the sub-list for method output_type + 1, // [1:5] 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_proto_chat_proto_init() } +func file_proto_chat_proto_init() { + if File_proto_chat_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_chat_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NewRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_chat_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NewResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_chat_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HistoryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_chat_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HistoryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_chat_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_chat_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_chat_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message); 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_proto_chat_proto_rawDesc, + NumEnums: 0, + NumMessages: 7, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_chat_proto_goTypes, + DependencyIndexes: file_proto_chat_proto_depIdxs, + MessageInfos: file_proto_chat_proto_msgTypes, + }.Build() + File_proto_chat_proto = out.File + file_proto_chat_proto_rawDesc = nil + file_proto_chat_proto_goTypes = nil + file_proto_chat_proto_depIdxs = nil } diff --git a/chat/proto/chat.pb.micro.go b/chat/proto/chat.pb.micro.go index 7f0c7fa..1d26601 100644 --- a/chat/proto/chat.pb.micro.go +++ b/chat/proto/chat.pb.micro.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-micro. DO NOT EDIT. -// source: github.com/micro/services/chat/proto/chat.proto +// source: proto/chat.proto package chat diff --git a/chat/proto/chat.proto b/chat/proto/chat.proto index 991608d..da9ef3a 100644 --- a/chat/proto/chat.proto +++ b/chat/proto/chat.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package chat; -option go_package = "github.com/micro/services/chat/proto;chat"; +option go_package = "proto;chat"; service Chat { // New creates a chat for a group of users. The RPC is idempotent so if it's called multiple times diff --git a/cmd/docgen/main.go b/cmd/docgen/main.go new file mode 100644 index 0000000..dc13eaa --- /dev/null +++ b/cmd/docgen/main.go @@ -0,0 +1,305 @@ +package main + +import ( + "encoding/json" + "fmt" + "io" + "io/ioutil" + "log" + "os" + "os/exec" + "path/filepath" + "strings" + "text/template" + + "github.com/getkin/kin-openapi/openapi3" + "github.com/stoewer/go-strcase" +) + +const postContentPath = "docs/hugo-tania/site/content/post" + +func main() { + files, err := ioutil.ReadDir(os.Args[1]) + if err != nil { + log.Fatal(err) + } + workDir, _ := os.Getwd() + + docPath := filepath.Join(workDir, "docs") + err = ioutil.WriteFile(filepath.Join(docPath, "CNAME"), []byte("services.m3o.com"), 0777) + if err != nil { + fmt.Printf("Failed to CNAME") + os.Exit(1) + } + + for _, f := range files { + if f.IsDir() && !strings.HasPrefix(f.Name(), ".") { + serviceDir := filepath.Join(workDir, f.Name()) + serviceFiles, err := ioutil.ReadDir(serviceDir) + if err != nil { + fmt.Println("Failed to read service dir", err) + os.Exit(1) + } + skip := false + for _, serviceFile := range serviceFiles { + if serviceFile.Name() == "skip" { + skip = true + } + } + if skip { + continue + } + + fmt.Println("Processing folder", serviceDir) + makeProto := exec.Command("make", "docs") + makeProto.Dir = serviceDir + fmt.Println(serviceDir) + outp, err := makeProto.CombinedOutput() + if err != nil { + fmt.Println("Failed to make docs", string(outp)) + os.Exit(1) + } + serviceName := f.Name() + dat, err := ioutil.ReadFile(filepath.Join(serviceDir, "README.md")) + if err != nil { + fmt.Println("Failed to read readme", string(outp)) + os.Exit(1) + } + + contentDir := filepath.Join(workDir, postContentPath) + err = os.MkdirAll(contentDir, 0777) + if err != nil { + fmt.Println("Failed to create content dir", string(outp)) + os.Exit(1) + } + + contentFile := filepath.Join(workDir, postContentPath, serviceName+".md") + err = ioutil.WriteFile(contentFile, append([]byte("---\ntitle: "+serviceName+"\n---\n"), dat...), 0777) + if err != nil { + fmt.Printf("Failed to write post content to %v:\n%v\n", contentFile, string(outp)) + os.Exit(1) + } + + apiJSON := filepath.Join(serviceDir, "api-"+serviceName+".json") + js, err := ioutil.ReadFile(apiJSON) + if err != nil { + apiJSON := filepath.Join(serviceDir, "api-protobuf.json") + js, err = ioutil.ReadFile(apiJSON) + if err != nil { + fmt.Println("Failed to read json spec", err) + os.Exit(1) + } + } + spec := &openapi3.Swagger{} + err = json.Unmarshal(js, &spec) + if err != nil { + fmt.Println("Failed to unmarshal", err) + os.Exit(1) + } + err = saveSpec(contentFile, spec) + if err != nil { + fmt.Println("Failed to save to spec file", err) + os.Exit(1) + } + + openAPIDir := filepath.Join(docPath, serviceName, "api") + err = os.MkdirAll(openAPIDir, 0777) + if err != nil { + fmt.Println("Failed to create api folder", string(outp)) + os.Exit(1) + } + + err = CopyFile(filepath.Join(serviceDir, "redoc-static.html"), filepath.Join(docPath, serviceName, "api", "index.html")) + if err != nil { + fmt.Println("Failed to copy redoc", string(outp)) + os.Exit(1) + } + + cmd := exec.Command("hugo", "-D", "-d", "../../") + cmd.Dir = filepath.Join(docPath, "hugo-tania", "site") + outp, err = cmd.CombinedOutput() + if err != nil { + fmt.Println("Build hugo site", string(outp)) + os.Exit(1) + } + } + } +} + +func saveSpec(filepath string, spec *openapi3.Swagger) error { + fi, err := os.OpenFile(filepath, os.O_APPEND|os.O_WRONLY, os.ModeAppend) + if err != nil { + return err + } + //spec.Paths[0].Parameters[0].MarshalJSON() + //spec.Paths[0].Options + //spec.Paths[0].Post.RequestBody. + tmpl, err := template.New("test").Funcs(template.FuncMap{ + "params": func(p openapi3.Parameters) string { + ls := "" + for _, v := range p { + //if v.Value.In == "body" { + bs, _ := v.MarshalJSON() + ls += string(bs) + ", " + //} + } + return ls + }, + // @todo should take SpecRef here not RequestBodyRef + "schemaJSON": func(ref string) string { + for k, v := range spec.Components.Schemas { + // ie. #/components/requestBodies/PostsSaveRequest contains + // SaveRequest, can't see any other way to correlate + if strings.HasSuffix(ref, k) { + bs, _ := json.MarshalIndent(schemaToMap(v, spec.Components.Schemas), "", " ") + return string(bs) + } + } + + return "Schema related to " + ref + " not found" + + }, + "schemaDescription": func(ref string) string { + for k, v := range spec.Components.Schemas { + // ie. #/components/requestBodies/PostsSaveRequest contains + // SaveRequest, can't see any other way to correlate + if strings.HasSuffix(ref, k) { + return v.Value.Description + } + } + + return "Schema related to " + ref + " not found" + + }, + // turn chat/Chat/History + // to Chat History + "titleize": func(s string) string { + parts := strings.Split(s, "/") + if len(parts) > 2 { + return strings.Join(parts[2:], " ") + } + return strings.Join(parts, " ") + }, + "firstResponseRef": func(rs openapi3.Responses) string { + return rs.Get(200).Ref + }, + }).Parse(templ) + if err != nil { + panic(err) + } + return tmpl.Execute(fi, spec) +} + +func schemaToMap(spec *openapi3.SchemaRef, schemas map[string]*openapi3.SchemaRef) map[string]interface{} { + var recurse func(props map[string]*openapi3.SchemaRef) map[string]interface{} + recurse = func(props map[string]*openapi3.SchemaRef) map[string]interface{} { + ret := map[string]interface{}{} + for k, v := range props { + k = strcase.SnakeCase(k) + //v.Value. + if v.Value.Type == "object" { + // @todo identify what is a slice and what is not! + // currently the openapi converter messes this up + // see redoc html output + ret[k] = []interface{}{recurse(v.Value.Properties)} + continue + } + switch v.Value.Type { + case "string": + if len(v.Value.Description) > 0 { + ret[k] = strings.Replace(v.Value.Description, "\n", ".", -1) + } else { + ret[k] = v.Value.Type + } + case "number": + ret[k] = 1 + case "boolean": + ret[k] = true + } + + } + return ret + } + return recurse(spec.Value.Properties) +} + +const templ = ` +## cURL + +{{ range $key, $value := .Paths }} +### {{ $key | titleize }} + +{{ $value.Post.RequestBody.Ref | schemaDescription }} +` + "```" + `shell +> curl 'https://api.m3o.com{{ $key }}' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d {{ $value.Post.RequestBody.Ref | schemaJSON }}; +# Response +{{ $value.Post.Responses | firstResponseRef | schemaJSON }} +` + "```" + ` + +{{ end }} +` + +// CopyFile copies a file from src to dst. If src and dst files exist, and are +// the same, then return success. Otherise, attempt to create a hard link +// between the two files. If that fail, copy the file contents from src to dst. +// from https://stackoverflow.com/questions/21060945/simple-way-to-copy-a-file-in-golang +func CopyFile(src, dst string) (err error) { + sfi, err := os.Stat(src) + if err != nil { + return + } + if !sfi.Mode().IsRegular() { + // cannot copy non-regular files (e.g., directories, + // symlinks, devices, etc.) + return fmt.Errorf("CopyFile: non-regular source file %s (%q)", sfi.Name(), sfi.Mode().String()) + } + dfi, err := os.Stat(dst) + if err != nil { + if !os.IsNotExist(err) { + return + } + } else { + if !(dfi.Mode().IsRegular()) { + return fmt.Errorf("CopyFile: non-regular destination file %s (%q)", dfi.Name(), dfi.Mode().String()) + } + if os.SameFile(sfi, dfi) { + return + } + } + if err = os.Link(src, dst); err == nil { + return + } + err = copyFileContents(src, dst) + return +} + +// copyFileContents copies the contents of the file named src to the file named +// by dst. The file will be created if it does not already exist. If the +// destination file exists, all it's contents will be replaced by the contents +// of the source file. +func copyFileContents(src, dst string) (err error) { + in, err := os.Open(src) + if err != nil { + return + } + defer in.Close() + out, err := os.Create(dst) + if err != nil { + return + } + defer func() { + cerr := out.Close() + if err == nil { + err = cerr + } + }() + if _, err = io.Copy(out, in); err != nil { + return + } + err = out.Sync() + return +} diff --git a/cmd/skip b/cmd/skip new file mode 100644 index 0000000..e69de29 diff --git a/blog/comments/.gitignore b/comments/.gitignore similarity index 100% rename from blog/comments/.gitignore rename to comments/.gitignore diff --git a/blog/comments/Dockerfile b/comments/Dockerfile similarity index 100% rename from blog/comments/Dockerfile rename to comments/Dockerfile diff --git a/blog/comments/Makefile b/comments/Makefile similarity index 55% rename from blog/comments/Makefile rename to comments/Makefile index 9900f50..0da996e 100644 --- a/blog/comments/Makefile +++ b/comments/Makefile @@ -5,8 +5,13 @@ MODIFY=Mgithub.com/micro/micro/proto/api/api.proto=github.com/micro/micro/v3/pro .PHONY: proto proto: - protoc --proto_path=. --micro_out=${MODIFY}:. --go_out=${MODIFY}:. proto/comments.proto + protoc --openapi_out=. --proto_path=. --micro_out=${MODIFY}:. --go_out=${MODIFY}:. proto/comments.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=${MODIFY}:. --go_out=${MODIFY}:. proto/comments.proto + @redoc-cli bundle api-comments.json .PHONY: build build: proto diff --git a/blog/comments/README.md b/comments/README.md similarity index 100% rename from blog/comments/README.md rename to comments/README.md diff --git a/blog/comments/generate.go b/comments/generate.go similarity index 100% rename from blog/comments/generate.go rename to comments/generate.go diff --git a/comments/github.com/micro/services/comments/proto/comments.pb.go b/comments/github.com/micro/services/comments/proto/comments.pb.go new file mode 100644 index 0000000..4548b55 --- /dev/null +++ b/comments/github.com/micro/services/comments/proto/comments.pb.go @@ -0,0 +1,461 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 +// source: proto/comments.proto + +package comments + +import ( + proto "github.com/golang/protobuf/proto" + 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) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Comment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Post string `protobuf:"bytes,2,opt,name=post,proto3" json:"post,omitempty"` + Author string `protobuf:"bytes,3,opt,name=author,proto3" json:"author,omitempty"` + Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` + Created int64 `protobuf:"varint,5,opt,name=created,proto3" json:"created,omitempty"` +} + +func (x *Comment) Reset() { + *x = Comment{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_comments_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Comment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Comment) ProtoMessage() {} + +func (x *Comment) ProtoReflect() protoreflect.Message { + mi := &file_proto_comments_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 Comment.ProtoReflect.Descriptor instead. +func (*Comment) Descriptor() ([]byte, []int) { + return file_proto_comments_proto_rawDescGZIP(), []int{0} +} + +func (x *Comment) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Comment) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *Comment) GetAuthor() string { + if x != nil { + return x.Author + } + return "" +} + +func (x *Comment) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *Comment) GetCreated() int64 { + if x != nil { + return x.Created + } + return 0 +} + +type NewRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // post id + Post string `protobuf:"bytes,1,opt,name=post,proto3" json:"post,omitempty"` + // message to leave + Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *NewRequest) Reset() { + *x = NewRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_comments_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NewRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewRequest) ProtoMessage() {} + +func (x *NewRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_comments_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 NewRequest.ProtoReflect.Descriptor instead. +func (*NewRequest) Descriptor() ([]byte, []int) { + return file_proto_comments_proto_rawDescGZIP(), []int{1} +} + +func (x *NewRequest) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *NewRequest) GetAuthor() string { + if x != nil { + return x.Author + } + return "" +} + +func (x *NewRequest) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type NewResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *NewResponse) Reset() { + *x = NewResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_comments_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NewResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewResponse) ProtoMessage() {} + +func (x *NewResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_comments_proto_msgTypes[2] + 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 NewResponse.ProtoReflect.Descriptor instead. +func (*NewResponse) Descriptor() ([]byte, []int) { + return file_proto_comments_proto_rawDescGZIP(), []int{2} +} + +type ListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Post string `protobuf:"bytes,1,opt,name=post,proto3" json:"post,omitempty"` +} + +func (x *ListRequest) Reset() { + *x = ListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_comments_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRequest) ProtoMessage() {} + +func (x *ListRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_comments_proto_msgTypes[3] + 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 ListRequest.ProtoReflect.Descriptor instead. +func (*ListRequest) Descriptor() ([]byte, []int) { + return file_proto_comments_proto_rawDescGZIP(), []int{3} +} + +func (x *ListRequest) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +type ListResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comments []*Comment `protobuf:"bytes,1,rep,name=comments,proto3" json:"comments,omitempty"` +} + +func (x *ListResponse) Reset() { + *x = ListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_comments_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListResponse) ProtoMessage() {} + +func (x *ListResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_comments_proto_msgTypes[4] + 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 ListResponse.ProtoReflect.Descriptor instead. +func (*ListResponse) Descriptor() ([]byte, []int) { + return file_proto_comments_proto_rawDescGZIP(), []int{4} +} + +func (x *ListResponse) GetComments() []*Comment { + if x != nil { + return x.Comments + } + return nil +} + +var File_proto_comments_proto protoreflect.FileDescriptor + +var file_proto_comments_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x22, 0x79, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x52, 0x0a, 0x0a, 0x4e, + 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, + 0x0d, 0x0a, 0x0b, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, + 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x73, + 0x74, 0x22, 0x3d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x32, 0x79, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x03, + 0x4e, 0x65, 0x77, 0x12, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4e, + 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x37, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_proto_comments_proto_rawDescOnce sync.Once + file_proto_comments_proto_rawDescData = file_proto_comments_proto_rawDesc +) + +func file_proto_comments_proto_rawDescGZIP() []byte { + file_proto_comments_proto_rawDescOnce.Do(func() { + file_proto_comments_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_comments_proto_rawDescData) + }) + return file_proto_comments_proto_rawDescData +} + +var file_proto_comments_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_proto_comments_proto_goTypes = []interface{}{ + (*Comment)(nil), // 0: comments.Comment + (*NewRequest)(nil), // 1: comments.NewRequest + (*NewResponse)(nil), // 2: comments.NewResponse + (*ListRequest)(nil), // 3: comments.ListRequest + (*ListResponse)(nil), // 4: comments.ListResponse +} +var file_proto_comments_proto_depIdxs = []int32{ + 0, // 0: comments.ListResponse.comments:type_name -> comments.Comment + 1, // 1: comments.Comments.New:input_type -> comments.NewRequest + 3, // 2: comments.Comments.List:input_type -> comments.ListRequest + 2, // 3: comments.Comments.New:output_type -> comments.NewResponse + 4, // 4: comments.Comments.List:output_type -> comments.ListResponse + 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_proto_comments_proto_init() } +func file_proto_comments_proto_init() { + if File_proto_comments_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_comments_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Comment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_comments_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NewRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_comments_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NewResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_comments_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_comments_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListResponse); 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_proto_comments_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_comments_proto_goTypes, + DependencyIndexes: file_proto_comments_proto_depIdxs, + MessageInfos: file_proto_comments_proto_msgTypes, + }.Build() + File_proto_comments_proto = out.File + file_proto_comments_proto_rawDesc = nil + file_proto_comments_proto_goTypes = nil + file_proto_comments_proto_depIdxs = nil +} diff --git a/blog/comments/proto/comments.pb.micro.go b/comments/github.com/micro/services/comments/proto/comments.pb.micro.go similarity index 100% rename from blog/comments/proto/comments.pb.micro.go rename to comments/github.com/micro/services/comments/proto/comments.pb.micro.go diff --git a/blog/comments/handler/comments.go b/comments/handler/comments.go similarity index 95% rename from blog/comments/handler/comments.go rename to comments/handler/comments.go index 380a31b..e999246 100644 --- a/blog/comments/handler/comments.go +++ b/comments/handler/comments.go @@ -7,7 +7,7 @@ import ( "github.com/google/uuid" "github.com/micro/dev/model" "github.com/micro/micro/v3/service/store" - pb "github.com/micro/services/blog/comments/proto" + pb "github.com/micro/services/comments/proto" ) type Comments struct { diff --git a/blog/comments/main.go b/comments/main.go similarity index 86% rename from blog/comments/main.go rename to comments/main.go index 9e56f90..2f22b82 100644 --- a/blog/comments/main.go +++ b/comments/main.go @@ -3,7 +3,7 @@ package main import ( "github.com/micro/micro/v3/service" "github.com/micro/micro/v3/service/logger" - "github.com/micro/services/blog/comments/handler" + "github.com/micro/services/comments/handler" ) func main() { diff --git a/blog/comments/micro.mu b/comments/micro.mu similarity index 100% rename from blog/comments/micro.mu rename to comments/micro.mu diff --git a/blog/comments/proto/comments.pb.go b/comments/proto/comments.pb.go similarity index 100% rename from blog/comments/proto/comments.pb.go rename to comments/proto/comments.pb.go diff --git a/comments/proto/comments.pb.micro.go b/comments/proto/comments.pb.micro.go new file mode 100644 index 0000000..ccff854 --- /dev/null +++ b/comments/proto/comments.pb.micro.go @@ -0,0 +1,110 @@ +// Code generated by protoc-gen-micro. DO NOT EDIT. +// source: proto/comments.proto + +package comments + +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) + +import ( + context "context" + api "github.com/micro/micro/v3/service/api" + client "github.com/micro/micro/v3/service/client" + server "github.com/micro/micro/v3/service/server" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package + +// Reference imports to suppress errors if they are not otherwise used. +var _ api.Endpoint +var _ context.Context +var _ client.Option +var _ server.Option + +// Api Endpoints for Comments service + +func NewCommentsEndpoints() []*api.Endpoint { + return []*api.Endpoint{} +} + +// Client API for Comments service + +type CommentsService interface { + New(ctx context.Context, in *NewRequest, opts ...client.CallOption) (*NewResponse, error) + List(ctx context.Context, in *ListRequest, opts ...client.CallOption) (*ListResponse, error) +} + +type commentsService struct { + c client.Client + name string +} + +func NewCommentsService(name string, c client.Client) CommentsService { + return &commentsService{ + c: c, + name: name, + } +} + +func (c *commentsService) New(ctx context.Context, in *NewRequest, opts ...client.CallOption) (*NewResponse, error) { + req := c.c.NewRequest(c.name, "Comments.New", in) + out := new(NewResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *commentsService) List(ctx context.Context, in *ListRequest, opts ...client.CallOption) (*ListResponse, error) { + req := c.c.NewRequest(c.name, "Comments.List", in) + out := new(ListResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Comments service + +type CommentsHandler interface { + New(context.Context, *NewRequest, *NewResponse) error + List(context.Context, *ListRequest, *ListResponse) error +} + +func RegisterCommentsHandler(s server.Server, hdlr CommentsHandler, opts ...server.HandlerOption) error { + type comments interface { + New(ctx context.Context, in *NewRequest, out *NewResponse) error + List(ctx context.Context, in *ListRequest, out *ListResponse) error + } + type Comments struct { + comments + } + h := &commentsHandler{hdlr} + return s.Handle(s.NewHandler(&Comments{h}, opts...)) +} + +type commentsHandler struct { + CommentsHandler +} + +func (h *commentsHandler) New(ctx context.Context, in *NewRequest, out *NewResponse) error { + return h.CommentsHandler.New(ctx, in, out) +} + +func (h *commentsHandler) List(ctx context.Context, in *ListRequest, out *ListResponse) error { + return h.CommentsHandler.List(ctx, in, out) +} diff --git a/comments/proto/comments.proto b/comments/proto/comments.proto new file mode 100644 index 0000000..37c3da9 --- /dev/null +++ b/comments/proto/comments.proto @@ -0,0 +1,35 @@ +syntax = "proto3"; + +package comments; +option go_package = "proto;comments"; + +service Comments { + rpc New(NewRequest) returns (NewResponse) {} + rpc List(ListRequest) returns (ListResponse) {} +} + +message Comment { + string id = 1; + string post = 2; + string author = 3; + string message = 4; + int64 created = 5; +} + +message NewRequest { + // post id + string post = 1; + // message to leave + string author = 2; + string message = 3; +} + +message NewResponse {} + +message ListRequest{ + string post = 1; +} + +message ListResponse{ + repeated Comment comments = 1; +} diff --git a/comments/skip b/comments/skip new file mode 100644 index 0000000..e69de29 diff --git a/docs/hugo-tania/.gitignore b/docs/hugo-tania/.gitignore new file mode 100644 index 0000000..388bf7f --- /dev/null +++ b/docs/hugo-tania/.gitignore @@ -0,0 +1 @@ +exampleSite/resources \ No newline at end of file diff --git a/docs/hugo-tania/LICENSE b/docs/hugo-tania/LICENSE new file mode 100644 index 0000000..a00fd7a --- /dev/null +++ b/docs/hugo-tania/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 WingLim + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/docs/hugo-tania/README.md b/docs/hugo-tania/README.md new file mode 100644 index 0000000..3b47b3a --- /dev/null +++ b/docs/hugo-tania/README.md @@ -0,0 +1,84 @@ +# Hugo Theme Tania + +A simple theme for bloggers. + +## Demo + +[Example Site](https://hugo-tania.netlify.app/) + +[![Netlify Status](https://api.netlify.com/api/v1/badges/bae5db51-7cc6-41e2-9615-029ade8aa264/deploy-status)](https://app.netlify.com/sites/hugo-tania/deploys) + +## Introduction +Most of the styles for this theme come from [taniarascia.com](https://github.com/taniarascia/taniarascia.com) + +I like it's style, so I transplant it to Hugo. + +And is that why this theme called Tania. + +Thank Tania Rascia again. + +Here is some features: + +- Dark mode(It can switch automatically or manually) +- Footnotes(Float on the right side) + +## Usage + +### Installation + +In your site's root dir + +```bash +git submodule add https://github.com/WingLim/hugo-tania themes/hugo-tania +``` + +Edit your site config following `site/config.yaml`. + +### Params + +`titleEmoji` will show before the blog title on site navbar. + +```yaml +titleEmoji: '😎' +``` + +`socialOptions` will show on index bio with `_index.md` content. +Account with icon can set as below: +```yaml +socialOptions: + dev-to: + facebook: + github: + instagram: + linkedin: + medium: + stack-overflow: + telegram: + twitter: + twitch: + whatsapp: +``` + +### Layout + +`articles` layout is for showing all articles you write. + +Add `articles.md` to site `content` dir, and write as below: + +```markdown +--- +title: Articles +subtitle: Posts, tutorials, snippets, musings, and everything else. +date: 2020-11-26 +type: section +layout: "archives" +--- +``` + +## Thanks to +- [你好黑暗,我的老朋友 —— 为网站添加用户友好的深色模式支持](https://blog.skk.moe/post/hello-darkmode-my-old-friend/) +- [Footnotes, citations, and sidenotes](https://prose.yihui.org/about/#footnotes-citations-and-sidenotes) + +## License + +[MIT](https://github.com/WingLim/hugo-tania/blob/main/LICENSE) diff --git a/docs/hugo-tania/assets/js/features.js b/docs/hugo-tania/assets/js/features.js new file mode 100644 index 0000000..4e55902 --- /dev/null +++ b/docs/hugo-tania/assets/js/features.js @@ -0,0 +1,171 @@ +renderFootnotes = function () { + const removeEl = (el) => { + if (!el) return; + el.remove ? el.remove() : el.parentNode.removeChild(el); + }; + + const insertAfter = (target, sib) => { + target.after ? target.after(sib) : ( + target.parentNode.insertBefore(sib, target.nextSibling) + ); + }; + + const insideOut = (el) => { + var p = el.parentNode, x = el.innerHTML, + c = document.createElement('div'); // a tmp container + insertAfter(p, c); + c.appendChild(el); + el.innerHTML = ''; + el.appendChild(p); + p.innerHTML = x; // let the original parent have the content of its child + insertAfter(c, c.firstElementChild); + removeEl(c); + }; + + document.querySelectorAll('.footnotes > ol > li[id^="fn"], #refs > div[id^="ref-"]').forEach(function (fn) { + a = document.querySelectorAll('a[href="#' + fn.id + '"]'); + if (a.length === 0) return; + a.forEach(function (el) { el.removeAttribute('href') }); + a = a[0]; + side = document.createElement('div'); + side.className = 'side side-right'; + if (/^fn/.test(fn.id)) { + side.innerHTML = fn.innerHTML; + var number = a.innerText; // footnote number + side.firstElementChild.innerHTML = '' + number + + ' ' + side.firstElementChild.innerHTML; + removeEl(side.querySelector('a[href^="#fnref"]')); // remove backreference + a.parentNode.tagName === 'SUP' && insideOut(a); + } else { + side.innerHTML = fn.outerHTML; + a = a.parentNode; + } + insertAfter(a, side); + a.classList.add('note-ref'); + removeEl(fn); + }) + document.querySelectorAll('.footnotes, #refs').forEach(function (fn) { + var items = fn.children; + if (fn.id === 'refs') return items.length === 0 && removeEl(fn); + // there must be a
and an
    left + if (items.length !== 2 || items[0].tagName !== 'HR' || items[1].tagName !== 'OL') return; + items[1].childElementCount === 0 && removeEl(fn); + }); +}(); + +renderAnchor = function () { + for (let num = 1; num <= 6; num++) { + // search h1-h6 + const headers = document.querySelectorAll('.article-post>h' + num); + for (let i = 0; i < headers.length; i++) { + const header = headers[i]; + // add anchor before h1-h6 + header.innerHTML = `${header.innerHTML}`; + } + } +}(); + +switchDarkMode = function () { + const rootElement = document.documentElement; // + const darkModeStorageKey = 'user-color-scheme'; // use as localStorage's key + const rootElementDarkModeAttributeName = 'data-user-color-scheme'; + const darkModeTogglebuttonElement = document.getElementById('dark-mode-button'); + + const setLS = (k, v) => { + try { + localStorage.setItem(k, v); + } catch (e) { } + } + + const removeLS = (k) => { + try { + localStorage.removeItem(k); + } catch (e) { } + } + + const getLS = (k) => { + try { + return localStorage.getItem(k); + } catch (e) { + return null // the same as localStorage.getItem() get nothing + } + } + + const getModeFromCSSMediaQuery = () => { + // use matchMedia API + return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' + } + + const resetRootDarkModeAttributeAndLS = () => { + rootElement.removeAttribute(rootElementDarkModeAttributeName); + removeLS(darkModeStorageKey); + } + + const validColorModeKeys = { + 'dark': true, + 'light': true + } + + const modeIcons = { + 'dark': '☀️', + 'light': '🌙' + } + + const setModeButtonIcon = (mode) => { + darkModeTogglebuttonElement.innerHTML = modeIcons[mode] + } + + const applyCustomDarkModeSettings = (mode) => { + // receive user's operation or get previous mode from localStorage + const currentSetting = mode || getLS(darkModeStorageKey); + + if (currentSetting === getModeFromCSSMediaQuery()) { + // When the user selected mode equal prefers-color-scheme + // reset and restored to automatic mode + nowMode = getModeFromCSSMediaQuery() + resetRootDarkModeAttributeAndLS(); + } else if (validColorModeKeys[currentSetting]) { + nowMode = currentSetting + rootElement.setAttribute(rootElementDarkModeAttributeName, currentSetting); + } else { + // 首次访问或从未使用过开关、localStorage 中没有存储的值,currentSetting 是 null + // 或者 localStorage 被篡改,currentSetting 不是合法值 + nowMode = getModeFromCSSMediaQuery() + resetRootDarkModeAttributeAndLS(); + } + setModeButtonIcon(nowMode) + } + + const invertDarkModeObj = { + 'dark': 'light', + 'light': 'dark' + } + + const toggleCustomDarkMode = () => { + let currentSetting = getLS(darkModeStorageKey); + + if (validColorModeKeys[currentSetting]) { + // get mode from localStorage and set the opposite + currentSetting = invertDarkModeObj[currentSetting]; + } else if (currentSetting === null) { + // if get null from localStorage + // get mode from prefers-color-scheme and set the opposite + currentSetting = invertDarkModeObj[getModeFromCSSMediaQuery()]; + } else { + // get anything error, return + return; + } + // set opposite mode into localStorage + setLS(darkModeStorageKey, currentSetting); + + return currentSetting; + } + + // when page loaded set page mode + applyCustomDarkModeSettings(); + + darkModeTogglebuttonElement.addEventListener('click', () => { + // handle user click switch dark mode button + applyCustomDarkModeSettings(toggleCustomDarkMode()); + }) +}(); \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/base/_dark.scss b/docs/hugo-tania/assets/sass/base/_dark.scss new file mode 100644 index 0000000..40264d3 --- /dev/null +++ b/docs/hugo-tania/assets/sass/base/_dark.scss @@ -0,0 +1,51 @@ +@media (prefers-color-scheme: dark) { + :root { + --color-mode: dark; + } + + :root:not([data-user-color-scheme]) { + --h1-color: white; + --font-color: #b3b9c5; + --heading-color: #ffd479; + --dark-font-color: #ced4da; + --background: #1f2022; + --medium-font-color: #dee2e6; + --light-font-color: #868e96; + --light-background: #2D2D31; + --light-background-hover: #3b3b3e; + --code-background-color: #2e2e30; + --border: #404040; + --link-color: #6ab0f3; + --link-color-darker: #4a72a5; + --link-hover-color: #e1a6f2; + --navbar-color: #1d1d1d; + --blockquote: #2b2b2b; + --blockquote-left: #191919; + --transparent-text: rgba(255, 255, 255, 0.7); + --transparent-bg: rgba(0, 0, 0, 0.2); + --light-transparent-bg: rgba(255, 255, 255, 0.05); + } +} + +[data-user-color-scheme='dark'] { + --h1-color: white; + --font-color: #b3b9c5; + --heading-color: #ffd479; + --dark-font-color: #ced4da; + --background: #1f2022; + --medium-font-color: #dee2e6; + --light-font-color: #868e96; + --light-background: #2D2D31; + --light-background-hover: #3b3b3e; + --code-background-color: #2e2e30; + --border: #404040; + --link-color: #6ab0f3; + --link-color-darker: #4a72a5; + --link-hover-color: #e1a6f2; + --navbar-color: #1d1d1d; + --blockquote: #2b2b2b; + --blockquote-left: #191919; + --transparent-text: rgba(255, 255, 255, 0.7); + --transparent-bg: rgba(0, 0, 0, 0.2); + --light-transparent-bg: rgba(255, 255, 255, 0.05); +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/base/_grid.scss b/docs/hugo-tania/assets/sass/base/_grid.scss new file mode 100644 index 0000000..5c62eec --- /dev/null +++ b/docs/hugo-tania/assets/sass/base/_grid.scss @@ -0,0 +1,29 @@ +/* Grid and flex */ + +.flex { + display: flex; + align-items: center; +} + +.flex-row { + display: flex; + flex-direction: column; +} + +@media screen and (min-width: 800px) { + .flex-row { + flex-direction: row; + } +} + +.flex-col { + flex: 1; +} + +.flex-two-thirds { + flex: 2; +} + +.justify-center { + justify-content: center; +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/base/_headings.scss b/docs/hugo-tania/assets/sass/base/_headings.scss new file mode 100644 index 0000000..b9c3d15 --- /dev/null +++ b/docs/hugo-tania/assets/sass/base/_headings.scss @@ -0,0 +1,171 @@ +/* Headings */ + +h1 { + color: var(--h1-color); +} + +h3, +h4 { + color: var(--medium-font-color); +} + +h2, +h5 { + color: var(--heading-color); +} + +h1, +h2, +h3, +h4, +h5 { + margin: 0 0 1.5rem 0; + font-weight: 700; + line-height: 1.2; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +h1:not(:first-child), +h2:not(:first-child), +h3:not(:first-child), +h4:not(:first-child) { + margin-top: 3rem; +} + +h1 { + font-size: 2.5rem; + line-height: 1.1; +} + +h2 { + font-size: 1.75rem; + padding-bottom: 0.5rem; + border-bottom: 4px solid var(--light-background); + + code { + font-size: 1.75rem !important; + } +} + +h3 { + font-size: 1.5rem; + color: var(--font-color); + font-weight: 600; + margin-bottom: 1rem; + + code { + font-size: 1.4rem !important; + } +} + +h4 { + font-size: 1.3rem; + color: var(--font-color); + font-weight: 500; + margin-bottom: 1rem; + border-bottom: 2px solid var(--light-background); + padding-bottom: 0.25rem; +} + +h5 { + font-size: 1.2rem; + margin-bottom: 1rem; +} + +@media screen and (min-width: 800px) { + h1 { + font-size: 3rem; + } + + h2 { + font-size: 1.9rem; + + code { + font-size: 1.9rem !important; + } + } + + h3 { + font-size: 1.7rem; + color: var(--font-color); + font-weight: 600; + + code { + font-size: 1.6rem !important; + } + } + + h4 { + font-weight: 400; + font-size: 1.4rem; + } +} + +a { + &.link { + display: block; + padding: 0.25rem 0; + margin: 0.25rem 0; + border-radius: 0.35rem; + font-weight: 600; + color: var(--dark-font-color); + + &:hover { + color: var(--link-color); + } + } + + &.button { + display: inline-block; + border: 2px solid var(--link-color); + padding: 0.3rem 0.6rem; + margin-right: 0.75rem; + font-weight: 500; + background: var(--link-color); + color: white; + border-radius: 0.35rem; + font-size: 0.9rem; + + &.large { + padding: 0.8rem 1rem; + font-size: 1.05rem; + } + + &.secondary { + border: 2px solid #edf2ff; + background: #edf2ff; + color: #3b5bdb; + } + + &:hover, &.secondary:hover { + border: 2px solid var(--link-color-darker); + background: var(--link-color-darker); + color: white; + } + } +} + +@media screen and (min-width: 800px) { + a.button { + font-size: 0.9rem; + + &.large { + padding: 1rem 1.5rem; + font-size: 1.1rem; + } + } +} + +p.subtitle { + color: var(--medium-font-color); + font-size: 1.3rem; + font-weight: 300; + margin-bottom: 0; +} + +@media screen and (min-width: 800px) { + p.subtitle { + font-size: 1.5rem; + } +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/base/_links.scss b/docs/hugo-tania/assets/sass/base/_links.scss new file mode 100644 index 0000000..b5b51a3 --- /dev/null +++ b/docs/hugo-tania/assets/sass/base/_links.scss @@ -0,0 +1,19 @@ +/* Links */ + +a { + color: inherit; + text-decoration: none; + + &.image-link { + border-width: 0; + } + + code[class*='language-'] { + color: var(--link-color) !important; + + &:hover { + background: var(--link-color) !important; + color: white !important; + } + } +} diff --git a/docs/hugo-tania/assets/sass/base/_normalize.scss b/docs/hugo-tania/assets/sass/base/_normalize.scss new file mode 100644 index 0000000..3591806 --- /dev/null +++ b/docs/hugo-tania/assets/sass/base/_normalize.scss @@ -0,0 +1,379 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/base/_reset.scss b/docs/hugo-tania/assets/sass/base/_reset.scss new file mode 100644 index 0000000..62f0ef4 --- /dev/null +++ b/docs/hugo-tania/assets/sass/base/_reset.scss @@ -0,0 +1,5 @@ +*, +*::before, +*::after { + box-sizing: border-box; +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/base/_scaffolding.scss b/docs/hugo-tania/assets/sass/base/_scaffolding.scss new file mode 100644 index 0000000..13e83d2 --- /dev/null +++ b/docs/hugo-tania/assets/sass/base/_scaffolding.scss @@ -0,0 +1,179 @@ +/* Scaffolding */ + +html { + font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Roboto', + Roboto, Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI', + 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + color: var(--font-color); + font-weight: 400; + font-size: 1rem; + line-height: 1.75; +} + +body { + background: var(--background); + margin: 0; + padding: 0; +} + +section { + margin: 2rem 0; + + &:first-of-type { + margin-top: 0; + } + + >h2 { + display: flex; + align-items: center; + font-size: 1.6rem; + margin-top: 0; + margin-bottom: 0.5rem; + } +} + +@media screen and (min-width: 800px) { + section>h2 { + margin-bottom: 2rem; + } +} + +.index h2, +section>h2 { + border-bottom-width: 0; +} + +@media screen and (min-width: 800px) { + + .index h2, + section>h2 { + border-bottom-width: 4px; + } +} + +a.section-button { + font-weight: 500; + background: var(--light-background); + color: var(--dark-font-color); + padding: 0.4rem 0.6rem; + font-size: 0.8rem; + border-radius: 0.3rem; + border-width: 0 !important; + white-space: nowrap; + line-height: 1; + margin-left: 2rem; + margin-top: 0.5rem; + + &:hover { + background: var(--light-background-hover); + color: var(--heading-color); + } +} + +@media screen and (min-width: 800px) { + section { + margin: 3.5rem 0; + + >h2 { + font-size: 2rem; + margin: 0 0 1rem; + } + } +} + +.container { + max-width: 1025px; + padding: 0 1.5rem; + margin-left: auto; + margin-right: auto; + + &.page p { + max-width: 600px; + } +} + +@media screen and (min-width: 800px) { + .container { + padding: 0 2rem; + } +} + +img { + display: inline-block; + max-width: 100%; + height: auto; +} + +p, +ol, +ul, +dl, +table, +blockquote { + font-size: 1.05rem; + margin: 0 0 1.5rem 0; +} + +ul { + padding: 0 1rem; +} + +@media screen and (min-width: 800px) { + + p, + ol, + ul, + dl, + table, + blockquote { + font-size: 1.125rem; + } + + ul { + padding: 0 2rem; + } +} + +ul li p { + margin: 0; +} + +ul li ul { + padding-left: 1rem; + margin: 0; +} + +ul li ul li { + margin: 0; +} + +ol li ol { + margin-bottom: 0; +} + +.task-list-item [type='checkbox'] { + margin-right: 0.5rem; +} + +blockquote { + margin: 2rem 0; + padding: 1rem; + background: var(--blockquote); + font-weight: 400; + border-left: 5px solid var(--blockquote-left); +} + +blockquote :not(pre)>code[class*='language-'] { + background: rgba(0, 0, 0, 0.1) !important; +} + +@media screen and (min-width: 800px) { + blockquote { + padding: 2rem 0 2rem 2rem; + } +} + +::selection { + background: #3b5bdb; + color: white; +} diff --git a/docs/hugo-tania/assets/sass/base/_variables.scss b/docs/hugo-tania/assets/sass/base/_variables.scss new file mode 100644 index 0000000..d2a2c85 --- /dev/null +++ b/docs/hugo-tania/assets/sass/base/_variables.scss @@ -0,0 +1,21 @@ +:root { + --color-mode: light; + --h1-color: #343a40; + --font-color: #495057; + --heading-color: #343a40; + --background: white; + --dark-font-color: #1b1d25; + --medium-font-color: #60656c; + --light-font-color: #858b93; + --light-background: #f1f4f8; + --light-background-hover: #e1e6ed; + --border: #d6d9de; + --link-color: #5183f5; + --link-color-darker: #364fc7; + --navbar-color: #1b1d25; + --blockquote: #f9f9f9; + --blockquote-left: #e3e6eb; + --transparent-text: rgba(0, 0, 0, 0.7); + --transparent-bg: rgba(0, 0, 0, 0.05); + --light-transparent-bg: rgba(255, 255, 255, 0.1); +} diff --git a/docs/hugo-tania/assets/sass/components/_bio.scss b/docs/hugo-tania/assets/sass/components/_bio.scss new file mode 100644 index 0000000..f8122a2 --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_bio.scss @@ -0,0 +1,11 @@ +.my { + padding-top: 2rem; + a { + border: none; + margin-right: 1rem; + + &:hover { + border: none; + } + } +} diff --git a/docs/hugo-tania/assets/sass/components/_footer.scss b/docs/hugo-tania/assets/sass/components/_footer.scss new file mode 100644 index 0000000..422426f --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_footer.scss @@ -0,0 +1,77 @@ +/* Footer */ + +.footer { + padding: 2rem 0; + + >.flex { + flex-direction: column; + align-items: center; + justify-content: center; + } + + img { + height: 30px; + width: 30px; + } + + a { + border-radius: 0.35rem; + margin: 0 0.05rem; + font-weight: 400; + font-size: 1rem; + border: 1px solid transparent; + padding: 0.5rem; + margin: 0 0.5rem; + color: var(--light-font-color); + + &:hover { + color: var(--heading-color); + background: var(--light-background); + } + + &.img { + display: flex; + align-items: center; + padding: 0; + margin: 0 0.75rem; + background: none; + } + } +} + +.footer-links { + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; +} + +.flex nav { + padding: 1rem 0; +} + +@media screen and (min-width: 800px) { + .footer { + >.flex { + align-items: flex-start; + margin-left: -1.5rem; + margin-right: -1.5rem; + } + + a { + padding: 0.75rem; + + &.img { + padding: 0 0.5rem; + margin: 0 1rem; + } + } + } + +} + +@media print { + .footer { + display: none; + } +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/components/_helpers.scss b/docs/hugo-tania/assets/sass/components/_helpers.scss new file mode 100644 index 0000000..5370374 --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_helpers.scss @@ -0,0 +1,18 @@ +/* Helpers */ + +.small { + max-width: 600px; +} + +time, +.meta { + color: var(--light-font-color); + font-size: 0.85rem; + white-space: nowrap; + font-weight: 400; +} + +.meta { + color: var(--medium-font-color); + font-size: 1rem; +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/components/_highlight.scss b/docs/hugo-tania/assets/sass/components/_highlight.scss new file mode 100644 index 0000000..50f7743 --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_highlight.scss @@ -0,0 +1,165 @@ +$code-font-size: 0.9rem !default; +$code-color: #f8f8f2 !default; +$code-background: #373b41 !default; +$gray: #cacaca !default; +$code-font-family: Consolas, Monaco, Menlo, "DejaVu Sans Mono", + "Bitstream Vera Sans Mono", "Courier New", monospace !default; + +code, pre { + font-size: $code-font-size; + font-family: $code-font-family; + background: $code-background; +} + +:not(pre) > code { + color: var(--dark-font-color); + background: var(--light-background); +} + +code { + padding: 3px 5px; + border-radius: 4px; + color: $code-color; +} + +pre > code { + display: block; +} + +.highlight > .chroma { + margin: 0; + + border-radius: 5px; + overflow-x: auto; + box-shadow: 1px 1px 2px rgba(0,0,0,0.125); + position: relative; + background: $code-background; + + code { + padding: 30px 10px 10px; + } + + code[data-lang]::before { + position: absolute; + top: 0; + right: 0; + left: 0; + padding: 2px 10px; + width: 100%; + height: 30px; + font-size: $code-font-size; + line-height: 1.9; + font-weight: bold; + color: #b1b1b1; + background: darken($code-background, 3%); + content: attr(data-lang); + } + + table { + position: relative; + border: none; + + code { + padding: 0; + } + } + + + + .lntd { + &:first-child { + width: 10px; + + pre { + margin: 0; + padding: 30px 7px 10px; + } + } + + &:last-child { + vertical-align: top; + + pre { + margin: 0; + padding: 30px 10px 10px; + } + } + } + + table, tr, td { + margin: 0; + padding: 0; + width: 100%; + border-collapse: collapse; + border: none; + } + + /* LineHighlight */ .hl { display: block; width: 100%;background-color: black } + /* LineNumbersTable */ .lnt { color: #7f7f7f } + /* LineNumbers */ .ln { padding: 0 0.4em 0 0.4em;color: #7f7f7f } + + .err { color: #960050 } /* Error */ + .c { color: #999999 } /* Comment */ + .err { color: #f2777a } /* Error */ + .k { color: #cc99cc } /* Keyword */ + .l { color: #f99157 } /* Literal */ + .n { color: #cccccc } /* Name */ + .o { color: #66cccc } /* Operator */ + .p { color: #cccccc } /* Punctuation */ + .cm { color: #999999 } /* Comment.Multiline */ + .cp { color: #999999 } /* Comment.Preproc */ + .c1 { color: #999999 } /* Comment.Single */ + .cs { color: #999999 } /* Comment.Special */ + .gd { color: #f2777a } /* Generic.Deleted */ + .ge { font-style: italic } /* Generic.Emph */ + .gh { color: #cccccc; font-weight: bold } /* Generic.Heading */ + .gi { color: #99cc99 } /* Generic.Inserted */ + .gp { color: #999999; font-weight: bold } /* Generic.Prompt */ + .gs { font-weight: bold } /* Generic.Strong */ + .gu { color: #66cccc; font-weight: bold } /* Generic.Subheading */ + .kc { color: #cc99cc } /* Keyword.Constant */ + .kd { color: #cc99cc } /* Keyword.Declaration */ + .kn { color: #66cccc } /* Keyword.Namespace */ + .kp { color: #cc99cc } /* Keyword.Pseudo */ + .kr { color: #cc99cc } /* Keyword.Reserved */ + .kt { color: #ffcc66 } /* Keyword.Type */ + .ld { color: #99cc99 } /* Literal.Date */ + .m { color: #f99157 } /* Literal.Number */ + .s { color: #99cc99 } /* Literal.String */ + .na { color: #6699cc } /* Name.Attribute */ + .nb { color: #cccccc } /* Name.Builtin */ + .nc { color: #ffcc66 } /* Name.Class */ + .no { color: #f2777a } /* Name.Constant */ + .nd { color: #66cccc } /* Name.Decorator */ + .ni { color: #cccccc } /* Name.Entity */ + .ne { color: #f2777a } /* Name.Exception */ + .nf { color: #6699cc } /* Name.Function */ + .nl { color: #cccccc } /* Name.Label */ + .nn { color: #ffcc66 } /* Name.Namespace */ + .nx { color: #6699cc } /* Name.Other */ + .py { color: #cccccc } /* Name.Property */ + .nt { color: #66cccc } /* Name.Tag */ + .nv { color: #f2777a } /* Name.Variable */ + .ow { color: #66cccc } /* Operator.Word */ + .w { color: #cccccc } /* Text.Whitespace */ + .mf { color: #f99157 } /* Literal.Number.Float */ + .mh { color: #f99157 } /* Literal.Number.Hex */ + .mi { color: #f99157 } /* Literal.Number.Integer */ + .mo { color: #f99157 } /* Literal.Number.Oct */ + .sb { color: #99cc99 } /* Literal.String.Backtick */ + .sc { color: #cccccc } /* Literal.String.Char */ + .sd { color: #999999 } /* Literal.String.Doc */ + .s2 { color: #99cc99 } /* Literal.String.Double */ + .se { color: #f99157 } /* Literal.String.Escape */ + .sh { color: #99cc99 } /* Literal.String.Heredoc */ + .si { color: #f99157 } /* Literal.String.Interpol */ + .sx { color: #99cc99 } /* Literal.String.Other */ + .sr { color: #99cc99 } /* Literal.String.Regex */ + .s1 { color: #99cc99 } /* Literal.String.Single */ + .ss { color: #99cc99 } /* Literal.String.Symbol */ + .bp { color: #cccccc } /* Name.Builtin.Pseudo */ + .vc { color: #f2777a } /* Name.Variable.Class */ + .vg { color: #f2777a } /* Name.Variable.Global */ + .vi { color: #f2777a } /* Name.Variable.Instance */ + .il { color: #f99157 } /* Literal.Number.Integer.Long */ +} diff --git a/docs/hugo-tania/assets/sass/components/_navbar.scss b/docs/hugo-tania/assets/sass/components/_navbar.scss new file mode 100644 index 0000000..0c115dd --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_navbar.scss @@ -0,0 +1,166 @@ +/* Navbar */ + +main { + margin-top: 50px; +} + +@media screen and (min-width: 800px) { + main { + margin-top: 0; + } +} + +.emoji { + margin: 0 0.4rem 0 0.1rem; +} + +.navbar { + width: 100%; + position: fixed; + top: 0; + left: 0; + background: var(--navbar-color); + box-shadow: 0 3px 13px rgba(100, 110, 140, 0.1), + 0 2px 4px rgba(100, 110, 140, 0.15); + z-index: 2; + padding: 0.5rem; + + .flex { + justify-content: space-between; + } + + a { + border-radius: 0.35rem; + margin: 0 0.05rem; + color: rgba(255, 255, 255, 0.65); + font-weight: 400; + font-size: 0.85rem; + border: 1px solid transparent; + padding: 0 0.3rem; + background: transparent; + + &:first-of-type { + margin-left: -1rem; + } + + .emoji { + display: none; + } + + &.brand { + font-weight: 500; + color: white; + white-space: nowrap; + border: none; + display: flex; + align-items: center; + line-height: 1; + background: transparent; + + .emoji { + display: inline-block !important; + } + + img { + height: 22px; + width: 22px; + } + } + } + + button { + font-size: 1rem; + margin-right: -1rem; + } +} + +@media screen and (min-width: 500px) { + .navbar a { + font-size: 0.95rem; + padding: 0.5rem; + } +} + +@media screen and (min-width: 800px) { + .emoji { + margin: 0 0.5rem 0 0.1rem; + } + + .navbar { + position: static; + padding: 1.5rem 0; + background: transparent; + box-shadow: none; + + .flex { + justify-content: space-between; + } + + a { + padding: 0.75rem 1.25rem; + margin: 0 0.25rem; + font-size: 1.2rem; + font-weight: 400; + color: var(--font-color); + + &:first-of-type { + margin-left: -1.5rem; + } + + &:hover, &[aria-current='page'] { + background: var(--light-background); + color: var(--dark-font-color); + } + + &.brand { + font-size: 1.3rem; + margin-right: 3rem; + border: none; + background: transparent !important; + color: var(--dark-font-color); + + &:hover { + background: var(--light-background) !important; + } + + img { + height: 26px; + width: 26px; + margin-right: 0.25rem; + } + } + } + } + + #dark-mode-button:hover { + background: var(--light-background); + } +} + +@media print { + .navbar { + display: none; + } +} + +#dark-mode-button { + display: flex; + border: none; + padding: 0.2rem 0.7rem 0.2rem 0.5rem; + border-radius: 0.35rem; + box-sizing: content-box; + cursor: pointer; + font-size: 1.1rem; + background: transparent; + + &:focus { + outline: none; + } +} + +@media screen and (min-width: 800px) { + #dark-mode-button { + padding: 0.95rem 0.75rem; + font-size: 1.2rem; + } +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/components/_post.scss b/docs/hugo-tania/assets/sass/components/_post.scss new file mode 100644 index 0000000..55eff00 --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_post.scss @@ -0,0 +1,173 @@ +/* Post */ + +header { + padding: 1.5rem 0; + + h1 { + font-size: 2rem; + display: inline-block; + font-weight: 600; + margin-top: 1rem; + } + + u { + display: inline-block; + text-decoration: none; + padding: 0.4rem 0; + } +} + +.article-header { + padding-top: 2rem; + margin-bottom: 0.5rem; + + .container { + padding-left: 0; + padding-right: 0; + } + + .thumb { + display: flex; + flex-direction: column; + } + + h1 { + font-weight: 700; + font-size: 1.8rem; + margin: 0; + } + + .description { + font-size: 1.2rem; + color: var(--light-font-color); + font-weight: 300; + margin-top: 2rem; + margin-bottom: 0; + } +} + +.post-meta { + margin-top: 1rem; + padding: 0; + color: var(--light-font-color); + font-size: 0.9rem; + + a { + color: var(--font-color); + border-width: 0; + } + + time { + margin-top: 0.2rem; + font-size: 0.9rem; + } + + .tags { + margin-top: 0.5rem; + + a { + text-decoration: none; + } + } +} + +.article-post { + margin-bottom: 2rem; + + a { + box-shadow: 0px -2px 0px rgba(189, 195, 199, 0.5) inset; + transition: all .3s ease; + + &:hover { + box-shadow: 0px -10px 0px rgba(189, 195, 199, 0.7) inset; + } + } + + @for $i from 1 through 6 { + h#{$i} { + .anchor { + stroke: var(--link-color); + stroke-width: 1px; + fill: var(--link-color); + font-weight: 700; + left: -0.25rem; + border-width: 0; + float: left; + line-height: 1; + margin-left: -20px; + padding-right: 4px; + box-shadow: none; + transition: none; + + .icon { + visibility: hidden; + } + } + + &:hover { + .anchor { + box-shadow: none; + .icon { + visibility: visible; + } + } + } + } + } +} + +@media screen and (min-width: 800px) { + .article-post { + margin-bottom: 3rem; + } + + .article-post h1, + .article-post h2, + .article-post h3, + .article-post h4, + .article-post h5 { + padding-top: 1rem; + } + + .post-meta { + margin-top: 1.5rem; + padding: 1rem 0; + } + + header h1 { + font-size: 3rem; + margin-top: 2rem; + } + + header u { + background: linear-gradient(transparent 85%, #bac8ff 0); + } + + .article-header { + padding-top: 3rem; + + h1 { + padding-top: 0; + font-size: 2.5rem; + } + + .thumb { + flex-direction: row; + } + + .description { + font-size: 1.8rem; + line-height: 1.5; + } + } +} + +@media screen and (min-width: 1100px) { + .article-header h1 { + font-size: 2.5rem; + } +} + +.post-thumbnail { + display: block !important; +} diff --git a/docs/hugo-tania/assets/sass/components/_post_tag.scss b/docs/hugo-tania/assets/sass/components/_post_tag.scss new file mode 100644 index 0000000..7ee6af6 --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_post_tag.scss @@ -0,0 +1,26 @@ +.new-post, +.popular-post { + display: inline-block; + color: #111; + padding: 0.3rem 0.4rem; + border-radius: 0.3rem; + font-size: 0.85rem; + margin-left: 1rem; +} + +.new-post { + background: #d3f9d8; +} + +.popular-post { + background: #dce6fd; + color: var(--heading-color); +} + +@media screen and (min-width: 800px) { + + .new-post, + .popular-post { + margin-bottom: 0; + } +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/components/_posts.scss b/docs/hugo-tania/assets/sass/components/_posts.scss new file mode 100644 index 0000000..e2456af --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_posts.scss @@ -0,0 +1,68 @@ +/* Posts */ + +.post-row { + display: flex; + align-items: center; + width: 100%; + + time { + display: block; + flex: 0 0 65px; + } + + h3 { + flex: 1; + } +} + +.posts .post:last-of-type a { + border-bottom-width: 0; +} + +.post { + a { + display: flex; + align-items: center; + justify-content: stretch; + padding: 1rem 0; + border-bottom: 2px solid var(--light-background); + + &:hover { + border-radius: 0.3rem; + } + } + + h3 { + margin-top: 0.1rem; + margin-bottom: 0; + font-size: 1.1rem; + font-weight: 600; + } +} + + +@media screen and (min-width: 800px) { + .posts { + margin-left: -1rem; + margin-right: -1rem; + } + + .post { + a { + padding: 0.75rem 1rem; + border-bottom-color: transparent; + + &:hover { + background: var(--light-background); + } + } + + h3 { + font-size: 1.3rem; + } + } + + .post-row time { + flex: 0 0 80px; + } +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/components/_projects.scss b/docs/hugo-tania/assets/sass/components/_projects.scss new file mode 100644 index 0000000..5e8358a --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_projects.scss @@ -0,0 +1,58 @@ +/* Projects */ + +.projects .project:last-of-type { + border-bottom-width: 0; +} + +.project { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.75rem 0; + border-bottom: 2px solid var(--light-background); + + .icon { + font-size: 1.5rem; + width: 40px; + } + + a { + display: flex; + align-items: center; + margin-bottom: 0.25rem; + border-width: 0; + + &:hover h3 { + text-decoration: underline; + } + + &.button { + margin-left: 1.5rem; + border-width: 2px; + } + } + + h3 { + font-size: 1.2rem; + margin: 0; + } + + .description { + font-size: 1.1rem; + color: var(--light-font-color); + } +} + +@media screen and (min-width: 800px) { + .project { + border-bottom-width: 0; + + h3 { + font-size: 1.3rem; + } + + .description { + font-size: 1rem; + } + } +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/components/_side.scss b/docs/hugo-tania/assets/sass/components/_side.scss new file mode 100644 index 0000000..f668854 --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_side.scss @@ -0,0 +1,57 @@ +.side { + width: 200px; + margin: 0 auto; +} + +.side-right { + float: right; + clear: right; + margin-right: calc(-200px - 2em); + + p { + font-size: .9rem; + } +} + +.note-ref { + cursor: pointer; + border: none; + + &:hover { + border: none; + } +} + +.bg-number { + background: var(--light-background); + font-size: .9rem; + color: var(--font-color); + text-decoration: none; + padding: 1px 5px; + border-radius: 5px; +} + +@media (max-width: 1280px) { + .side { + width: 100%; + padding: 0 2em; + } + + .side-right { + float: none; + clear: both; + margin: 1em auto; + background: none; + } +} + +@media (min-width: 1280px) { + + .note-ref:hover ~ .side { + display: inline-block; + position: absolute; + margin-left: 1rem; + padding: .5rem; + box-sizing: content-box; + } +} diff --git a/docs/hugo-tania/assets/sass/components/_suggested.scss b/docs/hugo-tania/assets/sass/components/_suggested.scss new file mode 100644 index 0000000..631de29 --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_suggested.scss @@ -0,0 +1,46 @@ +/* Suggested */ + +.suggested { + flex-direction: column; + align-items: stretch; + margin-left: -1rem; + margin-right: -1rem; + padding: 0; + + span { + font-weight: 400; + display: block; + font-size: 0.9rem; + color: var(--transparent-text); + } + + a { + background: none; + margin: 0.5rem 1rem; + border-bottom: none; + transition: all 0.2s ease; + padding: 1.5rem; + border-radius: 0.35rem; + color: var(--heading-color); + border: 1px solid #eeeeee; + + &:hover { + transform: translate3D(0, -1px, 0); + background: var(--light-background-hover); + } + } +} + +@media screen and (min-width: 800px) { + .suggested { + flex-direction: row; + + a { + flex: 0 0 calc(50% - 2rem); + + &:first-of-type { + text-align: right; + } + } + } +} diff --git a/docs/hugo-tania/assets/sass/components/_table.scss b/docs/hugo-tania/assets/sass/components/_table.scss new file mode 100644 index 0000000..b173a62 --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_table.scss @@ -0,0 +1,49 @@ +/* Tables */ + +table { + border-collapse: separate; + border-spacing: 0; + width: 100%; + max-width: 100%; + overflow-x: auto; +} + +thead, +tbody { + white-space: nowrap; +} + +th { + border-bottom: 2px solid var(--border); +} + +tfoot th { + border-top: 1px solid var(--border); +} + +td { + border-bottom: 1px solid var(--border); +} + +th, +td { + text-align: left; + padding: 0.75rem; + hyphens: auto; +} + +tbody tr:nth-child(even) { + background-color: var(--light-background); +} + +@media screen and (min-width: 800px) { + table { + display: table; + border: 1px solid var(--border); + } + + thead, + tbody { + white-space: normal; + } +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/components/_tags.scss b/docs/hugo-tania/assets/sass/components/_tags.scss new file mode 100644 index 0000000..2f011e9 --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_tags.scss @@ -0,0 +1,74 @@ +/* Tags */ + +.count { + font-weight: 700; + color: var(--link-color); +} + +.tags { + display: flex !important; + flex-wrap: wrap; + align-items: center; + margin-left: -0.5rem; + margin-right: -0.5rem; + + >a { + display: block; + font-weight: 500; + background: var(--light-background); + color: var(--font-color); + margin: 0.2rem; + padding: 0.5rem 0.6rem; + font-size: 0.8rem; + border-radius: 0.3rem; + border-bottom: 0; + white-space: nowrap; + line-height: 1; + + &:hover { + background: var(--light-background-hover); + color: var(--heading-color); + } + } +} + +mark { + background: #ffec99; +} + +.utterances { + margin-left: -4px; + margin-right: -4px; +} + +kbd { + background-color: #f7f7f7; + border: 2px solid rgba(0, 0, 0, 0.3); + border-radius: 3px; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), inset 0 0 0 2px #fff; + color: #333; + display: inline-block; + font-family: Helvetica Neue, Inter, -apple-system, BlinkMacSystemFont, + Helvetica, Arial, sans-serif; + line-height: 1.4; + margin: 0 0.1em; + padding: 0.1em 0.6em; + text-shadow: 0 1px 0 #fff; + font-size: 14px; +} + +#comments { + margin-top: 3rem; +} + +#comments h2 { + margin: 0; +} + +@media print { + + .comments, + #comments { + display: none; + } +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/components/_terms.scss b/docs/hugo-tania/assets/sass/components/_terms.scss new file mode 100644 index 0000000..0f3b374 --- /dev/null +++ b/docs/hugo-tania/assets/sass/components/_terms.scss @@ -0,0 +1,15 @@ +.terms { + a { + padding: .75rem 1.25rem; + margin: 0 .25rem; + font-size: 1.2rem; + font-weight: 400; + color: var(--font-color); + border-radius: .35rem; + + &:hover { + background: var(--light-background); + color: var(--dark-font-color); + } + } +} \ No newline at end of file diff --git a/docs/hugo-tania/assets/sass/main.scss b/docs/hugo-tania/assets/sass/main.scss new file mode 100644 index 0000000..474b7f4 --- /dev/null +++ b/docs/hugo-tania/assets/sass/main.scss @@ -0,0 +1,26 @@ +@import "base/normalize"; +@import "base/reset"; +@import "base/variables"; +@import "base/grid"; +@import "base/scaffolding"; +@import "base/headings"; +@import "base/links"; + + +@import "components/navbar"; +@import "components/bio"; +@import "components/posts"; +@import "components/post_tag"; +@import "components/footer"; +@import "components/helpers"; +@import "components/table"; +@import "components/tags"; + +@import "components/post"; +@import "components/highlight"; +@import "components/side"; +@import "components/suggested"; +@import "components/projects"; +@import "components/terms"; + +@import "base/dark"; \ No newline at end of file diff --git a/docs/hugo-tania/images/screenshot.png b/docs/hugo-tania/images/screenshot.png new file mode 100644 index 0000000..ee96f4a Binary files /dev/null and b/docs/hugo-tania/images/screenshot.png differ diff --git a/docs/hugo-tania/images/tn.png b/docs/hugo-tania/images/tn.png new file mode 100644 index 0000000..92e0035 Binary files /dev/null and b/docs/hugo-tania/images/tn.png differ diff --git a/docs/hugo-tania/layouts/404.html b/docs/hugo-tania/layouts/404.html new file mode 100644 index 0000000..c7d0697 --- /dev/null +++ b/docs/hugo-tania/layouts/404.html @@ -0,0 +1,9 @@ +{{ partial "header.html" . }} + +
    +
    +

    404 NOT FOUND

    +
    +
    + +{{ partial "footer.html" . }} diff --git a/docs/hugo-tania/layouts/_default/archives.html b/docs/hugo-tania/layouts/_default/archives.html new file mode 100644 index 0000000..574e329 --- /dev/null +++ b/docs/hugo-tania/layouts/_default/archives.html @@ -0,0 +1,41 @@ +{{ define "main" }} + +
    +
    +

    {{ .Title }}

    +

    {{ .Params.subtitle }}

    +
    +
    + +{{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }} + +
    +
    +
    + {{ range $pages.GroupByDate "2006" }} +
    +
    + {{ range.Pages }} +
    + +
    +

    + {{ .Title }} +

    + +
    + +
    +
    + {{ .Summary }} +
    +
    + {{ end }} +
    +
    + {{ end }} +
    +
    +
    + +{{ end }} diff --git a/docs/hugo-tania/layouts/_default/baseof.html b/docs/hugo-tania/layouts/_default/baseof.html new file mode 100644 index 0000000..4bfc30b --- /dev/null +++ b/docs/hugo-tania/layouts/_default/baseof.html @@ -0,0 +1,12 @@ + + + {{ partial "head.html" . }} + + + {{ partial "header.html" . }} +
    + {{ block "main" . }}{{ end }} +
    + {{ partial "footer.html" . }} + + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/_default/index.html b/docs/hugo-tania/layouts/_default/index.html new file mode 100644 index 0000000..844f7f6 --- /dev/null +++ b/docs/hugo-tania/layouts/_default/index.html @@ -0,0 +1,92 @@ +{{ define "main" }} + +
    +
    +
    + {{ with.Content }} + {{ . }} + {{ end }} +
    + {{ range $name, $path := $.Param "socialOptions" }} + {{ if (and $path (ne $name "email")) }} + + {{ partial (print "svgs/social/" $name ".svg") (dict "width" 25 "height" 25) }} + + {{ end }} + {{ end }} +
    +
    +
    +
    + +{{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }} +{{ $projects := where .Site.RegularPages "Section" "projects" }} +{{ $pages = first (default 100 .Site.Params.homePosts) (sort (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) "Date" "desc") }} + +
    +
    +
    + {{ range $i,$e := $pages }} + + {{if modBool $i 2}} + + {{ end }} + + {{ end }} +
    +
    + {{ if gt (len $projects) 0}} +
    +

    Projects

    +
    + {{ range $projects.ByWeight }} +
    +
    + +
    {{ .Params.icon }}
    +

    {{ .Title }}

    +
    +
    {{ .Params.description }}
    +
    +
    + Source +
    +
    + {{ end }} +
    +
    + {{ end }} +
    + +{{ end }} diff --git a/docs/hugo-tania/layouts/_default/list.html b/docs/hugo-tania/layouts/_default/list.html new file mode 100644 index 0000000..c1bf98d --- /dev/null +++ b/docs/hugo-tania/layouts/_default/list.html @@ -0,0 +1,37 @@ +{{ define "main" }} + +{{ $pages := .Pages }} +{{ $pages = (.Paginate $pages).Pages }} + +
    +
    +

    {{ .Title }}

    +

    + {{ len $pages }} posts found. +

    +
    +
    + +
    +
    +
    +
    +
    + {{ range $pages }} +
    + +
    + +

    {{ .Title }}

    +
    + +
    +
    + {{ end }} +
    +
    +
    +
    +
    + +{{ end }} diff --git a/docs/hugo-tania/layouts/_default/single.html b/docs/hugo-tania/layouts/_default/single.html new file mode 100644 index 0000000..72354a2 --- /dev/null +++ b/docs/hugo-tania/layouts/_default/single.html @@ -0,0 +1,55 @@ +{{ define "main" }} + +
    + + +
    + {{ .Content }} +
    +
    + +
    + {{ if .Section }} + + {{ end }} +
    + + +{{ end }} diff --git a/docs/hugo-tania/layouts/_default/terms.html b/docs/hugo-tania/layouts/_default/terms.html new file mode 100644 index 0000000..1054cb0 --- /dev/null +++ b/docs/hugo-tania/layouts/_default/terms.html @@ -0,0 +1,22 @@ +{{ define "main" }} + +{{ $pages := .Pages }} +{{ $pages = (.Paginate $pages).Pages }} + +
    +
    +

    {{ .Title }}

    +
    +
    + +
    +
    +
    + {{ range (index .Site.Taxonomies (.Title | lower)) }} + {{ .Page.Title }} {{ .Count }} + {{ end }} +
    +
    +
    + +{{ end }} diff --git a/docs/hugo-tania/layouts/partials/footer.html b/docs/hugo-tania/layouts/partials/footer.html new file mode 100644 index 0000000..ab04728 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/footer.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/partials/head.html b/docs/hugo-tania/layouts/partials/head.html new file mode 100644 index 0000000..214005b --- /dev/null +++ b/docs/hugo-tania/layouts/partials/head.html @@ -0,0 +1,12 @@ + + + + + + + {{ with .Title }} {{ . }} | {{ end }}{{ .Site.Title }} + + + {{ $style := resources.Get "sass/main.scss" | toCSS | minify | fingerprint }} + + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/partials/header.html b/docs/hugo-tania/layouts/partials/header.html new file mode 100644 index 0000000..51cb88f --- /dev/null +++ b/docs/hugo-tania/layouts/partials/header.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/partials/svgs/social/dev-to.svg b/docs/hugo-tania/layouts/partials/svgs/social/dev-to.svg new file mode 100644 index 0000000..b3c5a58 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/dev-to.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/partials/svgs/social/email.svg b/docs/hugo-tania/layouts/partials/svgs/social/email.svg new file mode 100644 index 0000000..ae33aad --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/partials/svgs/social/facebook.svg b/docs/hugo-tania/layouts/partials/svgs/social/facebook.svg new file mode 100644 index 0000000..8481d2d --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/facebook.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/hugo-tania/layouts/partials/svgs/social/github.svg b/docs/hugo-tania/layouts/partials/svgs/social/github.svg new file mode 100644 index 0000000..5fd37b4 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/github.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/hugo-tania/layouts/partials/svgs/social/instagram.svg b/docs/hugo-tania/layouts/partials/svgs/social/instagram.svg new file mode 100644 index 0000000..f3a53d9 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/partials/svgs/social/linkedin.svg b/docs/hugo-tania/layouts/partials/svgs/social/linkedin.svg new file mode 100644 index 0000000..02ff296 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/linkedin.svg @@ -0,0 +1 @@ + diff --git a/docs/hugo-tania/layouts/partials/svgs/social/medium.svg b/docs/hugo-tania/layouts/partials/svgs/social/medium.svg new file mode 100644 index 0000000..e991b01 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/medium.svg @@ -0,0 +1 @@ + diff --git a/docs/hugo-tania/layouts/partials/svgs/social/stack-overflow.svg b/docs/hugo-tania/layouts/partials/svgs/social/stack-overflow.svg new file mode 100644 index 0000000..015cbac --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/stack-overflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/partials/svgs/social/steam.svg b/docs/hugo-tania/layouts/partials/svgs/social/steam.svg new file mode 100644 index 0000000..068dc97 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/partials/svgs/social/telegram.svg b/docs/hugo-tania/layouts/partials/svgs/social/telegram.svg new file mode 100644 index 0000000..6830505 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/telegram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/partials/svgs/social/twitch.svg b/docs/hugo-tania/layouts/partials/svgs/social/twitch.svg new file mode 100644 index 0000000..c750505 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/twitch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/partials/svgs/social/twitter.svg b/docs/hugo-tania/layouts/partials/svgs/social/twitter.svg new file mode 100644 index 0000000..224e8d8 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/twitter.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/hugo-tania/layouts/partials/svgs/social/whatsapp.svg b/docs/hugo-tania/layouts/partials/svgs/social/whatsapp.svg new file mode 100644 index 0000000..e0e3da4 --- /dev/null +++ b/docs/hugo-tania/layouts/partials/svgs/social/whatsapp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/hugo-tania/layouts/rss.xml b/docs/hugo-tania/layouts/rss.xml new file mode 100644 index 0000000..ac5be26 --- /dev/null +++ b/docs/hugo-tania/layouts/rss.xml @@ -0,0 +1,27 @@ + + + {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }} + {{ .Permalink }} + Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }} + Hugo -- gohugo.io{{ with .Site.LanguageCode }} + {{.}}{{end}}{{ with .Site.Author.email }} + {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}}{{ with .Site.Author.email }} + {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}}{{ with .Site.Copyright }} + {{.}}{{end}}{{ if not .Date.IsZero }} + {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}{{ end }} + + + {{ range first 30 .Data.Pages }} + + {{ .Title }} + {{ .Permalink }} + {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} + {{ with .Params.author }}{{.}}{{end}} + {{ .Permalink }} + + {{ (replace .Content " " "") | html }} + + + {{ end }} + + diff --git a/docs/hugo-tania/netlify.toml b/docs/hugo-tania/netlify.toml new file mode 100644 index 0000000..b1ef5ae --- /dev/null +++ b/docs/hugo-tania/netlify.toml @@ -0,0 +1,17 @@ +[build] + publish = "site/public" + +[build.environment] + HUGO_VERSION = "0.74.3" + HUGO_THEME = "repo" + +[context.production] + command = "cd site && hugo --gc --themesDir ../.. -b ${URL}" + [context.production.environment] + HUGO_ENV = "production" + +[context.branch-deploy] + command = "cd site && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}" + +[context.deploy-preview] + command = "cd site && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}" diff --git a/docs/hugo-tania/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.content b/docs/hugo-tania/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.content new file mode 100644 index 0000000..e6d9093 --- /dev/null +++ b/docs/hugo-tania/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.content @@ -0,0 +1 @@ +/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}*,*::before,*::after{box-sizing:border-box}:root{--color-mode: light;--h1-color: #343a40;--font-color: #495057;--heading-color: #343a40;--background: white;--dark-font-color: #1b1d25;--medium-font-color: #60656c;--light-font-color: #858b93;--light-background: #f1f4f8;--light-background-hover: #e1e6ed;--border: #d6d9de;--link-color: #5183f5;--link-color-darker: #364fc7;--navbar-color: #1b1d25;--blockquote: #f9f9f9;--blockquote-left: #e3e6eb;--transparent-text: rgba(0, 0, 0, 0.7);--transparent-bg: rgba(0, 0, 0, 0.05);--light-transparent-bg: rgba(255, 255, 255, 0.1)}.flex{display:flex;align-items:center}.flex-row{display:flex;flex-direction:column}@media screen and (min-width:800px){.flex-row{flex-direction:row}}.flex-col{flex:1}.flex-two-thirds{flex:2}.justify-center{justify-content:center}html{font-family:-apple-system,BlinkMacSystemFont,helvetica neue,roboto,Roboto,Arial,noto sans,sans-serif,apple color emoji,segoe ui,segoe ui emoji,segoe ui symbol,noto color emoji;color:var(--font-color);font-weight:400;font-size:1rem;line-height:1.75}body{background:var(--background);margin:0;padding:0}section{margin:2rem 0}section:first-of-type{margin-top:0}section>h2{display:flex;align-items:center;font-size:1.6rem;margin-top:0;margin-bottom:.5rem}@media screen and (min-width:800px){section>h2{margin-bottom:2rem}}.index h2,section>h2{border-bottom-width:0}@media screen and (min-width:800px){.index h2,section>h2{border-bottom-width:4px}}a.section-button{font-weight:500;background:var(--light-background);color:var(--dark-font-color);padding:.4rem .6rem;font-size:.8rem;border-radius:.3rem;border-width:0!important;white-space:nowrap;line-height:1;margin-left:2rem;margin-top:.5rem}a.section-button:hover{background:var(--light-background-hover);color:var(--heading-color)}@media screen and (min-width:800px){section{margin:3.5rem 0}section>h2{font-size:2rem;margin:0 0 1rem}}.container{max-width:825px;padding:0 1.5rem;margin-left:auto;margin-right:auto}.container.page p{max-width:600px}@media screen and (min-width:800px){.container{padding:0 2rem}}img{display:inline-block;max-width:100%;height:auto}p,ol,ul,dl,table,blockquote{font-size:1.05rem;margin:0 0 1.5rem}ul{padding:0 1rem}@media screen and (min-width:800px){p,ol,ul,dl,table,blockquote{font-size:1.125rem}ul{padding:0 2rem}}ul li p{margin:0}ul li ul{padding-left:1rem;margin:0}ul li ul li{margin:0}ol li ol{margin-bottom:0}.task-list-item [type=checkbox]{margin-right:.5rem}blockquote{margin:2rem 0;padding:1rem;background:var(--blockquote);font-weight:400;border-left:5px solid var(--blockquote-left)}blockquote :not(pre)>code[class*=language-]{background:rgba(0,0,0,.1)!important}@media screen and (min-width:800px){blockquote{padding:2rem 0 2rem 2rem}}::selection{background:#3b5bdb;color:#fff}h1{color:var(--h1-color)}h3,h4{color:var(--medium-font-color)}h2,h5{color:var(--heading-color)}h1,h2,h3,h4,h5{margin:0 0 1.5rem;font-weight:700;line-height:1.2;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1:not(:first-child),h2:not(:first-child),h3:not(:first-child),h4:not(:first-child){margin-top:3rem}h1{font-size:2.5rem;line-height:1.1}h2{font-size:1.75rem;padding-bottom:.5rem;border-bottom:4px solid var(--light-background)}h2 code{font-size:1.75rem!important}h3{font-size:1.5rem;color:var(--font-color);font-weight:600;margin-bottom:1rem}h3 code{font-size:1.4rem!important}h4{font-size:1.3rem;color:var(--font-color);font-weight:500;margin-bottom:1rem;border-bottom:2px solid var(--light-background);padding-bottom:.25rem}h5{font-size:1.2rem;margin-bottom:1rem}@media screen and (min-width:800px){h1{font-size:3rem}h2{font-size:1.9rem}h2 code{font-size:1.9rem!important}h3{font-size:1.7rem;color:var(--font-color);font-weight:600}h3 code{font-size:1.6rem!important}h4{font-weight:400;font-size:1.4rem}}a.link{display:block;padding:.25rem 0;margin:.25rem 0;border-radius:.35rem;font-weight:600;color:var(--dark-font-color)}a.link:hover{color:var(--link-color)}a.button{display:inline-block;border:2px solid var(--link-color);padding:.3rem .6rem;margin-right:.75rem;font-weight:500;background:var(--link-color);color:#fff;border-radius:.35rem;font-size:.9rem}a.button.large{padding:.8rem 1rem;font-size:1.05rem}a.button.secondary{border:2px solid #edf2ff;background:#edf2ff;color:#3b5bdb}a.button:hover,a.button.secondary:hover{border:2px solid var(--link-color-darker);background:var(--link-color-darker);color:#fff}@media screen and (min-width:800px){a.button{font-size:.9rem}a.button.large{padding:1rem 1.5rem;font-size:1.1rem}}p.subtitle{color:var(--medium-font-color);font-size:1.3rem;font-weight:300;margin-bottom:0}@media screen and (min-width:800px){p.subtitle{font-size:1.5rem}}a{color:inherit;text-decoration:none}a.image-link{border-width:0}a code[class*=language-]{color:var(--link-color)!important}a code[class*=language-]:hover{background:var(--link-color)!important;color:#fff!important}main{margin-top:50px}@media screen and (min-width:800px){main{margin-top:0}}.emoji{margin:0 .4rem 0 .1rem}.navbar{width:100%;position:fixed;top:0;left:0;background:var(--navbar-color);box-shadow:0 3px 13px rgba(100,110,140,.1),0 2px 4px rgba(100,110,140,.15);z-index:2;padding:.5rem}.navbar .flex{justify-content:space-between}.navbar a{border-radius:.35rem;margin:0 .05rem;color:rgba(255,255,255,.65);font-weight:400;font-size:.85rem;border:1px solid transparent;padding:0 .3rem;background:0 0}.navbar a:first-of-type{margin-left:-1rem}.navbar a .emoji{display:none}.navbar a.brand{font-weight:500;color:#fff;white-space:nowrap;border:none;display:flex;align-items:center;line-height:1;background:0 0}.navbar a.brand .emoji{display:inline-block!important}.navbar a.brand img{height:22px;width:22px}.navbar button{font-size:1rem;margin-right:-1rem}@media screen and (min-width:500px){.navbar a{font-size:.95rem;padding:.5rem}}@media screen and (min-width:800px){.emoji{margin:0 .5rem 0 .1rem}.navbar{position:static;padding:1.5rem 0;background:0 0;box-shadow:none}.navbar .flex{justify-content:space-between}.navbar a{padding:.75rem 1.25rem;margin:0 .25rem;font-size:1.2rem;font-weight:400;color:var(--font-color)}.navbar a:first-of-type{margin-left:-1.5rem}.navbar a:hover,.navbar a[aria-current=page]{background:var(--light-background);color:var(--dark-font-color)}.navbar a.brand{font-size:1.3rem;margin-right:3rem;border:none;background:0 0!important;color:var(--dark-font-color)}.navbar a.brand:hover{background:var(--light-background)!important}.navbar a.brand img{height:26px;width:26px;margin-right:.25rem}#dark-mode-button:hover{background:var(--light-background)}}@media print{.navbar{display:none}}#dark-mode-button{display:flex;border:none;padding:.2rem .7rem .2rem .5rem;border-radius:.35rem;box-sizing:content-box;cursor:pointer;font-size:1.1rem;background:0 0}#dark-mode-button:focus{outline:none}@media screen and (min-width:800px){#dark-mode-button{padding:.95rem .75rem;font-size:1.2rem}}.my{padding-top:2rem}.my a{border:none;margin-right:1rem}.my a:hover{border:none}.post-row{display:flex;align-items:center;width:100%}.post-row time{display:block;flex:0 0 65px}.post-row h3{flex:1}.posts .post:last-of-type a{border-bottom-width:0}.post a{display:flex;align-items:center;justify-content:stretch;padding:1rem 0;border-bottom:2px solid var(--light-background)}.post a:hover{border-radius:.3rem}.post h3{margin-top:.1rem;margin-bottom:0;font-size:1.1rem;font-weight:600}@media screen and (min-width:800px){.posts{margin-left:-1rem;margin-right:-1rem}.post a{padding:.75rem 1rem;border-bottom-color:transparent}.post a:hover{background:var(--light-background)}.post h3{font-size:1.3rem}.post-row time{flex:0 0 80px}}.new-post,.popular-post{display:inline-block;color:#111;padding:.3rem .4rem;border-radius:.3rem;font-size:.85rem;margin-left:1rem}.new-post{background:#d3f9d8}.popular-post{background:#dce6fd;color:var(--heading-color)}@media screen and (min-width:800px){.new-post,.popular-post{margin-bottom:0}}.footer{padding:2rem 0}.footer>.flex{flex-direction:column;align-items:center;justify-content:center}.footer img{height:30px;width:30px}.footer a{border-radius:.35rem;margin:0 .05rem;font-weight:400;font-size:1rem;border:1px solid transparent;padding:.5rem;margin:0 .5rem;color:var(--light-font-color)}.footer a:hover{color:var(--heading-color);background:var(--light-background)}.footer a.img{display:flex;align-items:center;padding:0;margin:0 .75rem;background:0 0}.footer-links{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.flex nav{padding:1rem 0}@media screen and (min-width:800px){.footer>.flex{align-items:flex-start;margin-left:-1.5rem;margin-right:-1.5rem}.footer a{padding:.75rem}.footer a.img{padding:0 .5rem;margin:0 1rem}}@media print{.footer{display:none}}.small{max-width:600px}time,.meta{color:var(--light-font-color);font-size:.85rem;white-space:nowrap;font-weight:400}.meta{color:var(--medium-font-color);font-size:1rem}table{border-collapse:separate;border-spacing:0;width:100%;max-width:100%;overflow-x:auto}thead,tbody{white-space:nowrap}th{border-bottom:2px solid var(--border)}tfoot th{border-top:1px solid var(--border)}td{border-bottom:1px solid var(--border)}th,td{text-align:left;padding:.75rem;hyphens:auto}tbody tr:nth-child(even){background-color:var(--light-background)}@media screen and (min-width:800px){table{display:table;border:1px solid var(--border)}thead,tbody{white-space:normal}}.count{font-weight:700;color:var(--link-color)}.tags{display:flex!important;flex-wrap:wrap;align-items:center;margin-left:-.5rem;margin-right:-.5rem}.tags>a{display:block;font-weight:500;background:var(--light-background);color:var(--font-color);margin:.2rem;padding:.5rem .6rem;font-size:.8rem;border-radius:.3rem;border-bottom:0;white-space:nowrap;line-height:1}.tags>a:hover{background:var(--light-background-hover);color:var(--heading-color)}mark{background:#ffec99}.utterances{margin-left:-4px;margin-right:-4px}kbd{background-color:#f7f7f7;border:2px solid rgba(0,0,0,.3);border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 2px #fff;color:#333;display:inline-block;font-family:Helvetica Neue,Inter,-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;line-height:1.4;margin:0 .1em;padding:.1em .6em;text-shadow:0 1px 0 #fff;font-size:14px}#comments{margin-top:3rem}#comments h2{margin:0}@media print{.comments,#comments{display:none}}header{padding:1.5rem 0}header h1{font-size:2rem;display:inline-block;font-weight:600;margin-top:1rem}header u{display:inline-block;text-decoration:none;padding:.4rem 0}.article-header{padding-top:2rem;margin-bottom:.5rem}.article-header .container{padding-left:0;padding-right:0}.article-header .thumb{display:flex;flex-direction:column}.article-header h1{font-weight:700;font-size:1.8rem;margin:0}.article-header .description{font-size:1.2rem;color:var(--light-font-color);font-weight:300;margin-top:2rem;margin-bottom:0}.post-meta{margin-top:1rem;padding:0;color:var(--light-font-color);font-size:.9rem}.post-meta a{color:var(--font-color);border-width:0}.post-meta time{margin-top:.2rem;font-size:.9rem}.post-meta .tags{margin-top:.5rem}.post-meta .tags a{text-decoration:none}.article-post{margin-bottom:2rem}.article-post a{box-shadow:0 -2px 0 rgba(189,195,199,.5)inset;transition:all .3s ease}.article-post a:hover{box-shadow:0 -10px 0 rgba(189,195,199,.7)inset}.article-post h1 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h1 .anchor .icon{visibility:hidden}.article-post h1:hover .anchor{box-shadow:none}.article-post h1:hover .anchor .icon{visibility:visible}.article-post h2 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h2 .anchor .icon{visibility:hidden}.article-post h2:hover .anchor{box-shadow:none}.article-post h2:hover .anchor .icon{visibility:visible}.article-post h3 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h3 .anchor .icon{visibility:hidden}.article-post h3:hover .anchor{box-shadow:none}.article-post h3:hover .anchor .icon{visibility:visible}.article-post h4 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h4 .anchor .icon{visibility:hidden}.article-post h4:hover .anchor{box-shadow:none}.article-post h4:hover .anchor .icon{visibility:visible}.article-post h5 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h5 .anchor .icon{visibility:hidden}.article-post h5:hover .anchor{box-shadow:none}.article-post h5:hover .anchor .icon{visibility:visible}.article-post h6 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h6 .anchor .icon{visibility:hidden}.article-post h6:hover .anchor{box-shadow:none}.article-post h6:hover .anchor .icon{visibility:visible}@media screen and (min-width:800px){.article-post{margin-bottom:3rem}.article-post h1,.article-post h2,.article-post h3,.article-post h4,.article-post h5{padding-top:1rem}.post-meta{margin-top:1.5rem;padding:1rem 0}header h1{font-size:3rem;margin-top:2rem}header u{background:linear-gradient(transparent 85%,#bac8ff 0)}.article-header{padding-top:3rem}.article-header h1{padding-top:0;font-size:2.5rem}.article-header .thumb{flex-direction:row}.article-header .description{font-size:1.8rem;line-height:1.5}}@media screen and (min-width:1100px){.article-header h1{font-size:2.5rem}}.post-thumbnail{display:block!important}code,pre{font-size:.9rem;font-family:Consolas,Monaco,Menlo,dejavu sans mono,bitstream vera sans mono,courier new,monospace;background:#373b41}:not(pre)>code{color:var(--dark-font-color);background:var(--light-background)}code{padding:3px 5px;border-radius:4px;color:#f8f8f2}pre>code{display:block}.highlight>.chroma{margin:0;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative;background:#373b41}.highlight>.chroma code{padding:30px 10px 10px}.highlight>.chroma code[data-lang]::before{position:absolute;top:0;right:0;left:0;padding:2px 10px;width:100%;height:30px;font-size:.9rem;line-height:1.9;font-weight:700;color:#b1b1b1;background:#303339;content:attr(data-lang)}.highlight>.chroma table{position:relative;border:none}.highlight>.chroma table code{padding:0}.highlight>.chroma .lntd:first-child{width:10px}.highlight>.chroma .lntd:first-child pre{margin:0;padding:30px 7px 10px}.highlight>.chroma .lntd:last-child{vertical-align:top}.highlight>.chroma .lntd:last-child pre{margin:0;padding:30px 10px 10px}.highlight>.chroma table,.highlight>.chroma tr,.highlight>.chroma td{margin:0;padding:0;width:100%;border-collapse:collapse;border:none}.highlight>.chroma .hl{display:block;width:100%;background-color:#000}.highlight>.chroma .lnt{color:#7f7f7f}.highlight>.chroma .ln{padding:0 .4em;color:#7f7f7f}.highlight>.chroma .err{color:#960050}.highlight>.chroma .c{color:#999}.highlight>.chroma .err{color:#f2777a}.highlight>.chroma .k{color:#c9c}.highlight>.chroma .l{color:#f99157}.highlight>.chroma .n{color:#ccc}.highlight>.chroma .o{color:#6cc}.highlight>.chroma .p{color:#ccc}.highlight>.chroma .cm{color:#999}.highlight>.chroma .cp{color:#999}.highlight>.chroma .c1{color:#999}.highlight>.chroma .cs{color:#999}.highlight>.chroma .gd{color:#f2777a}.highlight>.chroma .ge{font-style:italic}.highlight>.chroma .gh{color:#ccc;font-weight:700}.highlight>.chroma .gi{color:#9c9}.highlight>.chroma .gp{color:#999;font-weight:700}.highlight>.chroma .gs{font-weight:700}.highlight>.chroma .gu{color:#6cc;font-weight:700}.highlight>.chroma .kc{color:#c9c}.highlight>.chroma .kd{color:#c9c}.highlight>.chroma .kn{color:#6cc}.highlight>.chroma .kp{color:#c9c}.highlight>.chroma .kr{color:#c9c}.highlight>.chroma .kt{color:#fc6}.highlight>.chroma .ld{color:#9c9}.highlight>.chroma .m{color:#f99157}.highlight>.chroma .s{color:#9c9}.highlight>.chroma .na{color:#69c}.highlight>.chroma .nb{color:#ccc}.highlight>.chroma .nc{color:#fc6}.highlight>.chroma .no{color:#f2777a}.highlight>.chroma .nd{color:#6cc}.highlight>.chroma .ni{color:#ccc}.highlight>.chroma .ne{color:#f2777a}.highlight>.chroma .nf{color:#69c}.highlight>.chroma .nl{color:#ccc}.highlight>.chroma .nn{color:#fc6}.highlight>.chroma .nx{color:#69c}.highlight>.chroma .py{color:#ccc}.highlight>.chroma .nt{color:#6cc}.highlight>.chroma .nv{color:#f2777a}.highlight>.chroma .ow{color:#6cc}.highlight>.chroma .w{color:#ccc}.highlight>.chroma .mf{color:#f99157}.highlight>.chroma .mh{color:#f99157}.highlight>.chroma .mi{color:#f99157}.highlight>.chroma .mo{color:#f99157}.highlight>.chroma .sb{color:#9c9}.highlight>.chroma .sc{color:#ccc}.highlight>.chroma .sd{color:#999}.highlight>.chroma .s2{color:#9c9}.highlight>.chroma .se{color:#f99157}.highlight>.chroma .sh{color:#9c9}.highlight>.chroma .si{color:#f99157}.highlight>.chroma .sx{color:#9c9}.highlight>.chroma .sr{color:#9c9}.highlight>.chroma .s1{color:#9c9}.highlight>.chroma .ss{color:#9c9}.highlight>.chroma .bp{color:#ccc}.highlight>.chroma .vc{color:#f2777a}.highlight>.chroma .vg{color:#f2777a}.highlight>.chroma .vi{color:#f2777a}.highlight>.chroma .il{color:#f99157}.side{width:200px;margin:0 auto}.side-right{float:right;clear:right;margin-right:calc(-200px - 2em)}.side-right p{font-size:.9rem}.note-ref{cursor:pointer;border:none}.note-ref:hover{border:none}.bg-number{background:var(--light-background);font-size:.9rem;color:var(--font-color);text-decoration:none;padding:1px 5px;border-radius:5px}@media(max-width:1280px){.side{width:100%;padding:0 2em}.side-right{float:none;clear:both;margin:1em auto;background:0 0}}@media(min-width:1280px){.note-ref:hover~.side{display:inline-block;position:absolute;margin-left:1rem;padding:.5rem;box-sizing:content-box}}.suggested{flex-direction:column;align-items:stretch;margin-left:-1rem;margin-right:-1rem;padding:0}.suggested span{font-weight:400;display:block;font-size:.9rem;color:var(--transparent-text)}.suggested a{background:0 0;margin:.5rem 1rem;border-bottom:none;transition:all .2s ease;padding:1.5rem;border-radius:.35rem;background:var(--light-background);color:var(--heading-color)}.suggested a:hover{transform:translate3D(0,-1px,0);background:var(--light-background-hover)}@media screen and (min-width:800px){.suggested{flex-direction:row}.suggested a{flex:0 0 calc(50% - 2rem)}.suggested a:first-of-type{text-align:right}}.projects .project:last-of-type{border-bottom-width:0}.project{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;border-bottom:2px solid var(--light-background)}.project .icon{font-size:1.5rem;width:40px}.project a{display:flex;align-items:center;margin-bottom:.25rem;border-width:0}.project a:hover h3{text-decoration:underline}.project a.button{margin-left:1.5rem;border-width:2px}.project h3{font-size:1.2rem;margin:0}.project .description{font-size:1.1rem;color:var(--light-font-color)}@media screen and (min-width:800px){.project{border-bottom-width:0}.project h3{font-size:1.3rem}.project .description{font-size:1rem}}.terms a{padding:.75rem 1.25rem;margin:0 .25rem;font-size:1.2rem;font-weight:400;color:var(--font-color);border-radius:.35rem}.terms a:hover{background:var(--light-background);color:var(--dark-font-color)}@media(prefers-color-scheme:dark){:root{--color-mode: dark}:root:not([data-user-color-scheme]){--h1-color: white;--font-color: #b3b9c5;--heading-color: #ffd479;--dark-font-color: #ced4da;--background: #1f2022;--medium-font-color: #dee2e6;--light-font-color: #868e96;--light-background: #2D2D31;--light-background-hover: #3b3b3e;--code-background-color: #2e2e30;--border: #404040;--link-color: #6ab0f3;--link-color-darker: #4a72a5;--link-hover-color: #e1a6f2;--navbar-color: #1d1d1d;--blockquote: #2b2b2b;--blockquote-left: #191919;--transparent-text: rgba(255, 255, 255, 0.7);--transparent-bg: rgba(0, 0, 0, 0.2);--light-transparent-bg: rgba(255, 255, 255, 0.05)}}[data-user-color-scheme=dark]{--h1-color: white;--font-color: #b3b9c5;--heading-color: #ffd479;--dark-font-color: #ced4da;--background: #1f2022;--medium-font-color: #dee2e6;--light-font-color: #868e96;--light-background: #2D2D31;--light-background-hover: #3b3b3e;--code-background-color: #2e2e30;--border: #404040;--link-color: #6ab0f3;--link-color-darker: #4a72a5;--link-hover-color: #e1a6f2;--navbar-color: #1d1d1d;--blockquote: #2b2b2b;--blockquote-left: #191919;--transparent-text: rgba(255, 255, 255, 0.7);--transparent-bg: rgba(0, 0, 0, 0.2);--light-transparent-bg: rgba(255, 255, 255, 0.05)} \ No newline at end of file diff --git a/docs/hugo-tania/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.json b/docs/hugo-tania/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.json new file mode 100644 index 0000000..464a0d6 --- /dev/null +++ b/docs/hugo-tania/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.json @@ -0,0 +1 @@ +{"Target":"sass/main.min.96090b4177a3194fa2de0860f2c55524d6582b68a41222fe4030905ef033075a.css","MediaType":"text/css","Data":{"Integrity":"sha256-lgkLQXejGU+i3ghg8sVVJNZYK2ikEiL+QDCQXvAzB1o="}} \ No newline at end of file diff --git a/docs/hugo-tania/site/config.yaml b/docs/hugo-tania/site/config.yaml new file mode 100644 index 0000000..0c4be91 --- /dev/null +++ b/docs/hugo-tania/site/config.yaml @@ -0,0 +1,32 @@ +baseurl: 'https://services.m3o.com' +languageCode: 'en-us' +title: 'Micro Services' +themesDir: '../..' +theme: 'hugo-tania' +summaryLength: 10 + +params: + source: "https://github.com/micro/services" + titleEmoji: '' + socialOptions: + github: + twitter: + +menu: + header: + - name: Explore + url: '/explore/' + footer: + - name: '© 2020 Micro Services, Inc.' + url: 'https://m3o.com' + +markup: + highlight: + noClasses: false + lineNos: true + goldmark: + renderer: + unsafe: true + +permalinks: + post: /:filename diff --git a/docs/hugo-tania/site/content/_index.md b/docs/hugo-tania/site/content/_index.md new file mode 100644 index 0000000..f531b6e --- /dev/null +++ b/docs/hugo-tania/site/content/_index.md @@ -0,0 +1 @@ +Explore, discover and use Micro Services. diff --git a/docs/hugo-tania/site/content/explore.md b/docs/hugo-tania/site/content/explore.md new file mode 100644 index 0000000..44977b8 --- /dev/null +++ b/docs/hugo-tania/site/content/explore.md @@ -0,0 +1,7 @@ +--- +title: Services +subtitle: Explore Micro services API documentation, usage and specs +date: 2020-11-26 +type: section +layout: 'archives' +--- diff --git a/docs/hugo-tania/theme.toml b/docs/hugo-tania/theme.toml new file mode 100644 index 0000000..c3f4670 --- /dev/null +++ b/docs/hugo-tania/theme.toml @@ -0,0 +1,25 @@ +# theme.toml template for a Hugo theme +# See https://github.com/gohugoio/hugoThemes#themetoml for an example + +name = "Tania" +license = "MIT" +licenselink = "https://github.com/WingLim/hugo-tania/blob/master/LICENSE" +description = "A simple theme for bloggers" +homepage = "https://hugo-tanhia.netlify.app" +tags = [ + "blog", + "responsive", + "light", + "dark" + ] +features = ["darkmode"] +min_version = "0.74.0" + +[author] + name = "WingLim" + homepage = "https://limxw.com" + +[original] + author = "Tania Rascia" + homepage = "https://www.taniarascia.com/" + repo = "https://github.com/taniarascia/taniarascia.com" diff --git a/docs/skip b/docs/skip new file mode 100644 index 0000000..e69de29 diff --git a/etas/Makefile b/etas/Makefile index ad00a4e..6b47ca7 100644 --- a/etas/Makefile +++ b/etas/Makefile @@ -8,8 +8,14 @@ init: .PHONY: proto proto: - protoc --proto_path=. --micro_out=. --go_out=:. proto/etas.proto - + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/etas.proto + @redoc-cli bundle api-protobuf.json + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/etas.proto + @redoc-cli bundle api-protobuf.json + .PHONY: build build: go build -o etas *.go diff --git a/etas/README.md b/etas/README.md index 8412403..1e2b181 100644 --- a/etas/README.md +++ b/etas/README.md @@ -1,7 +1,7 @@ -# ETAs Service - This is the ETAs service. It provides ETAs for single-pickup, multi-dropoff routes. It takes into account time and traffic. +# ETAs Service + Current limitations: • Only supports "Driving" (not walking, cycling) • Does not optimize route @@ -10,13 +10,13 @@ Current limitations: The ETA service depends on the Google Maps API. Ensure you set the "google.maps.apikey" config value to your API key. -``` +```shell micro config set google.maps.apikey YOUR_API_KEY ``` Once set, run the service using `micro run github.com/micro/services/etas`. -```bash +```shell $ micro call etas ETAs.Calculate $(cat example-req.json) { "points": { diff --git a/etas/proto/etas.pb.go b/etas/proto/etas.pb.go index 00815e4..c52eff0 100644 --- a/etas/proto/etas.pb.go +++ b/etas/proto/etas.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.23.0 -// protoc v3.13.0 +// protoc-gen-go v1.25.0 +// protoc v3.6.1 // source: proto/etas.proto package etas @@ -319,10 +319,8 @@ var file_proto_etas_proto_rawDesc = []byte{ 0x65, 0x54, 0x69, 0x6d, 0x65, 0x32, 0x30, 0x0a, 0x04, 0x45, 0x54, 0x41, 0x73, 0x12, 0x28, 0x0a, 0x09, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x2e, 0x65, 0x74, 0x61, 0x73, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x1a, 0x0e, 0x2e, 0x65, 0x74, 0x61, 0x73, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2f, 0x65, 0x74, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, - 0x65, 0x74, 0x61, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x5a, 0x0a, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x3b, 0x65, 0x74, 0x61, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/etas/proto/etas.proto b/etas/proto/etas.proto index 8969bf1..3b8f239 100644 --- a/etas/proto/etas.proto +++ b/etas/proto/etas.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package etas; -option go_package = "github.com/micro/services/etas/proto;etas"; +option go_package = "proto;etas"; import "google/protobuf/timestamp.proto"; diff --git a/blog/feeds/.gitignore b/feeds/.gitignore similarity index 100% rename from blog/feeds/.gitignore rename to feeds/.gitignore diff --git a/blog/feeds/Dockerfile b/feeds/Dockerfile similarity index 100% rename from blog/feeds/Dockerfile rename to feeds/Dockerfile diff --git a/blog/feeds/Makefile b/feeds/Makefile similarity index 62% rename from blog/feeds/Makefile rename to feeds/Makefile index 50bbf2d..01a345f 100644 --- a/blog/feeds/Makefile +++ b/feeds/Makefile @@ -7,8 +7,13 @@ init: go get github.com/micro/micro/v3/cmd/protoc-gen-micro .PHONY: proto proto: - protoc --proto_path=. --micro_out=. --go_out=:. proto/feeds.proto - + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/feeds.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/feeds.proto + @redoc-cli bundle api-feeds.json + .PHONY: build build: go build -o feeds *.go diff --git a/blog/feeds/README.md b/feeds/README.md similarity index 68% rename from blog/feeds/README.md rename to feeds/README.md index 965ac16..53955ea 100644 --- a/blog/feeds/README.md +++ b/feeds/README.md @@ -1,21 +1,28 @@ +Designed to populate the posts service with RSS feeds from other blogs. Useful for migration or just to get outside content into the posts service. + # Feeds Service -This is the Feeds service +## Creating a feeed -Generated with +### cURL -``` -micro new feeds +```bash +> curl 'https://api.m3o.com/feeds/New' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{"name":"a16z", "url": "http://a16z.com/feed/"}'; +{} ``` -## Usage +### CLI - -``` +```shell micro feeds new --name="a16z" --url=http://a16z.com/feed/ ``` -``` +## Querying feeded posts + +```shell $ micro posts query { "posts": [ diff --git a/blog/feeds/generate.go b/feeds/generate.go similarity index 100% rename from blog/feeds/generate.go rename to feeds/generate.go diff --git a/blog/feeds/handler/crawl.go b/feeds/handler/crawl.go similarity index 93% rename from blog/feeds/handler/crawl.go rename to feeds/handler/crawl.go index 127165f..9178598 100644 --- a/blog/feeds/handler/crawl.go +++ b/feeds/handler/crawl.go @@ -9,8 +9,8 @@ import ( "github.com/SlyMarbo/rss" log "github.com/micro/micro/v3/service/logger" - feeds "github.com/micro/services/blog/feeds/proto" - posts "github.com/micro/services/blog/posts/proto" + feeds "github.com/micro/services/feeds/proto" + posts "github.com/micro/services/posts/proto" ) func (e *Feeds) fetchAll() { diff --git a/blog/feeds/handler/feeds.go b/feeds/handler/feeds.go similarity index 95% rename from blog/feeds/handler/feeds.go rename to feeds/handler/feeds.go index 424d49e..c6e1bcf 100644 --- a/blog/feeds/handler/feeds.go +++ b/feeds/handler/feeds.go @@ -8,8 +8,8 @@ import ( log "github.com/micro/micro/v3/service/logger" "github.com/micro/micro/v3/service/store" - feeds "github.com/micro/services/blog/feeds/proto" - posts "github.com/micro/services/blog/posts/proto" + feeds "github.com/micro/services/feeds/proto" + posts "github.com/micro/services/posts/proto" ) type Feeds struct { diff --git a/blog/feeds/main.go b/feeds/main.go similarity index 73% rename from blog/feeds/main.go rename to feeds/main.go index d66f411..bd7b58e 100644 --- a/blog/feeds/main.go +++ b/feeds/main.go @@ -1,10 +1,10 @@ package main import ( - pb "github.com/micro/services/blog/feeds/proto" - posts "github.com/micro/services/blog/posts/proto" + pb "github.com/micro/services/feeds/proto" + posts "github.com/micro/services/posts/proto" - "github.com/micro/services/blog/feeds/handler" + "github.com/micro/services/feeds/handler" "github.com/micro/micro/v3/service" "github.com/micro/micro/v3/service/logger" diff --git a/blog/feeds/micro.mu b/feeds/micro.mu similarity index 100% rename from blog/feeds/micro.mu rename to feeds/micro.mu diff --git a/feeds/proto/feeds.pb.go b/feeds/proto/feeds.pb.go new file mode 100644 index 0000000..20deb7e --- /dev/null +++ b/feeds/proto/feeds.pb.go @@ -0,0 +1,535 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 +// source: proto/feeds.proto + +package feeds + +import ( + proto "github.com/golang/protobuf/proto" + 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) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Feed struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // rss feed name + // eg. a16z + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // rss feed url + // eg. http://a16z.com/feed/ + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` +} + +func (x *Feed) Reset() { + *x = Feed{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_feeds_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Feed) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Feed) ProtoMessage() {} + +func (x *Feed) ProtoReflect() protoreflect.Message { + mi := &file_proto_feeds_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 Feed.ProtoReflect.Descriptor instead. +func (*Feed) Descriptor() ([]byte, []int) { + return file_proto_feeds_proto_rawDescGZIP(), []int{0} +} + +func (x *Feed) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Feed) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +type Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` + Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` + Date int64 `protobuf:"varint,6,opt,name=date,proto3" json:"date,omitempty"` +} + +func (x *Entry) Reset() { + *x = Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_feeds_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Entry) ProtoMessage() {} + +func (x *Entry) ProtoReflect() protoreflect.Message { + mi := &file_proto_feeds_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 Entry.ProtoReflect.Descriptor instead. +func (*Entry) Descriptor() ([]byte, []int) { + return file_proto_feeds_proto_rawDescGZIP(), []int{1} +} + +func (x *Entry) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Entry) GetDomain() string { + if x != nil { + return x.Domain + } + return "" +} + +func (x *Entry) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Entry) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Entry) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *Entry) GetDate() int64 { + if x != nil { + return x.Date + } + return 0 +} + +type NewRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // rss feed name + // eg. a16z + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // rss feed url + // eg. http://a16z.com/feed/ + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` +} + +func (x *NewRequest) Reset() { + *x = NewRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_feeds_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NewRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewRequest) ProtoMessage() {} + +func (x *NewRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_feeds_proto_msgTypes[2] + 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 NewRequest.ProtoReflect.Descriptor instead. +func (*NewRequest) Descriptor() ([]byte, []int) { + return file_proto_feeds_proto_rawDescGZIP(), []int{2} +} + +func (x *NewRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NewRequest) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +type NewResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *NewResponse) Reset() { + *x = NewResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_feeds_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NewResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewResponse) ProtoMessage() {} + +func (x *NewResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_feeds_proto_msgTypes[3] + 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 NewResponse.ProtoReflect.Descriptor instead. +func (*NewResponse) Descriptor() ([]byte, []int) { + return file_proto_feeds_proto_rawDescGZIP(), []int{3} +} + +type EntriesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // rss feed url + // eg. http://a16z.com/feed/ + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` +} + +func (x *EntriesRequest) Reset() { + *x = EntriesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_feeds_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntriesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntriesRequest) ProtoMessage() {} + +func (x *EntriesRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_feeds_proto_msgTypes[4] + 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 EntriesRequest.ProtoReflect.Descriptor instead. +func (*EntriesRequest) Descriptor() ([]byte, []int) { + return file_proto_feeds_proto_rawDescGZIP(), []int{4} +} + +func (x *EntriesRequest) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +type EntriesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Entries []*Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` +} + +func (x *EntriesResponse) Reset() { + *x = EntriesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_feeds_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntriesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntriesResponse) ProtoMessage() {} + +func (x *EntriesResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_feeds_proto_msgTypes[5] + 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 EntriesResponse.ProtoReflect.Descriptor instead. +func (*EntriesResponse) Descriptor() ([]byte, []int) { + return file_proto_feeds_proto_rawDescGZIP(), []int{5} +} + +func (x *EntriesResponse) GetEntries() []*Entry { + if x != nil { + return x.Entries + } + return nil +} + +var File_proto_feeds_proto protoreflect.FileDescriptor + +var file_proto_feeds_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x66, 0x65, 0x65, 0x64, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x66, 0x65, 0x65, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x04, 0x46, 0x65, + 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x85, 0x01, 0x0a, 0x05, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, + 0x22, 0x32, 0x0a, 0x0a, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x22, 0x0d, 0x0a, 0x0b, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x22, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x39, 0x0a, 0x0f, 0x45, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x07, 0x65, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x65, + 0x65, 0x64, 0x73, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x32, 0x73, 0x0a, 0x05, 0x46, 0x65, 0x65, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x03, 0x4e, + 0x65, 0x77, 0x12, 0x11, 0x2e, 0x66, 0x65, 0x65, 0x64, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x66, 0x65, 0x65, 0x64, 0x73, 0x2e, 0x4e, 0x65, + 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x07, 0x45, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x15, 0x2e, 0x66, 0x65, 0x65, 0x64, 0x73, 0x2e, 0x45, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x66, 0x65, 0x65, 0x64, 0x73, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0d, 0x5a, 0x0b, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x3b, 0x66, 0x65, 0x65, 0x64, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_proto_feeds_proto_rawDescOnce sync.Once + file_proto_feeds_proto_rawDescData = file_proto_feeds_proto_rawDesc +) + +func file_proto_feeds_proto_rawDescGZIP() []byte { + file_proto_feeds_proto_rawDescOnce.Do(func() { + file_proto_feeds_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_feeds_proto_rawDescData) + }) + return file_proto_feeds_proto_rawDescData +} + +var file_proto_feeds_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_proto_feeds_proto_goTypes = []interface{}{ + (*Feed)(nil), // 0: feeds.Feed + (*Entry)(nil), // 1: feeds.Entry + (*NewRequest)(nil), // 2: feeds.NewRequest + (*NewResponse)(nil), // 3: feeds.NewResponse + (*EntriesRequest)(nil), // 4: feeds.EntriesRequest + (*EntriesResponse)(nil), // 5: feeds.EntriesResponse +} +var file_proto_feeds_proto_depIdxs = []int32{ + 1, // 0: feeds.EntriesResponse.entries:type_name -> feeds.Entry + 2, // 1: feeds.Feeds.New:input_type -> feeds.NewRequest + 4, // 2: feeds.Feeds.Entries:input_type -> feeds.EntriesRequest + 3, // 3: feeds.Feeds.New:output_type -> feeds.NewResponse + 5, // 4: feeds.Feeds.Entries:output_type -> feeds.EntriesResponse + 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_proto_feeds_proto_init() } +func file_proto_feeds_proto_init() { + if File_proto_feeds_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_feeds_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Feed); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_feeds_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_feeds_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NewRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_feeds_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NewResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_feeds_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntriesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_feeds_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntriesResponse); 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_proto_feeds_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_feeds_proto_goTypes, + DependencyIndexes: file_proto_feeds_proto_depIdxs, + MessageInfos: file_proto_feeds_proto_msgTypes, + }.Build() + File_proto_feeds_proto = out.File + file_proto_feeds_proto_rawDesc = nil + file_proto_feeds_proto_goTypes = nil + file_proto_feeds_proto_depIdxs = nil +} diff --git a/blog/feeds/proto/feeds.pb.micro.go b/feeds/proto/feeds.pb.micro.go similarity index 100% rename from blog/feeds/proto/feeds.pb.micro.go rename to feeds/proto/feeds.pb.micro.go diff --git a/blog/feeds/proto/feeds.proto b/feeds/proto/feeds.proto similarity index 78% rename from blog/feeds/proto/feeds.proto rename to feeds/proto/feeds.proto index 6e06415..14321f1 100644 --- a/blog/feeds/proto/feeds.proto +++ b/feeds/proto/feeds.proto @@ -11,8 +11,10 @@ service Feeds { message Feed { // rss feed name + // eg. a16z string name = 1; // rss feed url + // eg. http://a16z.com/feed/ string url = 2; } @@ -26,7 +28,11 @@ message Entry { } message NewRequest { + // rss feed name + // eg. a16z string name = 1; + // rss feed url + // eg. http://a16z.com/feed/ string url = 2; } @@ -34,6 +40,8 @@ message NewResponse { } message EntriesRequest { + // rss feed url + // eg. http://a16z.com/feed/ string url = 1; } diff --git a/geocoding/Makefile b/geocoding/Makefile index d14da10..8c1c83c 100644 --- a/geocoding/Makefile +++ b/geocoding/Makefile @@ -7,8 +7,13 @@ init: go get github.com/micro/micro/v3/cmd/protoc-gen-micro .PHONY: proto proto: - protoc --proto_path=. --micro_out=. --go_out=:. proto/geocoding.proto - + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/geocoding.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/geocoding.proto + @redoc-cli bundle api-protobuf.json + .PHONY: build build: go build -o geocoding *.go diff --git a/geocoding/README.md b/geocoding/README.md index a1a548d..7abde71 100644 --- a/geocoding/README.md +++ b/geocoding/README.md @@ -1,3 +1,5 @@ -# Geocoding Service - The geocoding service provides address to lat lng geocoding as well as the reverse. + +# Geocoding service + +Examples coming soon. Check the [proto](https://github.com/micro/services/blob/master/geocoding/proto/geocoding.proto) for more details. \ No newline at end of file diff --git a/geocoding/proto/geocoding.pb.go b/geocoding/proto/geocoding.pb.go index 611d134..b33beb2 100644 --- a/geocoding/proto/geocoding.pb.go +++ b/geocoding/proto/geocoding.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.23.0 -// protoc v3.13.0 +// protoc-gen-go v1.25.0 +// protoc v3.6.1 // source: proto/geocoding.proto package geocoding @@ -211,8 +211,9 @@ var file_proto_geocoding_proto_rawDesc = []byte{ 0x12, 0x37, 0x0a, 0x07, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x65, 0x6f, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x12, 0x2e, 0x67, 0x65, 0x6f, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x00, 0x42, 0x11, 0x5a, 0x0f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x3b, 0x67, 0x65, 0x6f, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/geocoding/proto/geocoding.proto b/geocoding/proto/geocoding.proto index 6f10ece..ebab954 100644 --- a/geocoding/proto/geocoding.proto +++ b/geocoding/proto/geocoding.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package geocoding; +option go_package = "proto;geocoding"; import "google/protobuf/wrappers.proto"; diff --git a/go.mod b/go.mod index 28249c9..b33e9b0 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/micro/dev v0.0.0-20201117163752-d3cfc9788dfa github.com/micro/micro/v3 v3.0.5-0.20201219085254-c8ea24387d19 github.com/miekg/dns v1.1.31 // indirect + github.com/stoewer/go-strcase v1.2.0 // indirect github.com/stretchr/testify v1.6.1 github.com/ulikunitz/xz v0.5.8 // indirect golang.org/x/crypto v0.0.0-20201002094018-c90954cbb977 diff --git a/go.sum b/go.sum index 30d1501..90103f6 100644 --- a/go.sum +++ b/go.sum @@ -112,7 +112,9 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/getkin/kin-openapi v0.26.0 h1:xKIW5Z5wAfutxGBH+rr9qu0Ywfb/E1bPWkYLKRYfEuU= github.com/getkin/kin-openapi v0.26.0/go.mod h1:WGRs2ZMM1Q8LR1QBEwUxC6RJEfaBcD0s+pcEVXFuAjw= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-acme/lego/v3 v3.4.0/go.mod h1:xYbLDuxq3Hy4bMUT1t9JIuz6GWIWb3m5X+TeTHYaT7M= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= @@ -429,6 +431,8 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= diff --git a/helloworld/Makefile b/helloworld/Makefile index 88ef0e7..e2847e6 100644 --- a/helloworld/Makefile +++ b/helloworld/Makefile @@ -4,7 +4,12 @@ GOPATH:=$(shell go env GOPATH) .PHONY: proto proto: - protoc --proto_path=${GOPATH}/src:. --micro_out=. --go_out=. proto/helloworld/helloworld.proto + protoc --openapi_out=. --proto_path=${GOPATH}/src:. --micro_out=. --go_out=. proto/helloworld/helloworld.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=${GOPATH}/src:. --micro_out=. --go_out=. proto/helloworld/helloworld.proto + @redoc-cli bundle api-protobuf.json .PHONY: build build: proto diff --git a/helloworld/proto/helloworld.proto b/helloworld/proto/helloworld.proto index c868bf8..44c2aae 100644 --- a/helloworld/proto/helloworld.proto +++ b/helloworld/proto/helloworld.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package helloworld; +option go_package = "proto;helloworld"; service Helloworld { rpc Call(Request) returns (Response) {} diff --git a/helloworld/skip b/helloworld/skip new file mode 100644 index 0000000..e69de29 diff --git a/location/Makefile b/location/Makefile index dd68854..7fe0372 100644 --- a/location/Makefile +++ b/location/Makefile @@ -7,8 +7,13 @@ init: go get github.com/micro/micro/v3/cmd/protoc-gen-micro .PHONY: proto proto: - protoc --proto_path=. --micro_out=. --go_out=:. proto/location.proto - + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/location.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/location.proto + @redoc-cli bundle api-location.json + .PHONY: build build: go build -o location *.go diff --git a/location/proto/location.pb.go b/location/proto/location.pb.go index ffbe67f..8ae7b23 100644 --- a/location/proto/location.pb.go +++ b/location/proto/location.pb.go @@ -1,421 +1,674 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 // source: proto/location.proto +// The location service stores GPS points for tracking purposes +// and provides endpoints to query those points. + package location import ( - fmt "fmt" proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +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) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 +// A point is a GPS coordinate. type Point struct { - Latitude float64 `protobuf:"fixed64,1,opt,name=latitude,proto3" json:"latitude,omitempty"` - Longitude float64 `protobuf:"fixed64,2,opt,name=longitude,proto3" json:"longitude,omitempty"` - Timestamp int64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Latitude float64 `protobuf:"fixed64,1,opt,name=latitude,proto3" json:"latitude,omitempty"` + Longitude float64 `protobuf:"fixed64,2,opt,name=longitude,proto3" json:"longitude,omitempty"` + Timestamp int64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } -func (m *Point) Reset() { *m = Point{} } -func (m *Point) String() string { return proto.CompactTextString(m) } -func (*Point) ProtoMessage() {} +func (x *Point) Reset() { + *x = Point{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_location_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Point) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Point) ProtoMessage() {} + +func (x *Point) ProtoReflect() protoreflect.Message { + mi := &file_proto_location_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 Point.ProtoReflect.Descriptor instead. func (*Point) Descriptor() ([]byte, []int) { - return fileDescriptor_1d9f8c6d814f264b, []int{0} + return file_proto_location_proto_rawDescGZIP(), []int{0} } -func (m *Point) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Point.Unmarshal(m, b) -} -func (m *Point) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Point.Marshal(b, m, deterministic) -} -func (m *Point) XXX_Merge(src proto.Message) { - xxx_messageInfo_Point.Merge(m, src) -} -func (m *Point) XXX_Size() int { - return xxx_messageInfo_Point.Size(m) -} -func (m *Point) XXX_DiscardUnknown() { - xxx_messageInfo_Point.DiscardUnknown(m) -} - -var xxx_messageInfo_Point proto.InternalMessageInfo - -func (m *Point) GetLatitude() float64 { - if m != nil { - return m.Latitude +func (x *Point) GetLatitude() float64 { + if x != nil { + return x.Latitude } return 0 } -func (m *Point) GetLongitude() float64 { - if m != nil { - return m.Longitude +func (x *Point) GetLongitude() float64 { + if x != nil { + return x.Longitude } return 0 } -func (m *Point) GetTimestamp() int64 { - if m != nil { - return m.Timestamp +func (x *Point) GetTimestamp() int64 { + if x != nil { + return x.Timestamp } return 0 } type Entity struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Location *Point `protobuf:"bytes,3,opt,name=location,proto3" json:"location,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Location *Point `protobuf:"bytes,3,opt,name=location,proto3" json:"location,omitempty"` } -func (m *Entity) Reset() { *m = Entity{} } -func (m *Entity) String() string { return proto.CompactTextString(m) } -func (*Entity) ProtoMessage() {} +func (x *Entity) Reset() { + *x = Entity{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_location_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Entity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Entity) ProtoMessage() {} + +func (x *Entity) ProtoReflect() protoreflect.Message { + mi := &file_proto_location_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 Entity.ProtoReflect.Descriptor instead. func (*Entity) Descriptor() ([]byte, []int) { - return fileDescriptor_1d9f8c6d814f264b, []int{1} + return file_proto_location_proto_rawDescGZIP(), []int{1} } -func (m *Entity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Entity.Unmarshal(m, b) -} -func (m *Entity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Entity.Marshal(b, m, deterministic) -} -func (m *Entity) XXX_Merge(src proto.Message) { - xxx_messageInfo_Entity.Merge(m, src) -} -func (m *Entity) XXX_Size() int { - return xxx_messageInfo_Entity.Size(m) -} -func (m *Entity) XXX_DiscardUnknown() { - xxx_messageInfo_Entity.DiscardUnknown(m) -} - -var xxx_messageInfo_Entity proto.InternalMessageInfo - -func (m *Entity) GetId() string { - if m != nil { - return m.Id +func (x *Entity) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Entity) GetType() string { - if m != nil { - return m.Type +func (x *Entity) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *Entity) GetLocation() *Point { - if m != nil { - return m.Location +func (x *Entity) GetLocation() *Point { + if x != nil { + return x.Location } return nil } type ReadRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *ReadRequest) Reset() { *m = ReadRequest{} } -func (m *ReadRequest) String() string { return proto.CompactTextString(m) } -func (*ReadRequest) ProtoMessage() {} +func (x *ReadRequest) Reset() { + *x = ReadRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_location_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReadRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadRequest) ProtoMessage() {} + +func (x *ReadRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_location_proto_msgTypes[2] + 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 ReadRequest.ProtoReflect.Descriptor instead. func (*ReadRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1d9f8c6d814f264b, []int{2} + return file_proto_location_proto_rawDescGZIP(), []int{2} } -func (m *ReadRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ReadRequest.Unmarshal(m, b) -} -func (m *ReadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ReadRequest.Marshal(b, m, deterministic) -} -func (m *ReadRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ReadRequest.Merge(m, src) -} -func (m *ReadRequest) XXX_Size() int { - return xxx_messageInfo_ReadRequest.Size(m) -} -func (m *ReadRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ReadRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ReadRequest proto.InternalMessageInfo - -func (m *ReadRequest) GetId() string { - if m != nil { - return m.Id +func (x *ReadRequest) GetId() string { + if x != nil { + return x.Id } return "" } type ReadResponse struct { - Entity *Entity `protobuf:"bytes,1,opt,name=entity,proto3" json:"entity,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Entity *Entity `protobuf:"bytes,1,opt,name=entity,proto3" json:"entity,omitempty"` } -func (m *ReadResponse) Reset() { *m = ReadResponse{} } -func (m *ReadResponse) String() string { return proto.CompactTextString(m) } -func (*ReadResponse) ProtoMessage() {} +func (x *ReadResponse) Reset() { + *x = ReadResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_location_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReadResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadResponse) ProtoMessage() {} + +func (x *ReadResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_location_proto_msgTypes[3] + 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 ReadResponse.ProtoReflect.Descriptor instead. func (*ReadResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1d9f8c6d814f264b, []int{3} + return file_proto_location_proto_rawDescGZIP(), []int{3} } -func (m *ReadResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ReadResponse.Unmarshal(m, b) -} -func (m *ReadResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ReadResponse.Marshal(b, m, deterministic) -} -func (m *ReadResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ReadResponse.Merge(m, src) -} -func (m *ReadResponse) XXX_Size() int { - return xxx_messageInfo_ReadResponse.Size(m) -} -func (m *ReadResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ReadResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ReadResponse proto.InternalMessageInfo - -func (m *ReadResponse) GetEntity() *Entity { - if m != nil { - return m.Entity +func (x *ReadResponse) GetEntity() *Entity { + if x != nil { + return x.Entity } return nil } type SaveRequest struct { - Entity *Entity `protobuf:"bytes,1,opt,name=entity,proto3" json:"entity,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Entity *Entity `protobuf:"bytes,1,opt,name=entity,proto3" json:"entity,omitempty"` } -func (m *SaveRequest) Reset() { *m = SaveRequest{} } -func (m *SaveRequest) String() string { return proto.CompactTextString(m) } -func (*SaveRequest) ProtoMessage() {} +func (x *SaveRequest) Reset() { + *x = SaveRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_location_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveRequest) ProtoMessage() {} + +func (x *SaveRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_location_proto_msgTypes[4] + 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 SaveRequest.ProtoReflect.Descriptor instead. func (*SaveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1d9f8c6d814f264b, []int{4} + return file_proto_location_proto_rawDescGZIP(), []int{4} } -func (m *SaveRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SaveRequest.Unmarshal(m, b) -} -func (m *SaveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SaveRequest.Marshal(b, m, deterministic) -} -func (m *SaveRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SaveRequest.Merge(m, src) -} -func (m *SaveRequest) XXX_Size() int { - return xxx_messageInfo_SaveRequest.Size(m) -} -func (m *SaveRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SaveRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SaveRequest proto.InternalMessageInfo - -func (m *SaveRequest) GetEntity() *Entity { - if m != nil { - return m.Entity +func (x *SaveRequest) GetEntity() *Entity { + if x != nil { + return x.Entity } return nil } type SaveResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *SaveResponse) Reset() { *m = SaveResponse{} } -func (m *SaveResponse) String() string { return proto.CompactTextString(m) } -func (*SaveResponse) ProtoMessage() {} +func (x *SaveResponse) Reset() { + *x = SaveResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_location_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveResponse) ProtoMessage() {} + +func (x *SaveResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_location_proto_msgTypes[5] + 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 SaveResponse.ProtoReflect.Descriptor instead. func (*SaveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1d9f8c6d814f264b, []int{5} + return file_proto_location_proto_rawDescGZIP(), []int{5} } -func (m *SaveResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SaveResponse.Unmarshal(m, b) -} -func (m *SaveResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SaveResponse.Marshal(b, m, deterministic) -} -func (m *SaveResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SaveResponse.Merge(m, src) -} -func (m *SaveResponse) XXX_Size() int { - return xxx_messageInfo_SaveResponse.Size(m) -} -func (m *SaveResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SaveResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_SaveResponse proto.InternalMessageInfo - type SearchRequest struct { - Center *Point `protobuf:"bytes,1,opt,name=center,proto3" json:"center,omitempty"` - Radius float64 `protobuf:"fixed64,2,opt,name=radius,proto3" json:"radius,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - NumEntities int64 `protobuf:"varint,4,opt,name=numEntities,proto3" json:"numEntities,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Center *Point `protobuf:"bytes,1,opt,name=center,proto3" json:"center,omitempty"` + // in meters + Radius float64 `protobuf:"fixed64,2,opt,name=radius,proto3" json:"radius,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + NumEntities int64 `protobuf:"varint,4,opt,name=numEntities,proto3" json:"numEntities,omitempty"` } -func (m *SearchRequest) Reset() { *m = SearchRequest{} } -func (m *SearchRequest) String() string { return proto.CompactTextString(m) } -func (*SearchRequest) ProtoMessage() {} +func (x *SearchRequest) Reset() { + *x = SearchRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_location_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchRequest) ProtoMessage() {} + +func (x *SearchRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_location_proto_msgTypes[6] + 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 SearchRequest.ProtoReflect.Descriptor instead. func (*SearchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1d9f8c6d814f264b, []int{6} + return file_proto_location_proto_rawDescGZIP(), []int{6} } -func (m *SearchRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchRequest.Unmarshal(m, b) -} -func (m *SearchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchRequest.Marshal(b, m, deterministic) -} -func (m *SearchRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchRequest.Merge(m, src) -} -func (m *SearchRequest) XXX_Size() int { - return xxx_messageInfo_SearchRequest.Size(m) -} -func (m *SearchRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SearchRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SearchRequest proto.InternalMessageInfo - -func (m *SearchRequest) GetCenter() *Point { - if m != nil { - return m.Center +func (x *SearchRequest) GetCenter() *Point { + if x != nil { + return x.Center } return nil } -func (m *SearchRequest) GetRadius() float64 { - if m != nil { - return m.Radius +func (x *SearchRequest) GetRadius() float64 { + if x != nil { + return x.Radius } return 0 } -func (m *SearchRequest) GetType() string { - if m != nil { - return m.Type +func (x *SearchRequest) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *SearchRequest) GetNumEntities() int64 { - if m != nil { - return m.NumEntities +func (x *SearchRequest) GetNumEntities() int64 { + if x != nil { + return x.NumEntities } return 0 } type SearchResponse struct { - Entities []*Entity `protobuf:"bytes,1,rep,name=entities,proto3" json:"entities,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Entities []*Entity `protobuf:"bytes,1,rep,name=entities,proto3" json:"entities,omitempty"` } -func (m *SearchResponse) Reset() { *m = SearchResponse{} } -func (m *SearchResponse) String() string { return proto.CompactTextString(m) } -func (*SearchResponse) ProtoMessage() {} +func (x *SearchResponse) Reset() { + *x = SearchResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_location_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchResponse) ProtoMessage() {} + +func (x *SearchResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_location_proto_msgTypes[7] + 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 SearchResponse.ProtoReflect.Descriptor instead. func (*SearchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1d9f8c6d814f264b, []int{7} + return file_proto_location_proto_rawDescGZIP(), []int{7} } -func (m *SearchResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchResponse.Unmarshal(m, b) -} -func (m *SearchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchResponse.Marshal(b, m, deterministic) -} -func (m *SearchResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchResponse.Merge(m, src) -} -func (m *SearchResponse) XXX_Size() int { - return xxx_messageInfo_SearchResponse.Size(m) -} -func (m *SearchResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SearchResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_SearchResponse proto.InternalMessageInfo - -func (m *SearchResponse) GetEntities() []*Entity { - if m != nil { - return m.Entities +func (x *SearchResponse) GetEntities() []*Entity { + if x != nil { + return x.Entities } return nil } -func init() { - proto.RegisterType((*Point)(nil), "location.Point") - proto.RegisterType((*Entity)(nil), "location.Entity") - proto.RegisterType((*ReadRequest)(nil), "location.ReadRequest") - proto.RegisterType((*ReadResponse)(nil), "location.ReadResponse") - proto.RegisterType((*SaveRequest)(nil), "location.SaveRequest") - proto.RegisterType((*SaveResponse)(nil), "location.SaveResponse") - proto.RegisterType((*SearchRequest)(nil), "location.SearchRequest") - proto.RegisterType((*SearchResponse)(nil), "location.SearchResponse") +var File_proto_location_proto protoreflect.FileDescriptor + +var file_proto_location_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x5f, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, + 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, + 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, + 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x22, 0x59, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x2b, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1d, 0x0a, 0x0b, + 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x0c, 0x52, + 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x06, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x37, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x0e, + 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x86, + 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x27, 0x0a, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x64, + 0x69, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x3e, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x32, 0xbb, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x15, 0x2e, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, + 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x37, 0x0a, + 0x04, 0x53, 0x61, 0x76, 0x65, 0x12, 0x15, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x12, 0x17, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x10, 0x5a, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { proto.RegisterFile("proto/location.proto", fileDescriptor_1d9f8c6d814f264b) } +var ( + file_proto_location_proto_rawDescOnce sync.Once + file_proto_location_proto_rawDescData = file_proto_location_proto_rawDesc +) -var fileDescriptor_1d9f8c6d814f264b = []byte{ - // 366 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xb1, 0x4e, 0xf3, 0x30, - 0x14, 0x85, 0xeb, 0xa6, 0x7f, 0x94, 0xde, 0xf4, 0x2f, 0xc8, 0x82, 0x12, 0x55, 0x20, 0x45, 0x59, - 0xa8, 0x04, 0x2a, 0x52, 0x19, 0xca, 0x02, 0x1b, 0x1b, 0x03, 0x72, 0x27, 0x26, 0x64, 0x1a, 0x0b, - 0x2c, 0x35, 0x76, 0x48, 0x1c, 0xa4, 0xbe, 0x00, 0x2f, 0xc5, 0xcb, 0xa1, 0xd8, 0x4e, 0x62, 0x5a, - 0x06, 0xb6, 0xde, 0x7b, 0x7c, 0x4e, 0x8f, 0x3f, 0x07, 0x8e, 0xf2, 0x42, 0x2a, 0x79, 0xb5, 0x91, - 0x6b, 0xaa, 0xb8, 0x14, 0x73, 0x3d, 0xe2, 0xa0, 0x99, 0x93, 0x67, 0xf8, 0xf7, 0x28, 0xb9, 0x50, - 0x78, 0x0a, 0xc1, 0x86, 0x2a, 0xae, 0xaa, 0x94, 0x45, 0x28, 0x46, 0x33, 0x44, 0xda, 0x19, 0x9f, - 0xc2, 0x70, 0x23, 0xc5, 0xab, 0x11, 0xfb, 0x5a, 0xec, 0x16, 0xb5, 0xaa, 0x78, 0xc6, 0x4a, 0x45, - 0xb3, 0x3c, 0xf2, 0x62, 0x34, 0xf3, 0x48, 0xb7, 0x48, 0x9e, 0xc0, 0xbf, 0x17, 0x8a, 0xab, 0x2d, - 0x1e, 0x43, 0x9f, 0xa7, 0x3a, 0x7b, 0x48, 0xfa, 0x3c, 0xc5, 0x18, 0x06, 0x6a, 0x9b, 0x9b, 0xc0, - 0x21, 0xd1, 0xbf, 0xf1, 0x05, 0xb4, 0xd5, 0x74, 0x54, 0xb8, 0x38, 0x98, 0xb7, 0xdd, 0x75, 0x51, - 0xd2, 0x75, 0x3f, 0x83, 0x90, 0x30, 0x9a, 0x12, 0xf6, 0x5e, 0xb1, 0x52, 0xed, 0xe6, 0x27, 0x37, - 0x30, 0x32, 0x72, 0x99, 0x4b, 0x51, 0x32, 0x3c, 0x03, 0x9f, 0xe9, 0x26, 0xfa, 0x4c, 0xb8, 0x38, - 0xec, 0x92, 0x4d, 0x43, 0x62, 0xf5, 0x64, 0x09, 0xe1, 0x8a, 0x7e, 0xb0, 0x26, 0xf8, 0xef, 0xc6, - 0x31, 0x8c, 0x8c, 0xd1, 0xfc, 0x65, 0xf2, 0x89, 0xe0, 0xff, 0x8a, 0xd1, 0x62, 0xfd, 0xd6, 0x64, - 0x9d, 0x83, 0xbf, 0x66, 0x42, 0xb1, 0xc2, 0x66, 0xed, 0x5d, 0xcf, 0xca, 0x78, 0x02, 0x7e, 0x41, - 0x53, 0x5e, 0x95, 0x16, 0xb8, 0x9d, 0x5a, 0x6a, 0x9e, 0x43, 0x2d, 0x86, 0x50, 0x54, 0x99, 0xee, - 0xc2, 0x59, 0x19, 0x0d, 0xf4, 0x1b, 0xb8, 0xab, 0xe4, 0x0e, 0xc6, 0x4d, 0x0f, 0x4b, 0xe3, 0x12, - 0x02, 0xd6, 0x18, 0x50, 0xec, 0xfd, 0x7a, 0xad, 0xf6, 0xc4, 0xe2, 0x0b, 0x41, 0xf0, 0x60, 0x55, - 0xbc, 0x84, 0x41, 0x0d, 0x16, 0x1f, 0x77, 0x06, 0xe7, 0x1d, 0xa6, 0x93, 0xdd, 0xb5, 0x85, 0xd1, - 0xab, 0x8d, 0x35, 0x1e, 0xd7, 0xe8, 0x70, 0x76, 0x8d, 0x3f, 0x28, 0xf6, 0xf0, 0x2d, 0xf8, 0xa6, - 0x3e, 0x3e, 0x71, 0xce, 0xb8, 0x60, 0xa7, 0xd1, 0xbe, 0xd0, 0xd8, 0x5f, 0x7c, 0xfd, 0xd5, 0x5f, - 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x84, 0x35, 0x27, 0xbf, 0x0d, 0x03, 0x00, 0x00, +func file_proto_location_proto_rawDescGZIP() []byte { + file_proto_location_proto_rawDescOnce.Do(func() { + file_proto_location_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_location_proto_rawDescData) + }) + return file_proto_location_proto_rawDescData +} + +var file_proto_location_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_proto_location_proto_goTypes = []interface{}{ + (*Point)(nil), // 0: location.Point + (*Entity)(nil), // 1: location.Entity + (*ReadRequest)(nil), // 2: location.ReadRequest + (*ReadResponse)(nil), // 3: location.ReadResponse + (*SaveRequest)(nil), // 4: location.SaveRequest + (*SaveResponse)(nil), // 5: location.SaveResponse + (*SearchRequest)(nil), // 6: location.SearchRequest + (*SearchResponse)(nil), // 7: location.SearchResponse +} +var file_proto_location_proto_depIdxs = []int32{ + 0, // 0: location.Entity.location:type_name -> location.Point + 1, // 1: location.ReadResponse.entity:type_name -> location.Entity + 1, // 2: location.SaveRequest.entity:type_name -> location.Entity + 0, // 3: location.SearchRequest.center:type_name -> location.Point + 1, // 4: location.SearchResponse.entities:type_name -> location.Entity + 2, // 5: location.Location.Read:input_type -> location.ReadRequest + 4, // 6: location.Location.Save:input_type -> location.SaveRequest + 6, // 7: location.Location.Search:input_type -> location.SearchRequest + 3, // 8: location.Location.Read:output_type -> location.ReadResponse + 5, // 9: location.Location.Save:output_type -> location.SaveResponse + 7, // 10: location.Location.Search:output_type -> location.SearchResponse + 8, // [8:11] is the sub-list for method output_type + 5, // [5:8] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_proto_location_proto_init() } +func file_proto_location_proto_init() { + if File_proto_location_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_location_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Point); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_location_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Entity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_location_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReadRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_location_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReadResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_location_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_location_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_location_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_location_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchResponse); 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_proto_location_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_location_proto_goTypes, + DependencyIndexes: file_proto_location_proto_depIdxs, + MessageInfos: file_proto_location_proto_msgTypes, + }.Build() + File_proto_location_proto = out.File + file_proto_location_proto_rawDesc = nil + file_proto_location_proto_goTypes = nil + file_proto_location_proto_depIdxs = nil } diff --git a/location/proto/location.pb.micro.go b/location/proto/location.pb.micro.go index 06efedd..97460c9 100644 --- a/location/proto/location.pb.micro.go +++ b/location/proto/location.pb.micro.go @@ -1,6 +1,9 @@ // Code generated by protoc-gen-micro. DO NOT EDIT. // source: proto/location.proto +// The location service stores GPS points for tracking purposes +// and provides endpoints to query those points. + package location import ( @@ -42,7 +45,9 @@ func NewLocationEndpoints() []*api.Endpoint { // Client API for Location service type LocationService interface { + // Read locations Read(ctx context.Context, in *ReadRequest, opts ...client.CallOption) (*ReadResponse, error) + // Save locations Save(ctx context.Context, in *SaveRequest, opts ...client.CallOption) (*SaveResponse, error) Search(ctx context.Context, in *SearchRequest, opts ...client.CallOption) (*SearchResponse, error) } @@ -92,7 +97,9 @@ func (c *locationService) Search(ctx context.Context, in *SearchRequest, opts .. // Server API for Location service type LocationHandler interface { + // Read locations Read(context.Context, *ReadRequest, *ReadResponse) error + // Save locations Save(context.Context, *SaveRequest, *SaveResponse) error Search(context.Context, *SearchRequest, *SearchResponse) error } diff --git a/location/proto/location.proto b/location/proto/location.proto index 392aa0b..c67d6b8 100644 --- a/location/proto/location.proto +++ b/location/proto/location.proto @@ -1,14 +1,20 @@ syntax = "proto3"; +option go_package = "proto;location"; + +// The location service stores GPS points for tracking purposes +// and provides endpoints to query those points. package location; service Location { + // Read locations rpc Read(ReadRequest) returns (ReadResponse) {} + // Save locations rpc Save(SaveRequest) returns (SaveResponse) {} rpc Search(SearchRequest) returns (SearchResponse) {} } - +// A point is a GPS coordinate. message Point { double latitude = 1; double longitude = 2; @@ -38,7 +44,8 @@ message SaveResponse { message SearchRequest { Point center = 1; - double radius = 2; // in meters + // in meters + double radius = 2; string type = 3; int64 numEntities = 4; } diff --git a/messages/README.md b/messages/README.md index e7af699..dcb9a16 100644 --- a/messages/README.md +++ b/messages/README.md @@ -1,11 +1,19 @@ +The messages service is a simplified service for sending messages, much like email. + # Messages Service -The messages service is a simplified service for sending messages, much like email. You can send a message using the CLI: +## Send a message + +### CLI + ```bash > micro messages send --to=John --from=Barry --subject=HelloWorld --text="Hello John" ``` -And then list the messages a user has recieved: +## List the messages a user has received + +### CLI + ```bash > micro messages list --user=John { @@ -22,7 +30,10 @@ And then list the messages a user has recieved: } ``` -Or lookup an individual email by ID: +## Lookup an individual email by ID + +### CLI + ```bash > micro messages read --id=78efd836-ca51-4163-af43-65985f7c6587 { diff --git a/messages/proto/messages.proto b/messages/proto/messages.proto index af85161..9fadac7 100644 --- a/messages/proto/messages.proto +++ b/messages/proto/messages.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package messages; -option go_package = "github.com/micro/services/messages/proto;messages"; +option go_package = "proto;messages"; service Messages { rpc Send(SendRequest) returns (SendResponse); diff --git a/messages/skip b/messages/skip new file mode 100644 index 0000000..e69de29 diff --git a/notes/README.md b/notes/README.md index 3fd8cc3..1fa74ee 100644 --- a/notes/README.md +++ b/notes/README.md @@ -1,8 +1,8 @@ +Notes service is an RPC service which offers CRUD for notes. It demonstrates usage of the store, errors and logger pacakges. + # Notes Service -Notes service is an RPC service which offers CRUD for notes. It demonstrates usage of the store, errors and logger pacakges. Example usage: - -Create a note +## Create a note ```bash micro notes create --title="HelloWorld" --text="MyFirstNote" @@ -11,14 +11,14 @@ micro notes create --title="HelloWorld" --text="MyFirstNote" } ``` -Update a note +## Update a note ```bash micro notes update --id=6d3fa5c0-6e79-4418-a72a-c1650efb65d2 --title="HelloWorld" --text="MyFirstNote (v2)" {} ``` -List notes +## List notes ```bash micro notes list @@ -34,7 +34,7 @@ micro notes list } ``` -Delete a note +## Delete a note ```bash micro notes delete --id=6d3fa5c0-6e79-4418-a72a-c1650efb65d2 diff --git a/notes/proto/notes.proto b/notes/proto/notes.proto index 3ff8281..e2d9267 100644 --- a/notes/proto/notes.proto +++ b/notes/proto/notes.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package notes; -option go_package = "github.com/micro/services/notes/proto;notes"; +option go_package = "proto;notes"; service Notes { rpc List(ListRequest) returns (ListResponse); diff --git a/notes/skip b/notes/skip new file mode 100644 index 0000000..e69de29 diff --git a/places/Makefile b/places/Makefile index bb937c3..2074419 100644 --- a/places/Makefile +++ b/places/Makefile @@ -7,8 +7,13 @@ init: .PHONY: proto proto: - protoc --proto_path=. --micro_out=. --go_out=:. proto/places.proto - + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/places.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/places.proto + @redoc-cli bundle api-protobuf.json + .PHONY: build build: go build -o places *.go diff --git a/places/README.md b/places/README.md index b79076a..8b5541f 100644 --- a/places/README.md +++ b/places/README.md @@ -1,6 +1,6 @@ -# Places Service +The places service stores places of interest by geolocation. -The places service stores places of interest by geolocation +# Places Service Generated with diff --git a/places/proto/places.pb.go b/places/proto/places.pb.go index 7c50a01..bf9234e 100644 --- a/places/proto/places.pb.go +++ b/places/proto/places.pb.go @@ -1,407 +1,662 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 // source: proto/places.proto package places import ( - fmt "fmt" proto "github.com/golang/protobuf/proto" timestamp "github.com/golang/protobuf/ptypes/timestamp" wrappers "github.com/golang/protobuf/ptypes/wrappers" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +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) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 type Location struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Timestamp *timestamp.Timestamp `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Latitude *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=latitude,proto3" json:"latitude,omitempty"` - Longitude *wrappers.DoubleValue `protobuf:"bytes,6,opt,name=longitude,proto3" json:"longitude,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Timestamp *timestamp.Timestamp `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Latitude *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=latitude,proto3" json:"latitude,omitempty"` + Longitude *wrappers.DoubleValue `protobuf:"bytes,6,opt,name=longitude,proto3" json:"longitude,omitempty"` } -func (m *Location) Reset() { *m = Location{} } -func (m *Location) String() string { return proto.CompactTextString(m) } -func (*Location) ProtoMessage() {} +func (x *Location) Reset() { + *x = Location{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_places_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Location) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Location) ProtoMessage() {} + +func (x *Location) ProtoReflect() protoreflect.Message { + mi := &file_proto_places_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 Location.ProtoReflect.Descriptor instead. func (*Location) Descriptor() ([]byte, []int) { - return fileDescriptor_3b635ff9d2e2d652, []int{0} + return file_proto_places_proto_rawDescGZIP(), []int{0} } -func (m *Location) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Location.Unmarshal(m, b) -} -func (m *Location) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Location.Marshal(b, m, deterministic) -} -func (m *Location) XXX_Merge(src proto.Message) { - xxx_messageInfo_Location.Merge(m, src) -} -func (m *Location) XXX_Size() int { - return xxx_messageInfo_Location.Size(m) -} -func (m *Location) XXX_DiscardUnknown() { - xxx_messageInfo_Location.DiscardUnknown(m) -} - -var xxx_messageInfo_Location proto.InternalMessageInfo - -func (m *Location) GetId() string { - if m != nil { - return m.Id +func (x *Location) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Location) GetName() string { - if m != nil { - return m.Name +func (x *Location) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *Location) GetMetadata() map[string]string { - if m != nil { - return m.Metadata +func (x *Location) GetMetadata() map[string]string { + if x != nil { + return x.Metadata } return nil } -func (m *Location) GetTimestamp() *timestamp.Timestamp { - if m != nil { - return m.Timestamp +func (x *Location) GetTimestamp() *timestamp.Timestamp { + if x != nil { + return x.Timestamp } return nil } -func (m *Location) GetLatitude() *wrappers.DoubleValue { - if m != nil { - return m.Latitude +func (x *Location) GetLatitude() *wrappers.DoubleValue { + if x != nil { + return x.Latitude } return nil } -func (m *Location) GetLongitude() *wrappers.DoubleValue { - if m != nil { - return m.Longitude +func (x *Location) GetLongitude() *wrappers.DoubleValue { + if x != nil { + return x.Longitude } return nil } type SaveRequest struct { - Places []*Location `protobuf:"bytes,1,rep,name=places,proto3" json:"places,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Places []*Location `protobuf:"bytes,1,rep,name=places,proto3" json:"places,omitempty"` } -func (m *SaveRequest) Reset() { *m = SaveRequest{} } -func (m *SaveRequest) String() string { return proto.CompactTextString(m) } -func (*SaveRequest) ProtoMessage() {} +func (x *SaveRequest) Reset() { + *x = SaveRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_places_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveRequest) ProtoMessage() {} + +func (x *SaveRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_places_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 SaveRequest.ProtoReflect.Descriptor instead. func (*SaveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3b635ff9d2e2d652, []int{1} + return file_proto_places_proto_rawDescGZIP(), []int{1} } -func (m *SaveRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SaveRequest.Unmarshal(m, b) -} -func (m *SaveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SaveRequest.Marshal(b, m, deterministic) -} -func (m *SaveRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SaveRequest.Merge(m, src) -} -func (m *SaveRequest) XXX_Size() int { - return xxx_messageInfo_SaveRequest.Size(m) -} -func (m *SaveRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SaveRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SaveRequest proto.InternalMessageInfo - -func (m *SaveRequest) GetPlaces() []*Location { - if m != nil { - return m.Places +func (x *SaveRequest) GetPlaces() []*Location { + if x != nil { + return x.Places } return nil } type SaveResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *SaveResponse) Reset() { *m = SaveResponse{} } -func (m *SaveResponse) String() string { return proto.CompactTextString(m) } -func (*SaveResponse) ProtoMessage() {} +func (x *SaveResponse) Reset() { + *x = SaveResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_places_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveResponse) ProtoMessage() {} + +func (x *SaveResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_places_proto_msgTypes[2] + 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 SaveResponse.ProtoReflect.Descriptor instead. func (*SaveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_3b635ff9d2e2d652, []int{2} + return file_proto_places_proto_rawDescGZIP(), []int{2} } -func (m *SaveResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SaveResponse.Unmarshal(m, b) -} -func (m *SaveResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SaveResponse.Marshal(b, m, deterministic) -} -func (m *SaveResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SaveResponse.Merge(m, src) -} -func (m *SaveResponse) XXX_Size() int { - return xxx_messageInfo_SaveResponse.Size(m) -} -func (m *SaveResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SaveResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_SaveResponse proto.InternalMessageInfo - type LastRequest struct { - Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` } -func (m *LastRequest) Reset() { *m = LastRequest{} } -func (m *LastRequest) String() string { return proto.CompactTextString(m) } -func (*LastRequest) ProtoMessage() {} +func (x *LastRequest) Reset() { + *x = LastRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_places_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LastRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LastRequest) ProtoMessage() {} + +func (x *LastRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_places_proto_msgTypes[3] + 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 LastRequest.ProtoReflect.Descriptor instead. func (*LastRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3b635ff9d2e2d652, []int{3} + return file_proto_places_proto_rawDescGZIP(), []int{3} } -func (m *LastRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LastRequest.Unmarshal(m, b) -} -func (m *LastRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LastRequest.Marshal(b, m, deterministic) -} -func (m *LastRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LastRequest.Merge(m, src) -} -func (m *LastRequest) XXX_Size() int { - return xxx_messageInfo_LastRequest.Size(m) -} -func (m *LastRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LastRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_LastRequest proto.InternalMessageInfo - -func (m *LastRequest) GetIds() []string { - if m != nil { - return m.Ids +func (x *LastRequest) GetIds() []string { + if x != nil { + return x.Ids } return nil } type ListResponse struct { - Places []*Location `protobuf:"bytes,1,rep,name=places,proto3" json:"places,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Places []*Location `protobuf:"bytes,1,rep,name=places,proto3" json:"places,omitempty"` } -func (m *ListResponse) Reset() { *m = ListResponse{} } -func (m *ListResponse) String() string { return proto.CompactTextString(m) } -func (*ListResponse) ProtoMessage() {} +func (x *ListResponse) Reset() { + *x = ListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_places_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListResponse) ProtoMessage() {} + +func (x *ListResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_places_proto_msgTypes[4] + 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 ListResponse.ProtoReflect.Descriptor instead. func (*ListResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_3b635ff9d2e2d652, []int{4} + return file_proto_places_proto_rawDescGZIP(), []int{4} } -func (m *ListResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListResponse.Unmarshal(m, b) -} -func (m *ListResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListResponse.Marshal(b, m, deterministic) -} -func (m *ListResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListResponse.Merge(m, src) -} -func (m *ListResponse) XXX_Size() int { - return xxx_messageInfo_ListResponse.Size(m) -} -func (m *ListResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListResponse proto.InternalMessageInfo - -func (m *ListResponse) GetPlaces() []*Location { - if m != nil { - return m.Places +func (x *ListResponse) GetPlaces() []*Location { + if x != nil { + return x.Places } return nil } type NearRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Latitude *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=latitude,proto3" json:"latitude,omitempty"` Longitude *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=longitude,proto3" json:"longitude,omitempty"` // radius to search within, units km - Radius *wrappers.DoubleValue `protobuf:"bytes,3,opt,name=radius,proto3" json:"radius,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Radius *wrappers.DoubleValue `protobuf:"bytes,3,opt,name=radius,proto3" json:"radius,omitempty"` } -func (m *NearRequest) Reset() { *m = NearRequest{} } -func (m *NearRequest) String() string { return proto.CompactTextString(m) } -func (*NearRequest) ProtoMessage() {} +func (x *NearRequest) Reset() { + *x = NearRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_places_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NearRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NearRequest) ProtoMessage() {} + +func (x *NearRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_places_proto_msgTypes[5] + 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 NearRequest.ProtoReflect.Descriptor instead. func (*NearRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3b635ff9d2e2d652, []int{5} + return file_proto_places_proto_rawDescGZIP(), []int{5} } -func (m *NearRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NearRequest.Unmarshal(m, b) -} -func (m *NearRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NearRequest.Marshal(b, m, deterministic) -} -func (m *NearRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NearRequest.Merge(m, src) -} -func (m *NearRequest) XXX_Size() int { - return xxx_messageInfo_NearRequest.Size(m) -} -func (m *NearRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NearRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NearRequest proto.InternalMessageInfo - -func (m *NearRequest) GetLatitude() *wrappers.DoubleValue { - if m != nil { - return m.Latitude +func (x *NearRequest) GetLatitude() *wrappers.DoubleValue { + if x != nil { + return x.Latitude } return nil } -func (m *NearRequest) GetLongitude() *wrappers.DoubleValue { - if m != nil { - return m.Longitude +func (x *NearRequest) GetLongitude() *wrappers.DoubleValue { + if x != nil { + return x.Longitude } return nil } -func (m *NearRequest) GetRadius() *wrappers.DoubleValue { - if m != nil { - return m.Radius +func (x *NearRequest) GetRadius() *wrappers.DoubleValue { + if x != nil { + return x.Radius } return nil } type ReadRequest struct { - Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` - After *timestamp.Timestamp `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"` - Before *timestamp.Timestamp `protobuf:"bytes,3,opt,name=before,proto3" json:"before,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` + After *timestamp.Timestamp `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"` + Before *timestamp.Timestamp `protobuf:"bytes,3,opt,name=before,proto3" json:"before,omitempty"` } -func (m *ReadRequest) Reset() { *m = ReadRequest{} } -func (m *ReadRequest) String() string { return proto.CompactTextString(m) } -func (*ReadRequest) ProtoMessage() {} +func (x *ReadRequest) Reset() { + *x = ReadRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_places_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReadRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadRequest) ProtoMessage() {} + +func (x *ReadRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_places_proto_msgTypes[6] + 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 ReadRequest.ProtoReflect.Descriptor instead. func (*ReadRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3b635ff9d2e2d652, []int{6} + return file_proto_places_proto_rawDescGZIP(), []int{6} } -func (m *ReadRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ReadRequest.Unmarshal(m, b) -} -func (m *ReadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ReadRequest.Marshal(b, m, deterministic) -} -func (m *ReadRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ReadRequest.Merge(m, src) -} -func (m *ReadRequest) XXX_Size() int { - return xxx_messageInfo_ReadRequest.Size(m) -} -func (m *ReadRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ReadRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ReadRequest proto.InternalMessageInfo - -func (m *ReadRequest) GetIds() []string { - if m != nil { - return m.Ids +func (x *ReadRequest) GetIds() []string { + if x != nil { + return x.Ids } return nil } -func (m *ReadRequest) GetAfter() *timestamp.Timestamp { - if m != nil { - return m.After +func (x *ReadRequest) GetAfter() *timestamp.Timestamp { + if x != nil { + return x.After } return nil } -func (m *ReadRequest) GetBefore() *timestamp.Timestamp { - if m != nil { - return m.Before +func (x *ReadRequest) GetBefore() *timestamp.Timestamp { + if x != nil { + return x.Before } return nil } -func init() { - proto.RegisterType((*Location)(nil), "places.Location") - proto.RegisterMapType((map[string]string)(nil), "places.Location.MetadataEntry") - proto.RegisterType((*SaveRequest)(nil), "places.SaveRequest") - proto.RegisterType((*SaveResponse)(nil), "places.SaveResponse") - proto.RegisterType((*LastRequest)(nil), "places.LastRequest") - proto.RegisterType((*ListResponse)(nil), "places.ListResponse") - proto.RegisterType((*NearRequest)(nil), "places.NearRequest") - proto.RegisterType((*ReadRequest)(nil), "places.ReadRequest") +var File_proto_places_proto protoreflect.FileDescriptor + +var file_proto_places_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x1a, 0x1f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd7, 0x02, + 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x3a, + 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x22, 0x37, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x2e, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, + 0x22, 0x0e, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1f, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, + 0x73, 0x22, 0x38, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x28, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x22, 0xb9, 0x01, 0x0a, 0x0b, + 0x4e, 0x65, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x6c, + 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x61, 0x74, + 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x62, + 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x32, + 0xdc, 0x01, 0x0a, 0x06, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x53, 0x61, + 0x76, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x61, 0x76, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, + 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x33, 0x0a, 0x04, 0x4c, 0x61, 0x73, 0x74, 0x12, 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, + 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x04, 0x4e, 0x65, 0x61, 0x72, 0x12, 0x13, 0x2e, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x04, 0x52, 0x65, 0x61, + 0x64, 0x12, 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { proto.RegisterFile("proto/places.proto", fileDescriptor_3b635ff9d2e2d652) } +var ( + file_proto_places_proto_rawDescOnce sync.Once + file_proto_places_proto_rawDescData = file_proto_places_proto_rawDesc +) -var fileDescriptor_3b635ff9d2e2d652 = []byte{ - // 460 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0xcd, 0x6e, 0xd3, 0x40, - 0x14, 0x85, 0x19, 0x3b, 0xb1, 0x92, 0xeb, 0x52, 0x45, 0x97, 0x2e, 0x2c, 0x0b, 0xb5, 0x91, 0x57, - 0x59, 0x39, 0x28, 0x45, 0x22, 0x0a, 0x5b, 0xd8, 0x05, 0x84, 0x0c, 0x62, 0x3f, 0xa9, 0x6f, 0x22, - 0x0b, 0xc7, 0x63, 0xec, 0x71, 0x51, 0x1f, 0x80, 0x87, 0xe2, 0x49, 0xd8, 0xf0, 0x30, 0x68, 0x7e, - 0x1c, 0xbb, 0x45, 0x8d, 0x1a, 0x76, 0x33, 0xe3, 0xf3, 0x5d, 0x9f, 0x39, 0x67, 0x00, 0xcb, 0x4a, - 0x48, 0x31, 0x2f, 0x73, 0x7e, 0x43, 0x75, 0xac, 0x37, 0xe8, 0x99, 0x5d, 0x78, 0xb5, 0x13, 0x62, - 0x97, 0xd3, 0x5c, 0x9f, 0x6e, 0x9a, 0xed, 0x5c, 0x66, 0x7b, 0xaa, 0x25, 0xdf, 0x97, 0x46, 0x18, - 0x5e, 0x3e, 0x14, 0xfc, 0xa8, 0x78, 0x59, 0x52, 0x65, 0x07, 0x45, 0xbf, 0x1d, 0x18, 0xad, 0xc5, - 0x0d, 0x97, 0x99, 0x28, 0xf0, 0x1c, 0x9c, 0x2c, 0x0d, 0xd8, 0x94, 0xcd, 0xc6, 0x89, 0x93, 0xa5, - 0x88, 0x30, 0x28, 0xf8, 0x9e, 0x02, 0x47, 0x9f, 0xe8, 0x35, 0xae, 0x60, 0xb4, 0x27, 0xc9, 0x53, - 0x2e, 0x79, 0xe0, 0x4e, 0xdd, 0x99, 0xbf, 0xb8, 0x8c, 0xad, 0xb5, 0x76, 0x4e, 0xfc, 0xc1, 0x0a, - 0xde, 0x17, 0xb2, 0xba, 0x4b, 0x0e, 0x7a, 0x5c, 0xc2, 0xf8, 0xe0, 0x2f, 0x18, 0x4c, 0xd9, 0xcc, - 0x5f, 0x84, 0xb1, 0x31, 0x18, 0xb7, 0x06, 0xe3, 0x2f, 0xad, 0x22, 0xe9, 0xc4, 0xb8, 0x84, 0x51, - 0xce, 0x65, 0x26, 0x9b, 0x94, 0x82, 0xa1, 0x06, 0x5f, 0xfe, 0x03, 0xbe, 0x13, 0xcd, 0x26, 0xa7, - 0xaf, 0x3c, 0x6f, 0x28, 0x39, 0xa8, 0x71, 0x05, 0xe3, 0x5c, 0x14, 0x3b, 0x83, 0x7a, 0x4f, 0x40, - 0x3b, 0x79, 0xf8, 0x16, 0x9e, 0xdf, 0xbb, 0x0a, 0x4e, 0xc0, 0xfd, 0x46, 0x77, 0x36, 0x21, 0xb5, - 0xc4, 0x0b, 0x18, 0xde, 0x2a, 0xcc, 0x66, 0x64, 0x36, 0x2b, 0x67, 0xc9, 0xa2, 0x37, 0xe0, 0x7f, - 0xe6, 0xb7, 0x94, 0xd0, 0xf7, 0x86, 0x6a, 0x89, 0x33, 0xb0, 0x9d, 0x05, 0x4c, 0xa7, 0x36, 0x79, - 0x98, 0x5a, 0x62, 0xbf, 0x47, 0xe7, 0x70, 0x66, 0xc0, 0xba, 0x14, 0x45, 0x4d, 0xd1, 0x15, 0xf8, - 0x6b, 0x5e, 0xcb, 0x76, 0xd0, 0x04, 0xdc, 0x2c, 0x35, 0x53, 0xc6, 0x89, 0x5a, 0x46, 0x4b, 0x38, - 0x5b, 0x67, 0x4a, 0x60, 0x80, 0x13, 0x7e, 0xf5, 0x8b, 0x81, 0xff, 0x91, 0x78, 0xd5, 0xce, 0xee, - 0xc7, 0xcc, 0xfe, 0x3f, 0x66, 0xe7, 0xa4, 0x98, 0xf1, 0x35, 0x78, 0x15, 0x4f, 0xb3, 0xa6, 0x0e, - 0xdc, 0x27, 0x80, 0x56, 0x1b, 0xfd, 0x64, 0xe0, 0x27, 0xc4, 0xd3, 0x47, 0x73, 0xc1, 0x57, 0x30, - 0xe4, 0x5b, 0x49, 0x95, 0xf5, 0x73, 0xec, 0xa9, 0x19, 0x21, 0x2e, 0xc0, 0xdb, 0xd0, 0x56, 0x54, - 0x64, 0x9d, 0x1c, 0x43, 0xac, 0x72, 0xf1, 0x87, 0x81, 0xf7, 0x49, 0xc7, 0x89, 0xd7, 0x30, 0x50, - 0xcd, 0xe1, 0x8b, 0x36, 0xf0, 0xde, 0x03, 0x08, 0x2f, 0xee, 0x1f, 0xda, 0x72, 0x9f, 0x29, 0x48, - 0xd5, 0xdb, 0x41, 0xbd, 0xb2, 0x3b, 0xa8, 0x5f, 0xb0, 0x81, 0x54, 0x6f, 0x1d, 0xd4, 0x6b, 0xf1, - 0x18, 0xa4, 0x02, 0xeb, 0xa0, 0x5e, 0x7c, 0x8f, 0x41, 0x1b, 0x4f, 0x5f, 0xfd, 0xfa, 0x6f, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x7a, 0x9f, 0xaf, 0x48, 0x86, 0x04, 0x00, 0x00, +func file_proto_places_proto_rawDescGZIP() []byte { + file_proto_places_proto_rawDescOnce.Do(func() { + file_proto_places_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_places_proto_rawDescData) + }) + return file_proto_places_proto_rawDescData +} + +var file_proto_places_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_proto_places_proto_goTypes = []interface{}{ + (*Location)(nil), // 0: places.Location + (*SaveRequest)(nil), // 1: places.SaveRequest + (*SaveResponse)(nil), // 2: places.SaveResponse + (*LastRequest)(nil), // 3: places.LastRequest + (*ListResponse)(nil), // 4: places.ListResponse + (*NearRequest)(nil), // 5: places.NearRequest + (*ReadRequest)(nil), // 6: places.ReadRequest + nil, // 7: places.Location.MetadataEntry + (*timestamp.Timestamp)(nil), // 8: google.protobuf.Timestamp + (*wrappers.DoubleValue)(nil), // 9: google.protobuf.DoubleValue +} +var file_proto_places_proto_depIdxs = []int32{ + 7, // 0: places.Location.metadata:type_name -> places.Location.MetadataEntry + 8, // 1: places.Location.timestamp:type_name -> google.protobuf.Timestamp + 9, // 2: places.Location.latitude:type_name -> google.protobuf.DoubleValue + 9, // 3: places.Location.longitude:type_name -> google.protobuf.DoubleValue + 0, // 4: places.SaveRequest.places:type_name -> places.Location + 0, // 5: places.ListResponse.places:type_name -> places.Location + 9, // 6: places.NearRequest.latitude:type_name -> google.protobuf.DoubleValue + 9, // 7: places.NearRequest.longitude:type_name -> google.protobuf.DoubleValue + 9, // 8: places.NearRequest.radius:type_name -> google.protobuf.DoubleValue + 8, // 9: places.ReadRequest.after:type_name -> google.protobuf.Timestamp + 8, // 10: places.ReadRequest.before:type_name -> google.protobuf.Timestamp + 1, // 11: places.Places.Save:input_type -> places.SaveRequest + 3, // 12: places.Places.Last:input_type -> places.LastRequest + 5, // 13: places.Places.Near:input_type -> places.NearRequest + 6, // 14: places.Places.Read:input_type -> places.ReadRequest + 2, // 15: places.Places.Save:output_type -> places.SaveResponse + 4, // 16: places.Places.Last:output_type -> places.ListResponse + 4, // 17: places.Places.Near:output_type -> places.ListResponse + 4, // 18: places.Places.Read:output_type -> places.ListResponse + 15, // [15:19] is the sub-list for method output_type + 11, // [11:15] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name +} + +func init() { file_proto_places_proto_init() } +func file_proto_places_proto_init() { + if File_proto_places_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_places_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Location); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_places_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_places_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_places_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LastRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_places_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_places_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NearRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_places_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReadRequest); 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_proto_places_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_places_proto_goTypes, + DependencyIndexes: file_proto_places_proto_depIdxs, + MessageInfos: file_proto_places_proto_msgTypes, + }.Build() + File_proto_places_proto = out.File + file_proto_places_proto_rawDesc = nil + file_proto_places_proto_goTypes = nil + file_proto_places_proto_depIdxs = nil } diff --git a/blog/posts/.gitignore b/posts/.gitignore similarity index 100% rename from blog/posts/.gitignore rename to posts/.gitignore diff --git a/blog/posts/Dockerfile b/posts/Dockerfile similarity index 100% rename from blog/posts/Dockerfile rename to posts/Dockerfile diff --git a/blog/posts/Makefile b/posts/Makefile similarity index 55% rename from blog/posts/Makefile rename to posts/Makefile index 9c0ef57..9f4c678 100644 --- a/blog/posts/Makefile +++ b/posts/Makefile @@ -5,8 +5,13 @@ MODIFY=Mgithub.com/micro/micro/proto/api/api.proto=github.com/micro/micro/v3/pro .PHONY: proto proto: - protoc --proto_path=. --micro_out=${MODIFY}:. --go_out=${MODIFY}:. proto/posts.proto + protoc --openapi_out=. --proto_path=. --micro_out=${MODIFY}:. --go_out=${MODIFY}:. proto/posts.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=${MODIFY}:. --go_out=${MODIFY}:. proto/posts.proto + @redoc-cli bundle api-posts.json .PHONY: build build: proto diff --git a/posts/README.md b/posts/README.md new file mode 100644 index 0000000..7aabf57 --- /dev/null +++ b/posts/README.md @@ -0,0 +1,90 @@ +The post service is responsible for storing and querying posts by their slugs or IDs. Posts support tags and metadata, for details see `posts.proto`. + +# Post Service + +## Create a post + +### cURL + +```shell +> curl 'https://api.m3o.com/posts/Save' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{"post":{"id":"1","title":"How to Micro","content":"Simply put, Micro is awesome."}}'; + +> curl 'https://api.m3o.com/chat/Save' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{"post":{"id":"2","title":"Fresh posts are fresh","content":"This post is fresher than the How to Micro one"}}'; +``` + +### CLI + +```shell +micro call posts Posts.Save '{"post":{"id":"1","title":"How to Micro","content":"Simply put, Micro is awesome."}}' + +micro call posts Posts.Save '{"post":{"id":"2","title":"Fresh posts are fresh","content":"This post is fresher than the How to Micro one"}}' +``` + +## Create a post with tags + + +### cURL + +```shell +> curl 'https://api.m3o.com/posts/Save' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{"post":{"id":"3","title":"How to do epic things with Micro","content":"Everything is awesome.","tagNames":["a","b"]}}'; +``` + +### CLI + +```shell +micro call posts Posts.Save '{"post":{"id":"3","title":"How to do epic things with Micro","content":"Everything is awesome.","tagNames":["a","b"]}}' +``` + +## Query posts + +### cURL + +```shell +# Query all +> curl 'https://api.m3o.com/posts/Query' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{}'; + +# Query by slug +> curl 'https://api.m3o.com/posts/Query' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{"slug":"how-to-micro"}'; + +# Limit and offset +> curl 'https://api.m3o.com/posts/Query' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{"offset": 10, "limit": 10}'; +``` + +### CLI + +```shell +micro call posts Posts.Query '{}' +micro call posts Posts.Query '{"slug":"how-to-micro"}' +micro call posts Posts.Query '{"offset": 10, "limit": 10}' +``` + +## Delete posts + +```shell +> curl 'https://api.m3o.com/posts/Delete' \ + -H 'micro-namespace: $yourNamespace' \ + -H 'authorization: Bearer $yourToken' \ + -d '{"id": "3c9ea66c"}'; +``` + +```shell +micro call posts Posts.Delete '{"id": "3c9ea66c"}' +``` diff --git a/blog/posts/generate.go b/posts/generate.go similarity index 100% rename from blog/posts/generate.go rename to posts/generate.go diff --git a/posts/github.com/micro/services/posts/proto/posts.pb.go b/posts/github.com/micro/services/posts/proto/posts.pb.go new file mode 100644 index 0000000..b0cb15c --- /dev/null +++ b/posts/github.com/micro/services/posts/proto/posts.pb.go @@ -0,0 +1,738 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 +// source: proto/posts.proto + +package posts + +import ( + proto "github.com/golang/protobuf/proto" + 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) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Post struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` + Created int64 `protobuf:"varint,5,opt,name=created,proto3" json:"created,omitempty"` + Updated int64 `protobuf:"varint,6,opt,name=updated,proto3" json:"updated,omitempty"` + Author string `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` + Tags []string `protobuf:"bytes,8,rep,name=tags,proto3" json:"tags,omitempty"` + Metadata map[string]string `protobuf:"bytes,9,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Image string `protobuf:"bytes,19,opt,name=image,proto3" json:"image,omitempty"` +} + +func (x *Post) Reset() { + *x = Post{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Post) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Post) ProtoMessage() {} + +func (x *Post) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_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 Post.ProtoReflect.Descriptor instead. +func (*Post) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{0} +} + +func (x *Post) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Post) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Post) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Post) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *Post) GetCreated() int64 { + if x != nil { + return x.Created + } + return 0 +} + +func (x *Post) GetUpdated() int64 { + if x != nil { + return x.Updated + } + return 0 +} + +func (x *Post) GetAuthor() string { + if x != nil { + return x.Author + } + return "" +} + +func (x *Post) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Post) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *Post) GetImage() string { + if x != nil { + return x.Image + } + return "" +} + +// Query posts. Acts as a listing when no id or slug provided. +// Gets a single post by id or slug if any of them provided. +type QueryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` + Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` + Offset int64 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` + Limit int64 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` +} + +func (x *QueryRequest) Reset() { + *x = QueryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryRequest) ProtoMessage() {} + +func (x *QueryRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_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 QueryRequest.ProtoReflect.Descriptor instead. +func (*QueryRequest) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *QueryRequest) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *QueryRequest) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *QueryRequest) GetOffset() int64 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *QueryRequest) GetLimit() int64 { + if x != nil { + return x.Limit + } + return 0 +} + +type QueryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Posts []*Post `protobuf:"bytes,1,rep,name=posts,proto3" json:"posts,omitempty"` +} + +func (x *QueryResponse) Reset() { + *x = QueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryResponse) ProtoMessage() {} + +func (x *QueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_proto_msgTypes[2] + 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 QueryResponse.ProtoReflect.Descriptor instead. +func (*QueryResponse) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{2} +} + +func (x *QueryResponse) GetPosts() []*Post { + if x != nil { + return x.Posts + } + return nil +} + +type SaveRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` + Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // When updating a post and wanting to delete all tags, + // send a list of tags with only one member being an empty string [""] + Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` + Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Image string `protobuf:"bytes,8,opt,name=image,proto3" json:"image,omitempty"` +} + +func (x *SaveRequest) Reset() { + *x = SaveRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveRequest) ProtoMessage() {} + +func (x *SaveRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_proto_msgTypes[3] + 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 SaveRequest.ProtoReflect.Descriptor instead. +func (*SaveRequest) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{3} +} + +func (x *SaveRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SaveRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *SaveRequest) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *SaveRequest) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *SaveRequest) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *SaveRequest) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *SaveRequest) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *SaveRequest) GetImage() string { + if x != nil { + return x.Image + } + return "" +} + +type SaveResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *SaveResponse) Reset() { + *x = SaveResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveResponse) ProtoMessage() {} + +func (x *SaveResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_proto_msgTypes[4] + 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 SaveResponse.ProtoReflect.Descriptor instead. +func (*SaveResponse) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{4} +} + +func (x *SaveResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type DeleteRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *DeleteRequest) Reset() { + *x = DeleteRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteRequest) ProtoMessage() {} + +func (x *DeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_proto_msgTypes[5] + 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 DeleteRequest.ProtoReflect.Descriptor instead. +func (*DeleteRequest) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{5} +} + +func (x *DeleteRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type DeleteResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteResponse) Reset() { + *x = DeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteResponse) ProtoMessage() {} + +func (x *DeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_proto_msgTypes[6] + 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 DeleteResponse.ProtoReflect.Descriptor instead. +func (*DeleteResponse) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{6} +} + +var File_proto_posts_proto protoreflect.FileDescriptor + +var file_proto_posts_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x22, 0xc4, 0x02, 0x0a, 0x04, 0x50, + 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x73, 0x74, + 0x73, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 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, 0x22, 0x72, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x32, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x22, 0xa4, 0x02, 0x0a, 0x0b, 0x53, 0x61, + 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, + 0x6c, 0x75, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, + 0x3c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, + 0x22, 0x1e, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x1f, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x32, 0xa9, 0x01, 0x0a, 0x05, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x34, 0x0a, + 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x13, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x6f, + 0x73, 0x74, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x04, 0x53, 0x61, 0x76, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x6f, + 0x73, 0x74, 0x73, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x13, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x14, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, + 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, + 0x63, 0x72, 0x6f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x70, 0x6f, 0x73, + 0x74, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_proto_posts_proto_rawDescOnce sync.Once + file_proto_posts_proto_rawDescData = file_proto_posts_proto_rawDesc +) + +func file_proto_posts_proto_rawDescGZIP() []byte { + file_proto_posts_proto_rawDescOnce.Do(func() { + file_proto_posts_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_posts_proto_rawDescData) + }) + return file_proto_posts_proto_rawDescData +} + +var file_proto_posts_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_proto_posts_proto_goTypes = []interface{}{ + (*Post)(nil), // 0: posts.Post + (*QueryRequest)(nil), // 1: posts.QueryRequest + (*QueryResponse)(nil), // 2: posts.QueryResponse + (*SaveRequest)(nil), // 3: posts.SaveRequest + (*SaveResponse)(nil), // 4: posts.SaveResponse + (*DeleteRequest)(nil), // 5: posts.DeleteRequest + (*DeleteResponse)(nil), // 6: posts.DeleteResponse + nil, // 7: posts.Post.MetadataEntry + nil, // 8: posts.SaveRequest.MetadataEntry +} +var file_proto_posts_proto_depIdxs = []int32{ + 7, // 0: posts.Post.metadata:type_name -> posts.Post.MetadataEntry + 0, // 1: posts.QueryResponse.posts:type_name -> posts.Post + 8, // 2: posts.SaveRequest.metadata:type_name -> posts.SaveRequest.MetadataEntry + 1, // 3: posts.Posts.Query:input_type -> posts.QueryRequest + 3, // 4: posts.Posts.Save:input_type -> posts.SaveRequest + 5, // 5: posts.Posts.Delete:input_type -> posts.DeleteRequest + 2, // 6: posts.Posts.Query:output_type -> posts.QueryResponse + 4, // 7: posts.Posts.Save:output_type -> posts.SaveResponse + 6, // 8: posts.Posts.Delete:output_type -> posts.DeleteResponse + 6, // [6:9] is the sub-list for method output_type + 3, // [3:6] 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_proto_posts_proto_init() } +func file_proto_posts_proto_init() { + if File_proto_posts_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_posts_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Post); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteResponse); 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_proto_posts_proto_rawDesc, + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_posts_proto_goTypes, + DependencyIndexes: file_proto_posts_proto_depIdxs, + MessageInfos: file_proto_posts_proto_msgTypes, + }.Build() + File_proto_posts_proto = out.File + file_proto_posts_proto_rawDesc = nil + file_proto_posts_proto_goTypes = nil + file_proto_posts_proto_depIdxs = nil +} diff --git a/blog/posts/proto/posts.pb.micro.go b/posts/github.com/micro/services/posts/proto/posts.pb.micro.go similarity index 100% rename from blog/posts/proto/posts.pb.micro.go rename to posts/github.com/micro/services/posts/proto/posts.pb.micro.go diff --git a/blog/posts/handler/posts.go b/posts/handler/posts.go similarity index 98% rename from blog/posts/handler/posts.go rename to posts/handler/posts.go index a1e4386..8ea83ce 100644 --- a/blog/posts/handler/posts.go +++ b/posts/handler/posts.go @@ -11,8 +11,8 @@ import ( "github.com/micro/dev/model" "github.com/gosimple/slug" - proto "github.com/micro/services/blog/posts/proto" - tags "github.com/micro/services/blog/tags/proto" + proto "github.com/micro/services/posts/proto" + tags "github.com/micro/services/tags/proto" ) const ( diff --git a/blog/posts/main.go b/posts/main.go similarity index 79% rename from blog/posts/main.go rename to posts/main.go index 636e9d5..39b3c8f 100644 --- a/blog/posts/main.go +++ b/posts/main.go @@ -3,8 +3,8 @@ package main import ( "github.com/micro/micro/v3/service" "github.com/micro/micro/v3/service/logger" - "github.com/micro/services/blog/posts/handler" - tags "github.com/micro/services/blog/tags/proto" + "github.com/micro/services/posts/handler" + tags "github.com/micro/services/tags/proto" ) func main() { diff --git a/blog/posts/micro.mu b/posts/micro.mu similarity index 100% rename from blog/posts/micro.mu rename to posts/micro.mu diff --git a/posts/proto/posts.pb.go b/posts/proto/posts.pb.go new file mode 100644 index 0000000..779cbf5 --- /dev/null +++ b/posts/proto/posts.pb.go @@ -0,0 +1,736 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 +// source: proto/posts.proto + +package posts + +import ( + proto "github.com/golang/protobuf/proto" + 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) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Post struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` + Created int64 `protobuf:"varint,5,opt,name=created,proto3" json:"created,omitempty"` + Updated int64 `protobuf:"varint,6,opt,name=updated,proto3" json:"updated,omitempty"` + Author string `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` + Tags []string `protobuf:"bytes,8,rep,name=tags,proto3" json:"tags,omitempty"` + Metadata map[string]string `protobuf:"bytes,9,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Image string `protobuf:"bytes,19,opt,name=image,proto3" json:"image,omitempty"` +} + +func (x *Post) Reset() { + *x = Post{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Post) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Post) ProtoMessage() {} + +func (x *Post) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_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 Post.ProtoReflect.Descriptor instead. +func (*Post) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{0} +} + +func (x *Post) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Post) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Post) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Post) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *Post) GetCreated() int64 { + if x != nil { + return x.Created + } + return 0 +} + +func (x *Post) GetUpdated() int64 { + if x != nil { + return x.Updated + } + return 0 +} + +func (x *Post) GetAuthor() string { + if x != nil { + return x.Author + } + return "" +} + +func (x *Post) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Post) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *Post) GetImage() string { + if x != nil { + return x.Image + } + return "" +} + +// Query posts. Acts as a listing when no id or slug provided. +// Gets a single post by id or slug if any of them provided. +type QueryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` + Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` + Offset int64 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` + Limit int64 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` +} + +func (x *QueryRequest) Reset() { + *x = QueryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryRequest) ProtoMessage() {} + +func (x *QueryRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_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 QueryRequest.ProtoReflect.Descriptor instead. +func (*QueryRequest) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *QueryRequest) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *QueryRequest) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *QueryRequest) GetOffset() int64 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *QueryRequest) GetLimit() int64 { + if x != nil { + return x.Limit + } + return 0 +} + +type QueryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Posts []*Post `protobuf:"bytes,1,rep,name=posts,proto3" json:"posts,omitempty"` +} + +func (x *QueryResponse) Reset() { + *x = QueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryResponse) ProtoMessage() {} + +func (x *QueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_proto_msgTypes[2] + 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 QueryResponse.ProtoReflect.Descriptor instead. +func (*QueryResponse) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{2} +} + +func (x *QueryResponse) GetPosts() []*Post { + if x != nil { + return x.Posts + } + return nil +} + +type SaveRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` + Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // When updating a post and wanting to delete all tags, + // send a list of tags with only one member being an empty string [""] + Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` + Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Image string `protobuf:"bytes,8,opt,name=image,proto3" json:"image,omitempty"` +} + +func (x *SaveRequest) Reset() { + *x = SaveRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveRequest) ProtoMessage() {} + +func (x *SaveRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_proto_msgTypes[3] + 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 SaveRequest.ProtoReflect.Descriptor instead. +func (*SaveRequest) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{3} +} + +func (x *SaveRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SaveRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *SaveRequest) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *SaveRequest) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *SaveRequest) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *SaveRequest) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *SaveRequest) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *SaveRequest) GetImage() string { + if x != nil { + return x.Image + } + return "" +} + +type SaveResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *SaveResponse) Reset() { + *x = SaveResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveResponse) ProtoMessage() {} + +func (x *SaveResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_proto_msgTypes[4] + 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 SaveResponse.ProtoReflect.Descriptor instead. +func (*SaveResponse) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{4} +} + +func (x *SaveResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type DeleteRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *DeleteRequest) Reset() { + *x = DeleteRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteRequest) ProtoMessage() {} + +func (x *DeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_proto_msgTypes[5] + 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 DeleteRequest.ProtoReflect.Descriptor instead. +func (*DeleteRequest) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{5} +} + +func (x *DeleteRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type DeleteResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteResponse) Reset() { + *x = DeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_posts_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteResponse) ProtoMessage() {} + +func (x *DeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_posts_proto_msgTypes[6] + 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 DeleteResponse.ProtoReflect.Descriptor instead. +func (*DeleteResponse) Descriptor() ([]byte, []int) { + return file_proto_posts_proto_rawDescGZIP(), []int{6} +} + +var File_proto_posts_proto protoreflect.FileDescriptor + +var file_proto_posts_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x22, 0xc4, 0x02, 0x0a, 0x04, 0x50, + 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x73, 0x74, + 0x73, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 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, 0x22, 0x72, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x32, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x22, 0xa4, 0x02, 0x0a, 0x0b, 0x53, 0x61, + 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, + 0x6c, 0x75, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, + 0x3c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, + 0x22, 0x1e, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x1f, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x32, 0xa9, 0x01, 0x0a, 0x05, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x34, 0x0a, + 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x13, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x6f, + 0x73, 0x74, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x04, 0x53, 0x61, 0x76, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x6f, + 0x73, 0x74, 0x73, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x13, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x14, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, + 0x0d, 0x5a, 0x0b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_proto_posts_proto_rawDescOnce sync.Once + file_proto_posts_proto_rawDescData = file_proto_posts_proto_rawDesc +) + +func file_proto_posts_proto_rawDescGZIP() []byte { + file_proto_posts_proto_rawDescOnce.Do(func() { + file_proto_posts_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_posts_proto_rawDescData) + }) + return file_proto_posts_proto_rawDescData +} + +var file_proto_posts_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_proto_posts_proto_goTypes = []interface{}{ + (*Post)(nil), // 0: posts.Post + (*QueryRequest)(nil), // 1: posts.QueryRequest + (*QueryResponse)(nil), // 2: posts.QueryResponse + (*SaveRequest)(nil), // 3: posts.SaveRequest + (*SaveResponse)(nil), // 4: posts.SaveResponse + (*DeleteRequest)(nil), // 5: posts.DeleteRequest + (*DeleteResponse)(nil), // 6: posts.DeleteResponse + nil, // 7: posts.Post.MetadataEntry + nil, // 8: posts.SaveRequest.MetadataEntry +} +var file_proto_posts_proto_depIdxs = []int32{ + 7, // 0: posts.Post.metadata:type_name -> posts.Post.MetadataEntry + 0, // 1: posts.QueryResponse.posts:type_name -> posts.Post + 8, // 2: posts.SaveRequest.metadata:type_name -> posts.SaveRequest.MetadataEntry + 1, // 3: posts.Posts.Query:input_type -> posts.QueryRequest + 3, // 4: posts.Posts.Save:input_type -> posts.SaveRequest + 5, // 5: posts.Posts.Delete:input_type -> posts.DeleteRequest + 2, // 6: posts.Posts.Query:output_type -> posts.QueryResponse + 4, // 7: posts.Posts.Save:output_type -> posts.SaveResponse + 6, // 8: posts.Posts.Delete:output_type -> posts.DeleteResponse + 6, // [6:9] is the sub-list for method output_type + 3, // [3:6] 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_proto_posts_proto_init() } +func file_proto_posts_proto_init() { + if File_proto_posts_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_posts_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Post); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_posts_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteResponse); 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_proto_posts_proto_rawDesc, + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_posts_proto_goTypes, + DependencyIndexes: file_proto_posts_proto_depIdxs, + MessageInfos: file_proto_posts_proto_msgTypes, + }.Build() + File_proto_posts_proto = out.File + file_proto_posts_proto_rawDesc = nil + file_proto_posts_proto_goTypes = nil + file_proto_posts_proto_depIdxs = nil +} diff --git a/posts/proto/posts.pb.micro.go b/posts/proto/posts.pb.micro.go new file mode 100644 index 0000000..63af18b --- /dev/null +++ b/posts/proto/posts.pb.micro.go @@ -0,0 +1,129 @@ +// Code generated by protoc-gen-micro. DO NOT EDIT. +// source: proto/posts.proto + +package posts + +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) + +import ( + context "context" + api "github.com/micro/micro/v3/service/api" + client "github.com/micro/micro/v3/service/client" + server "github.com/micro/micro/v3/service/server" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package + +// Reference imports to suppress errors if they are not otherwise used. +var _ api.Endpoint +var _ context.Context +var _ client.Option +var _ server.Option + +// Api Endpoints for Posts service + +func NewPostsEndpoints() []*api.Endpoint { + return []*api.Endpoint{} +} + +// Client API for Posts service + +type PostsService interface { + // Query currently only supports read by slug or timestamp, no listing. + Query(ctx context.Context, in *QueryRequest, opts ...client.CallOption) (*QueryResponse, error) + Save(ctx context.Context, in *SaveRequest, opts ...client.CallOption) (*SaveResponse, error) + Delete(ctx context.Context, in *DeleteRequest, opts ...client.CallOption) (*DeleteResponse, error) +} + +type postsService struct { + c client.Client + name string +} + +func NewPostsService(name string, c client.Client) PostsService { + return &postsService{ + c: c, + name: name, + } +} + +func (c *postsService) Query(ctx context.Context, in *QueryRequest, opts ...client.CallOption) (*QueryResponse, error) { + req := c.c.NewRequest(c.name, "Posts.Query", in) + out := new(QueryResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *postsService) Save(ctx context.Context, in *SaveRequest, opts ...client.CallOption) (*SaveResponse, error) { + req := c.c.NewRequest(c.name, "Posts.Save", in) + out := new(SaveResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *postsService) Delete(ctx context.Context, in *DeleteRequest, opts ...client.CallOption) (*DeleteResponse, error) { + req := c.c.NewRequest(c.name, "Posts.Delete", in) + out := new(DeleteResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Posts service + +type PostsHandler interface { + // Query currently only supports read by slug or timestamp, no listing. + Query(context.Context, *QueryRequest, *QueryResponse) error + Save(context.Context, *SaveRequest, *SaveResponse) error + Delete(context.Context, *DeleteRequest, *DeleteResponse) error +} + +func RegisterPostsHandler(s server.Server, hdlr PostsHandler, opts ...server.HandlerOption) error { + type posts interface { + Query(ctx context.Context, in *QueryRequest, out *QueryResponse) error + Save(ctx context.Context, in *SaveRequest, out *SaveResponse) error + Delete(ctx context.Context, in *DeleteRequest, out *DeleteResponse) error + } + type Posts struct { + posts + } + h := &postsHandler{hdlr} + return s.Handle(s.NewHandler(&Posts{h}, opts...)) +} + +type postsHandler struct { + PostsHandler +} + +func (h *postsHandler) Query(ctx context.Context, in *QueryRequest, out *QueryResponse) error { + return h.PostsHandler.Query(ctx, in, out) +} + +func (h *postsHandler) Save(ctx context.Context, in *SaveRequest, out *SaveResponse) error { + return h.PostsHandler.Save(ctx, in, out) +} + +func (h *postsHandler) Delete(ctx context.Context, in *DeleteRequest, out *DeleteResponse) error { + return h.PostsHandler.Delete(ctx, in, out) +} diff --git a/blog/posts/proto/posts.proto b/posts/proto/posts.proto similarity index 97% rename from blog/posts/proto/posts.proto rename to posts/proto/posts.proto index 2ae8122..5fa7412 100644 --- a/blog/posts/proto/posts.proto +++ b/posts/proto/posts.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package posts; +option go_package = "proto;posts"; service Posts { // Query currently only supports read by slug or timestamp, no listing. diff --git a/routing/Makefile b/routing/Makefile index 0e9a33f..462b088 100644 --- a/routing/Makefile +++ b/routing/Makefile @@ -7,8 +7,13 @@ init: go get github.com/micro/micro/v3/cmd/protoc-gen-micro .PHONY: proto proto: - protoc --proto_path=. --micro_out=. --go_out=:. proto/routing.proto - + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/routing.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/routing.proto + @redoc-cli bundle api-protobuf.json + .PHONY: build build: go build -o routing *.go diff --git a/routing/README.md b/routing/README.md index 5890d58..91d46b1 100644 --- a/routing/README.md +++ b/routing/README.md @@ -1,4 +1,5 @@ +The routing service provides point to point directions. + # Routing Service -The routing service provides point to point directions - +Readme coming soon. For more info see the [proto](https://github.com/micro/services/blob/master/routing/proto/routing.proto). diff --git a/routing/proto/routing.pb.go b/routing/proto/routing.pb.go index 501e774..5c3dc59 100644 --- a/routing/proto/routing.pb.go +++ b/routing/proto/routing.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.23.0 -// protoc v3.13.0 +// protoc-gen-go v1.25.0 +// protoc v3.6.1 // source: proto/routing.proto package routing @@ -212,8 +212,9 @@ var file_proto_routing_proto_rawDesc = []byte{ 0x67, 0x12, 0x38, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x15, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0f, 0x5a, 0x0d, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/routing/proto/routing.proto b/routing/proto/routing.proto index fde7762..917aea1 100644 --- a/routing/proto/routing.proto +++ b/routing/proto/routing.proto @@ -1,6 +1,8 @@ syntax = "proto3"; package routing; +option go_package = "proto;routing"; + import "google/protobuf/wrappers.proto"; service Routing { diff --git a/scripts/generate-docs.sh b/scripts/generate-docs.sh new file mode 100644 index 0000000..23ad27c --- /dev/null +++ b/scripts/generate-docs.sh @@ -0,0 +1,27 @@ +mkdir docs +mkdir ./docs/hugo-tania/site/content/post +echo "services.m3o.com" > docs/CNAME +dir=$(pwd) +for d in */; do + cd $dir + echo $d + cd $d + if test -f "./skip"; then + continue + fi + serviceName=${d//\//} + contentFolder=../docs/hugo-tania/site/content/post + timeout 3s make proto || continue + echo "Copying html for $serviceName" + pwd + touch $contentFolder/$serviceName.md + echo -e "---\ntitle: $serviceName\n---\n" > $contentFolder/$serviceName.md + cat README.md >> $contentFolder/$serviceName.md + mkdir -p ../docs/$serviceName/api + cp redoc-static.html ../docs/$serviceName/api/index.html +done +pwd +cd ../docs/hugo-tania/site; hugo -D -d=../../ +cd ../../ +pwd +ls diff --git a/scripts/skip b/scripts/skip new file mode 100644 index 0000000..e69de29 diff --git a/blog/tags/.gitignore b/tags/.gitignore similarity index 100% rename from blog/tags/.gitignore rename to tags/.gitignore diff --git a/blog/tags/Dockerfile b/tags/Dockerfile similarity index 100% rename from blog/tags/Dockerfile rename to tags/Dockerfile diff --git a/blog/tags/Makefile b/tags/Makefile similarity index 55% rename from blog/tags/Makefile rename to tags/Makefile index 17bcbfb..1ba6219 100644 --- a/blog/tags/Makefile +++ b/tags/Makefile @@ -5,8 +5,13 @@ MODIFY=Mgithub.com/micro/micro/proto/api/api.proto=github.com/micro/micro/v3/pro .PHONY: proto proto: - protoc --proto_path=. --micro_out=${MODIFY}:. --go_out=${MODIFY}:. proto/tags.proto + protoc --openapi_out=. --proto_path=. --micro_out=${MODIFY}:. --go_out=${MODIFY}:. proto/tags.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=${MODIFY}:. --go_out=${MODIFY}:. proto/tags.proto + @redoc-cli bundle api-tags.json .PHONY: build build: proto diff --git a/blog/tags/README.md b/tags/README.md similarity index 70% rename from blog/tags/README.md rename to tags/README.md index 0a89de4..1212c2b 100644 --- a/blog/tags/README.md +++ b/tags/README.md @@ -1,6 +1,6 @@ -# Tag Service +Tag any resource by savin a tag associated with their ID in the tag service. -This is the Tag service +# Tag Service ## Query tags @@ -16,9 +16,12 @@ micro new --namespace=go.micro --type=service tag ## Getting Started -- [Configuration](#configuration) -- [Dependencies](#dependencies) -- [Usage](#usage) +- [Tag Service](#tag-service) + - [Query tags](#query-tags) + - [Getting Started](#getting-started) + - [Configuration](#configuration) + - [Dependencies](#dependencies) + - [Usage](#usage) ## Configuration diff --git a/blog/tags/generate.go b/tags/generate.go similarity index 100% rename from blog/tags/generate.go rename to tags/generate.go diff --git a/tags/github.com/micro/services/tags/proto/tags.pb.go b/tags/github.com/micro/services/tags/proto/tags.pb.go new file mode 100644 index 0000000..e89d16a --- /dev/null +++ b/tags/github.com/micro/services/tags/proto/tags.pb.go @@ -0,0 +1,779 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 +// source: proto/tags.proto + +package tags + +import ( + proto "github.com/golang/protobuf/proto" + 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) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Tag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Type is useful for namespacing and listing across resources, + // ie. list tags for posts, customers etc. + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Count int64 `protobuf:"varint,5,opt,name=count,proto3" json:"count,omitempty"` +} + +func (x *Tag) Reset() { + *x = Tag{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[0] + 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_proto_tags_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 Tag.ProtoReflect.Descriptor instead. +func (*Tag) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{0} +} + +func (x *Tag) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Tag) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Tag) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Tag) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Tag) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +type AddRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResourceID string `protobuf:"bytes,1,opt,name=resourceID,proto3" json:"resourceID,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` + ResourceCreated int64 `protobuf:"varint,4,opt,name=resourceCreated,proto3" json:"resourceCreated,omitempty"` +} + +func (x *AddRequest) Reset() { + *x = AddRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddRequest) ProtoMessage() {} + +func (x *AddRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_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 AddRequest.ProtoReflect.Descriptor instead. +func (*AddRequest) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{1} +} + +func (x *AddRequest) GetResourceID() string { + if x != nil { + return x.ResourceID + } + return "" +} + +func (x *AddRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *AddRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *AddRequest) GetResourceCreated() int64 { + if x != nil { + return x.ResourceCreated + } + return 0 +} + +type AddResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AddResponse) Reset() { + *x = AddResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddResponse) ProtoMessage() {} + +func (x *AddResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[2] + 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 AddResponse.ProtoReflect.Descriptor instead. +func (*AddResponse) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{2} +} + +type RemoveRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResourceID string `protobuf:"bytes,1,opt,name=resourceID,proto3" json:"resourceID,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` +} + +func (x *RemoveRequest) Reset() { + *x = RemoveRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveRequest) ProtoMessage() {} + +func (x *RemoveRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[3] + 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 RemoveRequest.ProtoReflect.Descriptor instead. +func (*RemoveRequest) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{3} +} + +func (x *RemoveRequest) GetResourceID() string { + if x != nil { + return x.ResourceID + } + return "" +} + +func (x *RemoveRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *RemoveRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +type RemoveResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RemoveResponse) Reset() { + *x = RemoveResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveResponse) ProtoMessage() {} + +func (x *RemoveResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[4] + 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 RemoveResponse.ProtoReflect.Descriptor instead. +func (*RemoveResponse) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{4} +} + +type UpdateRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` +} + +func (x *UpdateRequest) Reset() { + *x = UpdateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateRequest) ProtoMessage() {} + +func (x *UpdateRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[5] + 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 UpdateRequest.ProtoReflect.Descriptor instead. +func (*UpdateRequest) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{5} +} + +func (x *UpdateRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *UpdateRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *UpdateRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type UpdateResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *UpdateResponse) Reset() { + *x = UpdateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateResponse) ProtoMessage() {} + +func (x *UpdateResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[6] + 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 UpdateResponse.ProtoReflect.Descriptor instead. +func (*UpdateResponse) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{6} +} + +// ListRequest: list either by resource id or type. +// Optionally filter by min or max count. +type ListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResourceID string `protobuf:"bytes,1,opt,name=resourceID,proto3" json:"resourceID,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + MinCount int64 `protobuf:"varint,3,opt,name=minCount,proto3" json:"minCount,omitempty"` + MaxCount int64 `protobuf:"varint,4,opt,name=maxCount,proto3" json:"maxCount,omitempty"` +} + +func (x *ListRequest) Reset() { + *x = ListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRequest) ProtoMessage() {} + +func (x *ListRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[7] + 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 ListRequest.ProtoReflect.Descriptor instead. +func (*ListRequest) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{7} +} + +func (x *ListRequest) GetResourceID() string { + if x != nil { + return x.ResourceID + } + return "" +} + +func (x *ListRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *ListRequest) GetMinCount() int64 { + if x != nil { + return x.MinCount + } + return 0 +} + +func (x *ListRequest) GetMaxCount() int64 { + if x != nil { + return x.MaxCount + } + return 0 +} + +type ListResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tags []*Tag `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"` +} + +func (x *ListResponse) Reset() { + *x = ListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListResponse) ProtoMessage() {} + +func (x *ListResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[8] + 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 ListResponse.ProtoReflect.Descriptor instead. +func (*ListResponse) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{8} +} + +func (x *ListResponse) GetTags() []*Tag { + if x != nil { + return x.Tags + } + return nil +} + +var File_proto_tags_proto protoreflect.FileDescriptor + +var file_proto_tags_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x7b, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x28, + 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x0d, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x44, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2d, + 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, + 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x74, + 0x61, 0x67, 0x73, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x32, 0xd3, 0x01, + 0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x64, 0x64, 0x12, 0x10, 0x2e, + 0x74, 0x61, 0x67, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x11, 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x13, + 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2f, 0x0a, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x06, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x61, + 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x74, 0x61, 0x67, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_proto_tags_proto_rawDescOnce sync.Once + file_proto_tags_proto_rawDescData = file_proto_tags_proto_rawDesc +) + +func file_proto_tags_proto_rawDescGZIP() []byte { + file_proto_tags_proto_rawDescOnce.Do(func() { + file_proto_tags_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_tags_proto_rawDescData) + }) + return file_proto_tags_proto_rawDescData +} + +var file_proto_tags_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_proto_tags_proto_goTypes = []interface{}{ + (*Tag)(nil), // 0: tags.Tag + (*AddRequest)(nil), // 1: tags.AddRequest + (*AddResponse)(nil), // 2: tags.AddResponse + (*RemoveRequest)(nil), // 3: tags.RemoveRequest + (*RemoveResponse)(nil), // 4: tags.RemoveResponse + (*UpdateRequest)(nil), // 5: tags.UpdateRequest + (*UpdateResponse)(nil), // 6: tags.UpdateResponse + (*ListRequest)(nil), // 7: tags.ListRequest + (*ListResponse)(nil), // 8: tags.ListResponse +} +var file_proto_tags_proto_depIdxs = []int32{ + 0, // 0: tags.ListResponse.tags:type_name -> tags.Tag + 1, // 1: tags.Tags.Add:input_type -> tags.AddRequest + 3, // 2: tags.Tags.Remove:input_type -> tags.RemoveRequest + 7, // 3: tags.Tags.List:input_type -> tags.ListRequest + 5, // 4: tags.Tags.Update:input_type -> tags.UpdateRequest + 2, // 5: tags.Tags.Add:output_type -> tags.AddResponse + 4, // 6: tags.Tags.Remove:output_type -> tags.RemoveResponse + 8, // 7: tags.Tags.List:output_type -> tags.ListResponse + 6, // 8: tags.Tags.Update:output_type -> tags.UpdateResponse + 5, // [5:9] is the sub-list for method output_type + 1, // [1:5] 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_proto_tags_proto_init() } +func file_proto_tags_proto_init() { + if File_proto_tags_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_tags_proto_msgTypes[0].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 + } + } + file_proto_tags_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListResponse); 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_proto_tags_proto_rawDesc, + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_tags_proto_goTypes, + DependencyIndexes: file_proto_tags_proto_depIdxs, + MessageInfos: file_proto_tags_proto_msgTypes, + }.Build() + File_proto_tags_proto = out.File + file_proto_tags_proto_rawDesc = nil + file_proto_tags_proto_goTypes = nil + file_proto_tags_proto_depIdxs = nil +} diff --git a/blog/tags/proto/tags.pb.micro.go b/tags/github.com/micro/services/tags/proto/tags.pb.micro.go similarity index 98% rename from blog/tags/proto/tags.pb.micro.go rename to tags/github.com/micro/services/tags/proto/tags.pb.micro.go index c87b47a..029b1ec 100644 --- a/blog/tags/proto/tags.pb.micro.go +++ b/tags/github.com/micro/services/tags/proto/tags.pb.micro.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-micro. DO NOT EDIT. -// source: github.com/micro/services/blog/tags/proto/tags.proto +// source: proto/tags.proto package tags diff --git a/blog/tags/handler/tags.go b/tags/handler/tags.go similarity index 99% rename from blog/tags/handler/tags.go rename to tags/handler/tags.go index 21345ee..e244851 100644 --- a/blog/tags/handler/tags.go +++ b/tags/handler/tags.go @@ -11,7 +11,7 @@ import ( "github.com/micro/micro/v3/service/errors" "github.com/micro/micro/v3/service/logger" "github.com/micro/micro/v3/service/store" - proto "github.com/micro/services/blog/tags/proto" + proto "github.com/micro/services/tags/proto" ) const ( diff --git a/blog/tags/main.go b/tags/main.go similarity index 87% rename from blog/tags/main.go rename to tags/main.go index 43e1221..27d2cfe 100644 --- a/blog/tags/main.go +++ b/tags/main.go @@ -4,7 +4,7 @@ import ( "github.com/micro/micro/v3/service" "github.com/micro/micro/v3/service/logger" - "github.com/micro/services/blog/tags/handler" + "github.com/micro/services/tags/handler" ) func main() { diff --git a/blog/tags/micro.mu b/tags/micro.mu similarity index 100% rename from blog/tags/micro.mu rename to tags/micro.mu diff --git a/tags/proto/tags.pb.go b/tags/proto/tags.pb.go new file mode 100644 index 0000000..ac924e2 --- /dev/null +++ b/tags/proto/tags.pb.go @@ -0,0 +1,777 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 +// source: proto/tags.proto + +package tags + +import ( + proto "github.com/golang/protobuf/proto" + 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) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Tag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Type is useful for namespacing and listing across resources, + // ie. list tags for posts, customers etc. + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Count int64 `protobuf:"varint,5,opt,name=count,proto3" json:"count,omitempty"` +} + +func (x *Tag) Reset() { + *x = Tag{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[0] + 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_proto_tags_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 Tag.ProtoReflect.Descriptor instead. +func (*Tag) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{0} +} + +func (x *Tag) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Tag) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Tag) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Tag) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Tag) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +type AddRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResourceID string `protobuf:"bytes,1,opt,name=resourceID,proto3" json:"resourceID,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` + ResourceCreated int64 `protobuf:"varint,4,opt,name=resourceCreated,proto3" json:"resourceCreated,omitempty"` +} + +func (x *AddRequest) Reset() { + *x = AddRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddRequest) ProtoMessage() {} + +func (x *AddRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_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 AddRequest.ProtoReflect.Descriptor instead. +func (*AddRequest) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{1} +} + +func (x *AddRequest) GetResourceID() string { + if x != nil { + return x.ResourceID + } + return "" +} + +func (x *AddRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *AddRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *AddRequest) GetResourceCreated() int64 { + if x != nil { + return x.ResourceCreated + } + return 0 +} + +type AddResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AddResponse) Reset() { + *x = AddResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddResponse) ProtoMessage() {} + +func (x *AddResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[2] + 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 AddResponse.ProtoReflect.Descriptor instead. +func (*AddResponse) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{2} +} + +type RemoveRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResourceID string `protobuf:"bytes,1,opt,name=resourceID,proto3" json:"resourceID,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` +} + +func (x *RemoveRequest) Reset() { + *x = RemoveRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveRequest) ProtoMessage() {} + +func (x *RemoveRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[3] + 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 RemoveRequest.ProtoReflect.Descriptor instead. +func (*RemoveRequest) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{3} +} + +func (x *RemoveRequest) GetResourceID() string { + if x != nil { + return x.ResourceID + } + return "" +} + +func (x *RemoveRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *RemoveRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +type RemoveResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RemoveResponse) Reset() { + *x = RemoveResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveResponse) ProtoMessage() {} + +func (x *RemoveResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[4] + 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 RemoveResponse.ProtoReflect.Descriptor instead. +func (*RemoveResponse) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{4} +} + +type UpdateRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` +} + +func (x *UpdateRequest) Reset() { + *x = UpdateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateRequest) ProtoMessage() {} + +func (x *UpdateRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[5] + 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 UpdateRequest.ProtoReflect.Descriptor instead. +func (*UpdateRequest) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{5} +} + +func (x *UpdateRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *UpdateRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *UpdateRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type UpdateResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *UpdateResponse) Reset() { + *x = UpdateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateResponse) ProtoMessage() {} + +func (x *UpdateResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[6] + 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 UpdateResponse.ProtoReflect.Descriptor instead. +func (*UpdateResponse) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{6} +} + +// ListRequest: list either by resource id or type. +// Optionally filter by min or max count. +type ListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResourceID string `protobuf:"bytes,1,opt,name=resourceID,proto3" json:"resourceID,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + MinCount int64 `protobuf:"varint,3,opt,name=minCount,proto3" json:"minCount,omitempty"` + MaxCount int64 `protobuf:"varint,4,opt,name=maxCount,proto3" json:"maxCount,omitempty"` +} + +func (x *ListRequest) Reset() { + *x = ListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRequest) ProtoMessage() {} + +func (x *ListRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[7] + 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 ListRequest.ProtoReflect.Descriptor instead. +func (*ListRequest) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{7} +} + +func (x *ListRequest) GetResourceID() string { + if x != nil { + return x.ResourceID + } + return "" +} + +func (x *ListRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *ListRequest) GetMinCount() int64 { + if x != nil { + return x.MinCount + } + return 0 +} + +func (x *ListRequest) GetMaxCount() int64 { + if x != nil { + return x.MaxCount + } + return 0 +} + +type ListResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tags []*Tag `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"` +} + +func (x *ListResponse) Reset() { + *x = ListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_tags_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListResponse) ProtoMessage() {} + +func (x *ListResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_tags_proto_msgTypes[8] + 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 ListResponse.ProtoReflect.Descriptor instead. +func (*ListResponse) Descriptor() ([]byte, []int) { + return file_proto_tags_proto_rawDescGZIP(), []int{8} +} + +func (x *ListResponse) GetTags() []*Tag { + if x != nil { + return x.Tags + } + return nil +} + +var File_proto_tags_proto protoreflect.FileDescriptor + +var file_proto_tags_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x7b, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x28, + 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x0d, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x44, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2d, + 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, + 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x74, + 0x61, 0x67, 0x73, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x32, 0xd3, 0x01, + 0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x64, 0x64, 0x12, 0x10, 0x2e, + 0x74, 0x61, 0x67, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x11, 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x13, + 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2f, 0x0a, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x06, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x61, + 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x0c, 0x5a, 0x0a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x74, 0x61, 0x67, + 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_proto_tags_proto_rawDescOnce sync.Once + file_proto_tags_proto_rawDescData = file_proto_tags_proto_rawDesc +) + +func file_proto_tags_proto_rawDescGZIP() []byte { + file_proto_tags_proto_rawDescOnce.Do(func() { + file_proto_tags_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_tags_proto_rawDescData) + }) + return file_proto_tags_proto_rawDescData +} + +var file_proto_tags_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_proto_tags_proto_goTypes = []interface{}{ + (*Tag)(nil), // 0: tags.Tag + (*AddRequest)(nil), // 1: tags.AddRequest + (*AddResponse)(nil), // 2: tags.AddResponse + (*RemoveRequest)(nil), // 3: tags.RemoveRequest + (*RemoveResponse)(nil), // 4: tags.RemoveResponse + (*UpdateRequest)(nil), // 5: tags.UpdateRequest + (*UpdateResponse)(nil), // 6: tags.UpdateResponse + (*ListRequest)(nil), // 7: tags.ListRequest + (*ListResponse)(nil), // 8: tags.ListResponse +} +var file_proto_tags_proto_depIdxs = []int32{ + 0, // 0: tags.ListResponse.tags:type_name -> tags.Tag + 1, // 1: tags.Tags.Add:input_type -> tags.AddRequest + 3, // 2: tags.Tags.Remove:input_type -> tags.RemoveRequest + 7, // 3: tags.Tags.List:input_type -> tags.ListRequest + 5, // 4: tags.Tags.Update:input_type -> tags.UpdateRequest + 2, // 5: tags.Tags.Add:output_type -> tags.AddResponse + 4, // 6: tags.Tags.Remove:output_type -> tags.RemoveResponse + 8, // 7: tags.Tags.List:output_type -> tags.ListResponse + 6, // 8: tags.Tags.Update:output_type -> tags.UpdateResponse + 5, // [5:9] is the sub-list for method output_type + 1, // [1:5] 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_proto_tags_proto_init() } +func file_proto_tags_proto_init() { + if File_proto_tags_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_tags_proto_msgTypes[0].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 + } + } + file_proto_tags_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_tags_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListResponse); 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_proto_tags_proto_rawDesc, + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_tags_proto_goTypes, + DependencyIndexes: file_proto_tags_proto_depIdxs, + MessageInfos: file_proto_tags_proto_msgTypes, + }.Build() + File_proto_tags_proto = out.File + file_proto_tags_proto_rawDesc = nil + file_proto_tags_proto_goTypes = nil + file_proto_tags_proto_depIdxs = nil +} diff --git a/tags/proto/tags.pb.micro.go b/tags/proto/tags.pb.micro.go new file mode 100644 index 0000000..029b1ec --- /dev/null +++ b/tags/proto/tags.pb.micro.go @@ -0,0 +1,152 @@ +// Code generated by protoc-gen-micro. DO NOT EDIT. +// source: proto/tags.proto + +package tags + +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) + +import ( + context "context" + api "github.com/micro/micro/v3/service/api" + client "github.com/micro/micro/v3/service/client" + server "github.com/micro/micro/v3/service/server" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package + +// Reference imports to suppress errors if they are not otherwise used. +var _ api.Endpoint +var _ context.Context +var _ client.Option +var _ server.Option + +// Api Endpoints for Tags service + +func NewTagsEndpoints() []*api.Endpoint { + return []*api.Endpoint{} +} + +// Client API for Tags service + +type TagsService interface { + // Add a tag to a resource + Add(ctx context.Context, in *AddRequest, opts ...client.CallOption) (*AddResponse, error) + // Remove a tag from a resource + Remove(ctx context.Context, in *RemoveRequest, opts ...client.CallOption) (*RemoveResponse, error) + // List tags by + List(ctx context.Context, in *ListRequest, opts ...client.CallOption) (*ListResponse, error) + // Change properties of a tag, currently only the title and description + Update(ctx context.Context, in *UpdateRequest, opts ...client.CallOption) (*UpdateResponse, error) +} + +type tagsService struct { + c client.Client + name string +} + +func NewTagsService(name string, c client.Client) TagsService { + return &tagsService{ + c: c, + name: name, + } +} + +func (c *tagsService) Add(ctx context.Context, in *AddRequest, opts ...client.CallOption) (*AddResponse, error) { + req := c.c.NewRequest(c.name, "Tags.Add", in) + out := new(AddResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *tagsService) Remove(ctx context.Context, in *RemoveRequest, opts ...client.CallOption) (*RemoveResponse, error) { + req := c.c.NewRequest(c.name, "Tags.Remove", in) + out := new(RemoveResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *tagsService) List(ctx context.Context, in *ListRequest, opts ...client.CallOption) (*ListResponse, error) { + req := c.c.NewRequest(c.name, "Tags.List", in) + out := new(ListResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *tagsService) Update(ctx context.Context, in *UpdateRequest, opts ...client.CallOption) (*UpdateResponse, error) { + req := c.c.NewRequest(c.name, "Tags.Update", in) + out := new(UpdateResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Tags service + +type TagsHandler interface { + // Add a tag to a resource + Add(context.Context, *AddRequest, *AddResponse) error + // Remove a tag from a resource + Remove(context.Context, *RemoveRequest, *RemoveResponse) error + // List tags by + List(context.Context, *ListRequest, *ListResponse) error + // Change properties of a tag, currently only the title and description + Update(context.Context, *UpdateRequest, *UpdateResponse) error +} + +func RegisterTagsHandler(s server.Server, hdlr TagsHandler, opts ...server.HandlerOption) error { + type tags interface { + Add(ctx context.Context, in *AddRequest, out *AddResponse) error + Remove(ctx context.Context, in *RemoveRequest, out *RemoveResponse) error + List(ctx context.Context, in *ListRequest, out *ListResponse) error + Update(ctx context.Context, in *UpdateRequest, out *UpdateResponse) error + } + type Tags struct { + tags + } + h := &tagsHandler{hdlr} + return s.Handle(s.NewHandler(&Tags{h}, opts...)) +} + +type tagsHandler struct { + TagsHandler +} + +func (h *tagsHandler) Add(ctx context.Context, in *AddRequest, out *AddResponse) error { + return h.TagsHandler.Add(ctx, in, out) +} + +func (h *tagsHandler) Remove(ctx context.Context, in *RemoveRequest, out *RemoveResponse) error { + return h.TagsHandler.Remove(ctx, in, out) +} + +func (h *tagsHandler) List(ctx context.Context, in *ListRequest, out *ListResponse) error { + return h.TagsHandler.List(ctx, in, out) +} + +func (h *tagsHandler) Update(ctx context.Context, in *UpdateRequest, out *UpdateResponse) error { + return h.TagsHandler.Update(ctx, in, out) +} diff --git a/blog/tags/proto/tags.proto b/tags/proto/tags.proto similarity index 97% rename from blog/tags/proto/tags.proto rename to tags/proto/tags.proto index d561a4f..cd5061e 100644 --- a/blog/tags/proto/tags.proto +++ b/tags/proto/tags.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package tags; +option go_package = "proto;tags"; service Tags { // Add a tag to a resource diff --git a/test/integration/blog/blog_test.go b/test/integration/blog/blog_test.go index e5a0ec8..79931c9 100644 --- a/test/integration/blog/blog_test.go +++ b/test/integration/blog/blog_test.go @@ -14,7 +14,7 @@ import ( "time" "github.com/micro/micro/v3/test" - p "github.com/micro/services/blog/posts/proto" + p "github.com/micro/services/posts/proto" ) const ( @@ -58,8 +58,8 @@ func setupBlogTests(serv test.Server, t *test.T) { envVar string deflt string }{ - {envVar: "POSTS_SVC", deflt: "../../../blog/posts"}, - {envVar: "TAGS_SVC", deflt: "../../../blog/tags"}, + {envVar: "POSTS_SVC", deflt: "../../../posts"}, + {envVar: "TAGS_SVC", deflt: "../../../tags"}, } for _, v := range services { diff --git a/test/skip b/test/skip new file mode 100644 index 0000000..e69de29 diff --git a/test/template/Makefile b/test/template/Makefile index cf029ef..2781b93 100644 --- a/test/template/Makefile +++ b/test/template/Makefile @@ -2,8 +2,13 @@ GOPATH:=$(shell go env GOPATH) .PHONY: proto proto: - protoc --proto_path=. --micro_out=. --go_out=:. proto/idiomatic.proto - + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/idiomatic.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/idiomatic.proto + @redoc-cli bundle api-protobuf.json + .PHONY: build build: go build -o idiomatic *.go diff --git a/test/template/proto/idiomatic.proto b/test/template/proto/idiomatic.proto index eeca0d9..58ce947 100644 --- a/test/template/proto/idiomatic.proto +++ b/test/template/proto/idiomatic.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package idiomatic; -option go_package = "github.com/micro/services/test/template/proto;idiomatic"; +option go_package = "proto;idiomatic"; service Idiomatic { rpc Call(Request) returns (Response) {} diff --git a/users/Makefile b/users/Makefile index ddbb866..8702253 100644 --- a/users/Makefile +++ b/users/Makefile @@ -7,8 +7,13 @@ init: go get github.com/micro/micro/v3/cmd/protoc-gen-micro .PHONY: proto proto: - protoc --proto_path=. --micro_out=. --go_out=:. proto/users.proto - + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/users.proto + +.PHONY: docs +docs: + protoc --openapi_out=. --proto_path=. --micro_out=. --go_out=:. proto/users.proto + @redoc-cli bundle api-users.json + .PHONY: build build: go build -o users *.go diff --git a/users/README.md b/users/README.md index e687e5b..089881f 100644 --- a/users/README.md +++ b/users/README.md @@ -1,7 +1,7 @@ -# Users Service - A user service for storing accounts and simple auth. +# Users Service + ## Getting started ``` diff --git a/users/proto/users.pb.go b/users/proto/users.pb.go index e709ffa..61a5d4e 100644 --- a/users/proto/users.pb.go +++ b/users/proto/users.pb.go @@ -1,998 +1,1546 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.6.1 // source: proto/users.proto package users import ( - fmt "fmt" proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +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) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 type User struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` - Created int64 `protobuf:"varint,4,opt,name=created,proto3" json:"created,omitempty"` - Updated int64 `protobuf:"varint,5,opt,name=updated,proto3" json:"updated,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // uuid + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` // alphanumeric user or org + Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` + Created int64 `protobuf:"varint,4,opt,name=created,proto3" json:"created,omitempty"` // unix + Updated int64 `protobuf:"varint,5,opt,name=updated,proto3" json:"updated,omitempty"` // unix } -func (m *User) Reset() { *m = User{} } -func (m *User) String() string { return proto.CompactTextString(m) } -func (*User) ProtoMessage() {} +func (x *User) Reset() { + *x = User{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *User) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*User) ProtoMessage() {} + +func (x *User) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_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 User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{0} + return file_proto_users_proto_rawDescGZIP(), []int{0} } -func (m *User) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_User.Unmarshal(m, b) -} -func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_User.Marshal(b, m, deterministic) -} -func (m *User) XXX_Merge(src proto.Message) { - xxx_messageInfo_User.Merge(m, src) -} -func (m *User) XXX_Size() int { - return xxx_messageInfo_User.Size(m) -} -func (m *User) XXX_DiscardUnknown() { - xxx_messageInfo_User.DiscardUnknown(m) -} - -var xxx_messageInfo_User proto.InternalMessageInfo - -func (m *User) GetId() string { - if m != nil { - return m.Id +func (x *User) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *User) GetUsername() string { - if m != nil { - return m.Username +func (x *User) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (m *User) GetEmail() string { - if m != nil { - return m.Email +func (x *User) GetEmail() string { + if x != nil { + return x.Email } return "" } -func (m *User) GetCreated() int64 { - if m != nil { - return m.Created +func (x *User) GetCreated() int64 { + if x != nil { + return x.Created } return 0 } -func (m *User) GetUpdated() int64 { - if m != nil { - return m.Updated +func (x *User) GetUpdated() int64 { + if x != nil { + return x.Updated } return 0 } type Session struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` - Created int64 `protobuf:"varint,4,opt,name=created,proto3" json:"created,omitempty"` - Expires int64 `protobuf:"varint,5,opt,name=expires,proto3" json:"expires,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` + Created int64 `protobuf:"varint,4,opt,name=created,proto3" json:"created,omitempty"` // unix + Expires int64 `protobuf:"varint,5,opt,name=expires,proto3" json:"expires,omitempty"` // unix } -func (m *Session) Reset() { *m = Session{} } -func (m *Session) String() string { return proto.CompactTextString(m) } -func (*Session) ProtoMessage() {} +func (x *Session) Reset() { + *x = Session{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Session) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Session) ProtoMessage() {} + +func (x *Session) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_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 Session.ProtoReflect.Descriptor instead. func (*Session) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{1} + return file_proto_users_proto_rawDescGZIP(), []int{1} } -func (m *Session) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Session.Unmarshal(m, b) -} -func (m *Session) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Session.Marshal(b, m, deterministic) -} -func (m *Session) XXX_Merge(src proto.Message) { - xxx_messageInfo_Session.Merge(m, src) -} -func (m *Session) XXX_Size() int { - return xxx_messageInfo_Session.Size(m) -} -func (m *Session) XXX_DiscardUnknown() { - xxx_messageInfo_Session.DiscardUnknown(m) -} - -var xxx_messageInfo_Session proto.InternalMessageInfo - -func (m *Session) GetId() string { - if m != nil { - return m.Id +func (x *Session) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Session) GetUsername() string { - if m != nil { - return m.Username +func (x *Session) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (m *Session) GetEmail() string { - if m != nil { - return m.Email +func (x *Session) GetEmail() string { + if x != nil { + return x.Email } return "" } -func (m *Session) GetCreated() int64 { - if m != nil { - return m.Created +func (x *Session) GetCreated() int64 { + if x != nil { + return x.Created } return 0 } -func (m *Session) GetExpires() int64 { - if m != nil { - return m.Expires +func (x *Session) GetExpires() int64 { + if x != nil { + return x.Expires } return 0 } type CreateRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` - Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // uuid + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` // alphanumeric user or org + Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` + Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` } -func (m *CreateRequest) Reset() { *m = CreateRequest{} } -func (m *CreateRequest) String() string { return proto.CompactTextString(m) } -func (*CreateRequest) ProtoMessage() {} +func (x *CreateRequest) Reset() { + *x = CreateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateRequest) ProtoMessage() {} + +func (x *CreateRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[2] + 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 CreateRequest.ProtoReflect.Descriptor instead. func (*CreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{2} + return file_proto_users_proto_rawDescGZIP(), []int{2} } -func (m *CreateRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateRequest.Unmarshal(m, b) -} -func (m *CreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateRequest.Marshal(b, m, deterministic) -} -func (m *CreateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateRequest.Merge(m, src) -} -func (m *CreateRequest) XXX_Size() int { - return xxx_messageInfo_CreateRequest.Size(m) -} -func (m *CreateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateRequest proto.InternalMessageInfo - -func (m *CreateRequest) GetId() string { - if m != nil { - return m.Id +func (x *CreateRequest) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *CreateRequest) GetUsername() string { - if m != nil { - return m.Username +func (x *CreateRequest) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (m *CreateRequest) GetEmail() string { - if m != nil { - return m.Email +func (x *CreateRequest) GetEmail() string { + if x != nil { + return x.Email } return "" } -func (m *CreateRequest) GetPassword() string { - if m != nil { - return m.Password +func (x *CreateRequest) GetPassword() string { + if x != nil { + return x.Password } return "" } type CreateResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *CreateResponse) Reset() { *m = CreateResponse{} } -func (m *CreateResponse) String() string { return proto.CompactTextString(m) } -func (*CreateResponse) ProtoMessage() {} +func (x *CreateResponse) Reset() { + *x = CreateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateResponse) ProtoMessage() {} + +func (x *CreateResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[3] + 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 CreateResponse.ProtoReflect.Descriptor instead. func (*CreateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{3} + return file_proto_users_proto_rawDescGZIP(), []int{3} } -func (m *CreateResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateResponse.Unmarshal(m, b) -} -func (m *CreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateResponse.Marshal(b, m, deterministic) -} -func (m *CreateResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateResponse.Merge(m, src) -} -func (m *CreateResponse) XXX_Size() int { - return xxx_messageInfo_CreateResponse.Size(m) -} -func (m *CreateResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CreateResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateResponse proto.InternalMessageInfo - type DeleteRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *DeleteRequest) Reset() { *m = DeleteRequest{} } -func (m *DeleteRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteRequest) ProtoMessage() {} +func (x *DeleteRequest) Reset() { + *x = DeleteRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteRequest) ProtoMessage() {} + +func (x *DeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[4] + 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 DeleteRequest.ProtoReflect.Descriptor instead. func (*DeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{4} + return file_proto_users_proto_rawDescGZIP(), []int{4} } -func (m *DeleteRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteRequest.Unmarshal(m, b) -} -func (m *DeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteRequest.Marshal(b, m, deterministic) -} -func (m *DeleteRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteRequest.Merge(m, src) -} -func (m *DeleteRequest) XXX_Size() int { - return xxx_messageInfo_DeleteRequest.Size(m) -} -func (m *DeleteRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteRequest proto.InternalMessageInfo - -func (m *DeleteRequest) GetId() string { - if m != nil { - return m.Id +func (x *DeleteRequest) GetId() string { + if x != nil { + return x.Id } return "" } type DeleteResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *DeleteResponse) Reset() { *m = DeleteResponse{} } -func (m *DeleteResponse) String() string { return proto.CompactTextString(m) } -func (*DeleteResponse) ProtoMessage() {} +func (x *DeleteResponse) Reset() { + *x = DeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteResponse) ProtoMessage() {} + +func (x *DeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[5] + 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 DeleteResponse.ProtoReflect.Descriptor instead. func (*DeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{5} + return file_proto_users_proto_rawDescGZIP(), []int{5} } -func (m *DeleteResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteResponse.Unmarshal(m, b) -} -func (m *DeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteResponse.Marshal(b, m, deterministic) -} -func (m *DeleteResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteResponse.Merge(m, src) -} -func (m *DeleteResponse) XXX_Size() int { - return xxx_messageInfo_DeleteResponse.Size(m) -} -func (m *DeleteResponse) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteResponse proto.InternalMessageInfo - type ReadRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *ReadRequest) Reset() { *m = ReadRequest{} } -func (m *ReadRequest) String() string { return proto.CompactTextString(m) } -func (*ReadRequest) ProtoMessage() {} +func (x *ReadRequest) Reset() { + *x = ReadRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReadRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadRequest) ProtoMessage() {} + +func (x *ReadRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[6] + 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 ReadRequest.ProtoReflect.Descriptor instead. func (*ReadRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{6} + return file_proto_users_proto_rawDescGZIP(), []int{6} } -func (m *ReadRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ReadRequest.Unmarshal(m, b) -} -func (m *ReadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ReadRequest.Marshal(b, m, deterministic) -} -func (m *ReadRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ReadRequest.Merge(m, src) -} -func (m *ReadRequest) XXX_Size() int { - return xxx_messageInfo_ReadRequest.Size(m) -} -func (m *ReadRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ReadRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ReadRequest proto.InternalMessageInfo - -func (m *ReadRequest) GetId() string { - if m != nil { - return m.Id +func (x *ReadRequest) GetId() string { + if x != nil { + return x.Id } return "" } type ReadResponse struct { - User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` } -func (m *ReadResponse) Reset() { *m = ReadResponse{} } -func (m *ReadResponse) String() string { return proto.CompactTextString(m) } -func (*ReadResponse) ProtoMessage() {} +func (x *ReadResponse) Reset() { + *x = ReadResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReadResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadResponse) ProtoMessage() {} + +func (x *ReadResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[7] + 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 ReadResponse.ProtoReflect.Descriptor instead. func (*ReadResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{7} + return file_proto_users_proto_rawDescGZIP(), []int{7} } -func (m *ReadResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ReadResponse.Unmarshal(m, b) -} -func (m *ReadResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ReadResponse.Marshal(b, m, deterministic) -} -func (m *ReadResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ReadResponse.Merge(m, src) -} -func (m *ReadResponse) XXX_Size() int { - return xxx_messageInfo_ReadResponse.Size(m) -} -func (m *ReadResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ReadResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ReadResponse proto.InternalMessageInfo - -func (m *ReadResponse) GetUser() *User { - if m != nil { - return m.User +func (x *ReadResponse) GetUser() *User { + if x != nil { + return x.User } return nil } type UpdateRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // uuid + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` // alphanumeric user or org + Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` } -func (m *UpdateRequest) Reset() { *m = UpdateRequest{} } -func (m *UpdateRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateRequest) ProtoMessage() {} +func (x *UpdateRequest) Reset() { + *x = UpdateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateRequest) ProtoMessage() {} + +func (x *UpdateRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[8] + 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 UpdateRequest.ProtoReflect.Descriptor instead. func (*UpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{8} + return file_proto_users_proto_rawDescGZIP(), []int{8} } -func (m *UpdateRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateRequest.Unmarshal(m, b) -} -func (m *UpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateRequest.Marshal(b, m, deterministic) -} -func (m *UpdateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateRequest.Merge(m, src) -} -func (m *UpdateRequest) XXX_Size() int { - return xxx_messageInfo_UpdateRequest.Size(m) -} -func (m *UpdateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateRequest proto.InternalMessageInfo - -func (m *UpdateRequest) GetId() string { - if m != nil { - return m.Id +func (x *UpdateRequest) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *UpdateRequest) GetUsername() string { - if m != nil { - return m.Username +func (x *UpdateRequest) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (m *UpdateRequest) GetEmail() string { - if m != nil { - return m.Email +func (x *UpdateRequest) GetEmail() string { + if x != nil { + return x.Email } return "" } type UpdateResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *UpdateResponse) Reset() { *m = UpdateResponse{} } -func (m *UpdateResponse) String() string { return proto.CompactTextString(m) } -func (*UpdateResponse) ProtoMessage() {} +func (x *UpdateResponse) Reset() { + *x = UpdateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateResponse) ProtoMessage() {} + +func (x *UpdateResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[9] + 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 UpdateResponse.ProtoReflect.Descriptor instead. func (*UpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{9} + return file_proto_users_proto_rawDescGZIP(), []int{9} } -func (m *UpdateResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateResponse.Unmarshal(m, b) -} -func (m *UpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateResponse.Marshal(b, m, deterministic) -} -func (m *UpdateResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateResponse.Merge(m, src) -} -func (m *UpdateResponse) XXX_Size() int { - return xxx_messageInfo_UpdateResponse.Size(m) -} -func (m *UpdateResponse) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateResponse proto.InternalMessageInfo - type UpdatePasswordRequest struct { - UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"` - OldPassword string `protobuf:"bytes,2,opt,name=oldPassword,proto3" json:"oldPassword,omitempty"` - NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword,omitempty"` - ConfirmPassword string `protobuf:"bytes,4,opt,name=confirm_password,json=confirmPassword,proto3" json:"confirm_password,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"` + OldPassword string `protobuf:"bytes,2,opt,name=oldPassword,proto3" json:"oldPassword,omitempty"` + NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword,omitempty"` + ConfirmPassword string `protobuf:"bytes,4,opt,name=confirm_password,json=confirmPassword,proto3" json:"confirm_password,omitempty"` } -func (m *UpdatePasswordRequest) Reset() { *m = UpdatePasswordRequest{} } -func (m *UpdatePasswordRequest) String() string { return proto.CompactTextString(m) } -func (*UpdatePasswordRequest) ProtoMessage() {} +func (x *UpdatePasswordRequest) Reset() { + *x = UpdatePasswordRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdatePasswordRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdatePasswordRequest) ProtoMessage() {} + +func (x *UpdatePasswordRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[10] + 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 UpdatePasswordRequest.ProtoReflect.Descriptor instead. func (*UpdatePasswordRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{10} + return file_proto_users_proto_rawDescGZIP(), []int{10} } -func (m *UpdatePasswordRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdatePasswordRequest.Unmarshal(m, b) -} -func (m *UpdatePasswordRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdatePasswordRequest.Marshal(b, m, deterministic) -} -func (m *UpdatePasswordRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdatePasswordRequest.Merge(m, src) -} -func (m *UpdatePasswordRequest) XXX_Size() int { - return xxx_messageInfo_UpdatePasswordRequest.Size(m) -} -func (m *UpdatePasswordRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdatePasswordRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdatePasswordRequest proto.InternalMessageInfo - -func (m *UpdatePasswordRequest) GetUserId() string { - if m != nil { - return m.UserId +func (x *UpdatePasswordRequest) GetUserId() string { + if x != nil { + return x.UserId } return "" } -func (m *UpdatePasswordRequest) GetOldPassword() string { - if m != nil { - return m.OldPassword +func (x *UpdatePasswordRequest) GetOldPassword() string { + if x != nil { + return x.OldPassword } return "" } -func (m *UpdatePasswordRequest) GetNewPassword() string { - if m != nil { - return m.NewPassword +func (x *UpdatePasswordRequest) GetNewPassword() string { + if x != nil { + return x.NewPassword } return "" } -func (m *UpdatePasswordRequest) GetConfirmPassword() string { - if m != nil { - return m.ConfirmPassword +func (x *UpdatePasswordRequest) GetConfirmPassword() string { + if x != nil { + return x.ConfirmPassword } return "" } type UpdatePasswordResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *UpdatePasswordResponse) Reset() { *m = UpdatePasswordResponse{} } -func (m *UpdatePasswordResponse) String() string { return proto.CompactTextString(m) } -func (*UpdatePasswordResponse) ProtoMessage() {} +func (x *UpdatePasswordResponse) Reset() { + *x = UpdatePasswordResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdatePasswordResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdatePasswordResponse) ProtoMessage() {} + +func (x *UpdatePasswordResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[11] + 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 UpdatePasswordResponse.ProtoReflect.Descriptor instead. func (*UpdatePasswordResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{11} + return file_proto_users_proto_rawDescGZIP(), []int{11} } -func (m *UpdatePasswordResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdatePasswordResponse.Unmarshal(m, b) -} -func (m *UpdatePasswordResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdatePasswordResponse.Marshal(b, m, deterministic) -} -func (m *UpdatePasswordResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdatePasswordResponse.Merge(m, src) -} -func (m *UpdatePasswordResponse) XXX_Size() int { - return xxx_messageInfo_UpdatePasswordResponse.Size(m) -} -func (m *UpdatePasswordResponse) XXX_DiscardUnknown() { - xxx_messageInfo_UpdatePasswordResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdatePasswordResponse proto.InternalMessageInfo - type SearchRequest struct { - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - Limit int64 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int64 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` + Limit int64 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int64 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` } -func (m *SearchRequest) Reset() { *m = SearchRequest{} } -func (m *SearchRequest) String() string { return proto.CompactTextString(m) } -func (*SearchRequest) ProtoMessage() {} +func (x *SearchRequest) Reset() { + *x = SearchRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchRequest) ProtoMessage() {} + +func (x *SearchRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[12] + 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 SearchRequest.ProtoReflect.Descriptor instead. func (*SearchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{12} + return file_proto_users_proto_rawDescGZIP(), []int{12} } -func (m *SearchRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchRequest.Unmarshal(m, b) -} -func (m *SearchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchRequest.Marshal(b, m, deterministic) -} -func (m *SearchRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchRequest.Merge(m, src) -} -func (m *SearchRequest) XXX_Size() int { - return xxx_messageInfo_SearchRequest.Size(m) -} -func (m *SearchRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SearchRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SearchRequest proto.InternalMessageInfo - -func (m *SearchRequest) GetUsername() string { - if m != nil { - return m.Username +func (x *SearchRequest) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (m *SearchRequest) GetEmail() string { - if m != nil { - return m.Email +func (x *SearchRequest) GetEmail() string { + if x != nil { + return x.Email } return "" } -func (m *SearchRequest) GetLimit() int64 { - if m != nil { - return m.Limit +func (x *SearchRequest) GetLimit() int64 { + if x != nil { + return x.Limit } return 0 } -func (m *SearchRequest) GetOffset() int64 { - if m != nil { - return m.Offset +func (x *SearchRequest) GetOffset() int64 { + if x != nil { + return x.Offset } return 0 } type SearchResponse struct { - Users []*User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Users []*User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` } -func (m *SearchResponse) Reset() { *m = SearchResponse{} } -func (m *SearchResponse) String() string { return proto.CompactTextString(m) } -func (*SearchResponse) ProtoMessage() {} +func (x *SearchResponse) Reset() { + *x = SearchResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchResponse) ProtoMessage() {} + +func (x *SearchResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[13] + 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 SearchResponse.ProtoReflect.Descriptor instead. func (*SearchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{13} + return file_proto_users_proto_rawDescGZIP(), []int{13} } -func (m *SearchResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchResponse.Unmarshal(m, b) -} -func (m *SearchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchResponse.Marshal(b, m, deterministic) -} -func (m *SearchResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchResponse.Merge(m, src) -} -func (m *SearchResponse) XXX_Size() int { - return xxx_messageInfo_SearchResponse.Size(m) -} -func (m *SearchResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SearchResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_SearchResponse proto.InternalMessageInfo - -func (m *SearchResponse) GetUsers() []*User { - if m != nil { - return m.Users +func (x *SearchResponse) GetUsers() []*User { + if x != nil { + return x.Users } return nil } type ReadSessionRequest struct { - SessionId string `protobuf:"bytes,1,opt,name=sessionId,proto3" json:"sessionId,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SessionId string `protobuf:"bytes,1,opt,name=sessionId,proto3" json:"sessionId,omitempty"` } -func (m *ReadSessionRequest) Reset() { *m = ReadSessionRequest{} } -func (m *ReadSessionRequest) String() string { return proto.CompactTextString(m) } -func (*ReadSessionRequest) ProtoMessage() {} +func (x *ReadSessionRequest) Reset() { + *x = ReadSessionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReadSessionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadSessionRequest) ProtoMessage() {} + +func (x *ReadSessionRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[14] + 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 ReadSessionRequest.ProtoReflect.Descriptor instead. func (*ReadSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{14} + return file_proto_users_proto_rawDescGZIP(), []int{14} } -func (m *ReadSessionRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ReadSessionRequest.Unmarshal(m, b) -} -func (m *ReadSessionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ReadSessionRequest.Marshal(b, m, deterministic) -} -func (m *ReadSessionRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ReadSessionRequest.Merge(m, src) -} -func (m *ReadSessionRequest) XXX_Size() int { - return xxx_messageInfo_ReadSessionRequest.Size(m) -} -func (m *ReadSessionRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ReadSessionRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ReadSessionRequest proto.InternalMessageInfo - -func (m *ReadSessionRequest) GetSessionId() string { - if m != nil { - return m.SessionId +func (x *ReadSessionRequest) GetSessionId() string { + if x != nil { + return x.SessionId } return "" } type ReadSessionResponse struct { - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` } -func (m *ReadSessionResponse) Reset() { *m = ReadSessionResponse{} } -func (m *ReadSessionResponse) String() string { return proto.CompactTextString(m) } -func (*ReadSessionResponse) ProtoMessage() {} +func (x *ReadSessionResponse) Reset() { + *x = ReadSessionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReadSessionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadSessionResponse) ProtoMessage() {} + +func (x *ReadSessionResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[15] + 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 ReadSessionResponse.ProtoReflect.Descriptor instead. func (*ReadSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{15} + return file_proto_users_proto_rawDescGZIP(), []int{15} } -func (m *ReadSessionResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ReadSessionResponse.Unmarshal(m, b) -} -func (m *ReadSessionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ReadSessionResponse.Marshal(b, m, deterministic) -} -func (m *ReadSessionResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ReadSessionResponse.Merge(m, src) -} -func (m *ReadSessionResponse) XXX_Size() int { - return xxx_messageInfo_ReadSessionResponse.Size(m) -} -func (m *ReadSessionResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ReadSessionResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ReadSessionResponse proto.InternalMessageInfo - -func (m *ReadSessionResponse) GetSession() *Session { - if m != nil { - return m.Session +func (x *ReadSessionResponse) GetSession() *Session { + if x != nil { + return x.Session } return nil } type LoginRequest struct { - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` + Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` } -func (m *LoginRequest) Reset() { *m = LoginRequest{} } -func (m *LoginRequest) String() string { return proto.CompactTextString(m) } -func (*LoginRequest) ProtoMessage() {} +func (x *LoginRequest) Reset() { + *x = LoginRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LoginRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LoginRequest) ProtoMessage() {} + +func (x *LoginRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[16] + 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 LoginRequest.ProtoReflect.Descriptor instead. func (*LoginRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{16} + return file_proto_users_proto_rawDescGZIP(), []int{16} } -func (m *LoginRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LoginRequest.Unmarshal(m, b) -} -func (m *LoginRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LoginRequest.Marshal(b, m, deterministic) -} -func (m *LoginRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LoginRequest.Merge(m, src) -} -func (m *LoginRequest) XXX_Size() int { - return xxx_messageInfo_LoginRequest.Size(m) -} -func (m *LoginRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LoginRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_LoginRequest proto.InternalMessageInfo - -func (m *LoginRequest) GetUsername() string { - if m != nil { - return m.Username +func (x *LoginRequest) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (m *LoginRequest) GetEmail() string { - if m != nil { - return m.Email +func (x *LoginRequest) GetEmail() string { + if x != nil { + return x.Email } return "" } -func (m *LoginRequest) GetPassword() string { - if m != nil { - return m.Password +func (x *LoginRequest) GetPassword() string { + if x != nil { + return x.Password } return "" } type LoginResponse struct { - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` } -func (m *LoginResponse) Reset() { *m = LoginResponse{} } -func (m *LoginResponse) String() string { return proto.CompactTextString(m) } -func (*LoginResponse) ProtoMessage() {} +func (x *LoginResponse) Reset() { + *x = LoginResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LoginResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LoginResponse) ProtoMessage() {} + +func (x *LoginResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[17] + 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 LoginResponse.ProtoReflect.Descriptor instead. func (*LoginResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{17} + return file_proto_users_proto_rawDescGZIP(), []int{17} } -func (m *LoginResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LoginResponse.Unmarshal(m, b) -} -func (m *LoginResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LoginResponse.Marshal(b, m, deterministic) -} -func (m *LoginResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LoginResponse.Merge(m, src) -} -func (m *LoginResponse) XXX_Size() int { - return xxx_messageInfo_LoginResponse.Size(m) -} -func (m *LoginResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LoginResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_LoginResponse proto.InternalMessageInfo - -func (m *LoginResponse) GetSession() *Session { - if m != nil { - return m.Session +func (x *LoginResponse) GetSession() *Session { + if x != nil { + return x.Session } return nil } type LogoutRequest struct { - SessionId string `protobuf:"bytes,1,opt,name=sessionId,proto3" json:"sessionId,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SessionId string `protobuf:"bytes,1,opt,name=sessionId,proto3" json:"sessionId,omitempty"` } -func (m *LogoutRequest) Reset() { *m = LogoutRequest{} } -func (m *LogoutRequest) String() string { return proto.CompactTextString(m) } -func (*LogoutRequest) ProtoMessage() {} +func (x *LogoutRequest) Reset() { + *x = LogoutRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogoutRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogoutRequest) ProtoMessage() {} + +func (x *LogoutRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[18] + 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 LogoutRequest.ProtoReflect.Descriptor instead. func (*LogoutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{18} + return file_proto_users_proto_rawDescGZIP(), []int{18} } -func (m *LogoutRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LogoutRequest.Unmarshal(m, b) -} -func (m *LogoutRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LogoutRequest.Marshal(b, m, deterministic) -} -func (m *LogoutRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LogoutRequest.Merge(m, src) -} -func (m *LogoutRequest) XXX_Size() int { - return xxx_messageInfo_LogoutRequest.Size(m) -} -func (m *LogoutRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LogoutRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_LogoutRequest proto.InternalMessageInfo - -func (m *LogoutRequest) GetSessionId() string { - if m != nil { - return m.SessionId +func (x *LogoutRequest) GetSessionId() string { + if x != nil { + return x.SessionId } return "" } type LogoutResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *LogoutResponse) Reset() { *m = LogoutResponse{} } -func (m *LogoutResponse) String() string { return proto.CompactTextString(m) } -func (*LogoutResponse) ProtoMessage() {} +func (x *LogoutResponse) Reset() { + *x = LogoutResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_users_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogoutResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogoutResponse) ProtoMessage() {} + +func (x *LogoutResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_users_proto_msgTypes[19] + 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 LogoutResponse.ProtoReflect.Descriptor instead. func (*LogoutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b1c161a4c7514913, []int{19} + return file_proto_users_proto_rawDescGZIP(), []int{19} } -func (m *LogoutResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LogoutResponse.Unmarshal(m, b) -} -func (m *LogoutResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LogoutResponse.Marshal(b, m, deterministic) -} -func (m *LogoutResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LogoutResponse.Merge(m, src) -} -func (m *LogoutResponse) XXX_Size() int { - return xxx_messageInfo_LogoutResponse.Size(m) -} -func (m *LogoutResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LogoutResponse.DiscardUnknown(m) +var File_proto_users_proto protoreflect.FileDescriptor + +var file_proto_users_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x7c, 0x0a, 0x04, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x7f, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x22, 0x6d, 0x0a, 0x0d, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x0a, 0x0d, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x0a, + 0x0b, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2f, 0x0a, 0x0c, + 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x51, 0x0a, + 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x6c, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x6c, 0x64, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, + 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x33, + 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x21, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x22, 0x32, 0x0a, 0x12, 0x52, 0x65, 0x61, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x13, 0x52, 0x65, 0x61, 0x64, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, + 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x0c, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x39, 0x0a, 0x0d, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x2d, 0x0a, 0x0d, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x22, 0x10, 0x0a, 0x0e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x32, 0xa6, 0x04, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x06, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x12, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x13, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x12, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x37, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x14, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x15, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x06, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x12, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x13, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x06, 0x4c, 0x6f, + 0x67, 0x6f, 0x75, 0x74, 0x12, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x4c, 0x6f, 0x67, + 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0d, 0x5a, 0x0b, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x75, 0x73, 0x65, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } -var xxx_messageInfo_LogoutResponse proto.InternalMessageInfo +var ( + file_proto_users_proto_rawDescOnce sync.Once + file_proto_users_proto_rawDescData = file_proto_users_proto_rawDesc +) -func init() { - proto.RegisterType((*User)(nil), "User") - proto.RegisterType((*Session)(nil), "Session") - proto.RegisterType((*CreateRequest)(nil), "CreateRequest") - proto.RegisterType((*CreateResponse)(nil), "CreateResponse") - proto.RegisterType((*DeleteRequest)(nil), "DeleteRequest") - proto.RegisterType((*DeleteResponse)(nil), "DeleteResponse") - proto.RegisterType((*ReadRequest)(nil), "ReadRequest") - proto.RegisterType((*ReadResponse)(nil), "ReadResponse") - proto.RegisterType((*UpdateRequest)(nil), "UpdateRequest") - proto.RegisterType((*UpdateResponse)(nil), "UpdateResponse") - proto.RegisterType((*UpdatePasswordRequest)(nil), "UpdatePasswordRequest") - proto.RegisterType((*UpdatePasswordResponse)(nil), "UpdatePasswordResponse") - proto.RegisterType((*SearchRequest)(nil), "SearchRequest") - proto.RegisterType((*SearchResponse)(nil), "SearchResponse") - proto.RegisterType((*ReadSessionRequest)(nil), "ReadSessionRequest") - proto.RegisterType((*ReadSessionResponse)(nil), "ReadSessionResponse") - proto.RegisterType((*LoginRequest)(nil), "LoginRequest") - proto.RegisterType((*LoginResponse)(nil), "LoginResponse") - proto.RegisterType((*LogoutRequest)(nil), "LogoutRequest") - proto.RegisterType((*LogoutResponse)(nil), "LogoutResponse") +func file_proto_users_proto_rawDescGZIP() []byte { + file_proto_users_proto_rawDescOnce.Do(func() { + file_proto_users_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_users_proto_rawDescData) + }) + return file_proto_users_proto_rawDescData } -func init() { - proto.RegisterFile("proto/users.proto", fileDescriptor_b1c161a4c7514913) +var file_proto_users_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_proto_users_proto_goTypes = []interface{}{ + (*User)(nil), // 0: users.User + (*Session)(nil), // 1: users.Session + (*CreateRequest)(nil), // 2: users.CreateRequest + (*CreateResponse)(nil), // 3: users.CreateResponse + (*DeleteRequest)(nil), // 4: users.DeleteRequest + (*DeleteResponse)(nil), // 5: users.DeleteResponse + (*ReadRequest)(nil), // 6: users.ReadRequest + (*ReadResponse)(nil), // 7: users.ReadResponse + (*UpdateRequest)(nil), // 8: users.UpdateRequest + (*UpdateResponse)(nil), // 9: users.UpdateResponse + (*UpdatePasswordRequest)(nil), // 10: users.UpdatePasswordRequest + (*UpdatePasswordResponse)(nil), // 11: users.UpdatePasswordResponse + (*SearchRequest)(nil), // 12: users.SearchRequest + (*SearchResponse)(nil), // 13: users.SearchResponse + (*ReadSessionRequest)(nil), // 14: users.ReadSessionRequest + (*ReadSessionResponse)(nil), // 15: users.ReadSessionResponse + (*LoginRequest)(nil), // 16: users.LoginRequest + (*LoginResponse)(nil), // 17: users.LoginResponse + (*LogoutRequest)(nil), // 18: users.LogoutRequest + (*LogoutResponse)(nil), // 19: users.LogoutResponse +} +var file_proto_users_proto_depIdxs = []int32{ + 0, // 0: users.ReadResponse.user:type_name -> users.User + 0, // 1: users.SearchResponse.users:type_name -> users.User + 1, // 2: users.ReadSessionResponse.session:type_name -> users.Session + 1, // 3: users.LoginResponse.session:type_name -> users.Session + 2, // 4: users.Users.Create:input_type -> users.CreateRequest + 6, // 5: users.Users.Read:input_type -> users.ReadRequest + 8, // 6: users.Users.Update:input_type -> users.UpdateRequest + 4, // 7: users.Users.Delete:input_type -> users.DeleteRequest + 12, // 8: users.Users.Search:input_type -> users.SearchRequest + 10, // 9: users.Users.UpdatePassword:input_type -> users.UpdatePasswordRequest + 16, // 10: users.Users.Login:input_type -> users.LoginRequest + 18, // 11: users.Users.Logout:input_type -> users.LogoutRequest + 14, // 12: users.Users.ReadSession:input_type -> users.ReadSessionRequest + 3, // 13: users.Users.Create:output_type -> users.CreateResponse + 7, // 14: users.Users.Read:output_type -> users.ReadResponse + 9, // 15: users.Users.Update:output_type -> users.UpdateResponse + 5, // 16: users.Users.Delete:output_type -> users.DeleteResponse + 13, // 17: users.Users.Search:output_type -> users.SearchResponse + 11, // 18: users.Users.UpdatePassword:output_type -> users.UpdatePasswordResponse + 17, // 19: users.Users.Login:output_type -> users.LoginResponse + 19, // 20: users.Users.Logout:output_type -> users.LogoutResponse + 15, // 21: users.Users.ReadSession:output_type -> users.ReadSessionResponse + 13, // [13:22] is the sub-list for method output_type + 4, // [4:13] 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 } -var fileDescriptor_b1c161a4c7514913 = []byte{ - // 600 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x55, 0xcf, 0x6e, 0xd3, 0x4e, - 0x10, 0x4e, 0xe2, 0x38, 0x69, 0x27, 0x71, 0xda, 0xdf, 0xb6, 0xbf, 0x60, 0x0c, 0x88, 0x6a, 0x25, - 0xa4, 0x56, 0xa8, 0x8b, 0x94, 0x9e, 0xe0, 0x5a, 0x2e, 0x48, 0x1c, 0xc0, 0x55, 0x6f, 0x48, 0xc8, - 0x24, 0x1b, 0xb0, 0x14, 0x7b, 0x8d, 0xd7, 0x51, 0x39, 0x20, 0xf1, 0x26, 0x3c, 0x08, 0x4f, 0xc7, - 0xec, 0xbf, 0xc4, 0x36, 0x8d, 0x04, 0xa8, 0xdc, 0x3c, 0x33, 0xdf, 0xec, 0x7c, 0x3b, 0x33, 0xdf, - 0x1a, 0xfe, 0x2b, 0x4a, 0x51, 0x89, 0x67, 0x6b, 0xc9, 0x4b, 0xc9, 0xf4, 0x37, 0xfd, 0x0a, 0xfd, - 0x6b, 0x34, 0xc9, 0x04, 0x7a, 0xe9, 0x22, 0xec, 0x9e, 0x74, 0x4f, 0xf7, 0x63, 0xfc, 0x22, 0x11, - 0xec, 0x29, 0x58, 0x9e, 0x64, 0x3c, 0xec, 0x69, 0xef, 0xc6, 0x26, 0xc7, 0xe0, 0xf3, 0x2c, 0x49, - 0x57, 0xa1, 0xa7, 0x03, 0xc6, 0x20, 0x21, 0x0c, 0xe7, 0x25, 0x4f, 0x2a, 0xbe, 0x08, 0xfb, 0xe8, - 0xf7, 0x62, 0x67, 0xaa, 0xc8, 0xba, 0x58, 0xe8, 0x88, 0x6f, 0x22, 0xd6, 0xa4, 0xdf, 0x60, 0x78, - 0xc5, 0xa5, 0x4c, 0x45, 0xfe, 0xaf, 0x09, 0xf0, 0x2f, 0x45, 0x5a, 0x72, 0xe9, 0x08, 0x58, 0x93, - 0x66, 0x10, 0x5c, 0x6a, 0x50, 0xcc, 0x3f, 0xaf, 0xb9, 0xac, 0xee, 0x80, 0x06, 0x66, 0x14, 0x89, - 0x94, 0x37, 0xa2, 0x34, 0x3c, 0x30, 0xc3, 0xd9, 0xf4, 0x10, 0x26, 0xae, 0x9c, 0x2c, 0x44, 0x2e, - 0x39, 0x7d, 0x0c, 0xc1, 0x4b, 0xbe, 0xe2, 0x3b, 0x09, 0xa8, 0x14, 0x07, 0xb0, 0x29, 0x8f, 0x60, - 0x14, 0xf3, 0x64, 0xb1, 0x2b, 0xe1, 0x0c, 0xc6, 0x26, 0x6c, 0xe0, 0xe4, 0x3e, 0xf4, 0x15, 0x63, - 0x8d, 0x18, 0xcd, 0x7c, 0xa6, 0xc6, 0x1d, 0x6b, 0x17, 0x7d, 0x0b, 0xc1, 0xb5, 0x9e, 0xc4, 0x9d, - 0xdd, 0x5e, 0xd1, 0x75, 0x47, 0x5a, 0xba, 0xdf, 0xbb, 0xf0, 0xbf, 0x71, 0xbd, 0xb1, 0x6d, 0x70, - 0xd5, 0xa6, 0x30, 0x50, 0xa7, 0xbd, 0x72, 0x15, 0xad, 0x45, 0x4e, 0x60, 0x24, 0x56, 0x0b, 0x87, - 0xb6, 0x85, 0xeb, 0x2e, 0x85, 0xc8, 0xf9, 0xcd, 0x06, 0x61, 0x18, 0xd4, 0x5d, 0xe4, 0x0c, 0x0e, - 0xe7, 0x22, 0x5f, 0xa6, 0x65, 0xf6, 0xbe, 0x35, 0x8d, 0x03, 0xeb, 0x77, 0x50, 0x1a, 0xc2, 0xb4, - 0xcd, 0xcf, 0x52, 0x17, 0x10, 0x5c, 0xf1, 0xa4, 0x9c, 0x7f, 0x72, 0x8c, 0xeb, 0xfd, 0xe8, 0xee, - 0xea, 0x47, 0xaf, 0xbe, 0x0d, 0xe8, 0x5d, 0xa5, 0x59, 0x5a, 0x69, 0x8e, 0x5e, 0x6c, 0x0c, 0x75, - 0x73, 0xb1, 0x5c, 0x4a, 0x5e, 0xd9, 0x4d, 0xb5, 0x16, 0x3d, 0x87, 0x89, 0x2b, 0x68, 0xa7, 0xf7, - 0x00, 0x7c, 0x2d, 0x57, 0x2c, 0xe7, 0x6d, 0xc7, 0x67, 0x7c, 0x74, 0x06, 0x44, 0x8d, 0xda, 0x4a, - 0xc8, 0x91, 0x7c, 0x08, 0xfb, 0xd2, 0x78, 0x36, 0x9d, 0xdd, 0x3a, 0xe8, 0x73, 0x38, 0x6a, 0xe4, - 0xd8, 0x3a, 0x14, 0x86, 0x16, 0x63, 0x17, 0x65, 0x8f, 0x39, 0x88, 0x0b, 0xd0, 0x77, 0x30, 0x7e, - 0x2d, 0x3e, 0xa6, 0xf9, 0xdf, 0x77, 0xa3, 0xae, 0x0d, 0xaf, 0xa5, 0x8d, 0x0b, 0x08, 0xec, 0xe9, - 0x7f, 0x40, 0xe9, 0x5c, 0x27, 0x89, 0x75, 0xf5, 0x7b, 0x97, 0xc7, 0xed, 0x74, 0x70, 0x53, 0x64, - 0xf6, 0xc3, 0x03, 0x5f, 0xb5, 0x54, 0x92, 0xa7, 0x30, 0x30, 0xda, 0x24, 0x13, 0xd6, 0x78, 0x13, - 0xa2, 0x03, 0xd6, 0x12, 0x6d, 0x87, 0x3c, 0x81, 0xbe, 0xea, 0x22, 0x19, 0xb3, 0x9a, 0x14, 0xa3, - 0x80, 0xd5, 0x95, 0x87, 0x30, 0x3c, 0xd3, 0xac, 0x16, 0x9e, 0xd9, 0x50, 0x1a, 0x9e, 0xd9, 0x92, - 0x89, 0x06, 0x1b, 0xa5, 0x23, 0xb8, 0xf1, 0x26, 0x20, 0xb8, 0xf5, 0x04, 0x68, 0xb0, 0xd9, 0x14, - 0x04, 0x37, 0x76, 0x14, 0xc1, 0xcd, 0x15, 0x42, 0xf0, 0xa5, 0x13, 0xe5, 0x46, 0x1e, 0x53, 0x76, - 0xab, 0x24, 0xa3, 0x7b, 0x6c, 0x87, 0x14, 0x3a, 0xe4, 0x14, 0x7c, 0x3d, 0x1f, 0x12, 0xb0, 0xfa, - 0x16, 0x44, 0x13, 0xd6, 0x18, 0x9b, 0xe1, 0x66, 0xba, 0x4c, 0x74, 0x6c, 0x3b, 0x1d, 0xe4, 0xd6, - 0x6c, 0x3f, 0x82, 0x5f, 0x98, 0xd7, 0xcc, 0xfd, 0x06, 0x8e, 0xd8, 0xaf, 0x1b, 0x1d, 0x1d, 0xb3, - 0x5b, 0x56, 0x96, 0x76, 0x3e, 0x0c, 0xf4, 0x3f, 0xec, 0xe2, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xc7, 0x99, 0xc1, 0x0c, 0xd8, 0x06, 0x00, 0x00, +func init() { file_proto_users_proto_init() } +func file_proto_users_proto_init() { + if File_proto_users_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_users_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*User); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Session); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReadRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReadResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdatePasswordRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdatePasswordResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReadSessionRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReadSessionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LoginRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LoginResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogoutRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_users_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogoutResponse); 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_proto_users_proto_rawDesc, + NumEnums: 0, + NumMessages: 20, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_users_proto_goTypes, + DependencyIndexes: file_proto_users_proto_depIdxs, + MessageInfos: file_proto_users_proto_msgTypes, + }.Build() + File_proto_users_proto = out.File + file_proto_users_proto_rawDesc = nil + file_proto_users_proto_goTypes = nil + file_proto_users_proto_depIdxs = nil } diff --git a/users/proto/users.proto b/users/proto/users.proto index 8d9d0ce..fa54fc0 100644 --- a/users/proto/users.proto +++ b/users/proto/users.proto @@ -1,5 +1,8 @@ syntax = "proto3"; +package users; +option go_package = "proto;users"; + service Users { rpc Create(CreateRequest) returns (CreateResponse) {} rpc Read(ReadRequest) returns (ReadResponse) {}