1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2024-12-22 00:36:41 +02:00

сделал fmt.Errorf("Read()

This commit is contained in:
Nikitin Aleksandr 2024-02-02 12:51:59 +03:00
parent aa46709a6b
commit 8e96c88d70
8 changed files with 232 additions and 53 deletions

View File

@ -48,6 +48,9 @@ func (crud Crud_DB) Read_ctx(ctx context.Context, m *lawsuit_status_types.Lawsui
tx := db.First(m, id) tx := db.First(m, id)
err = tx.Error err = tx.Error
if err != nil {
err = fmt.Errorf("Read() id: %v, error: %v", m.id, err)
}
return err return err
} }
@ -192,6 +195,9 @@ func (crud Crud_DB) create_update_ctx(ctx context.Context, m *lawsuit_status_typ
err = errors.New(TextError) err = errors.New(TextError)
return err return err
} }
if err != nil {
err = fmt.Errorf("Create_update() id: %v, error: %v", m.id, err)
}
return err return err
} }
@ -228,6 +234,9 @@ func (crud Crud_DB) Delete_ctx(ctx context.Context, m *lawsuit_status_types.Laws
m.IsDeleted = true m.IsDeleted = true
err = crud.Save_ctx(ctx, &m2) err = crud.Save_ctx(ctx, &m2)
if err != nil {
err = fmt.Errorf("Delete() id: %v, error: %v", m.id, err)
}
return err return err
} }
@ -264,6 +273,9 @@ func (crud Crud_DB) Restore_ctx(ctx context.Context, m *lawsuit_status_types.Law
m.IsDeleted = false m.IsDeleted = false
err = crud.Save_ctx(ctx, &m2) err = crud.Save_ctx(ctx, &m2)
if err != nil {
err = fmt.Errorf("Restore() id: %v, error: %v", m.id, err)
}
return err return err
} }
@ -306,6 +318,9 @@ func (crud Crud_DB) Find_ByExtID_ctx(ctx context.Context, m *lawsuit_status_type
tx := db.Where("ext_id = ?", m.ExtID).Where("connection_id = ?", m.ConnectionID).First(m) tx := db.Where("ext_id = ?", m.ExtID).Where("connection_id = ?", m.ConnectionID).First(m)
err = tx.Error err = tx.Error
if err != nil {
err = fmt.Errorf("Find_ByExtID() id: %v, error: %v", m.id, err)
}
return err return err
} }

View File

@ -48,6 +48,9 @@ func (crud Crud_DB) Read_ctx(ctx context.Context, m *lawsuit_status_types.Lawsui
tx := db.First(m, id) tx := db.First(m, id)
err = tx.Error err = tx.Error
if err != nil {
err = fmt.Errorf("Read() id: %v, error: %v", id, err)
}
return err return err
} }
@ -192,6 +195,9 @@ func (crud Crud_DB) create_update_ctx(ctx context.Context, m *lawsuit_status_typ
err = errors.New(TextError) err = errors.New(TextError)
return err return err
} }
if err != nil {
err = fmt.Errorf("Create_Update() id: %v, error: %v", m.id, err)
}
return err return err
} }
@ -228,6 +234,9 @@ func (crud Crud_DB) Delete_ctx(ctx context.Context, m *lawsuit_status_types.Laws
m.IsDeleted = true m.IsDeleted = true
err = crud.Save_ctx(ctx, &m2) err = crud.Save_ctx(ctx, &m2)
if err != nil {
err = fmt.Errorf("Delete() id: %v, error: %v", m.id, err)
}
return err return err
} }
@ -264,6 +273,9 @@ func (crud Crud_DB) Restore_ctx(ctx context.Context, m *lawsuit_status_types.Law
m.IsDeleted = false m.IsDeleted = false
err = crud.Save_ctx(ctx, &m2) err = crud.Save_ctx(ctx, &m2)
if err != nil {
err = fmt.Errorf("Restore() id: %v, error: %v", m.id, err)
}
return err return err
} }
@ -306,6 +318,9 @@ func (crud Crud_DB) Find_ByExtID_ctx(ctx context.Context, m *lawsuit_status_type
tx := db.Where("ext_id = ?", m.ExtID).Where("connection_id = ?", m.ConnectionID).First(m) tx := db.Where("ext_id = ?", m.ExtID).Where("connection_id = ?", m.ConnectionID).First(m)
err = tx.Error err = tx.Error
if err != nil {
err = fmt.Errorf("Find_ByExtID() id: %v, error: %v", m.id, err)
}
return err return err
} }

