mirror of
https://github.com/ManyakRus/crud_generator.git
synced 2024-12-22 00:36:41 +02:00
сделал Read_ctx(ctx context.Context, db *gorm.DB, m *calendars.Calendar)
This commit is contained in:
parent
75692e5ca5
commit
3e053a45eb
@ -151,23 +151,35 @@ message Request_ID_String {
|
||||
string StringFind = 3; // строка поиска
|
||||
}
|
||||
|
||||
// Request_Model_MassString - модель и массив строк
|
||||
message Request_Model_MassString {
|
||||
uint32 VersionModel= 1; //версия структуры модели
|
||||
string ModelString = 2; //объект-модель в формате json
|
||||
repeated string MassNames = 3; //массив строк
|
||||
}
|
||||
|
||||
|
||||
// -------------------------- Response ----------------------------------------------
|
||||
|
||||
// Response - возвращает строка json Модель
|
||||
message Response {
|
||||
string ModelString = 1; //объект-модель в формате json
|
||||
}
|
||||
|
||||
// ResponseFloat64 - возвращает float64
|
||||
message ResponseFloat64 {
|
||||
double Otvet = 1; //Ответ - число
|
||||
}
|
||||
|
||||
// ResponseInt64 - возвращает int64
|
||||
message ResponseInt64 {
|
||||
int64 Otvet = 1; //Ответ - число
|
||||
}
|
||||
|
||||
// Response - параметры ответа на клиент
|
||||
message ResponseEmpty {
|
||||
}
|
||||
|
||||
// Response - параметры ответа на клиент
|
||||
message ResponseMass {
|
||||
repeated string MassModelString = 1; //массив объект-модель в формате json
|
||||
|
@ -2,10 +2,49 @@ package server_grpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
"github.com/ManyakRus/starter/micro"
|
||||
"github.com/ManyakRus/starter/contextmain"
|
||||
"github.com/ManyakRus/starter/postgres_gorm"
|
||||
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto"
|
||||
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types"
|
||||
"github.com/ManyakRus/starter/postgres_gorm"
|
||||
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/constants"
|
||||
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/crud/crud_lawsuit_status_types"
|
||||
"time"
|
||||
)
|
||||
|
||||
// LawsuitStatusType_UpdateManyFields - изменяет только нужные колонки в базе данных
|
||||
func (s *ServerGRPC) LawsuitStatusType_UpdateManyFields(ctx context.Context, Request *grpc_proto.Request_Model_MassString) (*grpc_proto.ResponseEmpty, error) {
|
||||
var Otvet grpc_proto.ResponseEmpty
|
||||
var err error
|
||||
|
||||
//проверим контекст уже отменён
|
||||
if micro.ContextDone(ctx) == true {
|
||||
err = context.Canceled
|
||||
return &Otvet, err
|
||||
}
|
||||
|
||||
//проверим совпадения версии модели
|
||||
VersionServer := lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
|
||||
VersionClient := Request.VersionModel
|
||||
if VersionServer != VersionClient {
|
||||
err = ErrorModelVersion(lawsuit_status_types.LawsuitStatusType{})
|
||||
return &Otvet, err
|
||||
}
|
||||
|
||||
//получим модель из строки JSON
|
||||
Model := lawsuit_status_types.LawsuitStatusType{}
|
||||
err = Model.GetModelFromJSON(Request.ModelString)
|
||||
if err != nil {
|
||||
return &Otvet, err
|
||||
}
|
||||
|
||||
//запрос в БД
|
||||
db := postgres_gorm.GetConnection()
|
||||
err = crud_lawsuit_status_types.UpdateManyFields_ctx(ctx, db, &Model, Request.MassNames)
|
||||
if err != nil {
|
||||
return &Otvet, err
|
||||
}
|
||||
|
||||
return &Otvet, err
|
||||
}
|
||||
|
||||
|
@ -8,3 +8,36 @@ import (
|
||||
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestServerGRPC_LawsuitStatusType_UpdateManyFields(t *testing.T) {
|
||||
config_main.LoadEnv()
|
||||
crud_starter.InitCrudTransport_DB()
|
||||
var err error
|
||||
|
||||
//прочитаем из БД
|
||||
ctx := context.Background()
|
||||
Request := grpc_proto.RequestId{}
|
||||
Request.ID = LawsuitStatusType_ID_Test
|
||||
Request.VersionModel = lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
|
||||
|
||||
server1 := &ServerGRPC{}
|
||||
Response1, err := server1.LawsuitStatusType_Read(ctx, &Request)
|
||||
if err != nil {
|
||||
t.Error("TestServerGRPC_LawsuitStatusType_UpdateManyFields() error: ", err)
|
||||
return
|
||||
}
|
||||
|
||||
// запишем в БД с пустым списком полей (не запишется)
|
||||
var ModelString string
|
||||
ModelString = Response1.ModelString
|
||||
RequestModel := grpc_proto.Request_Model_MassString{}
|
||||
RequestModel.VersionModel = lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
|
||||
RequestModel.ModelString = ModelString
|
||||
RequestModel.MassNames = nil
|
||||
|
||||
_, err = server1.LawsuitStatusType_UpdateManyFields(ctx, &RequestModel)
|
||||
if err != nil {
|
||||
t.Error("TestServerGRPC_LawsuitStatusType_UpdateManyFields() error: ", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -12,3 +12,37 @@ import (
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
// UpdateManyFields - изменяет несколько полей в базе данных
|
||||
// MassNeedUpdateFields - список полей структуры golang для обновления
|
||||
func (crud Crud_DB) UpdateManyFields(m *lawsuit_status_types.LawsuitStatusType, MassNeedUpdateFields []string) error {
|
||||
var err error
|
||||
|
||||
ctxMain := contextmain.GetContext()
|
||||
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_DB_SECONDS))
|
||||
defer ctxCancelFunc()
|
||||
|
||||
db := postgres_gorm.GetConnection()
|
||||
|
||||
err = UpdateManyFields_ctx(ctx, db, m, MassNeedUpdateFields)
|
||||
return err
|
||||
}
|
||||
|
||||
// UpdateManyFields_ctx - изменяет несколько полей в базе данных
|
||||
// с учётом контекста и соединения к БД
|
||||
// MassNeedUpdateFields - список полей структуры golang для обновления
|
||||
func UpdateManyFields_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitStatusType, MassNeedUpdateFields []string) error {
|
||||
var err error
|
||||
if micro.ContextDone(ctx) == true {
|
||||
err = context.Canceled
|
||||
return err
|
||||
}
|
||||
|
||||
if m.ID == 0 {
|
||||
err = errors.New(m.TableNameDB() + " UpdateManyFields() error: ID=0")
|
||||
return err
|
||||
}
|
||||
|
||||
err = create_update_ctx(ctx, db, m, false, MassNeedUpdateFields)
|
||||
return err
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ func (crud Crud_DB) Read(m *lawsuit_status_types.LawsuitStatusType) error {
|
||||
}
|
||||
|
||||
// Read_ctx - изменяет 1 поле ColumnName в базе данных
|
||||
// с учётом контекста и соединения к БД
|
||||
func Read_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitStatusType) error {
|
||||
var err error
|
||||
|
||||
|
@ -6,3 +6,26 @@ import (
|
||||
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types"
|
||||
"testing"
|
||||
)
|
||||
|
||||
|
||||
func TestUpdateManyFields(t *testing.T) {
|
||||
config_main.LoadEnv()
|
||||
|
||||
postgres_gorm.Connect()
|
||||
defer postgres_gorm.CloseConnection()
|
||||
|
||||
//прочитаем из БД
|
||||
crud := Crud_DB{}
|
||||
Model := lawsuit_status_types.LawsuitStatusType{}
|
||||
Model.ID = Postgres_ID_Test
|
||||
err := crud.Read(&Model)
|
||||
if err != nil {
|
||||
t.Error("TestUpdateManyFields() Read() error: ", err)
|
||||
}
|
||||
|
||||
//запишем в БД это же значение
|
||||
err = crud.UpdateManyFields(&Otvet, nil)
|
||||
if err != nil {
|
||||
t.Error("TestUpdateManyFields() UpdateManyFields() error: ", err)
|
||||
}
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ func Save_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitS
|
||||
}
|
||||
|
||||
is_create := !micro.BoolFromInt64(int64(m.ID))
|
||||
err = create_update_ctx(ctx, db, m, is_create)
|
||||
err = create_update_ctx(ctx, db, m, is_create, nil)
|
||||
return err
|
||||
}
|
||||
|
||||
@ -102,7 +102,7 @@ func Update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
|
||||
return err
|
||||
}
|
||||
|
||||
err = create_update_ctx(ctx, db, m, false)
|
||||
err = create_update_ctx(ctx, db, m, false, nil)
|
||||
return err
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ func Create_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
|
||||
return err
|
||||
}
|
||||
|
||||
err = create_update_ctx(ctx, db, m, true)
|
||||
err = create_update_ctx(ctx, db, m, true, nil)
|
||||
return err
|
||||
}
|
||||
|
||||
@ -140,12 +140,12 @@ func (crud Crud_DB) create_update(m *lawsuit_status_types.LawsuitStatusType, is_
|
||||
|
||||
db := postgres_gorm.GetConnection()
|
||||
|
||||
err = create_update_ctx(ctx, db, m, is_create)
|
||||
err = create_update_ctx(ctx, db, m, is_create, nil)
|
||||
return err
|
||||
}
|
||||
|
||||
// create_update_ctx - записывает объект в базу данных
|
||||
func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitStatusType, is_create bool) error {
|
||||
func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitStatusType, is_create bool, MassNeedUpdateFields []string) error {
|
||||
var err error
|
||||
|
||||
// log.Trace("start Save() ", TableName, " id: ", int64(m.ID))
|
||||
@ -168,16 +168,21 @@ func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types
|
||||
return err
|
||||
}
|
||||
|
||||
//
|
||||
db.WithContext(ctx)
|
||||
|
||||
// заполним даты
|
||||
//Text_modified_at
|
||||
//Text_is_deleted_deleted_at
|
||||
//Text_created_at
|
||||
|
||||
//
|
||||
tx := db.WithContext(ctx).Model(&m)
|
||||
|
||||
//колонки для обновления
|
||||
MassNeedFields := crud_functions.MassNeedFields_from_MassNeedUpdateFields(MassNeedUpdateFields)
|
||||
if len(MassNeedUpdateFields) > 0 {
|
||||
tx = tx.Select(MassNeedFields)
|
||||
}
|
||||
|
||||
//колонки с null
|
||||
tx := db
|
||||
MassOmit := make([]string, 0)
|
||||
var ColumnName string
|
||||
|
||||
@ -200,7 +205,11 @@ func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types
|
||||
|
||||
//запишем NULL в пустые колонки
|
||||
MapOmit := crud_functions.MapOmit_from_MassOmit(MassOmit)
|
||||
tx = db.Model(&m).Updates(MapOmit)
|
||||
tx = db.Model(&m)
|
||||
if len(MassNeedUpdateFields) > 0 {
|
||||
tx = tx.Select(MassNeedFields)
|
||||
}
|
||||
tx = tx.Updates(MapOmit)
|
||||
err = tx.Error
|
||||
if err != nil {
|
||||
err = fmt.Errorf(m.TableNameDB()+" Create_Update() id: %v, error: %v", m.ID, err)
|
||||
|
@ -78,7 +78,7 @@ func Save_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitS
|
||||
}
|
||||
|
||||
is_create := !micro.BoolFromInt64(int64(m.ID))
|
||||
err = create_update_ctx(ctx, db, m, is_create)
|
||||
err = create_update_ctx(ctx, db, m, is_create, nil)
|
||||
return err
|
||||
}
|
||||
|
||||
@ -102,7 +102,7 @@ func Update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
|
||||
return err
|
||||
}
|
||||
|
||||
err = create_update_ctx(ctx, db, m, false)
|
||||
err = create_update_ctx(ctx, db, m, false, nil)
|
||||
return err
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ func Create_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
|
||||
return err
|
||||
}
|
||||
|
||||
err = create_update_ctx(ctx, db, m, true)
|
||||
err = create_update_ctx(ctx, db, m, true, nil)
|
||||
return err
|
||||
}
|
||||
|
||||
@ -140,12 +140,12 @@ func (crud Crud_DB) create_update(m *lawsuit_status_types.LawsuitStatusType, is_
|
||||
|
||||
db := postgres_gorm.GetConnection()
|
||||
|
||||
err = create_update_ctx(ctx, db, m, is_create)
|
||||
err = create_update_ctx(ctx, db, m, is_create, nil)
|
||||
return err
|
||||
}
|
||||
|
||||
// create_update_ctx - записывает объект в базу данных
|
||||
func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitStatusType, is_create bool) error {
|
||||
func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitStatusType, is_create bool, MassNeedUpdateFields []string) error {
|
||||
var err error
|
||||
|
||||
// log.Trace("start Save() ", TableName, " id: ", int64(m.ID))
|
||||
@ -168,16 +168,21 @@ func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types
|
||||
return err
|
||||
}
|
||||
|
||||
//
|
||||
db.WithContext(ctx)
|
||||
|
||||
// заполним даты
|
||||
//Text_modified_at
|
||||
//Text_is_deleted_deleted_at
|
||||
//Text_created_at
|
||||
|
||||
//
|
||||
tx := db.WithContext(ctx).Model(&m)
|
||||
|
||||
//колонки для обновления
|
||||
MassNeedFields := crud_functions.MassNeedFields_from_MassNeedUpdateFields(MassNeedUpdateFields)
|
||||
if len(MassNeedUpdateFields) > 0 {
|
||||
tx = tx.Select(MassNeedFields)
|
||||
}
|
||||
|
||||
//колонки с null
|
||||
tx := db
|
||||
MassOmit := make([]string, 0)
|
||||
var ColumnName string
|
||||
|
||||
@ -200,7 +205,11 @@ func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types
|
||||
|
||||
//запишем NULL в пустые колонки
|
||||
MapOmit := crud_functions.MapOmit_from_MassOmit(MassOmit)
|
||||
tx = db.Model(&m).Updates(MapOmit)
|
||||
tx = db.Model(&m)
|
||||
if len(MassNeedUpdateFields) > 0 {
|
||||
tx = tx.Select(MassNeedFields)
|
||||
}
|
||||
tx = tx.Updates(MapOmit)
|
||||
err = tx.Error
|
||||
if err != nil {
|
||||
err = fmt.Errorf(m.TableNameDB()+" Create_Update() id: %v, error: %v", m.ID, err)
|
||||
|
@ -1,6 +1,9 @@
|
||||
package crud_functions
|
||||
|
||||
import "gorm.io/gorm"
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
"slices"
|
||||
)
|
||||
|
||||
// MapOmit_from_MassOmit - создает MapOmit из MassOmit
|
||||
func MapOmit_from_MassOmit(MassOmit []string) map[string]interface{} {
|
||||
@ -11,3 +14,24 @@ func MapOmit_from_MassOmit(MassOmit []string) map[string]interface{} {
|
||||
|
||||
return MapOmit
|
||||
}
|
||||
|
||||
// MassNeedFields_from_MassNeedUpdateFields - создает MassFields из MassNeedUpdateFields
|
||||
// копирует все элементты и добавляет "ModifiedAt" и др.
|
||||
func MassNeedFields_from_MassNeedUpdateFields(MassNeedUpdateFields []string) []string {
|
||||
//колонки для обновления
|
||||
MassFields := make([]string, len(MassNeedUpdateFields))
|
||||
copy(MassFields, MassNeedUpdateFields)
|
||||
MassFields = append(MassFields, "ModifiedAt")
|
||||
|
||||
// DeletedAt вместе с IsDeleted
|
||||
if slices.Contains(MassNeedUpdateFields, "IsDeleted") == true {
|
||||
MassFields = append(MassFields, "DeletedAt")
|
||||
}
|
||||
|
||||
//// CreatedAt вместе с ID=0
|
||||
//if slices.Contains(MassNeedUpdateFields, "ID") == true {
|
||||
// MassFields = append(MassFields, "CreatedAt")
|
||||
//}
|
||||
|
||||
return MassFields
|
||||
}
|
||||
|
@ -1 +1,51 @@
|
||||
package crud_functions
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMapOmit_from_MassOmit(t *testing.T) {
|
||||
t.Run("Empty input slice", func(t *testing.T) {
|
||||
MassOmit := []string{}
|
||||
result := MapOmit_from_MassOmit(MassOmit)
|
||||
if len(result) != 0 {
|
||||
t.Errorf("Expected an empty map, but got %v", result)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Non-empty input slice", func(t *testing.T) {
|
||||
MassOmit := []string{"key1", "key2"}
|
||||
result := MapOmit_from_MassOmit(MassOmit)
|
||||
expected := map[string]interface{}{
|
||||
"key1": gorm.Expr("NULL"),
|
||||
"key2": gorm.Expr("NULL"),
|
||||
}
|
||||
if !reflect.DeepEqual(result, expected) {
|
||||
t.Errorf("Expected %v, but got %v", expected, result)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestMassNeedFields_from_MassNeedUpdateFields(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input []string
|
||||
expected []string
|
||||
}{
|
||||
{"Empty input", []string{}, []string{"ModifiedAt"}},
|
||||
//{"Contains IsDeleted and ID", []string{"IsDeleted", "ID"}, []string{"IsDeleted", "ID", "ModifiedAt", "DeletedAt", "CreatedAt"}},
|
||||
{"Contains only IsDeleted", []string{"IsDeleted"}, []string{"IsDeleted", "ModifiedAt", "DeletedAt"}},
|
||||
//{"Contains only ID", []string{"ID"}, []string{"ID", "ModifiedAt", "CreatedAt"}},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := MassNeedFields_from_MassNeedUpdateFields(tt.input)
|
||||
if !reflect.DeepEqual(result, tt.expected) {
|
||||
t.Errorf("Expected %v, but got %v", tt.expected, result)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package grpc_lawsuit_status_types
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
"github.com/ManyakRus/starter/log"
|
||||
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto"
|
||||
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_client"
|
||||
@ -9,5 +10,44 @@ import (
|
||||
"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/object_model/entities/lawsuit_status_types"
|
||||
"time"
|
||||
)
|
||||
|
||||
// UpdateManyFields - обновляет несколько полей в базе данных, по ИД
|
||||
func (crud Crud_GRPC) UpdateManyFields(m *lawsuit_status_types.LawsuitStatusType, MassNeedUpdateFields []string) error {
|
||||
var err error
|
||||
|
||||
// подключение
|
||||
grpc_client.Connect_GRPC_NRPC()
|
||||
|
||||
// подготовка запроса
|
||||
var VersionModel = crud.GetVersionModel()
|
||||
|
||||
ModelString, err := m.GetJSON()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
Request := &grpc_proto.Request_Model_MassString{}
|
||||
Request.VersionModel = VersionModel
|
||||
Request.ModelString = ModelString
|
||||
Request.MassNames = MassNeedUpdateFields
|
||||
|
||||
ctxMain := context.Background()
|
||||
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(grpc_constants.GetTimeoutSeconds()))
|
||||
defer ctxCancelFunc()
|
||||
|
||||
// запрос
|
||||
if grpc_nrpc.NeedNRPC == true {
|
||||
_, err = nrpc_client.Client.LawsuitStatusType_UpdateManyFields(Request)
|
||||
} else {
|
||||
_, err = grpc_client.Client.LawsuitStatusType_UpdateManyFields(ctx, Request)
|
||||
}
|
||||
if err != nil {
|
||||
if grpc_client.IsErrorModelVersion(err) == true {
|
||||
log.Panic(err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -6,3 +6,31 @@ import (
|
||||
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCrud_GRPC_UpdateManyFields(t *testing.T) {
|
||||
config_main.LoadEnv()
|
||||
grpc_client.Connect()
|
||||
defer grpc_client.CloseConnection()
|
||||
|
||||
//прочитаем из БД
|
||||
crud := Crud_GRPC{}
|
||||
Otvet := lawsuit_status_types.LawsuitStatusType{}
|
||||
Otvet.ID = Postgres_ID_Test
|
||||
err := crud.Read(&Otvet)
|
||||
if err != nil {
|
||||
t.Error("TestCrud_GRPC_UpdateManyFields() error: ", err)
|
||||
return
|
||||
}
|
||||
|
||||
//запишем в БД, пустой список полей (не изменится)
|
||||
err = crud.UpdateManyFields(&Otvet, nil)
|
||||
|
||||
if err != nil {
|
||||
t.Error("TestCrud_GRPC_UpdateManyFields() error: ", err)
|
||||
}
|
||||
|
||||
if Otvet.ID == 0 {
|
||||
t.Error("TestCrud_GRPC_UpdateManyFields() error: ID =0")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,7 @@ type ICrud_LawsuitStatusType interface {
|
||||
Restore(*LawsuitStatusType) error
|
||||
Find_ByExtID(*LawsuitStatusType) error
|
||||
ReadFromCache(ID int64) (LawsuitStatusType, error)
|
||||
UpdateManyFields(*LawsuitStatusType, []string) error
|
||||
}
|
||||
|
||||
// TableName - возвращает имя таблицы в БД
|
||||
@ -189,4 +190,15 @@ func (m LawsuitStatusType) SetCrudInterface(crud ICrud_LawsuitStatusType) {
|
||||
return
|
||||
}
|
||||
|
||||
// UpdateManyFields - находит запись в БД по ID, и изменяет только нужные колонки
|
||||
func (m *LawsuitStatusType) UpdateManyFields(MassNeedUpdateFields []string) error {
|
||||
if Crud_LawsuitStatusType == nil {
|
||||
return constants.ErrorCrudIsNotInit
|
||||
}
|
||||
|
||||
err := Crud_LawsuitStatusType.UpdateManyFields(m, MassNeedUpdateFields)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// ---------------------------- конец CRUD операции ------------------------------------------------------------
|
||||
|
@ -14,7 +14,8 @@ func main() {
|
||||
}
|
||||
|
||||
func StartApp() {
|
||||
//ConfigMain.LoadENV_or_SettingsTXT()
|
||||
//defer micro.ShowTimePassed(time.Now())
|
||||
|
||||
config.LoadSettingsTxt()
|
||||
|
||||
config.FillSettings()
|
||||
|
@ -474,6 +474,7 @@ func ReplaceText_created_at(s string, Table1 *types.Table) string {
|
||||
return Otvet
|
||||
}
|
||||
|
||||
// RenameFunctions - заменяет названия функций, на названия из файла
|
||||
func RenameFunctions(TextDB string, Table1 *types.Table) string {
|
||||
Otvet := TextDB
|
||||
|
||||
@ -528,6 +529,8 @@ func CreateFilesUpdateEveryColumn(Table1 *types.Table) error {
|
||||
|
||||
//заменим имя пакета на новое
|
||||
TextCrud = create_files.ReplacePackageName(TextCrud, DirReadyTable)
|
||||
TextCrud = strings.ReplaceAll(TextCrud, config.Settings.TEXT_TEMPLATE_MODEL, Table1.NameGo)
|
||||
TextCrud = strings.ReplaceAll(TextCrud, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
||||
|
||||
//заменим импорты
|
||||
if config.Settings.USE_DEFAULT_TEMPLATE == true {
|
||||
@ -558,6 +561,9 @@ func CreateFilesUpdateEveryColumn(Table1 *types.Table) error {
|
||||
TextCrud = strings.ReplaceAll(TextCrud, `//`+constants.TEXT_CACHE_REMOVE, constants.TEXT_CACHE_REMOVE)
|
||||
}
|
||||
|
||||
//переименование функций
|
||||
TextCrud = RenameFunctions(TextCrud, Table1)
|
||||
|
||||
//удаление пустого импорта
|
||||
TextCrud = create_files.DeleteEmptyImport(TextCrud)
|
||||
|
||||
@ -675,15 +681,8 @@ func CreateFilesUpdateEveryColumnTest(Table1 *types.Table) error {
|
||||
|
||||
//заменим имя пакета на новое
|
||||
TextCrud = create_files.ReplacePackageName(TextCrud, DirReadyTable)
|
||||
|
||||
// TextCrud := "package " + config.Settings.PREFIX_CRUD + TableName + "\n\n"
|
||||
// TextCrud = TextCrud + `import (
|
||||
// "testing"
|
||||
// "github.com/ManyakRus/starter/config_main"
|
||||
// "github.com/ManyakRus/starter/postgres_gorm"
|
||||
//)
|
||||
//
|
||||
//`
|
||||
TextCrud = strings.ReplaceAll(TextCrud, config.Settings.TEXT_TEMPLATE_MODEL, Table1.NameGo)
|
||||
TextCrud = strings.ReplaceAll(TextCrud, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
||||
|
||||
//заменим импорты
|
||||
if config.Settings.USE_DEFAULT_TEMPLATE == true {
|
||||
@ -701,9 +700,6 @@ func CreateFilesUpdateEveryColumnTest(Table1 *types.Table) error {
|
||||
if TextUpdateEveryColumn == "" {
|
||||
return err
|
||||
}
|
||||
//ModelName := Table1.NameGo
|
||||
//TextCrud = strings.ReplaceAll(TextCrud, config.Settings.TEXT_TEMPLATE_MODEL, ModelName)
|
||||
//TextCrud = strings.ReplaceAll(TextCrud, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
||||
TextCrud = TextCrud + TextUpdateEveryColumn
|
||||
|
||||
TextCrud = config.Settings.TEXT_MODULE_GENERATED + TextCrud
|
||||
|
@ -397,19 +397,12 @@ func CreateFilesUpdateEveryColumn(Table1 *types.Table) error {
|
||||
}
|
||||
TextGRPC_Client := string(bytes)
|
||||
TextGRPC_Client = TextGRPC_Client + "\n"
|
||||
TextGRPC_Client = strings.ReplaceAll(TextGRPC_Client, config.Settings.TEXT_TEMPLATE_MODEL, Table1.NameGo)
|
||||
TextGRPC_Client = strings.ReplaceAll(TextGRPC_Client, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
||||
|
||||
//заменим имя пакета на новое
|
||||
TextGRPC_Client = create_files.ReplacePackageName(TextGRPC_Client, DirReadyTable)
|
||||
|
||||
// TextGRPC_Client := "package " + config.Settings.PREFIX_CLIENT_GRPC + TableName + "\n\n"
|
||||
// TextGRPC_Client = TextGRPC_Client + `import (
|
||||
// "context"
|
||||
// "time"
|
||||
// "github.com/ManyakRus/starter/log"
|
||||
//)
|
||||
//
|
||||
//`
|
||||
|
||||
//заменим импорты
|
||||
if config.Settings.USE_DEFAULT_TEMPLATE == true {
|
||||
TextGRPC_Client = create_files.DeleteTemplateRepositoryImports(TextGRPC_Client)
|
||||
@ -557,6 +550,8 @@ func CreateTestFilesUpdateEveryColumn(Table1 *types.Table) error {
|
||||
}
|
||||
TextGRPC_Client := string(bytes)
|
||||
TextGRPC_Client = TextGRPC_Client + "\n"
|
||||
TextGRPC_Client = strings.ReplaceAll(TextGRPC_Client, config.Settings.TEXT_TEMPLATE_MODEL, Table1.NameGo)
|
||||
TextGRPC_Client = strings.ReplaceAll(TextGRPC_Client, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
||||
|
||||
//заменим имя пакета на новое
|
||||
TextGRPC_Client = create_files.ReplacePackageName(TextGRPC_Client, DirReadyTable)
|
||||
|
@ -391,15 +391,8 @@ func CreateFilesUpdateEveryColumn(Table1 *types.Table) error {
|
||||
|
||||
//заменим имя пакета на новое
|
||||
TextGRPCServer = create_files.ReplacePackageName(TextGRPCServer, DirReadyTable)
|
||||
|
||||
// PackageName := micro.LastWord(config.Settings.TEMPLATE_FOLDERNAME_GRPC_SERVER)
|
||||
// TextGRPCServer := "package " + PackageName + "\n\n"
|
||||
// TextGRPCServer = TextGRPCServer + `import (
|
||||
// "context"
|
||||
// "github.com/ManyakRus/starter/micro"
|
||||
//)
|
||||
//
|
||||
//`
|
||||
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_MODEL, Table1.NameGo)
|
||||
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
||||
|
||||
//заменим импорты
|
||||
if config.Settings.USE_DEFAULT_TEMPLATE == true {
|
||||
@ -426,9 +419,6 @@ func CreateFilesUpdateEveryColumn(Table1 *types.Table) error {
|
||||
return err
|
||||
}
|
||||
|
||||
//ModelName := Table1.NameGo
|
||||
//TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_MODEL, ModelName)
|
||||
//TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
||||
TextGRPCServer = TextGRPCServer + TextUpdateEveryColumn
|
||||
|
||||
if config.Settings.USE_DEFAULT_TEMPLATE == true {
|
||||
@ -538,16 +528,8 @@ func CreateTestFilesUpdateEveryColumn(Table1 *types.Table) error {
|
||||
|
||||
//заменим имя пакета на новое
|
||||
TextGRPCServer = create_files.ReplacePackageName(TextGRPCServer, DirReadyTable)
|
||||
|
||||
// PackageName := micro.LastWord(config.Settings.TEMPLATE_FOLDERNAME_GRPC_SERVER)
|
||||
// TextGRPCServer := "package " + PackageName + "\n\n"
|
||||
// TextGRPCServer = TextGRPCServer + `import (
|
||||
// "context"
|
||||
// "testing"
|
||||
// "github.com/ManyakRus/starter/config_main"
|
||||
//)
|
||||
//
|
||||
//`
|
||||
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_MODEL, Table1.NameGo)
|
||||
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
||||
|
||||
//заменим импорты
|
||||
if config.Settings.USE_DEFAULT_TEMPLATE == true {
|
||||
@ -570,13 +552,11 @@ func CreateTestFilesUpdateEveryColumn(Table1 *types.Table) error {
|
||||
|
||||
//создание текста
|
||||
TextUpdateEveryColumn := FindTextUpdateEveryColumnTest(TextGRPCServerUpdateFunc, Table1)
|
||||
|
||||
// пустой файл не нужен
|
||||
if TextUpdateEveryColumn == "" {
|
||||
return err
|
||||
}
|
||||
//ModelName := Table1.NameGo
|
||||
//TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_MODEL, ModelName)
|
||||
//TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
||||
TextGRPCServer = TextGRPCServer + TextUpdateEveryColumn
|
||||
|
||||
TextGRPCServer = config.Settings.TEXT_MODULE_GENERATED + TextGRPCServer
|
||||
|
@ -178,6 +178,7 @@ func CreateFilesModel_crud(Table1 *types.Table, DirTemplatesModel, DirReadyModel
|
||||
TextModel = DeleteFromInterfaceDelete(TextModel, Table1)
|
||||
TextModel = DeleteFromInterfaceRestore(TextModel, Table1)
|
||||
TextModel = DeleteFromInterfaceFind_ByExtID(TextModel, Table1)
|
||||
TextModel = DeleteFromInterfaceUpdateManyFields(TextModel, Table1)
|
||||
//кэш
|
||||
if config.Settings.NEED_CREATE_CACHE_API == false {
|
||||
//исправление Save()
|
||||
@ -683,3 +684,19 @@ func DeleteFromInterfaceReadFromCache(TextModel string, Table1 *types.Table) str
|
||||
|
||||
return Otvet
|
||||
}
|
||||
|
||||
// DeleteFromInterfaceUpdateManyFields - удаляет функцию UpdateManyFields() из интерфейса
|
||||
func DeleteFromInterfaceUpdateManyFields(TextModel string, Table1 *types.Table) string {
|
||||
Otvet := TextModel
|
||||
|
||||
//проверим есть ли колонка IsDeleted
|
||||
if config.Settings.NEED_CREATE_UPDATE_EVERY_COLUMN == true {
|
||||
return Otvet
|
||||
}
|
||||
|
||||
ModelName := config.Settings.TEXT_TEMPLATE_MODEL
|
||||
TextFind := "\n\tUpdateManyFields(*" + ModelName + ", []string) error"
|
||||
Otvet = strings.ReplaceAll(Otvet, TextFind, "")
|
||||
|
||||
return Otvet
|
||||
}
|
||||
|
@ -83,6 +83,7 @@ func CreateFileProto(MapAll map[string]*types.Table) error {
|
||||
}
|
||||
|
||||
TextProtoNew = TextProtoNew + FindTextProtoTable1(TextProto, Table1)
|
||||
TextProtoNew = TextProtoNew + FindTextProtoTable1_UpdateManyFields(TextProto, Table1)
|
||||
TextProtoNew = TextProtoNew + FindTextProtoTable1_UpdateEveryColumn(TextProto, Table1)
|
||||
|
||||
if config.Settings.NEED_CREATE_CACHE_API == true {
|
||||
@ -416,3 +417,36 @@ func TextReadFromCache(ModelName string) string {
|
||||
|
||||
return Otvet
|
||||
}
|
||||
|
||||
// FindTextProtoTable1_UpdateManyFields - возвращает текст функции UpdateManyFields() .proto для таблицы
|
||||
func FindTextProtoTable1_UpdateManyFields(TextProto string, Table1 *types.Table) string {
|
||||
Otvet := "\n" //"\n\t//\n"
|
||||
|
||||
ModelName := Table1.NameGo
|
||||
Otvet = Otvet + FindTextUpdateManyFields(TextProto, ModelName)
|
||||
|
||||
return Otvet
|
||||
}
|
||||
|
||||
// FindTextUpdateManyFields - возвращает текст .proto
|
||||
func FindTextUpdateManyFields(TextProto string, ModelName string) string {
|
||||
Otvet := ""
|
||||
Otvet2 := TextUpdateManyFields(ModelName)
|
||||
|
||||
//проверка такой текст уже есть
|
||||
pos1 := strings.Index(TextProto, Otvet2)
|
||||
if pos1 >= 0 {
|
||||
return Otvet
|
||||
}
|
||||
|
||||
Otvet = "\t" + Otvet2 + "\n"
|
||||
|
||||
return Otvet
|
||||
}
|
||||
|
||||
// TextUpdateManyFields - возвращает текст .proto
|
||||
func TextUpdateManyFields(ModelName string) string {
|
||||
Otvet := "rpc " + ModelName + "_UpdateManyFields(Request_Model_MassString) returns (ResponseEmpty) {}"
|
||||
|
||||
return Otvet
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user