1
0
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:
Nikitin Aleksandr 2024-04-02 11:54:01 +03:00
parent 75692e5ca5
commit 3e053a45eb
19 changed files with 408 additions and 71 deletions

View File

@ -151,23 +151,35 @@ message Request_ID_String {
string StringFind = 3; // строка поиска string StringFind = 3; // строка поиска
} }
// Request_Model_MassString - модель и массив строк
message Request_Model_MassString {
uint32 VersionModel= 1; //версия структуры модели
string ModelString = 2; //объект-модель в формате json
repeated string MassNames = 3; //массив строк
}
// -------------------------- Response ---------------------------------------------- // -------------------------- Response ----------------------------------------------
// Response - возвращает строка json Модель // Response - возвращает строка json Модель
message Response { message Response {
string ModelString = 1; //объект-модель в формате json string ModelString = 1; //объект-модель в формате json
} }
// ResponseFloat64 - возвращает float64 // ResponseFloat64 - возвращает float64
message ResponseFloat64 { message ResponseFloat64 {
double Otvet = 1; //Ответ - число double Otvet = 1; //Ответ - число
} }
// ResponseInt64 - возвращает int64 // ResponseInt64 - возвращает int64
message ResponseInt64 { message ResponseInt64 {
int64 Otvet = 1; //Ответ - число int64 Otvet = 1; //Ответ - число
} }
// Response - параметры ответа на клиент // Response - параметры ответа на клиент
message ResponseEmpty { message ResponseEmpty {
} }
// Response - параметры ответа на клиент // Response - параметры ответа на клиент
message ResponseMass { message ResponseMass {
repeated string MassModelString = 1; //массив объект-модель в формате json repeated string MassModelString = 1; //массив объект-модель в формате json

View File

@ -2,10 +2,49 @@ package server_grpc
import ( import (
"context" "context"
"time"
"github.com/ManyakRus/starter/micro" "github.com/ManyakRus/starter/micro"
"github.com/ManyakRus/starter/contextmain" "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/api/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"
"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
}

View File

@ -8,3 +8,36 @@ import (
"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"
"testing" "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)
}
}

View File

@ -12,3 +12,37 @@ import (
"gorm.io/gorm" "gorm.io/gorm"
"time" "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
}

View File

@ -13,6 +13,7 @@ func (crud Crud_DB) Read(m *lawsuit_status_types.LawsuitStatusType) error {
} }
// Read_ctx - изменяет 1 поле ColumnName в базе данных // Read_ctx - изменяет 1 поле ColumnName в базе данных
// с учётом контекста и соединения к БД
func Read_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitStatusType) error { func Read_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitStatusType) error {
var err error var err error

View File

@ -6,3 +6,26 @@ import (
"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"
"testing" "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)
}
}

View File