View File

@ -1,5 +1,28 @@
package constants package constants
var TIMEOUT_SECONDS = 30 import "sync"
// timeout_seconds - время ожидания ответа
var timeout_seconds int = 30
// TEXT_ERROR_MODEL_VERSION - текст ошибки версии модели
const TEXT_ERROR_MODEL_VERSION = "Error: wrong version object model" const TEXT_ERROR_MODEL_VERSION = "Error: wrong version object model"
// mutex_TIMEOUT_SECONDS - защита от многопоточности GetTimeoutSeconds()
var mutex_TIMEOUT_SECONDS sync.RWMutex
// GetTimeoutSeconds - возвращает время ожидания ответа
func GetTimeoutSeconds() int {
mutex_TIMEOUT_SECONDS.RLock()
defer mutex_TIMEOUT_SECONDS.RUnlock()
return timeout_seconds
}
// SetTimeoutSeconds - устанавливает время ожидания ответа
func SetTimeoutSeconds(seconds int) {
mutex_TIMEOUT_SECONDS.Lock()
defer mutex_TIMEOUT_SECONDS.Unlock()
timeout_seconds = seconds
}

View File

@ -2,12 +2,14 @@ package grpc_client
import ( import (
"context" "context"
"errors"
"github.com/ManyakRus/starter/contextmain" "github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log" "github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/port_checker" "github.com/ManyakRus/starter/port_checker"
"github.com/ManyakRus/starter/stopapp" "github.com/ManyakRus/starter/stopapp"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto" "gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/constants" "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/constants"
grpc_constants "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/constants"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/credentials/insecure"
"os" "os"
@ -31,8 +33,8 @@ var Conn *grpc.ClientConn
// Client - подключение к клиенту GRPC // Client - подключение к клиенту GRPC
var Client grpc_proto.SyncServiceClient var Client grpc_proto.SyncServiceClient
// mutexReconnect - защита от многопоточности Reconnect() // mutex_Connect - защита от многопоточности Reconnect()
var mutexReconnect = &sync.Mutex{} var mutex_Connect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения // NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool var NeedReconnect bool
@ -44,7 +46,7 @@ func Connect() {
err = Connect_err() err = Connect_err()
if err != nil { if err != nil {
log.Fatalf("GRPC Connect() error: %v", err) log.Panicf("GRPC Connect() error: %v", err)
} else { } else {
addr := Settings.SYNC_SERVICE_HOST + ":" + Settings.SYNC_SERVICE_PORT addr := Settings.SYNC_SERVICE_HOST + ":" + Settings.SYNC_SERVICE_PORT
log.Info("GRPC client connected. Address: ", addr) log.Info("GRPC client connected. Address: ", addr)
@ -56,29 +58,48 @@ func Connect() {
func Connect_err() error { func Connect_err() error {
var err error var err error
//
mutex_Connect.Lock()
defer mutex_Connect.Unlock()
//
if Settings.SYNC_SERVICE_HOST == "" { if Settings.SYNC_SERVICE_HOST == "" {
FillSettings() err = FillSettings()
if err != nil {
return err
}
} }
addr := Settings.SYNC_SERVICE_HOST + ":" + Settings.SYNC_SERVICE_PORT addr := Settings.SYNC_SERVICE_HOST + ":" + Settings.SYNC_SERVICE_PORT
Conn, err = grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials())) Conn, err = grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
return err
}
Client = grpc_proto.NewSyncServiceClient(Conn) Client = grpc_proto.NewSyncServiceClient(Conn)
return err return err
} }
func FillSettings() { func FillSettings() error {
var err error
Settings = SettingsINI{} Settings = SettingsINI{}
Settings.SYNC_SERVICE_HOST = os.Getenv("SYNC_SERVICE_HOST") Settings.SYNC_SERVICE_HOST = os.Getenv("SYNC_SERVICE_HOST")
Settings.SYNC_SERVICE_PORT = os.Getenv("SYNC_SERVICE_PORT") Settings.SYNC_SERVICE_PORT = os.Getenv("SYNC_SERVICE_PORT")
if Settings.SYNC_SERVICE_HOST == "" { if Settings.SYNC_SERVICE_HOST == "" {
log.Panic("Need fill SYNC_SERVICE_HOST ! in OS Environment ") TextError := "Need fill SYNC_SERVICE_HOST ! in OS Environment "
err = errors.New(TextError)
return err
} }
if Settings.SYNC_SERVICE_PORT == "" { if Settings.SYNC_SERVICE_PORT == "" {
log.Panic("Need fill SYNC_SERVICE_PORT ! in OS Environment ") TextError := "Need fill SYNC_SERVICE_PORT ! in OS Environment "
err = errors.New(TextError)
return err
} }
return err
} }
// WaitStop - ожидает отмену глобального контекста // WaitStop - ожидает отмену глобального контекста
@ -99,20 +120,9 @@ func WaitStop() {
// Start - необходимые процедуры для запуска сервера GRPC // Start - необходимые процедуры для запуска сервера GRPC
// если контекст хранится в contextmain.GetContext() // если контекст хранится в contextmain.GetContext()
// и есть stopapp.GetWaitGroup_Main()
// при ошибке вызывает панику
func Start() { func Start() {
contextmain.GetContext()
ctx := contextmain.Ctx
wg := stopapp.GetWaitGroup_Main()
Start_ctx(ctx, wg)
}
// Start_ctx - необходимые процедуры для запуска сервера GRPC
// ctx - глобальный контекст приложения
// wg - глобальный WaitGroup приложения
func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) {
contextmain.Ctx = ctx
stopapp.SetWaitGroup_Main(wg)
Connect() Connect()
stopapp.GetWaitGroup_Main().Add(1) stopapp.GetWaitGroup_Main().Add(1)
@ -123,6 +133,28 @@ func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) {
} }
// Start_ctx - необходимые процедуры для запуска сервера GRPC
// ctx - глобальный контекст приложения
// wg - глобальный WaitGroup приложения
func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) error {
var err error
contextmain.Ctx = ctx
stopapp.SetWaitGroup_Main(wg)
err = Connect_err()
if err != nil {
return err
}
stopapp.GetWaitGroup_Main().Add(1)
go WaitStop()
stopapp.GetWaitGroup_Main().Add(1)
go ping_go()
return err
}
// CloseConnection - закрывает подключение к GRPC, и пишет лог // CloseConnection - закрывает подключение к GRPC, и пишет лог
func CloseConnection() { func CloseConnection() {
err := CloseConnection_err() err := CloseConnection_err()
@ -191,3 +223,15 @@ loop:
stopapp.GetWaitGroup_Main().Done() stopapp.GetWaitGroup_Main().Done()
} }
// GetTimeoutSeconds - возвращает время ожидания ответа
func GetTimeoutSeconds() int {
Otvet := grpc_constants.GetTimeoutSeconds()
return Otvet
}
// SetTimeoutSeconds - устанавливает время ожидания ответа
func SetTimeoutSeconds(seconds int) {
grpc_constants.SetTimeoutSeconds(seconds)
}

View File

@ -8,6 +8,7 @@ import (
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_proto" "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_proto"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types" "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types"
"log" "log"
"sync"
"time" "time"
) )
@ -17,12 +18,18 @@ var VersionModel uint32
// TableName - имя таблицы в БД Postgres // TableName - имя таблицы в БД Postgres
const TableName string = "lawsuit_status_types" const TableName string = "lawsuit_status_types"
// mutex_GetVersionModel - защита от многопоточности GetVersionModel()
var mutex_GetVersionModel = sync.Mutex{}
// объект для CRUD операций через GRPC // объект для CRUD операций через GRPC
type Crud_GRPC struct { type Crud_GRPC struct {
} }
// GetVersionModel - возвращает хэш версии структуры модели // GetVersionModel - возвращает хэш версии структуры модели
func (crud Crud_GRPC) GetVersionModel() uint32 { func (crud Crud_GRPC) GetVersionModel() uint32 {
mutex_GetVersionModel.Lock()
defer mutex_GetVersionModel.Unlock()
if VersionModel == 0 { if VersionModel == 0 {
VersionModel = lawsuit_status_types.LawsuitStatusType{}.GetStructVersion() VersionModel = lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
} }
@ -39,14 +46,14 @@ func (crud Crud_GRPC) Read(m *lawsuit_status_types.LawsuitStatusType) error {
} }
// подготовка запроса // подготовка запроса
var VersionModel = crud.GetVersionModel() var versionModel = crud.GetVersionModel()
Request := &grpc_proto.RequestId{} Request := &grpc_proto.RequestId{}
Request.ID = int64(m.ID) Request.ID = int64(m.ID)
Request.VersionModel = VersionModel Request.VersionModel = versionModel
ctxMain := context.Background() ctxMain := context.Background()
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_SECONDS)) ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.GetTimeoutSeconds()))
defer ctxCancelFunc() defer ctxCancelFunc()
// запрос // запрос
@ -90,7 +97,7 @@ func (crud Crud_GRPC) Create(m *lawsuit_status_types.LawsuitStatusType) error {
Request.VersionModel = VersionModel Request.VersionModel = VersionModel
ctxMain := context.Background() ctxMain := context.Background()
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_SECONDS)) ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.GetTimeoutSeconds()))
defer ctxCancelFunc() defer ctxCancelFunc()
// запрос // запрос
@ -134,7 +141,7 @@ func (crud Crud_GRPC) Update(m *lawsuit_status_types.LawsuitStatusType) error {
Request.VersionModel = VersionModel Request.VersionModel = VersionModel
ctxMain := context.Background() ctxMain := context.Background()
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_SECONDS)) ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.GetTimeoutSeconds()))
defer ctxCancelFunc() defer ctxCancelFunc()
// запрос // запрос
@ -178,7 +185,7 @@ func (crud Crud_GRPC) Save(m *lawsuit_status_types.LawsuitStatusType) error {
Request.VersionModel = VersionModel Request.VersionModel = VersionModel
ctxMain := context.Background() ctxMain := context.Background()
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_SECONDS)) ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.GetTimeoutSeconds()))
defer ctxCancelFunc() defer ctxCancelFunc()
// запрос // запрос
@ -218,7 +225,7 @@ func (crud Crud_GRPC) Delete(m *lawsuit_status_types.LawsuitStatusType) error {
Request.VersionModel = VersionModel Request.VersionModel = VersionModel
ctxMain := context.Background() ctxMain := context.Background()
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_SECONDS)) ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.GetTimeoutSeconds()))
defer ctxCancelFunc() defer ctxCancelFunc()
// запрос // запрос
@ -258,7 +265,7 @@ func (crud Crud_GRPC) Restore(m *lawsuit_status_types.LawsuitStatusType) error {
Request.VersionModel = VersionModel Request.VersionModel = VersionModel
ctxMain := context.Background() ctxMain := context.Background()
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_SECONDS)) ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.GetTimeoutSeconds()))
defer ctxCancelFunc() defer ctxCancelFunc()
// запрос // запрос
@ -297,7 +304,7 @@ func (crud Crud_GRPC) Find_ByExtID(m *lawsuit_status_types.LawsuitStatusType) er
Request.VersionModel = VersionModel Request.VersionModel = VersionModel
ctxMain := context.Background() ctxMain := context.Background()
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_SECONDS)) ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.GetTimeoutSeconds()))
defer ctxCancelFunc() defer ctxCancelFunc()
//запрос //запрос

