Splitting design into separate services
This commit is contained in:
45
services/character/character.go
Normal file
45
services/character/character.go
Normal file
@ -0,0 +1,45 @@
|
||||
package characterapi
|
||||
|
||||
import (
|
||||
"context"
|
||||
character "crossnokaye-interview-assignment/services/character/gen/character"
|
||||
"log"
|
||||
)
|
||||
|
||||
// character service example implementation.
|
||||
// The example methods log the requests and return zero values.
|
||||
type charactersrvc struct {
|
||||
logger *log.Logger
|
||||
}
|
||||
|
||||
// NewCharacter returns the character service implementation.
|
||||
func NewCharacter(logger *log.Logger) character.Service {
|
||||
return &charactersrvc{logger}
|
||||
}
|
||||
|
||||
// GetCharacter implements getCharacter.
|
||||
func (s *charactersrvc) GetCharacter(ctx context.Context, p int) (res *character.Character, err error) {
|
||||
res = &character.Character{}
|
||||
s.logger.Print("character.getCharacter")
|
||||
return
|
||||
}
|
||||
|
||||
// CreateCharacter implements createCharacter.
|
||||
func (s *charactersrvc) CreateCharacter(ctx context.Context, p *character.Character) (res *character.Character, err error) {
|
||||
res = &character.Character{}
|
||||
s.logger.Print("character.createCharacter")
|
||||
return
|
||||
}
|
||||
|
||||
// UpdateCharacter implements updateCharacter.
|
||||
func (s *charactersrvc) UpdateCharacter(ctx context.Context, p *character.Character) (res *character.Character, err error) {
|
||||
res = &character.Character{}
|
||||
s.logger.Print("character.updateCharacter")
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteCharacter implements deleteCharacter.
|
||||
func (s *charactersrvc) DeleteCharacter(ctx context.Context, p int) (err error) {
|
||||
s.logger.Print("character.deleteCharacter")
|
||||
return
|
||||
}
|
75
services/character/design/design.go
Normal file
75
services/character/design/design.go
Normal file
@ -0,0 +1,75 @@
|
||||
package design
|
||||
|
||||
import (
|
||||
. "crossnokaye-interview-assignment/design"
|
||||
|
||||
. "goa.design/goa/v3/dsl"
|
||||
)
|
||||
|
||||
var _ = API("character", func() {
|
||||
Title("Character Srvice")
|
||||
Server("character", func() {
|
||||
Host("localhost", func() {
|
||||
URI("grpc://localhost:8083")
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
var _ = Service("character", func() {
|
||||
Description("A GRPC back service that handles CRUD operations for the characters and their attributes")
|
||||
|
||||
Method("getCharacter", func() {
|
||||
Payload(Int)
|
||||
Result(Character)
|
||||
Error("NotFound")
|
||||
Error("BadRequest")
|
||||
|
||||
GRPC(func() {
|
||||
Response(CodeOK)
|
||||
Response("NotFound", CodeNotFound)
|
||||
Response("BadRequest", CodeInvalidArgument)
|
||||
})
|
||||
})
|
||||
|
||||
// Method("listCharacters", func() {
|
||||
// })
|
||||
|
||||
Method("createCharacter", func() {
|
||||
Payload(Character)
|
||||
Result(Character)
|
||||
Error("BadRequest")
|
||||
Error("NotFound")
|
||||
|
||||
GRPC(func() {
|
||||
Response(CodeOK)
|
||||
Response("NotFound", CodeNotFound)
|
||||
Response("BadRequest", CodeInvalidArgument)
|
||||
})
|
||||
})
|
||||
|
||||
Method("updateCharacter", func() {
|
||||
Payload(Character)
|
||||
Result(Character)
|
||||
Error("NotFound")
|
||||
Error("BadRequest")
|
||||
|
||||
GRPC(func() {
|
||||
Response(CodeOK)
|
||||
Response("NotFound", CodeNotFound)
|
||||
Response("BadRequest", CodeInvalidArgument)
|
||||
})
|
||||
})
|
||||
|
||||
Method("deleteCharacter", func() {
|
||||
Payload(Int)
|
||||
Result(Empty)
|
||||
Error("NotFound")
|
||||
Error("BadRequest")
|
||||
|
||||
GRPC(func() {
|
||||
Response(CodeOK)
|
||||
Response("NotFound", CodeNotFound)
|
||||
Response("BadRequest", CodeInvalidArgument)
|
||||
})
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user