1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-01-05 10:20:53 +02:00

add service updates (#2418)

This commit is contained in:
Asim Aslam 2022-01-18 15:27:36 +00:00 committed by GitHub
parent 23f1de80c5
commit 9e0be6c85d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 187 additions and 11 deletions

View File

@ -9,6 +9,7 @@ type Cache interface {
Delete(*DeleteRequest) (*DeleteResponse, error)
Get(*GetRequest) (*GetResponse, error)
Increment(*IncrementRequest) (*IncrementResponse, error)
ListKeys(*ListKeysRequest) (*ListKeysResponse, error)
Set(*SetRequest) (*SetResponse, error)
}
@ -56,6 +57,14 @@ func (t *CacheService) Increment(request *IncrementRequest) (*IncrementResponse,
}
// List all the available keys
func (t *CacheService) ListKeys(request *ListKeysRequest) (*ListKeysResponse, error) {
rsp := &ListKeysResponse{}
return rsp, t.client.Call("cache", "ListKeys", request, rsp)
}
// Set an item in the cache. Overwrites any existing value already set.
func (t *CacheService) Set(request *SetRequest) (*SetResponse, error) {
@ -116,6 +125,13 @@ type IncrementResponse struct {
Value int64 `json:"value,string"`
}
type ListKeysRequest struct {
}
type ListKeysResponse struct {
Keys []string `json:"keys"`
}
type SetRequest struct {
// The key to update
Key string `json:"key"`

52
services/carbon/carbon.go Executable file
View File

@ -0,0 +1,52 @@
package carbon
import (
"go-micro.dev/v4/api/client"
)
type Carbon interface {
Offset(*OffsetRequest) (*OffsetResponse, error)
}
func NewCarbonService(token string) *CarbonService {
return &CarbonService{
client: client.NewClient(&client.Options{
Token: token,
}),
}
}
type CarbonService struct {
client *client.Client
}
// Purchase 1KG (0.001 tonne) of carbon offsets in a single request
func (t *CarbonService) Offset(request *OffsetRequest) (*OffsetResponse, error) {
rsp := &OffsetResponse{}
return rsp, t.client.Call("carbon", "Offset", request, rsp)
}
type OffsetRequest struct {
}
type OffsetResponse struct {
// the metric used e.g KG or Tonnes
Metric string `json:"metric"`
// projects it was allocated to
Projects []Project `json:"projects"`
// number of tonnes
Tonnes float64 `json:"tonnes"`
// number of units purchased
Units int32 `json:"units"`
}
type Project struct {
// name of the project
Name string `json:"name"`
// percentage that went to this
Percentage float64 `json:"percentage"`
// amount in tonnes
Tonnes float64 `json:"tonnes"`
}

View File

@ -5,7 +5,10 @@ import (
)
type Search interface {
Vote(*VoteRequest) (*VoteResponse, error)
DeleteIndex(*DeleteIndexRequest) (*DeleteIndexResponse, error)
Delete(*DeleteRequest) (*DeleteResponse, error)
Index(*IndexRequest) (*IndexResponse, error)
Search(*SearchRequest) (*SearchResponse, error)
}
func NewSearchService(token string) *SearchService {
@ -20,20 +23,98 @@ type SearchService struct {
client *client.Client
}
// Vote to have the Search api launched faster!
func (t *SearchService) Vote(request *VoteRequest) (*VoteResponse, error) {
// Delete an index.
func (t *SearchService) DeleteIndex(request *DeleteIndexRequest) (*DeleteIndexResponse, error) {
rsp := &VoteResponse{}
return rsp, t.client.Call("search", "Vote", request, rsp)
rsp := &DeleteIndexResponse{}
return rsp, t.client.Call("search", "DeleteIndex", request, rsp)
}
type VoteRequest struct {
// optional message
Message string `json:"message"`
// Delete a document given its ID
func (t *SearchService) Delete(request *DeleteRequest) (*DeleteResponse, error) {
rsp := &DeleteResponse{}
return rsp, t.client.Call("search", "Delete", request, rsp)
}
type VoteResponse struct {
// response message
Message string `json:"message"`
// Index a document i.e. insert a document to search for.
func (t *SearchService) Index(request *IndexRequest) (*IndexResponse, error) {
rsp := &IndexResponse{}
return rsp, t.client.Call("search", "Index", request, rsp)
}
// Search for documents in a given in index
func (t *SearchService) Search(request *SearchRequest) (*SearchResponse, error) {
rsp := &SearchResponse{}
return rsp, t.client.Call("search", "Search", request, rsp)
}
type CreateIndexRequest struct {
Fields []Field `json:"fields"`
// the name of the index
Index string `json:"index"`
}
type CreateIndexResponse struct {
}
type DeleteIndexRequest struct {
// The name of the index to delete
Index string `json:"index"`
}
type DeleteIndexResponse struct {
}
type DeleteRequest struct {
// The ID of the document to delete
Id string `json:"id"`
// The index the document belongs to
Index string `json:"index"`
}
type DeleteResponse struct {
}
type Document struct {
// The JSON contents of the document
Contents map[string]interface{} `json:"contents"`
// The ID for this document. If blank, one will be generated
Id string `json:"id"`
}
type Field struct {
// The name of the field. Use a `.` separator to define nested fields e.g. foo.bar
Name string `json:"name"`
// The type of the field - string, number
Type string `json:"type"`
}
type IndexRequest struct {
// The document to index
Document *Document `json:"document"`
// The index this document belongs to
Index string `json:"index"`
}
type IndexResponse struct {
Id string `json:"id"`
}
type SearchRequest struct {
// The index the document belongs to
Index string `json:"index"`
// The query. See docs for query language examples
Query string `json:"query"`
}
type SearchResponse struct {
// The matching documents
Documents []Document `json:"documents"`
}

View File

@ -6,6 +6,7 @@ import (
"go-micro.dev/v4/services/app"
"go-micro.dev/v4/services/avatar"
"go-micro.dev/v4/services/cache"
"go-micro.dev/v4/services/carbon"
"go-micro.dev/v4/services/contact"
"go-micro.dev/v4/services/crypto"
"go-micro.dev/v4/services/currency"
@ -67,6 +68,7 @@ func NewClient(token string) *Client {
AppService: app.NewAppService(token),
AvatarService: avatar.NewAvatarService(token),
CacheService: cache.NewCacheService(token),
CarbonService: carbon.NewCarbonService(token),
ContactService: contact.NewContactService(token),
CryptoService: crypto.NewCryptoService(token),
CurrencyService: currency.NewCurrencyService(token),
@ -128,6 +130,7 @@ type Client struct {
AppService *app.AppService
AvatarService *avatar.AvatarService
CacheService *cache.CacheService
CarbonService *carbon.CarbonService
ContactService *contact.ContactService
CryptoService *crypto.CryptoService
CurrencyService *currency.CurrencyService

24
services/update.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
DIR=/tmp/services
CDIR=`pwd`
REPO=https://github.com/m3o/m3o-go
git clone $REPO $DIR
cd $DIR
# move/delete
rm -rf .git .github go.mod go.sum README.md CNAME Makefile TODO.md LICENSE client cmd examples
mv m3o.go services.go
# rewrite
grep -r "go.m3o.com" | cut -f 1 -d : | xargs sed -i 's@go.m3o.com/client@go-micro.dev/v4/api/client@g'
sed -i 's@go.m3o.com@go-micro.dev/v4/services@g' services.go
sed -i 's@package m3o@package services@g' services.go
# sync
cd $CDIR
rsync -avz $DIR/ .
# cleanup
rm -rf $DIR