Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Демо проект. Получение сообщения, обогащение, сохранение в БД и раздача по REST, GraphQL запросам

Notifications You must be signed in to change notification settings

corlov/go-persons-service

Repository files navigation

GraphQL service API

https://betterprogramming.pub/building-a-graphql-server-using-the-schema-first-approach-in-golang-a8da71d7e5b7

Exec commands bellow to generate your own GraphQL handlers by GraphQL schema:

    export GOPATH=/home/kostya/go/src    
    go mod init    
    go get github.com/99designs/gqlgen    
    go run github.com/99designs/gqlgen init
    go mod tidy
    go run github.com/99designs/gqlgen generate

Sometimes some errors happened, you need to try to install manually:

go get github.com/99designs/gqlgen/codegen/[email protected]

go get github.com/99designs/gqlgen/internal/[email protected]

go get github.com/99designs/[email protected]

go run github.com/99designs/gqlgen generate

Kafka

Kafka version > 2.2:

/home/kostya/kafka/kafka_2.12-3.6.0/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TutorialTopic

create topic:

/home/kostya/kafka/kafka_2.12-3.6.0/bin/kafka-topics.sh --create --topic TutorialTopic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1

(https://stackoverflow.com/questions/69297020/exception-in-thread-main-joptsimple-unrecognizedoptionexception-zookeeper-is)

send the message to topic:

cat msg.json | /home/kostya/kafka/kafka_2.12-3.6.0/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic FIO > /dev/null

read a message from topic:

/home/kostya/kafka/kafka_2.12-3.6.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TutorialTopic --from-beginning

Manuals and articles thats helped and have been notable useful for me:


Про создание проекта (модуля) на Го с несколькими пакетами

https://go.dev/doc/code

В go существуют понятия: пакет -> модуль -> репозиторий, т.е. модуль состоит из пакетов, репозиторий из модулей.

Для того чтобы добавить пакет pkgA в модуль нужно:

  1. создать каталог pkgA внутри модуля с имененм пакета pkgA
    mkdir pkgA    
    cd pkgA
  1. создать внутри каталога pkgA какой то файл some.go в которм в заголовке указать package pkgA и те функции которые будут
    touch some.go    
    vim some.go
    package pkgA

    func MyFun(a int) int {    
        return a + 5    
    }

То, что будет экспортироваться обязательно должно начинаться с заглавной буквы (соглашения в Го)

(про это хорошо написано тут: https://golangbyexample.com/exported-unexported-fields-struct-go/)

  1. внутри директории с пакетом pkgA выполнить команду
    go mod init pkgA

поправить версию go на ту что используется в модуле при необходимости

  1. в корневом каталоге модуля д.ю. файл go.work, в нем перечислаяются пути к директориям с пакетами, добавить туда путь к пакету
        
        go 1.21.1
        
        use (        
            .            
            ./rest            
            ./data_enrichment            
            ./graphql            
            ./types            
            ./db_utils        
        )
  1. в файле указать в импортах имя пакета import "pkgA" длЯ использования функций и данных из него

  2. можно вызвать функию pkgA.MyFun(678)

About

Демо проект. Получение сообщения, обогащение, сохранение в БД и раздача по REST, GraphQL запросам

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published