From f9e681a82c2ce0325982004ad1dbfddea6c83b38 Mon Sep 17 00:00:00 2001 From: Nikitin Aleksandr Date: Wed, 16 Oct 2024 17:10:18 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20CreateFi?= =?UTF-8?q?les=5FFindModelBy()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entities/model_table_findmodelby.go_ | 6 + .../model_table_findmodelby_function.go_ | 14 ++ .../entities_tables/entities_tables.go | 53 +++-- .../entities_tables/entities_tables_crud.go | 9 +- .../entities_tables_findmodelby.go | 203 ++++++++++++++++++ 5 files changed, 259 insertions(+), 26 deletions(-) create mode 100644 bin/templates/pkg/object_model/entities/model_table_findmodelby.go_ create mode 100644 bin/templates/pkg/object_model/entities/model_table_findmodelby_function.go_ create mode 100644 internal/create_files/entities_tables/entities_tables_findmodelby.go diff --git a/bin/templates/pkg/object_model/entities/model_table_findmodelby.go_ b/bin/templates/pkg/object_model/entities/model_table_findmodelby.go_ new file mode 100644 index 0000000..4ca0a66 --- /dev/null +++ b/bin/templates/pkg/object_model/entities/model_table_findmodelby.go_ @@ -0,0 +1,6 @@ +package lawsuit_status_types + +import ( + "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/db_constants" +) + diff --git a/bin/templates/pkg/object_model/entities/model_table_findmodelby_function.go_ b/bin/templates/pkg/object_model/entities/model_table_findmodelby_function.go_ new file mode 100644 index 0000000..3bb18d5 --- /dev/null +++ b/bin/templates/pkg/object_model/entities/model_table_findmodelby_function.go_ @@ -0,0 +1,14 @@ +// FindModelBy_FieldNamesWithUnderline - находит запись по FieldNamesWithPlus +func (m *LawsuitStatusType) FindModelBy_FieldNamesWithUnderline() (foreign_package.ForeignModel, error) { + Otvet := foreign_package.ForeignModel{} + var err error + + if Crud_manual_LawsuitStatusType == nil { + return Otvet, db_constants.ErrorCrudIsNotInit + } + + Otvet, err = Crud_LawsuitStatusType.FindModelBy_FieldNamesWithUnderline(m) + + return Otvet, err +} + diff --git a/internal/create_files/entities_tables/entities_tables.go b/internal/create_files/entities_tables/entities_tables.go index b1b9429..fdbf094 100644 --- a/internal/create_files/entities_tables/entities_tables.go +++ b/internal/create_files/entities_tables/entities_tables.go @@ -21,7 +21,7 @@ func CreateAllFiles(MapAll map[string]*types.Table) error { } //создание файлов - err = CreateFiles(Table1) + err = CreateFiles(MapAll, Table1) if err != nil { log.Error("CreateFiles() table: ", Table1.Name, " error: ", err) return err @@ -33,29 +33,36 @@ func CreateAllFiles(MapAll map[string]*types.Table) error { log.Error("CreateFiles() table: ", Table1.Name, " error: ", err) return err } - - // - err = CreateFiles_FindBy(Table1) - if err != nil { - log.Error("CreateFiles_FindBy() table: ", Table1.Name, " error: ", err) - return err - } - - //FindMassBy - err = CreateFiles_FindMassBy(Table1) - if err != nil { - log.Error("CreateFiles_FindMassBy() table: ", Table1.Name, " error: ", err) - return err - } - - //ReadAll - err = CreateFiles_ReadAll(Table1) - if err != nil { - log.Error("CreateFiles_ReadAll() table: ", Table1.Name, " error: ", err) - return err - } - } + + // + err = CreateFiles_FindBy(Table1) + if err != nil { + log.Error("CreateFiles_FindBy() table: ", Table1.Name, " error: ", err) + return err + } + + //FindMassBy + err = CreateFiles_FindMassBy(Table1) + if err != nil { + log.Error("CreateFiles_FindMassBy() table: ", Table1.Name, " error: ", err) + return err + } + + //ReadAll + err = CreateFiles_ReadAll(Table1) + if err != nil { + log.Error("CreateFiles_ReadAll() table: ", Table1.Name, " error: ", err) + return err + } + + //FindModelBy + err = CreateFiles_FindModelBy(MapAll, Table1) + if err != nil { + log.Error("CreateFiles_FindModelBy() table: ", Table1.Name, " error: ", err) + return err + } + } return err diff --git a/internal/create_files/entities_tables/entities_tables_crud.go b/internal/create_files/entities_tables/entities_tables_crud.go index 4585b71..363c790 100644 --- a/internal/create_files/entities_tables/entities_tables_crud.go +++ b/internal/create_files/entities_tables/entities_tables_crud.go @@ -15,7 +15,7 @@ import ( ) // CreateFiles - создаёт 1 файл в папке model -func CreateFiles(Table1 *types.Table) error { +func CreateFiles(MapAll map[string]*types.Table, Table1 *types.Table) error { var err error TableName := strings.ToLower(Table1.Name) @@ -41,7 +41,7 @@ func CreateFiles(Table1 *types.Table) error { // создание файла crud if config.Settings.NEED_CREATE_MODEL_CRUD == true { - err = CreateFiles_Model_crud(Table1, DirTemplatesModel, DirReadyModel) + err = CreateFiles_Model_crud(MapAll, Table1, DirTemplatesModel, DirReadyModel) if err != nil { log.Error("CreateFiles_Model_crud() table: ", Table1.Name, " error: ", err) return err @@ -116,7 +116,7 @@ func CreateFiles_Model_struct(Table1 *types.Table, DirTemplatesModel, DirReadyMo } // CreateFiles_Model_crud - создаёт 1 файл с crud операциями -func CreateFiles_Model_crud(Table1 *types.Table, DirTemplatesModel, DirReadyModel string) error { +func CreateFiles_Model_crud(MapAll map[string]*types.Table, Table1 *types.Table, DirTemplatesModel, DirReadyModel string) error { var err error //ModelName := Table1.NameGo @@ -180,6 +180,9 @@ func CreateFiles_Model_crud(Table1 *types.Table, DirTemplatesModel, DirReadyMode // TextModel = AddInterfaces_FindMassBy(TextModel, Table1) + // + TextModel = AddInterfaces_FindModelBy(MapAll, TextModel, Table1) + // TextModel = AddInterfaces_ReadAll(TextModel, Table1) } diff --git a/internal/create_files/entities_tables/entities_tables_findmodelby.go b/internal/create_files/entities_tables/entities_tables_findmodelby.go new file mode 100644 index 0000000..eb4c569 --- /dev/null +++ b/internal/create_files/entities_tables/entities_tables_findmodelby.go @@ -0,0 +1,203 @@ +package entities_tables + +import ( + "github.com/ManyakRus/crud_generator/internal/config" + "github.com/ManyakRus/crud_generator/internal/create_files" + "github.com/ManyakRus/crud_generator/internal/types" + "github.com/ManyakRus/starter/log" + "github.com/ManyakRus/starter/micro" + + "os" + "strings" +) + +// CreateFiles_FindModelBy - создаёт 1 файл в папке crud +func CreateFiles_FindModelBy(MapAll map[string]*types.Table, Table1 *types.Table) error { + var err error + + if len(types.MassFindModelBy) == 0 { + return err + } + + //чтение файлов + DirBin := micro.ProgramDir_bin() + DirTemplates := DirBin + config.Settings.TEMPLATE_FOLDERNAME + micro.SeparatorFile() + DirReady := DirBin + config.Settings.READY_FOLDERNAME + micro.SeparatorFile() + DirTemplatesModel := DirTemplates + config.Settings.TEMPLATE_FOLDERNAME_MODEL + micro.SeparatorFile() + DirReadyModel := DirReady + config.Settings.TEMPLATE_FOLDERNAME_MODEL + micro.SeparatorFile() + + FilenameTemplateModel := DirTemplatesModel + config.Settings.TEMPLATES_MODEL_FINDMODELBY_FILENAME + TableName := strings.ToLower(Table1.Name) + DirReadyTable := DirReadyModel + TableName + FilenameReady := DirReadyTable + micro.SeparatorFile() + config.Settings.PREFIX_MODEL + TableName + "_findmodelby.go" + + //создадим каталог + ok, err := micro.FileExists(DirReadyTable) + if ok == false { + err = os.MkdirAll(DirReadyTable, 0777) + if err != nil { + log.Panic("Mkdir() ", DirReadyTable, " error: ", err) + } + } + + //загрузим шаблон файла + bytes, err := os.ReadFile(FilenameTemplateModel) + if err != nil { + log.Panic("ReadFile() ", FilenameTemplateModel, " error: ", err) + } + TextModel := string(bytes) + + //загрузим шаблон файла функции + FilenameTemplateModelFunction := DirTemplatesModel + config.Settings.TEMPLATES_MODEL_FINDMODELBY_FUNCTION_FILENAME + bytes, err = os.ReadFile(FilenameTemplateModelFunction) + if err != nil { + log.Panic("ReadFile() ", FilenameTemplateModelFunction, " error: ", err) + } + TextTemplatedFunction := string(bytes) + + //заменим имя пакета на новое + TextModel = create_files.Replace_PackageName(TextModel, DirReadyTable) + + //ModelName := Table1.NameGo + //заменим импорты + if config.Settings.USE_DEFAULT_TEMPLATE == true { + TextModel = create_files.Delete_TemplateRepositoryImports(TextModel) + + //ModelTableURL := create_files.Find_ModelTableURL(TableName) + //TextModel = create_files.AddImport(TextModel, ModelTableURL) + + ConstantsURL := create_files.Find_DBConstantsURL() + TextModel = create_files.AddImport(TextModel, ConstantsURL) + + } + + //создание функций + TextModelFunc := CreateFiles_FindModelBy_Table(MapAll, Table1, &TextModel, TextTemplatedFunction) + if TextModelFunc == "" { + return err + } + TextModel = TextModel + TextModelFunc + + //создание текста + TextModel = create_files.Replace_TemplateModel_to_Model(TextModel, Table1.NameGo) + TextModel = create_files.Replace_TemplateTableName_to_TableName(TextModel, Table1.Name) + TextModel = create_files.AddText_ModuleGenerated(TextModel) + + //TextModel = strings.ReplaceAll(TextModel, config.Settings.TEXT_TEMPLATE_MODEL, ModelName) + //TextModel = strings.ReplaceAll(TextModel, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name) + //TextModel = config.Settings.TEXT_MODULE_GENERATED + TextModel + + //замена импортов на новые URL + TextModel = create_files.Replace_RepositoryImportsURL(TextModel) + + //uuid + TextModel = create_files.CheckAndAdd_ImportUUID_FromText(TextModel) + + //alias + TextModel = create_files.CheckAndAdd_ImportAlias(TextModel) + + //удаление пустого импорта + TextModel = create_files.Delete_EmptyImport(TextModel) + + //удаление пустых строк + TextModel = create_files.Delete_EmptyLines(TextModel) + + //запись файла + err = os.WriteFile(FilenameReady, []byte(TextModel), config.Settings.FILE_PERMISSIONS) + + return err +} + +// CreateFiles_FindModelBy_Table - создаёт текст всех функций +func CreateFiles_FindModelBy_Table(MapAll map[string]*types.Table, Table1 *types.Table, TextModel *string, TextTemplateFunction string) string { + Otvet := "" + + for _, TableColumns1 := range types.MassFindModelBy { + if TableColumns1.Table != Table1 { + continue + } + Otvet1 := CreateFiles_FindModelBy_Table1(MapAll, Table1, TextModel, TextTemplateFunction, TableColumns1.Column) + Otvet = Otvet + Otvet1 + } + + return Otvet +} + +// CreateFiles_FindModelBy_Table1 - создаёт текст всех функций +func CreateFiles_FindModelBy_Table1(MapAll map[string]*types.Table, Table1 *types.Table, TextModel *string, TextTemplateFunction string, Column1 *types.Column) string { + Otvet := TextTemplateFunction + + // + FieldNamesWithUnderline := "" + FieldNamesWithComma := "" + + // + Underline := "" + Plus := "" + FieldNamesWithUnderline = FieldNamesWithUnderline + Underline + Column1.NameGo + FieldNamesWithComma = FieldNamesWithComma + Plus + Column1.NameGo + Underline = "_" + Plus = "+" + Otvet = strings.ReplaceAll(Otvet, "FieldNamesWithUnderline", FieldNamesWithUnderline) + Otvet = strings.ReplaceAll(Otvet, "FieldNamesWithPlus", FieldNamesWithComma) + + // + ForeignTableName := Column1.TableKey + ForeignTable, ok := MapAll[ForeignTableName] + if ok == false { + log.Panic("Table not found: ", ForeignTableName) + } + + // + TextFindModelBy := "Find" + ForeignTable.NameGo_translit + "By" + Otvet = strings.ReplaceAll(Otvet, "FindModelBy", TextFindModelBy) + + // + TextForeignPackage := ForeignTable.Name + Otvet = strings.ReplaceAll(Otvet, "foreign_package", TextForeignPackage) + + // + TextForeignModel := ForeignTable.NameGo + Otvet = strings.ReplaceAll(Otvet, "ForeignModel", TextForeignModel) + + // + ModelTableURL := create_files.Find_ModelTableURL(ForeignTableName) + *TextModel = create_files.AddImport(*TextModel, ModelTableURL) + + return Otvet +} + +// AddInterfaces_FindModelBy - добавляет функцию внутрь интерфейса +func AddInterfaces_FindModelBy(MapAll map[string]*types.Table, TextModel string, Table1 *types.Table) string { + Otvet := TextModel + + if len(types.MassFindModelBy) == 0 { + return Otvet + } + + TextFunc := "" + for _, TableColumns1 := range types.MassFindModelBy { + if TableColumns1.Table != Table1 { + continue + } + + Column1 := TableColumns1.Column + + // + ForeignTableName := Column1.TableKey + ForeignTable, ok := MapAll[ForeignTableName] + if ok == false { + log.Panic("Table not found: ", ForeignTableName) + } + + FieldNamesWithUnderline := "" + FieldNamesWithUnderline = FieldNamesWithUnderline + Column1.NameGo + TextFunc1 := "\n\tFind" + ForeignTable.NameGo + "By_" + FieldNamesWithUnderline + "(*" + Table1.NameGo + ") (" + ForeignTable.Name + "." + ForeignTable.NameGo + ",error)" + TextFunc = TextFunc + TextFunc1 + + } + + Otvet = create_files.AddInterfaceFunction(Otvet, TextFunc) + + return Otvet +}