Skip to content

Commit

Permalink
Merge pull request #2 from satanaroom/task4
Browse files Browse the repository at this point in the history
Task4
  • Loading branch information
satanaroom committed May 27, 2023
2 parents bede6e0 + 92076df commit a10c769
Show file tree
Hide file tree
Showing 40 changed files with 1,755 additions and 301 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ go.work

/bin
/.idea
/vendor.protogen
.env
46 changes: 45 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,53 @@
LOCAL_BIN:=$(CURDIR)/bin

install-go-deps:
install-go-deps: vendor-proto
GOBIN=$(LOCAL_BIN) go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1
GOBIN=$(LOCAL_BIN) go install -mod=mod google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
GOBIN=$(LOCAL_BIN) go install github.com/envoyproxy/protoc-gen-validate@v0.10.1
GOBIN=$(LOCAL_BIN) go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.15.2
GOBIN=$(LOCAL_BIN) go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.15.2
GOBIN=$(LOCAL_BIN) go install github.com/rakyll/statik@latest

swagger:
mkdir -p pkg/swagger

generate: swagger generate-chat-api
statik -src=pkg/swagger/ -include='*.css,*html,*.json,*.png,*.js'

generate-chat-api:
mkdir -p pkg/chat_v1
protoc --proto_path api/chat_v1 --proto_path vendor.protogen \
--plugin=protoc-gen-go=bin/protoc-gen-go \
--go_out=pkg/chat_v1 --go_opt=paths=source_relative \
--go-grpc_out=pkg/chat_v1 --go-grpc_opt=paths=source_relative \
--plugin=protoc-gen-go-grpc=bin/protoc-gen-go-grpc \
--validate_out lang=go:pkg/chat_v1 --validate_opt=paths=source_relative \
--plugin=protoc-gen-validate=bin/protoc-gen-validate \
--grpc-gateway_out=pkg/chat_v1 --grpc-gateway_opt=paths=source_relative \
--plugin=protoc-gen-go-grpc-gateway=bin/protoc-gen-go-grpc-gateway \
--openapiv2_out=allow_merge=true,merge_file_name=chat:pkg/swagger \
--plugin=protoc-gen-openapiv2=bin/protoc-gen-openapiv2 \
api/chat_v1/chat.proto

vendor-proto:
@if [ ! -d vendor.protogen/validate ]; then \
mkdir -p vendor.protogen/validate &&\
git clone https://github.com/envoyproxy/protoc-gen-validate vendor.protogen/protoc-gen-validate &&\
mv vendor.protogen/protoc-gen-validate/validate/*.proto vendor.protogen/validate &&\
rm -rf vendor.protogen/protoc-gen-validate ;\
fi
@if [ ! -d vendor.protogen/google ]; then \
git clone https://github.com/googleapis/googleapis vendor.protogen/googleapis &&\
mkdir -p vendor.protogen/google/ &&\
mv vendor.protogen/googleapis/google/api vendor.protogen/google &&\
rm -rf vendor.protogen/googleapis ;\
fi
@if [ ! -d vendor.protogen/protoc-gen-openapiv2 ]; then \
mkdir -p vendor.protogen/protoc-gen-openapiv2/options &&\
git clone https://github.com/grpc-ecosystem/grpc-gateway vendor.protogen/openapiv2 &&\
mv vendor.protogen/openapiv2/protoc-gen-openapiv2/options/*.proto vendor.protogen/protoc-gen-openapiv2/options &&\
rm -rf vendor.protogen/openapiv2 ;\
fi

.PHONY: lint
lint:
Expand Down
44 changes: 44 additions & 0 deletions api/chat_v1/chat.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
syntax = "proto3";

package chat_v1;

import "validate/validate.proto";
import "google/api/annotations.proto";
import "protoc-gen-openapiv2/options/annotations.proto";

option go_package = "github.com/satanaroom/chat_server/pkg/chat_v1;chat_v1";

option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
info: {
title: "Chat API"
version: "1.0.0"
contact: {
name: "Yan Karpov"
email: "ftragula@mail.ru"
};
};

host: "localhost:8081"
schemes: HTTP
schemes: HTTPS
consumes: "application/json"
};

service ChatV1 {
rpc CreateChat(CreateChatRequest) returns (CreateChatResponse) {
option (google.api.http) = {
post: "/chat/v1/create"
body: "*"
};
};
}

message CreateChatRequest {
repeated string usernames = 1 [(validate.rules).repeated.max_items = 10,
(validate.rules).repeated.unique = true, (validate.rules).repeated.items.string.max_len = 50];
}

message CreateChatResponse {
int64 chat_id = 1;
}

31 changes: 13 additions & 18 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,24 @@ module github.com/satanaroom/chat_server
go 1.20

require (
github.com/georgysavva/scany v1.2.1
github.com/jackc/pgconn v1.14.0
github.com/jackc/pgx/v4 v4.18.1
github.com/envoyproxy/protoc-gen-validate v0.10.0
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2
github.com/joho/godotenv v1.5.1
github.com/satanaroom/auth v0.0.0-20230504071525-1f1c0514db48
github.com/rakyll/statik v0.1.7
github.com/rs/cors v1.9.0
github.com/satanaroom/auth v0.0.0-20230524093436-fc87469d3ad5
google.golang.org/genproto v0.0.0-20230525154841-bd750badd5c6
google.golang.org/grpc v1.55.0
google.golang.org/protobuf v1.30.0
)

require (
github.com/golang/protobuf v1.5.2 // indirect
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
github.com/jackc/pgio v1.0.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgproto3/v2 v2.3.2 // indirect
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
github.com/jackc/pgtype v1.14.0 // indirect
github.com/jackc/puddle v1.3.0 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/sirupsen/logrus v1.4.2 // indirect
golang.org/x/crypto v0.8.0 // indirect
golang.org/x/net v0.9.0 // indirect
golang.org/x/sys v0.7.0 // indirect
github.com/stretchr/testify v1.8.1 // indirect
golang.org/x/net v0.10.0 // indirect
golang.org/x/sys v0.8.0 // indirect
golang.org/x/text v0.9.0 // indirect
google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect
google.golang.org/grpc v1.54.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
)
Loading

0 comments on commit a10c769

Please sign in to comment.