diff --git a/docker-compose.yml b/docker-compose.yml index 9df5077c454b5d8978e5e15f7d91f65a726283d6..8f1eb50b2e1c42b2262e02a25755841772888d36 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,22 +1,20 @@ -services: - banktransfer: - build: - context: ./src - dockerfile: banktransfer/Dockerfile - ports: - - "9111:9111" - myaktion: - build: - context: ./src - dockerfile: myaktion/Dockerfile - ports: - - "8000:8000" - environment: - - DB_CONNECT=mariadb:3306 - - BANKTRANSFER_CONNECT=banktransfer:9111 - - LOG_LEVEL=info # change to trace for debugging - mariadb: - image: mariadb:10.5 - environment: - - MYSQL_ROOT_PASSWORD=root - - MYSQL_DATABASE=myaktion +services: + banktransfer: + build: + context: ./src + dockerfile: banktransfer/Dockerfile + myaktion: + build: + context: ./src + dockerfile: myaktion/Dockerfile + ports: + - "8000:8000" + environment: + - DB_CONNECT=mariadb:3306 + - BANKTRANSFER_CONNECT=banktransfer:9111 + - LOG_LEVEL=info # change to trace for debugging + mariadb: + image: mariadb:10.5 + environment: + - MYSQL_ROOT_PASSWORD=root + - MYSQL_DATABASE=myaktion \ No newline at end of file diff --git a/go.work b/go.work index 8c0bf0598f64a8b8d107b405572ecced09b2df65..0471fe4939d682c6a2df735a2b9a0ccba366724d 100644 --- a/go.work +++ b/go.work @@ -1,6 +1,4 @@ go 1.20 -use ( - ./src/banktransfer - ./src/myaktion -) +use ./src/myaktion +use ./src/banktransfer \ No newline at end of file diff --git a/go.work.sum b/go.work.sum index c83d37e6e22868229f182b317609c0738cd8eebb..a5044ec15a4c3501c9662f1b3e2d99a190752eb2 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,5 +1,7 @@ -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/src/banktransfer/go.mod b/src/banktransfer/go.mod index cd0ad4ec63ccfb3cf80760022adbca5915322a26..ee8fafd6ca98e4e4d1ca36e58549fd21dd4328cd 100644 --- a/src/banktransfer/go.mod +++ b/src/banktransfer/go.mod @@ -3,13 +3,13 @@ module gitlab.reutlingen-university.de/albrecht/myaktion-go/src/banktransfer go 1.20 require ( - github.com/golang/protobuf v1.5.3 - github.com/sirupsen/logrus v1.9.3 + github.com/sirupsen/logrus v1.9.0 google.golang.org/grpc v1.55.0 google.golang.org/protobuf v1.30.0 ) require ( + github.com/golang/protobuf v1.5.3 // indirect golang.org/x/net v0.8.0 // indirect golang.org/x/sys v0.6.0 // indirect golang.org/x/text v0.8.0 // indirect diff --git a/src/banktransfer/go.sum b/src/banktransfer/go.sum index 4367155d74fb46316a881782b9aeb58be21d8c10..fb01c1e07192678cd415679aee90e5d3ff41b917 100644 --- a/src/banktransfer/go.sum +++ b/src/banktransfer/go.sum @@ -8,8 +8,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= diff --git a/src/banktransfer/grpc/banktransfer/banktransfer.pb.go b/src/banktransfer/grpc/banktransfer/banktransfer.pb.go index 0fe9fbc77f00a2edf90e32dffd7f2feb427f15c4..93f5ffc07e107e63fba5d273c5a69c674dad5d0e 100644 --- a/src/banktransfer/grpc/banktransfer/banktransfer.pb.go +++ b/src/banktransfer/grpc/banktransfer/banktransfer.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.12.4 +// protoc-gen-go v1.26.0 +// protoc v3.17.0 // source: banktransfer/banktransfer.proto package banktransfer import ( - empty "github.com/golang/protobuf/ptypes/empty" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" reflect "reflect" sync "sync" ) @@ -258,14 +258,14 @@ var file_banktransfer_banktransfer_proto_rawDesc = []byte{ 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x19, 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x59, - 0x5a, 0x57, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x72, 0x65, 0x75, 0x74, 0x6c, 0x69, 0x6e, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x64, + 0x5a, 0x62, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x72, 0x65, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x65, 0x6e, 0x2d, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x64, - 0x65, 0x2f, 0x61, 0x6c, 0x62, 0x72, 0x65, 0x63, 0x68, 0x74, 0x2f, 0x6d, 0x79, 0x61, 0x6b, 0x74, - 0x69, 0x6f, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6e, - 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x65, 0x2f, 0x67, 0x6f, 0x2d, 0x65, 0x78, 0x65, 0x72, 0x63, 0x69, 0x73, 0x65, 0x73, 0x2f, 0x6d, + 0x79, 0x61, 0x6b, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x73, 0x73, 0x32, 0x30, 0x32, + 0x33, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -285,7 +285,7 @@ var file_banktransfer_banktransfer_proto_goTypes = []interface{}{ (*Account)(nil), // 0: banktransfer.Account (*Transaction)(nil), // 1: banktransfer.Transaction (*ProcessingResponse)(nil), // 2: banktransfer.ProcessingResponse - (*empty.Empty)(nil), // 3: google.protobuf.Empty + (*emptypb.Empty)(nil), // 3: google.protobuf.Empty } var file_banktransfer_banktransfer_proto_depIdxs = []int32{ 0, // 0: banktransfer.Transaction.from_account:type_name -> banktransfer.Account diff --git a/src/banktransfer/grpc/banktransfer/banktransfer.proto b/src/banktransfer/grpc/banktransfer/banktransfer.proto index a6ea937d1fde43ef2cfc5babc3dfc9a1a26bbf77..c7de1c3c8a9a84cc57a1b69aa73baeb6687d7f1d 100644 --- a/src/banktransfer/grpc/banktransfer/banktransfer.proto +++ b/src/banktransfer/grpc/banktransfer/banktransfer.proto @@ -11,19 +11,21 @@ service BankTransfer { rpc ProcessTransactions (stream ProcessingResponse) returns (stream Transaction) {} } -message Account { - string name = 1; - string bank_name =2; - string number = 3; - } - message Transaction { - int32 id = 1; - int32 donation_id = 2; - float amount = 3; - string reference = 4; - Account from_account = 5; - Account to_account = 6; - } - message ProcessingResponse { - int32 id = 1; -} \ No newline at end of file +message Account { + string name = 1; + string bank_name =2; + string number = 3; +} + +message Transaction { + int32 id = 1; + int32 donation_id = 2; + float amount = 3; + string reference = 4; + Account from_account = 5; + Account to_account = 6; +} + +message ProcessingResponse { + int32 id = 1; +} diff --git a/src/banktransfer/grpc/banktransfer/banktransfer_grpc.pb.go b/src/banktransfer/grpc/banktransfer/banktransfer_grpc.pb.go index edc2f69bb4c4cb43109851e8c35fe280e995c79a..02af0f7c343852c91d51beb9b2850b4e8be423fb 100644 --- a/src/banktransfer/grpc/banktransfer/banktransfer_grpc.pb.go +++ b/src/banktransfer/grpc/banktransfer/banktransfer_grpc.pb.go @@ -1,17 +1,13 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.12.4 -// source: banktransfer/banktransfer.proto package banktransfer import ( context "context" - empty "github.com/golang/protobuf/ptypes/empty" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" ) // This is a compile-time assertion to ensure that this generated file @@ -19,16 +15,11 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - BankTransfer_TransferMoney_FullMethodName = "/banktransfer.BankTransfer/TransferMoney" - BankTransfer_ProcessTransactions_FullMethodName = "/banktransfer.BankTransfer/ProcessTransactions" -) - // BankTransferClient is the client API for BankTransfer service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type BankTransferClient interface { - TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*empty.Empty, error) + TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*emptypb.Empty, error) ProcessTransactions(ctx context.Context, opts ...grpc.CallOption) (BankTransfer_ProcessTransactionsClient, error) } @@ -40,9 +31,9 @@ func NewBankTransferClient(cc grpc.ClientConnInterface) BankTransferClient { return &bankTransferClient{cc} } -func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*empty.Empty, error) { - out := new(empty.Empty) - err := c.cc.Invoke(ctx, BankTransfer_TransferMoney_FullMethodName, in, out, opts...) +func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/banktransfer.BankTransfer/TransferMoney", in, out, opts...) if err != nil { return nil, err } @@ -50,7 +41,7 @@ func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction, } func (c *bankTransferClient) ProcessTransactions(ctx context.Context, opts ...grpc.CallOption) (BankTransfer_ProcessTransactionsClient, error) { - stream, err := c.cc.NewStream(ctx, &BankTransfer_ServiceDesc.Streams[0], BankTransfer_ProcessTransactions_FullMethodName, opts...) + stream, err := c.cc.NewStream(ctx, &BankTransfer_ServiceDesc.Streams[0], "/banktransfer.BankTransfer/ProcessTransactions", opts...) if err != nil { return nil, err } @@ -84,7 +75,7 @@ func (x *bankTransferProcessTransactionsClient) Recv() (*Transaction, error) { // All implementations must embed UnimplementedBankTransferServer // for forward compatibility type BankTransferServer interface { - TransferMoney(context.Context, *Transaction) (*empty.Empty, error) + TransferMoney(context.Context, *Transaction) (*emptypb.Empty, error) ProcessTransactions(BankTransfer_ProcessTransactionsServer) error mustEmbedUnimplementedBankTransferServer() } @@ -93,7 +84,7 @@ type BankTransferServer interface { type UnimplementedBankTransferServer struct { } -func (UnimplementedBankTransferServer) TransferMoney(context.Context, *Transaction) (*empty.Empty, error) { +func (UnimplementedBankTransferServer) TransferMoney(context.Context, *Transaction) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method TransferMoney not implemented") } func (UnimplementedBankTransferServer) ProcessTransactions(BankTransfer_ProcessTransactionsServer) error { @@ -122,7 +113,7 @@ func _BankTransfer_TransferMoney_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: BankTransfer_TransferMoney_FullMethodName, + FullMethod: "/banktransfer.BankTransfer/TransferMoney", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(BankTransferServer).TransferMoney(ctx, req.(*Transaction)) diff --git a/src/banktransfer/main.go b/src/banktransfer/main.go index a76a5a7ff81aca9f67e4441cd71b9882ad294eb5..01c9753908b2ede887a45ba42c21de4089e89bfa 100644 --- a/src/banktransfer/main.go +++ b/src/banktransfer/main.go @@ -12,6 +12,7 @@ import ( ) func init() { + // init logger log.SetFormatter(&log.TextFormatter{}) log.SetReportCaller(true) level, err := log.ParseLevel(os.Getenv("LOG_LEVEL")) diff --git a/src/banktransfer/service/banktransfer.go b/src/banktransfer/service/banktransfer.go index 5aef1c2b41f4e52ce23d4ecf00534a2cc4b8fd41..8b840cf00cccc0c8d6268c11e18e3579e490c4a0 100644 --- a/src/banktransfer/service/banktransfer.go +++ b/src/banktransfer/service/banktransfer.go @@ -29,9 +29,10 @@ func NewBankTransferService() *BankTransferService { stop: make(chan struct{}), } } + func (s *BankTransferService) TransferMoney(_ context.Context, transaction *banktransfer.Transaction) (*emptypb.Empty, error) { entry := log.WithField("transaction", transaction) - entry.Info("Received transaction") + entry.Info(("Received transaction")) s.processTransaction(transaction) return &emptypb.Empty{}, nil } @@ -47,6 +48,10 @@ func (s *BankTransferService) processTransaction(transaction *banktransfer.Trans }(*transaction) } +func (s *BankTransferService) getUniqueId() int32 { + return atomic.AddInt32(&s.counter, 1) +} + func (s *BankTransferService) ProcessTransactions(stream banktransfer.BankTransfer_ProcessTransactionsServer) error { return func() error { for { @@ -91,9 +96,6 @@ func (s *BankTransferService) requeueTransaction(transaction *banktransfer.Trans }(*transaction) } -func (s *BankTransferService) getUniqueId() int32 { - return atomic.AddInt32(&s.counter, 1) -} func (s *BankTransferService) Start() { log.Info("Starting banktransfer service") go func() { diff --git a/src/myaktion/client/banktransfer.go b/src/myaktion/client/banktransfer.go index b6f66b5b3d27519da635194a2a67b06ac8adff36..99151ce5e41ece5dfd0f346fea4d6198f8dc170d 100644 --- a/src/myaktion/client/banktransfer.go +++ b/src/myaktion/client/banktransfer.go @@ -3,14 +3,12 @@ package client import ( "context" "os" - "time" log "github.com/sirupsen/logrus" "google.golang.org/grpc" ) var ( - TimeoutLimitation = time.Second * 10 bankTransferTarget = os.Getenv("BANKTRANSFER_CONNECT") ) diff --git a/src/myaktion/client/banktransfer/banktransfer.pb.go b/src/myaktion/client/banktransfer/banktransfer.pb.go index 0fe9fbc77f00a2edf90e32dffd7f2feb427f15c4..93f5ffc07e107e63fba5d273c5a69c674dad5d0e 100644 --- a/src/myaktion/client/banktransfer/banktransfer.pb.go +++ b/src/myaktion/client/banktransfer/banktransfer.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.12.4 +// protoc-gen-go v1.26.0 +// protoc v3.17.0 // source: banktransfer/banktransfer.proto package banktransfer import ( - empty "github.com/golang/protobuf/ptypes/empty" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" reflect "reflect" sync "sync" ) @@ -258,14 +258,14 @@ var file_banktransfer_banktransfer_proto_rawDesc = []byte{ 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x19, 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x59, - 0x5a, 0x57, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x72, 0x65, 0x75, 0x74, 0x6c, 0x69, 0x6e, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x64, + 0x5a, 0x62, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x72, 0x65, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x65, 0x6e, 0x2d, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x64, - 0x65, 0x2f, 0x61, 0x6c, 0x62, 0x72, 0x65, 0x63, 0x68, 0x74, 0x2f, 0x6d, 0x79, 0x61, 0x6b, 0x74, - 0x69, 0x6f, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6e, - 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x65, 0x2f, 0x67, 0x6f, 0x2d, 0x65, 0x78, 0x65, 0x72, 0x63, 0x69, 0x73, 0x65, 0x73, 0x2f, 0x6d, + 0x79, 0x61, 0x6b, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x73, 0x73, 0x32, 0x30, 0x32, + 0x33, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -285,7 +285,7 @@ var file_banktransfer_banktransfer_proto_goTypes = []interface{}{ (*Account)(nil), // 0: banktransfer.Account (*Transaction)(nil), // 1: banktransfer.Transaction (*ProcessingResponse)(nil), // 2: banktransfer.ProcessingResponse - (*empty.Empty)(nil), // 3: google.protobuf.Empty + (*emptypb.Empty)(nil), // 3: google.protobuf.Empty } var file_banktransfer_banktransfer_proto_depIdxs = []int32{ 0, // 0: banktransfer.Transaction.from_account:type_name -> banktransfer.Account diff --git a/src/myaktion/client/banktransfer/banktransfer.proto b/src/myaktion/client/banktransfer/banktransfer.proto index a6ea937d1fde43ef2cfc5babc3dfc9a1a26bbf77..c7de1c3c8a9a84cc57a1b69aa73baeb6687d7f1d 100644 --- a/src/myaktion/client/banktransfer/banktransfer.proto +++ b/src/myaktion/client/banktransfer/banktransfer.proto @@ -11,19 +11,21 @@ service BankTransfer { rpc ProcessTransactions (stream ProcessingResponse) returns (stream Transaction) {} } -message Account { - string name = 1; - string bank_name =2; - string number = 3; - } - message Transaction { - int32 id = 1; - int32 donation_id = 2; - float amount = 3; - string reference = 4; - Account from_account = 5; - Account to_account = 6; - } - message ProcessingResponse { - int32 id = 1; -} \ No newline at end of file +message Account { + string name = 1; + string bank_name =2; + string number = 3; +} + +message Transaction { + int32 id = 1; + int32 donation_id = 2; + float amount = 3; + string reference = 4; + Account from_account = 5; + Account to_account = 6; +} + +message ProcessingResponse { + int32 id = 1; +} diff --git a/src/myaktion/client/banktransfer/banktransfer_grpc.pb.go b/src/myaktion/client/banktransfer/banktransfer_grpc.pb.go index edc2f69bb4c4cb43109851e8c35fe280e995c79a..02af0f7c343852c91d51beb9b2850b4e8be423fb 100644 --- a/src/myaktion/client/banktransfer/banktransfer_grpc.pb.go +++ b/src/myaktion/client/banktransfer/banktransfer_grpc.pb.go @@ -1,17 +1,13 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.12.4 -// source: banktransfer/banktransfer.proto package banktransfer import ( context "context" - empty "github.com/golang/protobuf/ptypes/empty" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" ) // This is a compile-time assertion to ensure that this generated file @@ -19,16 +15,11 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - BankTransfer_TransferMoney_FullMethodName = "/banktransfer.BankTransfer/TransferMoney" - BankTransfer_ProcessTransactions_FullMethodName = "/banktransfer.BankTransfer/ProcessTransactions" -) - // BankTransferClient is the client API for BankTransfer service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type BankTransferClient interface { - TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*empty.Empty, error) + TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*emptypb.Empty, error) ProcessTransactions(ctx context.Context, opts ...grpc.CallOption) (BankTransfer_ProcessTransactionsClient, error) } @@ -40,9 +31,9 @@ func NewBankTransferClient(cc grpc.ClientConnInterface) BankTransferClient { return &bankTransferClient{cc} } -func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*empty.Empty, error) { - out := new(empty.Empty) - err := c.cc.Invoke(ctx, BankTransfer_TransferMoney_FullMethodName, in, out, opts...) +func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/banktransfer.BankTransfer/TransferMoney", in, out, opts...) if err != nil { return nil, err } @@ -50,7 +41,7 @@ func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction, } func (c *bankTransferClient) ProcessTransactions(ctx context.Context, opts ...grpc.CallOption) (BankTransfer_ProcessTransactionsClient, error) { - stream, err := c.cc.NewStream(ctx, &BankTransfer_ServiceDesc.Streams[0], BankTransfer_ProcessTransactions_FullMethodName, opts...) + stream, err := c.cc.NewStream(ctx, &BankTransfer_ServiceDesc.Streams[0], "/banktransfer.BankTransfer/ProcessTransactions", opts...) if err != nil { return nil, err } @@ -84,7 +75,7 @@ func (x *bankTransferProcessTransactionsClient) Recv() (*Transaction, error) { // All implementations must embed UnimplementedBankTransferServer // for forward compatibility type BankTransferServer interface { - TransferMoney(context.Context, *Transaction) (*empty.Empty, error) + TransferMoney(context.Context, *Transaction) (*emptypb.Empty, error) ProcessTransactions(BankTransfer_ProcessTransactionsServer) error mustEmbedUnimplementedBankTransferServer() } @@ -93,7 +84,7 @@ type BankTransferServer interface { type UnimplementedBankTransferServer struct { } -func (UnimplementedBankTransferServer) TransferMoney(context.Context, *Transaction) (*empty.Empty, error) { +func (UnimplementedBankTransferServer) TransferMoney(context.Context, *Transaction) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method TransferMoney not implemented") } func (UnimplementedBankTransferServer) ProcessTransactions(BankTransfer_ProcessTransactionsServer) error { @@ -122,7 +113,7 @@ func _BankTransfer_TransferMoney_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: BankTransfer_TransferMoney_FullMethodName, + FullMethod: "/banktransfer.BankTransfer/TransferMoney", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(BankTransferServer).TransferMoney(ctx, req.(*Transaction)) diff --git a/src/myaktion/db/db.go b/src/myaktion/db/db.go index c3946452b15352c20571ee135964504db89bca4b..9b7803b5ece3a6a8e141f276b1bc97dacacbcac7 100644 --- a/src/myaktion/db/db.go +++ b/src/myaktion/db/db.go @@ -6,7 +6,6 @@ import ( "os" log "github.com/sirupsen/logrus" - "gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/model" "gorm.io/driver/mysql" "gorm.io/gorm" diff --git a/src/myaktion/docker-entrypoint.sh b/src/myaktion/docker-entrypoint.sh index 1e411c6ff4aa62cefd39b4ba5e12aa1531878f56..ab3b0d48e06de3d272f8e10365f2b125063ff2e0 100644 --- a/src/myaktion/docker-entrypoint.sh +++ b/src/myaktion/docker-entrypoint.sh @@ -4,12 +4,13 @@ set -e # Wait for DB if [ -n "$DB_CONNECT" ]; then - /go/src/app/wait-for-it.sh "$DB_CONNECT" -t 40 + /go/src/app/wait-for-it.sh "$DB_CONNECT" -t 20 fi # Wait for banktransfer if [ -n "$BANKTRANSFER_CONNECT" ]; then - /go/src/app/wait-for-it.sh "$BANKTRANSFER_CONNECT" -t 40 + /go/src/app/wait-for-it.sh "$BANKTRANSFER_CONNECT" -t 20 fi -# Run the +# Run the main container command. +exec "$@" \ No newline at end of file diff --git a/src/myaktion/go.mod b/src/myaktion/go.mod index f9629e56c18bc46651a3c5c9fa6c5ea3a2c0ec7c..e0f3cd6c4e0754da649f3d58d94245c93d519f27 100644 --- a/src/myaktion/go.mod +++ b/src/myaktion/go.mod @@ -4,10 +4,9 @@ go 1.20 require ( github.com/gorilla/mux v1.8.0 - github.com/ory/dockertest/v3 v3.10.0 - github.com/sirupsen/logrus v1.9.2 - gorm.io/driver/mysql v1.5.1 - gorm.io/gorm v1.25.1 + github.com/sirupsen/logrus v1.9.0 + google.golang.org/grpc v1.55.0 + google.golang.org/protobuf v1.30.0 ) require ( @@ -20,12 +19,10 @@ require ( github.com/docker/docker v20.10.7+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.4.0 // indirect - github.com/go-sql-driver/mysql v1.7.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/imdario/mergo v0.3.12 // indirect - github.com/jinzhu/inflection v1.0.0 // indirect - github.com/jinzhu/now v1.1.5 // indirect github.com/mitchellh/mapstructure v1.4.1 // indirect github.com/moby/term v0.0.0-20201216013528-df9cb8a40635 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect @@ -36,7 +33,19 @@ require ( github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect golang.org/x/mod v0.9.0 // indirect - golang.org/x/sys v0.7.0 // indirect + golang.org/x/net v0.8.0 // indirect + golang.org/x/text v0.8.0 // indirect golang.org/x/tools v0.7.0 // indirect + google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect gopkg.in/yaml.v2 v2.3.0 // indirect ) + +require ( + github.com/go-sql-driver/mysql v1.7.1 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/ory/dockertest/v3 v3.10.0 + golang.org/x/sys v0.7.0 // indirect + gorm.io/driver/mysql v1.5.0 + gorm.io/gorm v1.25.0 +) diff --git a/src/myaktion/go.sum b/src/myaktion/go.sum index c0123193f8b6f749f856777a3ad3dfc244771bee..de6d10a85db211201013b3614b462e97f038d34b 100644 --- a/src/myaktion/go.sum +++ b/src/myaktion/go.sum @@ -37,11 +37,13 @@ github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= @@ -83,8 +85,8 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= -github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -116,6 +118,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -138,6 +142,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -148,10 +154,16 @@ golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -159,9 +171,10 @@ gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw= -gorm.io/driver/mysql v1.5.1/go.mod h1:Jo3Xu7mMhCyj8dlrb3WoCaRd1FhsVh+yMXb1jUInf5o= -gorm.io/gorm v1.25.1 h1:nsSALe5Pr+cM3V1qwwQ7rOkw+6UeLrX5O4v3llhHa64= -gorm.io/gorm v1.25.1/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/driver/mysql v1.5.0 h1:6hSAT5QcyIaty0jfnff0z0CLDjyRgZ8mlMHLqSt7uXM= +gorm.io/driver/mysql v1.5.0/go.mod h1:FFla/fJuCvyTi7rJQd27qlNX2v3L6deTR1GgTjSOLPo= +gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/gorm v1.25.0 h1:+KtYtb2roDz14EQe4bla8CbQlmb9dN3VejSai3lprfU= +gorm.io/gorm v1.25.0/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.3.0 h1:MfDY1b1/0xN1CyMlQDac0ziEy9zJQd9CXBRRDHw2jJo= diff --git a/src/myaktion/handler/health.go b/src/myaktion/handler/health.go index eeae12cce56c3560db212971dc17e13e8dfbf619..bb62dc721e584bf5bd0959ed81692ba935a289e5 100644 --- a/src/myaktion/handler/health.go +++ b/src/myaktion/handler/health.go @@ -3,14 +3,9 @@ package handler import ( "io" "net/http" - - log "github.com/sirupsen/logrus" ) func Health(w http.ResponseWriter, r *http.Request) { - log.Infof(`{"alive": true}`) - - //kann das gelöscht werden? w.Header().Set("Content-Type", "application/json") io.WriteString(w, `{"alive": true}`) } diff --git a/src/myaktion/handler/health_test.go b/src/myaktion/handler/health_test.go index 11c3d31ab97ef677353e14a2f3c310e365ca6b4f..de18bf7b618be9c6aead5a16896b0184d76d5de4 100644 --- a/src/myaktion/handler/health_test.go +++ b/src/myaktion/handler/health_test.go @@ -1,19 +1,21 @@ -package handler +package handler_test import ( "net/http" "net/http/httptest" "testing" + + "gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/handler" ) func TestHealth(t *testing.T) { rr := httptest.NewRecorder() req := httptest.NewRequest("GET", "/health", nil) - handler := http.HandlerFunc(Health) + handler := http.HandlerFunc(handler.Health) handler.ServeHTTP(rr, req) if status := rr.Code; status != http.StatusOK { - t.Errorf("handler returned wrong status code: got %v wand %v", status, http.StatusOK) + t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK) } expected := `{"alive": true}` diff --git a/src/myaktion/handler/utils.go b/src/myaktion/handler/util.go similarity index 100% rename from src/myaktion/handler/utils.go rename to src/myaktion/handler/util.go diff --git a/src/myaktion/main.go b/src/myaktion/main.go index a434fc55c8f956bf08f472e45588caa98fd7c1a7..f36824ab4bdb1307811787d458bcb160b81db2c4 100644 --- a/src/myaktion/main.go +++ b/src/myaktion/main.go @@ -1,17 +1,22 @@ package main import ( - "net/http" + "fmt" "os" - "github.com/gorilla/mux" log "github.com/sirupsen/logrus" + + "net/http" + + "github.com/gorilla/mux" "gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/db" "gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/handler" ) func init() { + //ensure that logger is initialized before connecting to DB defer db.Init() + // init logger log.SetFormatter(&log.TextFormatter{}) log.SetReportCaller(true) level, err := log.ParseLevel(os.Getenv("LOG_LEVEL")) @@ -24,9 +29,8 @@ func init() { } func main() { - log.Println("Starting My-Aktion API server") + fmt.Println("Starting MyAktion API server") router := mux.NewRouter() - router.HandleFunc("/health", handler.Health).Methods("GET") router.HandleFunc("/campaigns", handler.CreateCampaign).Methods("POST") router.HandleFunc("/campaigns", handler.GetCampaigns).Methods("GET") @@ -34,7 +38,6 @@ func main() { router.HandleFunc("/campaigns/{id}", handler.UpdateCampaign).Methods("PUT") router.HandleFunc("/campaigns/{id}", handler.DeleteCampaign).Methods("DELETE") router.HandleFunc("/campaigns/{id}/donation", handler.AddDonation).Methods("POST") - go monitortransactions() if err := http.ListenAndServe(":8000", router); err != nil { log.Fatal(err) diff --git a/src/myaktion/model/account.go b/src/myaktion/model/account.go index 9d02bf4bf7c1b2d55394ea88d7545571e8435ace..e0e927a4fb79407d154369da6f151a4cc1151487 100644 --- a/src/myaktion/model/account.go +++ b/src/myaktion/model/account.go @@ -2,6 +2,6 @@ package model type Account struct { Name string `gorm:"notNull;size:60"` - BankName string `gorm:"notNull;size:60"` - Number string `gorm:"notNull;size:60"` + BankName string `gorm:"notNull;size:40"` + Number string `gorm:"notNull;size:20"` } diff --git a/src/myaktion/model/campaign.go b/src/myaktion/model/campaign.go index d6a4cb707173197d60741497dc7d53da1fadc4f7..596d6c958ceb3d8c5b57c699018e6a343684347c 100644 --- a/src/myaktion/model/campaign.go +++ b/src/myaktion/model/campaign.go @@ -7,9 +7,9 @@ type Campaign struct { Name string `gorm:"notNull;size:30"` OrganizerName string `gorm:"notNull"` TargetAmount float64 `gorm:"notNull;check:target_amount >= 10.0"` - DonationMinimum float64 `gorm:"notNull;check:target_amount >= 1.0"` - AmountDonatedSoFar float64 `gorm:"-"` + DonationMinimum float64 `gorm:"notNull;check:donation_minimum >= 1.0"` Donations []Donation `gorm:"foreignKey:CampaignID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"` + AmountDonatedSoFar float64 `gorm:"-"` Account Account `gorm:"embedded;embeddedPrefix:account_"` } diff --git a/src/myaktion/model/donation.go b/src/myaktion/model/donation.go index fca92ae133d203f0ffaeefb850cab7a33ea3325f..fffdfce568349e4696c4ee9834b0672b8aed901d 100644 --- a/src/myaktion/model/donation.go +++ b/src/myaktion/model/donation.go @@ -2,19 +2,19 @@ package model import "gorm.io/gorm" +type Status string + +const ( + TRANSFERRED Status = "TRANSFERRED" + IN_PROCESS Status = "IN_PROCESS" +) + type Donation struct { gorm.Model CampaignID uint Amount float64 `gorm:"notNull;check:amount >= 1.0"` DonorName string `gorm:"notNull;size:40"` ReceiptRequested bool `gorm:"notNull"` + Status Status `gorm:"notNull;type:ENUM('TRANSFERRED', 'IN_PROCESS')"` Account Account `gorm:"embedded;embeddedPrefix:account_"` - Status Status `gorm:"notNull;type:ENUM('TRANSFERRED','IN_PROCESS')"` } - -type Status string - -const ( - TRANSFERRED Status = "TRANSFERRED" - IN_PROCESS Status = "IN_PROCESS" -) diff --git a/src/myaktion/monitor.go b/src/myaktion/monitor.go index db1de6f2caad8e62d1192d8d96bc525fb6853e82..e50317b6f0d973a5b9f254a4193422e9bcbf3be9 100644 --- a/src/myaktion/monitor.go +++ b/src/myaktion/monitor.go @@ -18,13 +18,14 @@ func monitortransactions() { } func connectandmonitor() { - ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() conn, err := client.GetBankTransferConnection(ctx) if err != nil { log.WithError(err).Fatal("error connecting to the banktransfer service") } defer conn.Close() + banktransferClient := banktransfer.NewBankTransferClient(conn) watcher, err := banktransferClient.ProcessTransactions(ctx) if err != nil { @@ -48,7 +49,7 @@ func connectandmonitor() { entry.WithError(err).Error("error changing donation status") continue } - entry.Info("Received transaction. Sending processing response") + entry.Info("Sending processing response") err = watcher.Send(&banktransfer.ProcessingResponse{Id: transaction.Id}) if err != nil { entry.WithError(err).Error("error sending processing response") diff --git a/src/myaktion/service/donation.go b/src/myaktion/service/donation.go index dc82d9f6845abc007e5dc04a4e5d0d0f8b55e414..4736c7e54396d6b1b03e0a5830df8c937ee633fe 100644 --- a/src/myaktion/service/donation.go +++ b/src/myaktion/service/donation.go @@ -17,11 +17,13 @@ func AddDonation(campaignId uint, donation *model.Donation) error { if err != nil { return err } + donation.CampaignID = campaignId result := db.DB.Create(donation) if result.Error != nil { return result.Error } + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() conn, err := client.GetBankTransferConnection(ctx) @@ -31,6 +33,7 @@ func AddDonation(campaignId uint, donation *model.Donation) error { return err } defer conn.Close() + banktransferClient := banktransfer.NewBankTransferClient(conn) _, err = banktransferClient.TransferMoney(ctx, &banktransfer.Transaction{ DonationId: int32(donation.ID), @@ -44,13 +47,13 @@ func AddDonation(campaignId uint, donation *model.Donation) error { deleteDonation(donation) return err } + entry := log.WithField("ID", campaignId) entry.Info("Successfully added new donation to campaign in database.") entry.Tracef("Stored: %v", donation) return nil } -// Helper-Funktionen func convertAccount(account *model.Account) *banktransfer.Account { return &banktransfer.Account{ Name: account.Name, diff --git a/src/myaktion/wait-for-it.sh b/src/myaktion/wait-for-it.sh index d990e0d364f576ee83cd699707076ca49ad36a4d..3974640b053e6f84a21c292c01e3674348445831 100644 --- a/src/myaktion/wait-for-it.sh +++ b/src/myaktion/wait-for-it.sh @@ -179,4 +179,4 @@ if [[ $WAITFORIT_CLI != "" ]]; then exec "${WAITFORIT_CLI[@]}" else exit $WAITFORIT_RESULT -fi +fi \ No newline at end of file