@ -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)) 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 return err
} }
@ -102,7 +102,7 @@ func Update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
return err return err
} }
err = create_update_ctx(ctx, db, m, false) err = create_update_ctx(ctx, db, m, false, nil)
return err return err
} }
@ -126,7 +126,7 @@ func Create_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
return err return err
} }
err = create_update_ctx(ctx, db, m, true) err = create_update_ctx(ctx, db, m, true, nil)
return err return err
} }
@ -140,12 +140,12 @@ func (crud Crud_DB) create_update(m *lawsuit_status_types.LawsuitStatusType, is_
db := postgres_gorm.GetConnection() 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 return err
} }
// create_update_ctx - записывает объект в базу данных // 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 var err error
// log.Trace("start Save() ", TableName, " id: ", int64(m.ID)) // 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 return err
} }
//
db.WithContext(ctx)
// заполним даты // заполним даты
//Text_modified_at //Text_modified_at
//Text_is_deleted_deleted_at //Text_is_deleted_deleted_at
//Text_created_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 //колонки с null
tx := db
MassOmit := make([]string, 0) MassOmit := make([]string, 0)
var ColumnName string var ColumnName string
@ -200,7 +205,11 @@ func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types
//запишем NULL в пустые колонки //запишем NULL в пустые колонки
MapOmit := crud_functions.MapOmit_from_MassOmit(MassOmit) 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 err = tx.Error
if err != nil { if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Create_Update() id: %v, error: %v", m.ID, err) err = fmt.Errorf(m.TableNameDB()+" Create_Update() id: %v, error: %v", m.ID, err)

View File

@ -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)) 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 return err
} }
@ -102,7 +102,7 @@ func Update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
return err return err
} }
err = create_update_ctx(ctx, db, m, false) err = create_update_ctx(ctx, db, m, false, nil)
return err return err
} }
@ -126,7 +126,7 @@ func Create_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
return err return err
} }
err = create_update_ctx(ctx, db, m, true) err = create_update_ctx(ctx, db, m, true, nil)
return err return err
} }
@ -140,12 +140,12 @@ func (crud Crud_DB) create_update(m *lawsuit_status_types.LawsuitStatusType, is_
db := postgres_gorm.GetConnection() 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 return err
} }
// create_update_ctx - записывает объект в базу данных // 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 var err error
// log.Trace("start Save() ", TableName, " id: ", int64(m.ID)) // 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 return err
} }
//
db.WithContext(ctx)
// заполним даты // заполним даты
//Text_modified_at //Text_modified_at
//Text_is_deleted_deleted_at //Text_is_deleted_deleted_at
//Text_created_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 //колонки с null
tx := db
MassOmit := make([]string, 0) MassOmit := make([]string, 0)
var ColumnName string var ColumnName string
@ -200,7 +205,11 @@ func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types
//запишем NULL в пустые колонки //запишем NULL в пустые колонки
MapOmit := crud_functions.MapOmit_from_MassOmit(MassOmit) 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 err = tx.Error
if err != nil { if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Create_Update() id: %v, error: %v", m.ID, err) err = fmt.Errorf(m.TableNameDB()+" Create_Update() id: %v, error: %v", m.ID, err)

View File

@ -1,6 +1,9 @@
package crud_functions package crud_functions
import "gorm.io/gorm" import (
"gorm.io/gorm"
"slices"
)
// MapOmit_from_MassOmit - создает MapOmit из MassOmit // MapOmit_from_MassOmit - создает MapOmit из MassOmit
func MapOmit_from_MassOmit(MassOmit []string) map[string]interface{} { func MapOmit_from_MassOmit(MassOmit []string) map[string]interface{} {
@ -11,3 +14,24 @@ func MapOmit_from_MassOmit(MassOmit []string) map[string]interface{} {
return MapOmit 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
}

View File

@ -1 +1,51 @@
package crud_functions 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)
}
})
}
}

View File

@ -2,6 +2,7 @@ package grpc_lawsuit_status_types
import ( import (
"context" "context"
"time"
"github.com/ManyakRus/starter/log" "github.com/ManyakRus/starter/log"
"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/network/grpc/grpc_client" "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/grpc_nrpc"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/nrpc/nrpc_client" "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" "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
}

View File

@ -6,3 +6,31 @@ import (
"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"
"testing" "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")
}
}

View File

