diff --git a/internal/create_files/create_files.go b/internal/create_files/create_files.go index 1f6e1f7..c8955b3 100644 --- a/internal/create_files/create_files.go +++ b/internal/create_files/create_files.go @@ -264,6 +264,7 @@ func ReplacePrimaryKeyOtvetID1(Text string, Table1 *types.Table) string { Otvet := Text ColumnNamePK, ColumnTypeGoPK := FindPrimaryKeyNameTypeGo(Table1) + ColumnPK := FindPrimaryKeyColumn(Table1) //заменим ID-Alias на ID TableName := Table1.Name @@ -308,6 +309,15 @@ func ReplacePrimaryKeyOtvetID1(Text string, Table1 *types.Table) string { Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(ID)", "ID") } + Value, GolangCode := ConvertProtobufTypeToGolangType(Table1, ColumnPK, "Request.") + if GolangCode == "" { + TextNew := "\t" + ColumnPK.NameGo + " := " + Value + "\n" + Otvet = strings.ReplaceAll(Otvet, "\tID := Request.ID\n", TextNew) + } else { + TextNew := "\t" + GolangCode + "\n" + Otvet = strings.ReplaceAll(Otvet, "\tID := Request.ID\n", TextNew) + } + return Otvet } @@ -1841,19 +1851,17 @@ func ConvertGolangTypeToProtobufType(Table1 *types.Table, Column1 *types.Column, // ConvertProtobufTypeToGolangType - возвращает имя переменной + имя колонки, преобразованное в тип golang из protobuf func ConvertProtobufTypeToGolangType(Table1 *types.Table, Column1 *types.Column, VariableName string) (VariableColumn string, GolangCode string) { - VariableColumn = VariableName + Column1.NameGo + RequestColumnName := FindRequestColumnName(Table1, Column1) + VariableColumn = VariableName + RequestColumnName //GolangCode := "" TableName := Table1.Name IDName := Column1.Name - RequestColumnName := Column1.NameGo - RequestColumnName = FindRequestColumnName(Table1, Column1) - //alias в Int64 TextConvert, ok := types.MapConvertID[TableName+"."+IDName] if ok == true { - VariableColumn = TextConvert + "(" + VariableName + Column1.NameGo + ")" + VariableColumn = TextConvert + "(" + VariableName + RequestColumnName + ")" return VariableColumn, GolangCode } @@ -1861,7 +1869,7 @@ func ConvertProtobufTypeToGolangType(Table1 *types.Table, Column1 *types.Column, switch Column1.TypeGo { case "time.Time": { - VariableColumn = VariableName + Column1.NameGo + ".AsTime()" + VariableColumn = VariableName + RequestColumnName + ".AsTime()" return VariableColumn, GolangCode } case "uuid.UUID": @@ -1875,28 +1883,6 @@ func ConvertProtobufTypeToGolangType(Table1 *types.Table, Column1 *types.Column, return VariableColumn, GolangCode } } - //if Column1.TypeGo == "time.Time" { - // VariableColumn = VariableName + Column1.NameGo + ".AsTime()" - // return VariableColumn - //} - - ////преобразуем alias в обычный тип, и дату в timestamp - //switch Column1.TypeGo { - //case "time.Time": - // VariableColumn = "timestamppb.New(" + VariableName + Column1.NameGo + ")" - //case "string": - // VariableColumn = "string(" + VariableName + Column1.NameGo + ")" - //case "int64": - // VariableColumn = "int64(" + VariableName + Column1.NameGo + ")" - //case "int32": - // VariableColumn = "int32(" + VariableName + Column1.NameGo + ")" - //case "bool": - // VariableColumn = "bool(" + VariableName + Column1.NameGo + ")" - //case "float32": - // VariableColumn = "float32(" + VariableName + Column1.NameGo + ")" - //case "float64": - // VariableColumn = "float64(" + VariableName + Column1.NameGo + ")" - //} return VariableColumn, GolangCode } @@ -2653,3 +2639,17 @@ func ReplaceCacheRemove_ManyPK(Text string, Table1 *types.Table) string { return Otvet } + +// IsPrimaryKeyColumn - проверяет является ли колонка PrimaryKey +func IsPrimaryKeyColumn(Table1 *types.Table, Column *types.Column) bool { + Otvet := false + + for _, Column1 := range Table1.MapColumns { + if Column1.IsPrimaryKey == true && Column1 == Column { + Otvet = true + break + } + } + + return Otvet +} diff --git a/internal/create_files/server_grpc_tables/server_grpc_tables.go b/internal/create_files/server_grpc_tables/server_grpc_tables.go index 7eae968..b0bf89e 100644 --- a/internal/create_files/server_grpc_tables/server_grpc_tables.go +++ b/internal/create_files/server_grpc_tables/server_grpc_tables.go @@ -127,11 +127,16 @@ func CreateFiles(Table1 *types.Table) error { CrudTableURL := create_files.FindCrudTableURL(TableName) TextGRPCServer = create_files.AddImport(TextGRPCServer, CrudTableURL) - TextGRPCServer = ReplaceIDRequestID_1PK(TextGRPCServer, Table1) + if Table1.PrimaryKeyColumnsCount == 1 { + TextGRPCServer = ReplaceIDRequestID_1PK(TextGRPCServer, Table1) + } - //замена ID на PrimaryKey + //замена "m.ID = AliasFromInt(ID)" TextGRPCServer = create_files.ReplacePrimaryKeyM_ID(TextGRPCServer, Table1) + //замена "ID := Request.ID" + TextGRPCServer = create_files.ReplacePrimaryKeyOtvetID(TextGRPCServer, Table1) + //замена RequestId{} TextGRPCServer = create_files.ReplaceTextRequestID_PrimaryKey(TextGRPCServer, Table1) @@ -522,7 +527,8 @@ func FindTextUpdateEveryColumn1(TextGRPCServerUpdateFunc string, Table1 *types.T _, _, TextRequestFieldGolang, TextGolangLine := create_files.FindTextProtobufRequest_ID_Type(Table1, Column1, "Request.") //if Table1.PrimaryKeyColumnsCount > 1 { TextRequest := create_files.FindTextProtobufRequest_Column_ManyPK(Table1, Column1) - ColumnPK := create_files.FindPrimaryKeyColumn(Table1) + //ColumnPK := create_files.FindPrimaryKeyColumn(Table1) + IsPrimaryKey := create_files.IsPrimaryKeyColumn(Table1, Column1) //замена ID на PrimaryKey Otvet = create_files.ReplacePrimaryKeyM_ID(Otvet, Table1) @@ -532,7 +538,7 @@ func FindTextUpdateEveryColumn1(TextGRPCServerUpdateFunc string, Table1 *types.T Otvet = strings.ReplaceAll(Otvet, config.Settings.TEXT_TEMPLATE_MODEL+"_Update", ModelName+"_"+FuncName) Otvet = strings.ReplaceAll(Otvet, config.Settings.TEXT_TEMPLATE_MODEL, ModelName) Otvet = strings.ReplaceAll(Otvet, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name) - if Column1 == ColumnPK { + if IsPrimaryKey == true { Otvet = strings.ReplaceAll(Otvet, "\tColumnName := Request.FieldName\n", "") } else if TextGolangLine != "" { Otvet = strings.ReplaceAll(Otvet, "ColumnName := Request.FieldName", TextGolangLine) @@ -780,16 +786,17 @@ func CreateFilesCache(Table1 *types.Table) error { } + TextGRPCServer = create_files.ReplacePrimaryKeyOtvetID(TextGRPCServer, Table1) + + TextGRPCServer = create_files.ReplacePrimaryKeyM_ID(TextGRPCServer, Table1) + if Table1.PrimaryKeyColumnsCount == 1 { } else { - TextGRPCServer = create_files.ReplacePrimaryKeyM_ID(TextGRPCServer, Table1) TextIDMany := ", ID)" TextIDMany = create_files.ReplaceIDtoID_Many(TextIDMany, Table1) TextGRPCServer = strings.ReplaceAll(TextGRPCServer, "(ID)", "("+Table1.Name+".StringIdentifier"+TextIDMany+")") - TextGRPCServer = create_files.ReplaceIDtoID_Many(TextGRPCServer, Table1) - //замена ID на PrimaryKey - } + TextGRPCServer = create_files.ReplaceIDtoID_Many(TextGRPCServer, Table1) //замена RequestId{} TextGRPCServer = create_files.ReplaceTextRequestID_PrimaryKey(TextGRPCServer, Table1)