1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2025-01-04 13:23:00 +02:00

сделал grpc_client_func.go

This commit is contained in:
Nikitin Aleksandr 2024-08-13 15:01:30 +03:00
parent a4a9e58bb0
commit 6f4d3f077d
7 changed files with 121 additions and 77 deletions

View File

@ -8,16 +8,16 @@ import (
"github.com/ManyakRus/starter/port_checker"
"github.com/ManyakRus/starter/stopapp"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/crud_starter"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_client_func"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_constants"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc_nrpc"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/nrpc/nrpc_client"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/db_constants"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"os"
"strings"
"sync"
"time"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc_nrpc"
)
// SettingsINI - тип структуры для хранения настроек подключени
@ -32,15 +32,16 @@ var Settings SettingsINI
// Conn - подключение к серверу GRPC
var Conn *grpc.ClientConn
// Client - подключение к клиенту GRPC
var Client grpc_proto.SyncServiceClient
// mutex_Connect - защита от многопоточности Reconnect()
var mutex_Connect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool
// Объект с функцией Connect_GRPC_NRPC()
type Object_Connect_GRPC_NRPC struct {
}
// Connect - подключается к серверу GRPC, при ошибке вызывает панику
func Connect() {
var err error
@ -64,6 +65,10 @@ func Connect_err() error {
mutex_Connect.Lock()
defer mutex_Connect.Unlock()
//
grpc_client_func.Func_Connect_GRPC_NRPC = Object_Connect_GRPC_NRPC{}
crud_starter.InitCrudTransport_GRPC()
//
if Settings.SYNC_SERVICE_HOST == "" {
err = FillSettings()
@ -78,7 +83,7 @@ func Connect_err() error {
return err
}
Client = grpc_proto.NewSyncServiceClient(Conn)
grpc_client_func.Client = grpc_proto.NewSyncServiceClient(Conn)
grpc_nrpc.NeedNRPC = false
@ -176,23 +181,6 @@ func CloseConnection_err() error {
return err
}
// IsRecordNotFound - возвращает true если ошибка = "record not found"
func IsRecordNotFound(err error) bool {
Otvet := false
if err == nil {
return Otvet
}
TextErr := err.Error()
pos1 := strings.Index(TextErr, db_constants.TEXT_RECORD_NOT_FOUND)
if pos1 >= 0 {
Otvet = true
}
return Otvet
}
// ping_go - делает пинг каждые 60 секунд, и реконнект
func ping_go() {
@ -242,26 +230,14 @@ func SetTimeoutSeconds(seconds int) {
}
// Connect_GRPC_NRPC - подключается к серверу GRPC или NRPC, при ошибке вызывает панику
func Connect_GRPC_NRPC() {
func (Object_Connect_GRPC_NRPC) Connect_GRPC_NRPC() {
if grpc_nrpc.NeedNRPC == true {
if nrpc_client.Client == nil {
nrpc_client.Connect()
}
} else {
if Client == nil {
if grpc_client_func.Client == nil {
Connect()
}
}
}
// IsErrorModelVersion - возвращает true если ошибка TEXT_ERROR_MODEL_VERSION
func IsErrorModelVersion(err error) bool {
Otvet := false
sError := err.Error()
if strings.Contains(sError, grpc_constants.TEXT_ERROR_MODEL_VERSION) == true {
Otvet = true
}
return Otvet
}

View File

@ -1,23 +1,14 @@
package grpc_client
import (
"errors"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/db_constants"
"github.com/ManyakRus/starter/config_main"
"testing"
)
func TestIsRecordNotFound(t *testing.T) {
err := errors.New(db_constants.TEXT_RECORD_NOT_FOUND + " !")
Otvet := IsRecordNotFound(err)
if Otvet != true {
t.Error("TestIsRecordNotFound() error: false")
func TestFillSettings(t *testing.T) {
config_main.LoadEnvTest()
err := FillSettings()
if err != nil {
t.Error("FillSettings() error: ", err)
}
err = errors.New("rpc error: code = Unknown desc = record not found")
Otvet = IsRecordNotFound(err)
if Otvet != true {
t.Error("TestIsRecordNotFound() error: false")
}
}

View File

@ -0,0 +1,48 @@
package grpc_client_func
import (
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/db_constants"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_constants"
"strings"
)
// Client - подключение к клиенту GRPC
var Client grpc_proto.SyncServiceClient
// интерфейс для запуска функции IConnect_GRPC_NRPC
type IConnect_GRPC_NRPC interface {
Connect_GRPC_NRPC()
}
// функция для запуска функции Connect_GRPC_NRPC()
var Func_Connect_GRPC_NRPC IConnect_GRPC_NRPC
// IsErrorModelVersion - возвращает true если ошибка TEXT_ERROR_MODEL_VERSION
func IsErrorModelVersion(err error) bool {
Otvet := false
sError := err.Error()
if strings.Contains(sError, grpc_constants.TEXT_ERROR_MODEL_VERSION) == true {
Otvet = true
}
return Otvet
}
// IsRecordNotFound - возвращает true если ошибка = "record not found"
func IsRecordNotFound(err error) bool {
Otvet := false
if err == nil {
return Otvet
}
TextErr := err.Error()
pos1 := strings.Index(TextErr, db_constants.TEXT_RECORD_NOT_FOUND)
if pos1 >= 0 {
Otvet = true
}
return Otvet
}

View File

@ -0,0 +1,23 @@
package grpc_client_func
import (
"errors"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/db_constants"
"testing"
)
func TestIsRecordNotFound(t *testing.T) {
err := errors.New(db_constants.TEXT_RECORD_NOT_FOUND + " !")
Otvet := IsRecordNotFound(err)
if Otvet != true {
t.Error("TestIsRecordNotFound() error: false")
}
err = errors.New("rpc error: code = Unknown desc = record not found")
Otvet = IsRecordNotFound(err)
if Otvet != true {
t.Error("TestIsRecordNotFound() error: false")
}
}

View File

@ -4,6 +4,9 @@
//Файл создан автоматически кодогенератором crud_generator
//Не изменяйте ничего здесь.
//Файл создан автоматически кодогенератором crud_generator
//Не изменяйте ничего здесь.
package nrpc_client
import (
@ -15,12 +18,12 @@ import (
"github.com/ManyakRus/starter/stopapp"
"github.com/nats-io/nats.go"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/db_constants"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_client_func"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc_nrpc"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/nrpc/nrpc_constants"
"sync"
"os"
"strings"
"time"
)
@ -45,6 +48,10 @@ var mutex_Connect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool
// Объект с функцией Connect_GRPC_NRPC()
type Object_Connect_GRPC_NRPC struct {
}
// Connect - подключается к серверу NRPC, при ошибке вызывает панику
func Connect() {
var err error
@ -68,6 +75,8 @@ func Connect_err() error {
mutex_Connect.Lock()
defer mutex_Connect.Unlock()
grpc_client_func.Func_Connect_GRPC_NRPC = Object_Connect_GRPC_NRPC{}
if Settings.NATS_HOST == "" {
FillSettings()
}
@ -177,25 +186,6 @@ func CloseConnection() {
log.Info("NRPC client connection closed")
}
// IsRecordNotFound - возвращает true если ошибка = "record not found"
func IsRecordNotFound(err error) bool {
Otvet := false
if err == nil {
return Otvet
}
// len1 := len(db_constants.TEXT_RECORD_NOT_FOUND)
TextErr := err.Error()
pos1 := strings.Index(TextErr, db_constants.TEXT_RECORD_NOT_FOUND)
// if TextErr[0:len1] == db_constants.TEXT_RECORD_NOT_FOUND {
if pos1 >= 0 {
Otvet = true
}
return Otvet
}
// ping_go - делает пинг каждые 60 секунд, и реконнект
func ping_go() {
@ -243,3 +233,16 @@ func GetTimeoutSeconds() int {
func SetTimeoutSeconds(seconds int) {
nrpc_constants.SetTimeoutSeconds(seconds)
}
// Connect_GRPC_NRPC - подключается к серверу GRPC или NRPC, при ошибке вызывает панику
func (Object_Connect_GRPC_NRPC) Connect_GRPC_NRPC() {
if grpc_nrpc.NeedNRPC == true {
if Client == nil {
Connect()
}
} else {
if grpc_client_func.Client == nil {
Connect()
}
}
}

View File

@ -1,3 +1,6 @@
//Файл создан автоматически кодогенератором crud_generator
//Не изменяйте ничего здесь.
package nrpc_client
import (

View File

@ -195,7 +195,7 @@ func CreateFilesTest(Table1 *types.Table) error {
FilenameTemplateGRPCClient := DirTemplatesGRPCClient + "grpc_client_table_test.go_"
TableName := strings.ToLower(Table1.Name)
DirReadyTable := DirReadyGRPCClient + "grpc_" + TableName + micro.SeparatorFile()
DirReadyTable := DirReadyGRPCClient + "grpc_" + TableName + micro.SeparatorFile() + "tests" + micro.SeparatorFile()
FilenameReadyGRPCClient := DirReadyTable + "grpc_" + TableName + "_test.go"
//создадим папку готовых файлов
@ -563,7 +563,7 @@ func CreateFilesUpdateEveryColumnTest(Table1 *types.Table) error {
DirReadyGRPC_Client := DirReady + config.Settings.TEMPLATE_FOLDERNAME_GRPC_CLIENT + micro.SeparatorFile() + config.Settings.PREFIX_CLIENT_GRPC + TableName + micro.SeparatorFile()
FilenameTemplateGRPC_ClientFunc := DirTemplatesGRPC_Client + constants.GRPC_CLIENT_TABLE_UPDATE_FUNC_TEST_FILENAME
DirReadyTable := DirReadyGRPC_Client
DirReadyTable := DirReadyGRPC_Client + "tests" + micro.SeparatorFile()
FilenameReadyGRPC_ClientUpdate := DirReadyTable + config.Settings.PREFIX_CLIENT_GRPC + TableName + "_update_test.go"
//создадим папку готовых файлов
@ -819,7 +819,7 @@ func CreateFiles_GRPC_Client_Cache_Test(Table1 *types.Table) error {
FilenameTemplateCache := DirTemplatesCache + config.Settings.TEMPLATES_GRPC_CLIENT_TABLES_CACHE_TEST_FILENAME
TableName := strings.ToLower(Table1.Name)
DirReadyTable := DirReadyCache + "grpc_" + TableName + micro.SeparatorFile()
DirReadyTable := DirReadyCache + "grpc_" + TableName + micro.SeparatorFile() + "tests" + micro.SeparatorFile()
FilenameReadyCache := DirReadyTable + "grpc_" + TableName + "_cache_test.go"
//создадим папку готовых файлов