@ -24,6 +24,7 @@ type ICrud_LawsuitStatusType interface {
Restore(*LawsuitStatusType) error Restore(*LawsuitStatusType) error
Find_ByExtID(*LawsuitStatusType) error Find_ByExtID(*LawsuitStatusType) error
ReadFromCache(ID int64) (LawsuitStatusType, error) ReadFromCache(ID int64) (LawsuitStatusType, error)
UpdateManyFields(*LawsuitStatusType, []string) error
} }
// TableName - возвращает имя таблицы в БД // TableName - возвращает имя таблицы в БД
@ -189,4 +190,15 @@ func (m LawsuitStatusType) SetCrudInterface(crud ICrud_LawsuitStatusType) {
return 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 операции ------------------------------------------------------------ // ---------------------------- конец CRUD операции ------------------------------------------------------------

View File

@ -14,7 +14,8 @@ func main() {
} }
func StartApp() { func StartApp() {
//ConfigMain.LoadENV_or_SettingsTXT() //defer micro.ShowTimePassed(time.Now())
config.LoadSettingsTxt() config.LoadSettingsTxt()
config.FillSettings() config.FillSettings()

View File

@ -474,6 +474,7 @@ func ReplaceText_created_at(s string, Table1 *types.Table) string {
return Otvet return Otvet
} }
// RenameFunctions - заменяет названия функций, на названия из файла
func RenameFunctions(TextDB string, Table1 *types.Table) string { func RenameFunctions(TextDB string, Table1 *types.Table) string {
Otvet := TextDB Otvet := TextDB
@ -528,6 +529,8 @@ func CreateFilesUpdateEveryColumn(Table1 *types.Table) error {
//заменим имя пакета на новое //заменим имя пакета на новое
TextCrud = create_files.ReplacePackageName(TextCrud, DirReadyTable) 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 { 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 = strings.ReplaceAll(TextCrud, `//`+constants.TEXT_CACHE_REMOVE, constants.TEXT_CACHE_REMOVE)
} }
//переименование функций
TextCrud = RenameFunctions(TextCrud, Table1)
//удаление пустого импорта //удаление пустого импорта
TextCrud = create_files.DeleteEmptyImport(TextCrud) TextCrud = create_files.DeleteEmptyImport(TextCrud)
@ -675,15 +681,8 @@ func CreateFilesUpdateEveryColumnTest(Table1 *types.Table) error {
//заменим имя пакета на новое //заменим имя пакета на новое
TextCrud = create_files.ReplacePackageName(TextCrud, DirReadyTable) TextCrud = create_files.ReplacePackageName(TextCrud, DirReadyTable)
TextCrud = strings.ReplaceAll(TextCrud, config.Settings.TEXT_TEMPLATE_MODEL, Table1.NameGo)
// TextCrud := "package " + config.Settings.PREFIX_CRUD + TableName + "\n\n" TextCrud = strings.ReplaceAll(TextCrud, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
// TextCrud = TextCrud + `import (
// "testing"
// "github.com/ManyakRus/starter/config_main"
// "github.com/ManyakRus/starter/postgres_gorm"
//)
//
//`
//заменим импорты //заменим импорты
if config.Settings.USE_DEFAULT_TEMPLATE == true { if config.Settings.USE_DEFAULT_TEMPLATE == true {
@ -701,9 +700,6 @@ func CreateFilesUpdateEveryColumnTest(Table1 *types.Table) error {
if TextUpdateEveryColumn == "" { if TextUpdateEveryColumn == "" {
return err 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 = TextCrud + TextUpdateEveryColumn
TextCrud = config.Settings.TEXT_MODULE_GENERATED + TextCrud TextCrud = config.Settings.TEXT_MODULE_GENERATED + TextCrud

View File

@ -397,19 +397,12 @@ func CreateFilesUpdateEveryColumn(Table1 *types.Table) error {
} }
TextGRPC_Client := string(bytes) TextGRPC_Client := string(bytes)
TextGRPC_Client = TextGRPC_Client + "\n" 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 = 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 { if config.Settings.USE_DEFAULT_TEMPLATE == true {
TextGRPC_Client = create_files.DeleteTemplateRepositoryImports(TextGRPC_Client) TextGRPC_Client = create_files.DeleteTemplateRepositoryImports(TextGRPC_Client)
@ -557,6 +550,8 @@ func CreateTestFilesUpdateEveryColumn(Table1 *types.Table) error {
} }
TextGRPC_Client := string(bytes) TextGRPC_Client := string(bytes)
TextGRPC_Client = TextGRPC_Client + "\n" 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 = create_files.ReplacePackageName(TextGRPC_Client, DirReadyTable)

View File

@ -391,15 +391,8 @@ func CreateFilesUpdateEveryColumn(Table1 *types.Table) error {
//заменим имя пакета на новое //заменим имя пакета на новое
TextGRPCServer = create_files.ReplacePackageName(TextGRPCServer, DirReadyTable) TextGRPCServer = create_files.ReplacePackageName(TextGRPCServer, DirReadyTable)
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_MODEL, Table1.NameGo)
// PackageName := micro.LastWord(config.Settings.TEMPLATE_FOLDERNAME_GRPC_SERVER) TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
// TextGRPCServer := "package " + PackageName + "\n\n"
// TextGRPCServer = TextGRPCServer + `import (
// "context"
// "github.com/ManyakRus/starter/micro"
//)
//
//`
//заменим импорты //заменим импорты
if config.Settings.USE_DEFAULT_TEMPLATE == true { if config.Settings.USE_DEFAULT_TEMPLATE == true {
@ -426,9 +419,6 @@ func CreateFilesUpdateEveryColumn(Table1 *types.Table) error {
return err 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 = TextGRPCServer + TextUpdateEveryColumn
if config.Settings.USE_DEFAULT_TEMPLATE == true { if config.Settings.USE_DEFAULT_TEMPLATE == true {
@ -538,16 +528,8 @@ func CreateTestFilesUpdateEveryColumn(Table1 *types.Table) error {
//заменим имя пакета на новое //заменим имя пакета на новое
TextGRPCServer = create_files.ReplacePackageName(TextGRPCServer, DirReadyTable) TextGRPCServer = create_files.ReplacePackageName(TextGRPCServer, DirReadyTable)
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_MODEL, Table1.NameGo)
// PackageName := micro.LastWord(config.Settings.TEMPLATE_FOLDERNAME_GRPC_SERVER) TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
// TextGRPCServer := "package " + PackageName + "\n\n"
// TextGRPCServer = TextGRPCServer + `import (
// "context"
// "testing"
// "github.com/ManyakRus/starter/config_main"
//)
//
//`
//заменим импорты //заменим импорты
if config.Settings.USE_DEFAULT_TEMPLATE == true { if config.Settings.USE_DEFAULT_TEMPLATE == true {
@ -570,13 +552,11 @@ func CreateTestFilesUpdateEveryColumn(Table1 *types.Table) error {
//создание текста //создание текста
TextUpdateEveryColumn := FindTextUpdateEveryColumnTest(TextGRPCServerUpdateFunc, Table1) TextUpdateEveryColumn := FindTextUpdateEveryColumnTest(TextGRPCServerUpdateFunc, Table1)
// пустой файл не нужен // пустой файл не нужен
if TextUpdateEveryColumn == "" { if TextUpdateEveryColumn == "" {
return err 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 = TextGRPCServer + TextUpdateEveryColumn
TextGRPCServer = config.Settings.TEXT_MODULE_GENERATED + TextGRPCServer TextGRPCServer = config.Settings.TEXT_MODULE_GENERATED + TextGRPCServer

View File

@ -178,6 +178,7 @@ func CreateFilesModel_crud(Table1 *types.Table, DirTemplatesModel, DirReadyModel
TextModel = DeleteFromInterfaceDelete(TextModel, Table1) TextModel = DeleteFromInterfaceDelete(TextModel, Table1)
TextModel = DeleteFromInterfaceRestore(TextModel, Table1) TextModel = DeleteFromInterfaceRestore(TextModel, Table1)
TextModel = DeleteFromInterfaceFind_ByExtID(TextModel, Table1) TextModel = DeleteFromInterfaceFind_ByExtID(TextModel, Table1)
TextModel = DeleteFromInterfaceUpdateManyFields(TextModel, Table1)
//кэш //кэш
if config.Settings.NEED_CREATE_CACHE_API == false { if config.Settings.NEED_CREATE_CACHE_API == false {
//исправление Save() //исправление Save()
@ -683,3 +684,19 @@ func DeleteFromInterfaceReadFromCache(TextModel string, Table1 *types.Table) str
return Otvet 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
}

View File

@ -83,6 +83,7 @@ func CreateFileProto(MapAll map[string]*types.Table) error {
} }
TextProtoNew = TextProtoNew + FindTextProtoTable1(TextProto, Table1) TextProtoNew = TextProtoNew + FindTextProtoTable1(TextProto, Table1)
TextProtoNew = TextProtoNew + FindTextProtoTable1_UpdateManyFields(TextProto, Table1)
TextProtoNew = TextProtoNew + FindTextProtoTable1_UpdateEveryColumn(TextProto, Table1) TextProtoNew = TextProtoNew + FindTextProtoTable1_UpdateEveryColumn(TextProto, Table1)
if config.Settings.NEED_CREATE_CACHE_API == true { if config.Settings.NEED_CREATE_CACHE_API == true {
@ -416,3 +417,36 @@ func TextReadFromCache(ModelName string) string {
return Otvet 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
}