View File

@ -0,0 +1,28 @@
package constants
import "sync"
// timeout_seconds - время ожидания ответа
var timeout_seconds int = 30
// TEXT_ERROR_MODEL_VERSION - текст ошибки версии модели
const TEXT_ERROR_MODEL_VERSION = "Error: wrong version object model"
// mutex_TIMEOUT_SECONDS - защита от многопоточности GetTimeoutSeconds()
var mutex_TIMEOUT_SECONDS sync.RWMutex
// GetTimeoutSeconds - возвращает время ожидания ответа
func GetTimeoutSeconds() int {
mutex_TIMEOUT_SECONDS.RLock()
defer mutex_TIMEOUT_SECONDS.RUnlock()
return timeout_seconds
}
// SetTimeoutSeconds - устанавливает время ожидания ответа
func SetTimeoutSeconds(seconds int) {
mutex_TIMEOUT_SECONDS.Lock()
defer mutex_TIMEOUT_SECONDS.Unlock()
timeout_seconds = seconds
}

View File

@ -1,10 +1,14 @@
//Файл создан автоматически кодогенератором crud_generator //Файл создан автоматически кодогенератором crud_generator
//Не изменяйте ничего здесь. //Не изменяйте ничего здесь.
//Файл создан автоматически кодогенератором crud_generator
//Не изменяйте ничего здесь.
package nrpc_client package nrpc_client
import ( import (
"context" "context"
"errors"
"github.com/ManyakRus/starter/contextmain" "github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log" "github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/port_checker" "github.com/ManyakRus/starter/port_checker"
@ -12,6 +16,7 @@ import (
"github.com/nats-io/nats.go" "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/api/grpc_proto"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/constants" "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/constants"
nrpc_constants "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/nrpc/constants"
"sync" "sync"
"os" "os"
@ -34,8 +39,8 @@ var Conn *nats.Conn
// Client - подключение к клиенту NRPC // Client - подключение к клиенту NRPC
var Client *grpc_proto.Sync_serviceClient var Client *grpc_proto.Sync_serviceClient
// mutexReconnect - защита от многопоточности Reconnect() // mutex_Connect - защита от многопоточности Reconnect()
var mutexReconnect = &sync.Mutex{} var mutex_Connect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения // NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool var NeedReconnect bool
@ -47,7 +52,7 @@ func Connect() {
err = Connect_err() err = Connect_err()
if err != nil { if err != nil {
log.Fatalf("NRPC Connect() error: %v", err) log.Panicf("NRPC Connect() error: %v", err)
} else { } else {
NatsURL := "nats://" + Settings.NATS_HOST + ":" + Settings.NATS_PORT NatsURL := "nats://" + Settings.NATS_HOST + ":" + Settings.NATS_PORT
log.Info("GRPC client connected. Address: ", NatsURL) log.Info("GRPC client connected. Address: ", NatsURL)
@ -59,17 +64,21 @@ func Connect() {
func Connect_err() error { func Connect_err() error {
var err error var err error
//
mutex_Connect.Lock()
defer mutex_Connect.Unlock()
if Settings.NATS_HOST == "" { if Settings.NATS_HOST == "" {
FillSettings() FillSettings()
} }
NatsURL := "nats://" + Settings.NATS_HOST + ":" + Settings.NATS_PORT NatsURL := "nats://" + Settings.NATS_HOST + ":" + Settings.NATS_PORT
// Connect to the NATS server. // Connect to the NATS server.
Conn, err = nats.Connect(NatsURL, nats.Timeout(5*time.Second)) Conn, err = nats.Connect(NatsURL, nats.Timeout(5*time.Second))
if err != nil { if err != nil {
log.Panic(err) return err
} }
// defer Conn.Close()
// This is our generated client. // This is our generated client.
Client = grpc_proto.NewSync_serviceClient(Conn) Client = grpc_proto.NewSync_serviceClient(Conn)
@ -78,7 +87,9 @@ func Connect_err() error {
} }
// FillSettings - заполняет настройки из переменных окружения // FillSettings - заполняет настройки из переменных окружения
func FillSettings() { func FillSettings() error {
var err error
Settings = SettingsINI{} Settings = SettingsINI{}
Settings.NATS_HOST = os.Getenv("NATS_HOST") Settings.NATS_HOST = os.Getenv("NATS_HOST")
Settings.NATS_PORT = os.Getenv("NATS_PORT") Settings.NATS_PORT = os.Getenv("NATS_PORT")
@ -93,12 +104,18 @@ func FillSettings() {
} }
if Settings.NATS_HOST == "" { if Settings.NATS_HOST == "" {
log.Panic("Need fill BUS_LOCAL_HOST ! in OS Environment ") TextError := "Need fill BUS_LOCAL_HOST ! in OS Environment "
err = errors.New(TextError)
return err
} }
if Settings.NATS_PORT == "" { if Settings.NATS_PORT == "" {
log.Panic("Need fill BUS_LOCAL_PORT ! in OS Environment ") TextError := "Need fill BUS_LOCAL_PORT ! in OS Environment "
err = errors.New(TextError)
return err
} }
return err
} }
// WaitStop - ожидает отмену глобального контекста // WaitStop - ожидает отмену глобального контекста
@ -119,20 +136,9 @@ func WaitStop() {
// Start - необходимые процедуры для запуска сервера NRPC // Start - необходимые процедуры для запуска сервера NRPC
// если контекст хранится в contextmain.GetContext() // если контекст хранится в contextmain.GetContext()
// и есть stopapp.GetWaitGroup_Main()
// при ошибке вызывает панику
func Start() { func Start() {
contextmain.GetContext()
ctx := contextmain.Ctx
wg := stopapp.GetWaitGroup_Main()
Start_ctx(ctx, wg)
}
// Start_ctx - необходимые процедуры для запуска сервера NRPC
// ctx - глобальный контекст приложения
// wg - глобальный WaitGroup приложения
func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) {
contextmain.Ctx = ctx
stopapp.SetWaitGroup_Main(wg)
Connect() Connect()
stopapp.GetWaitGroup_Main().Add(1) stopapp.GetWaitGroup_Main().Add(1)
@ -143,6 +149,28 @@ func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) {
} }
// Start_ctx - необходимые процедуры для запуска сервера NRPC
// ctx - глобальный контекст приложения
// wg - глобальный WaitGroup приложения
func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) error {
var err error
contextmain.Ctx = ctx
stopapp.SetWaitGroup_Main(wg)
err = Connect_err()
if err != nil {
return err
}
stopapp.GetWaitGroup_Main().Add(1)
go WaitStop()
stopapp.GetWaitGroup_Main().Add(1)
go ping_go()
return err
}
// CloseConnection - закрывает подключение к NATS // CloseConnection - закрывает подключение к NATS
func CloseConnection() { func CloseConnection() {
Conn.Close() Conn.Close()
@ -203,3 +231,15 @@ loop:
stopapp.GetWaitGroup_Main().Done() stopapp.GetWaitGroup_Main().Done()
} }
// GetTimeoutSeconds - возвращает время ожидания ответа
func GetTimeoutSeconds() int {
Otvet := nrpc_constants.GetTimeoutSeconds()
return Otvet
}
// SetTimeoutSeconds - устанавливает время ожидания ответа
func SetTimeoutSeconds(seconds int) {
nrpc_constants.SetTimeoutSeconds(seconds)
}

View File

@ -7,6 +7,7 @@ import (
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/nrpc/grpc_client/constants" "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/nrpc/grpc_client/constants"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types" "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types"
"log" "log"
"sync"
) )
// VersionModel - хранит версию структуры модели // VersionModel - хранит версию структуры модели
@ -19,8 +20,14 @@ const TableName string = "lawsuit_status_types"
type Crud_NRPC struct { type Crud_NRPC struct {
} }
// mutex_GetVersionModel - защита от многопоточности GetVersionModel()
var mutex_GetVersionModel = sync.Mutex{}
// GetVersionModel - возвращает хэш версии структуры модели // GetVersionModel - возвращает хэш версии структуры модели
func (crud Crud_NRPC) GetVersionModel() uint32 { func (crud Crud_NRPC) GetVersionModel() uint32 {
mutex_GetVersionModel.Lock()
defer mutex_GetVersionModel.Unlock()
if VersionModel == 0 { if VersionModel == 0 {
VersionModel = lawsuit_status_types.LawsuitStatusType{}.GetStructVersion() VersionModel = lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
} }
@ -37,11 +44,11 @@ func (crud Crud_NRPC) Read(m *lawsuit_status_types.LawsuitStatusType) error {
} }
// подготовка запроса // подготовка запроса
var VersionModel = crud.GetVersionModel() var versionModel = crud.GetVersionModel()
Request := &grpc_proto.RequestId{} Request := &grpc_proto.RequestId{}
Request.ID = int64(m.ID) Request.ID = int64(m.ID)
Request.VersionModel = VersionModel Request.VersionModel = versionModel
// запрос // запрос
Response, err := nrpc_client.Client.LawsuitStatusType_Read(Request) Response, err := nrpc_client.Client.LawsuitStatusType_Read(Request)