|
|
|
@ -9,6 +9,7 @@ import (
|
|
|
|
|
"github.com/ManyakRus/starter/log"
|
|
|
|
|
"github.com/ManyakRus/starter/micro"
|
|
|
|
|
"os"
|
|
|
|
|
"sort"
|
|
|
|
|
"strings"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
@ -39,6 +40,26 @@ func CreateAllFiles(MapAll map[string]*types.Table) error {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
if config.Settings.NEED_CREATE_UPDATE_EVERY_COLUMN == true {
|
|
|
|
|
//файлы grpc_server update
|
|
|
|
|
err = CreateFilesUpdateEveryColumn(Table1)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("CreateFiles() table: ", Table1.Name, " error: ", err)
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//тестовые файлы grpc_server update
|
|
|
|
|
if config.Settings.NEED_CREATE_GRPC_SERVER_TEST == true {
|
|
|
|
|
err = CreateFilesUpdateEveryColumnTest(Table1)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("CreateTestFiles() table: ", Table1.Name, " error: ", err)
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
@ -342,3 +363,236 @@ func ConvertID(Text string, Table1 *types.Table) string {
|
|
|
|
|
|
|
|
|
|
return Otvet
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// CreateFilesUpdateEveryColumn - создаёт 1 файл в папке grpc_server
|
|
|
|
|
func CreateFilesUpdateEveryColumn(Table1 *types.Table) error {
|
|
|
|
|
var err error
|
|
|
|
|
|
|
|
|
|
//чтение файлов
|
|
|
|
|
DirBin := micro.ProgramDir_bin()
|
|
|
|
|
DirTemplates := DirBin + config.Settings.TEMPLATE_FOLDERNAME + micro.SeparatorFile()
|
|
|
|
|
DirReady := DirBin + config.Settings.READY_FOLDERNAME + micro.SeparatorFile()
|
|
|
|
|
DirTemplatesGRPCServer := DirTemplates + config.Settings.TEMPLATE_FOLDERNAME_GRPC_SERVER + micro.SeparatorFile()
|
|
|
|
|
DirReadyGRPCServer := DirReady + config.Settings.TEMPLATE_FOLDERNAME_GRPC_SERVER + micro.SeparatorFile()
|
|
|
|
|
|
|
|
|
|
FilenameTemplateGRPCServer := DirTemplatesGRPCServer + constants.SERVER_GRPC_TABLE_UPDATE_FUNC_FILENAME
|
|
|
|
|
TableName := strings.ToLower(Table1.Name)
|
|
|
|
|
DirReadyTable := DirReadyGRPCServer
|
|
|
|
|
FilenameReadyGRPCServerUpdate := DirReadyTable + config.Settings.PREFIX_SERVER_GRPC + TableName + "_update.go"
|
|
|
|
|
|
|
|
|
|
//создадим папку готовых файлов
|
|
|
|
|
folders.CreateFolder(DirReadyTable)
|
|
|
|
|
|
|
|
|
|
bytes, err := os.ReadFile(FilenameTemplateGRPCServer)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Panic("ReadFile() ", FilenameTemplateGRPCServer, " error: ", err)
|
|
|
|
|
}
|
|
|
|
|
TextGRPCServerUpdateFunc := string(bytes)
|
|
|
|
|
|
|
|
|
|
TextGRPCServer := "package " + config.Settings.TEMPLATE_FOLDERNAME_GRPC + "\n\n"
|
|
|
|
|
TextGRPCServer = TextGRPCServer + `import (
|
|
|
|
|
"context"
|
|
|
|
|
"github.com/ManyakRus/starter/micro"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
//заменим импорты
|
|
|
|
|
//if config.Settings.USE_DEFAULT_TEMPLATE == true {
|
|
|
|
|
ModelTableURL := create_files.FindModelTableURL(TableName)
|
|
|
|
|
TextGRPCServer = create_files.AddImport(TextGRPCServer, ModelTableURL)
|
|
|
|
|
|
|
|
|
|
ProtoURL := create_files.FindProtoURL()
|
|
|
|
|
TextGRPCServer = create_files.AddImport(TextGRPCServer, ProtoURL)
|
|
|
|
|
|
|
|
|
|
ModelURL := create_files.FindModelURL()
|
|
|
|
|
TextGRPCServer = create_files.AddImport(TextGRPCServer, ModelURL)
|
|
|
|
|
|
|
|
|
|
TextGRPCServer = ConvertID(TextGRPCServer, Table1)
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//создание текста
|
|
|
|
|
TextUpdateEveryColumn := FindTextUpdateEveryColumn(TextGRPCServerUpdateFunc, Table1)
|
|
|
|
|
//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
|
|
|
|
|
|
|
|
|
|
//удаление пустого импорта
|
|
|
|
|
TextGRPCServer = create_files.DeleteEmptyImport(TextGRPCServer)
|
|
|
|
|
TextGRPCServer = create_files.DeleteEmptyLines(TextGRPCServer)
|
|
|
|
|
|
|
|
|
|
//запись файла
|
|
|
|
|
err = os.WriteFile(FilenameReadyGRPCServerUpdate, []byte(TextGRPCServer), constants.FILE_PERMISSIONS)
|
|
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// FindTextUpdateEveryColumn - возвращает текст для всех таблиц
|
|
|
|
|
func FindTextUpdateEveryColumn(TextGRPCServerUpdateFunc string, Table1 *types.Table) string {
|
|
|
|
|
Otvet := ""
|
|
|
|
|
|
|
|
|
|
//сортировка по названию таблиц
|
|
|
|
|
keys := make([]string, 0, len(Table1.MapColumns))
|
|
|
|
|
for k := range Table1.MapColumns {
|
|
|
|
|
keys = append(keys, k)
|
|
|
|
|
}
|
|
|
|
|
sort.Strings(keys)
|
|
|
|
|
|
|
|
|
|
//найдём новый текст для каждой таблицы
|
|
|
|
|
for _, key1 := range keys {
|
|
|
|
|
Column1, ok := Table1.MapColumns[key1]
|
|
|
|
|
if ok == false {
|
|
|
|
|
log.Panic("FindTextProtoTable1_UpdateEveryColumn() Table1.MapColumns[key1] = false")
|
|
|
|
|
}
|
|
|
|
|
if create_files.Is_Common_Сolumn(Column1) == true {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TextColumn1 := FindTextUpdateEveryColumn1(TextGRPCServerUpdateFunc, Table1, Column1)
|
|
|
|
|
Otvet = Otvet + TextColumn1 + "\n\n"
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Otvet
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// FindTextUpdateEveryColumn1 - возвращает текст для одной таблицы
|
|
|
|
|
func FindTextUpdateEveryColumn1(TextGRPCServerUpdateFunc string, Table1 *types.Table, Column1 *types.Column) string {
|
|
|
|
|
Otvet := TextGRPCServerUpdateFunc
|
|
|
|
|
|
|
|
|
|
ModelName := Table1.NameGo
|
|
|
|
|
ColumnName := Column1.NameGo
|
|
|
|
|
FuncName := "Update_" + ColumnName
|
|
|
|
|
TextRequest, TextRequestFieldName := create_files.FindTextProtobufRequest(Column1.TypeGo)
|
|
|
|
|
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, config.Settings.TEXT_TEMPLATE_MODEL+"_Read", ModelName+"_"+FuncName)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, config.Settings.TEXT_TEMPLATE_MODEL, ModelName)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, "grpc_proto.RequestId", "grpc_proto."+TextRequest)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, "ColumnName", ColumnName)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, "Model.ID", "Model."+ColumnName)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, "Request.ID", "Request."+TextRequestFieldName)
|
|
|
|
|
|
|
|
|
|
return Otvet
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// CreateFilesUpdateEveryColumnTest - создаёт 1 файл в папке grpc_server
|
|
|
|
|
func CreateFilesUpdateEveryColumnTest(Table1 *types.Table) error {
|
|
|
|
|
var err error
|
|
|
|
|
|
|
|
|
|
//чтение файлов
|
|
|
|
|
DirBin := micro.ProgramDir_bin()
|
|
|
|
|
DirTemplates := DirBin + config.Settings.TEMPLATE_FOLDERNAME + micro.SeparatorFile()
|
|
|
|
|
DirReady := DirBin + config.Settings.READY_FOLDERNAME + micro.SeparatorFile()
|
|
|
|
|
DirTemplatesGRPCServer := DirTemplates + config.Settings.TEMPLATE_FOLDERNAME_GRPC_SERVER + micro.SeparatorFile()
|
|
|
|
|
DirReadyGRPCServer := DirReady + config.Settings.TEMPLATE_FOLDERNAME_GRPC_SERVER + micro.SeparatorFile()
|
|
|
|
|
|
|
|
|
|
FilenameTemplateGRPCServer := DirTemplatesGRPCServer + constants.SERVER_GRPC_TABLE_UPDATE_FUNC_TEST_FILENAME
|
|
|
|
|
TableName := strings.ToLower(Table1.Name)
|
|
|
|
|
DirReadyTable := DirReadyGRPCServer
|
|
|
|
|
FilenameReadyGRPCServerUpdate := DirReadyTable + config.Settings.PREFIX_SERVER_GRPC + TableName + "_update_test.go"
|
|
|
|
|
|
|
|
|
|
//создадим папку готовых файлов
|
|
|
|
|
folders.CreateFolder(DirReadyTable)
|
|
|
|
|
|
|
|
|
|
bytes, err := os.ReadFile(FilenameTemplateGRPCServer)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Panic("ReadFile() ", FilenameTemplateGRPCServer, " error: ", err)
|
|
|
|
|
}
|
|
|
|
|
TextGRPCServerUpdateFunc := string(bytes)
|
|
|
|
|
|
|
|
|
|
TextGRPCServer := "package " + config.Settings.TEMPLATE_FOLDERNAME_GRPC + "\n\n"
|
|
|
|
|
TextGRPCServer = TextGRPCServer + `import (
|
|
|
|
|
"context"
|
|
|
|
|
"github.com/ManyakRus/starter/config_main"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
//заменим импорты
|
|
|
|
|
//if config.Settings.USE_DEFAULT_TEMPLATE == true {
|
|
|
|
|
ModelTableURL := create_files.FindModelTableURL(TableName)
|
|
|
|
|
TextGRPCServer = create_files.AddImport(TextGRPCServer, ModelTableURL)
|
|
|
|
|
|
|
|
|
|
ProtoURL := create_files.FindProtoURL()
|
|
|
|
|
TextGRPCServer = create_files.AddImport(TextGRPCServer, ProtoURL)
|
|
|
|
|
|
|
|
|
|
ModelURL := create_files.FindModelURL()
|
|
|
|
|
TextGRPCServer = create_files.AddImport(TextGRPCServer, ModelURL)
|
|
|
|
|
|
|
|
|
|
CrudStarterURL := create_files.FindCrudStarterURL()
|
|
|
|
|
TextGRPCServer = create_files.AddImport(TextGRPCServer, CrudStarterURL)
|
|
|
|
|
|
|
|
|
|
TextGRPCServer = ConvertID(TextGRPCServer, Table1)
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//создание текста
|
|
|
|
|
TextUpdateEveryColumn := FindTextUpdateEveryColumnTest(TextGRPCServerUpdateFunc, Table1)
|
|
|
|
|
//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
|
|
|
|
|
|
|
|
|
|
//удаление пустого импорта
|
|
|
|
|
TextGRPCServer = create_files.DeleteEmptyImport(TextGRPCServer)
|
|
|
|
|
TextGRPCServer = create_files.DeleteEmptyLines(TextGRPCServer)
|
|
|
|
|
|
|
|
|
|
//запись файла
|
|
|
|
|
err = os.WriteFile(FilenameReadyGRPCServerUpdate, []byte(TextGRPCServer), constants.FILE_PERMISSIONS)
|
|
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// FindTextUpdateEveryColumnTest - возвращает текст для всех таблиц
|
|
|
|
|
func FindTextUpdateEveryColumnTest(TextGRPCServerUpdateFunc string, Table1 *types.Table) string {
|
|
|
|
|
Otvet := ""
|
|
|
|
|
|
|
|
|
|
//сортировка по названию таблиц
|
|
|
|
|
keys := make([]string, 0, len(Table1.MapColumns))
|
|
|
|
|
for k := range Table1.MapColumns {
|
|
|
|
|
keys = append(keys, k)
|
|
|
|
|
}
|
|
|
|
|
sort.Strings(keys)
|
|
|
|
|
|
|
|
|
|
//найдём новый текст для каждой таблицы
|
|
|
|
|
for _, key1 := range keys {
|
|
|
|
|
Column1, ok := Table1.MapColumns[key1]
|
|
|
|
|
if ok == false {
|
|
|
|
|
log.Panic("FindTextProtoTable1_UpdateEveryColumn() Table1.MapColumns[key1] = false")
|
|
|
|
|
}
|
|
|
|
|
if create_files.Is_Common_Сolumn(Column1) == true {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TextColumn1 := FindTextUpdateEveryColumnTest1(TextGRPCServerUpdateFunc, Table1, Column1)
|
|
|
|
|
Otvet = Otvet + TextColumn1 + "\n\n"
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Otvet
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// FindTextUpdateEveryColumnTest1 - возвращает текст для одной таблицы
|
|
|
|
|
func FindTextUpdateEveryColumnTest1(TextGRPCServerUpdateFunc string, Table1 *types.Table, Column1 *types.Column) string {
|
|
|
|
|
Otvet := TextGRPCServerUpdateFunc
|
|
|
|
|
|
|
|
|
|
ModelName := Table1.NameGo
|
|
|
|
|
ColumnName := Column1.NameGo
|
|
|
|
|
FuncName := "Update_" + ColumnName
|
|
|
|
|
TextRequest, TextRequestFieldName := create_files.FindTextProtobufRequest(Column1.TypeGo)
|
|
|
|
|
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, config.Settings.TEXT_TEMPLATE_MODEL+"_Read", ModelName+"_"+FuncName)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, config.Settings.TEXT_TEMPLATE_MODEL, ModelName)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, "grpc_proto.RequestId", "grpc_proto."+TextRequest)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, "ColumnName", ColumnName)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, "Model.ID", "Model."+ColumnName)
|
|
|
|
|
Otvet = strings.ReplaceAll(Otvet, "Request.ID", "Request."+TextRequestFieldName)
|
|
|
|
|
|
|
|
|
|
return Otvet
|
|
|
|
|
}
|
|
|
|
|