1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2025-01-04 13:23:00 +02:00

сделал many pk

This commit is contained in:
Nikitin Aleksandr 2024-06-04 14:39:37 +03:00
parent 784243e434
commit 526c16aa23
2 changed files with 126 additions and 12 deletions

View File

@ -1419,7 +1419,7 @@ func FindTextProtobufRequest(Table1 *types.Table) (OtvetRequestType string, Otve
if Table1.PrimaryKeyColumnsCount == 1 {
OtvetRequestType, OtvetRequestName = FindTextProtobufRequest1(Table1)
} else {
//OtvetRequestType, OtvetRequestName = FindTextProtobufRequest_Column_ManyPK(Table1)
OtvetRequestType = FindTextProtobufRequest_ManyPK(Table1)
}
return OtvetRequestType, OtvetRequestName
@ -1470,10 +1470,12 @@ func FindTextProtobufRequest_ManyPK(Table1 *types.Table) string {
return Otvet
}
for _, ColumnPK1 := range MassPrimaryKeyColumns {
Type1, _, _, _ := FindTextProtobufRequest_ID_Type(Table1, ColumnPK1, "")
Otvet = Otvet + Type1
}
Otvet = FindTextProtobufRequest_Column_ManyPK(Table1, MassPrimaryKeyColumns[0])
//for _, ColumnPK1 := range MassPrimaryKeyColumns {
// Type1, _, _, _ := FindTextProtobufRequest_ID_Type(Table1, ColumnPK1, "")
// Otvet = Otvet + Type1
//}
return Otvet
}
@ -1552,8 +1554,7 @@ func FindTextProtobufRequest_ID_Type(Table1 *types.Table, Column1 *types.Column,
sNumber = "_" + sNumber
}
//PrimaryKey_TypeGo := PrimaryKeyColumn.TypeGo
RequestName, _ = FindTextProtobufRequest(Table1)
//RequestName, _ = FindTextProtobufRequest(Table1)
TextRequestProtoName := ""

View File

@ -11,6 +11,7 @@ import (
"github.com/ManyakRus/starter/micro"
"os"
"sort"
"strconv"
"strings"
)
@ -83,6 +84,13 @@ func CreateFileProto(MapAll map[string]*types.Table) error {
continue
}
//проверка что таблица нормальная
err2 := create_files.IsGoodTableNamePrefix(Table1)
if err2 != nil {
log.Warn(err2)
continue
}
TextProtoNew = TextProtoNew + FindTextProtoTable1(TextProto, Table1)
TextProtoNew = TextProtoNew + FindTextProtoTable1_UpdateManyFields(TextProto, Table1)
TextProtoNew = TextProtoNew + FindTextProtoTable1_UpdateEveryColumn(TextProto, Table1)
@ -410,7 +418,9 @@ func TextUpdateEveryColumn(Table1 *types.Table, Column1 *types.Column) string {
TextRequest := ""
//TypeGo := Column1.TypeGo
TextRequest, _, _, _ = create_files.FindTextProtobufRequest_ID_Type(Table1, Column1, "")
TextRequest = create_files.FindTextProtobufRequest_Column_ManyPK(Table1, Column1)
//TextRequest, _, _, _ = create_files.FindTextProtobufRequest_ID_Type(Table1, Column1, "")
ColumnName := Column1.NameGo
Otvet = "rpc " + ModelName + "_Update_" + ColumnName + "(" + TextRequest + ") returns (ResponseEmpty) {}"
@ -493,7 +503,7 @@ func TextUpdateManyFields(ModelName string) string {
return Otvet
}
// AddTextMessageRequestID - в текст .proto добавляет message с RequestID
// AddTextMessageRequestID1 - в текст .proto добавляет message с RequestID
func AddTextMessageRequestID1(Text string, Table1 *types.Table) string {
Otvet := Text
@ -534,10 +544,38 @@ message ` + TextRequest + ` {
return Otvet
}
// AddTextMessageRequestID_ManyPK - в текст .proto добавляет message с RequestID
func AddTextMessageRequestID_ManyPK(Text string, Table1 *types.Table) string {
Otvet := Text
//найдём текст RequestID
PrimaryKeyColumns := create_files.FindPrimaryKeyColumns(Table1)
if len(PrimaryKeyColumns) == 0 {
return Otvet
}
Otvet = AddTextMessageRequestID_ColumnType_ManyPK(Otvet, Table1, PrimaryKeyColumns[0])
return Otvet
}
// AddTextMessageRequestID_ColumnType - в текст .proto добавляет message с RequestID_Int64
func AddTextMessageRequestID_ColumnType(Text string, Table1 *types.Table, Column1 *types.Column) string {
Otvet := Text
if Table1.PrimaryKeyColumnsCount == 1 {
Otvet = AddTextMessageRequestID_ColumnType1(Otvet, Table1, Column1)
} else {
Otvet = AddTextMessageRequestID_ColumnType_ManyPK(Otvet, Table1, Column1)
}
return Otvet
}
// AddTextMessageRequestID_ColumnType1 - в текст .proto добавляет message с RequestID_Int64, 1PK
func AddTextMessageRequestID_ColumnType1(Text string, Table1 *types.Table, Column1 *types.Column) string {
Otvet := Text
//найдём текст RequestID
PrimaryKeyColumn := create_files.FindPrimaryKeyColumn(Table1)
if PrimaryKeyColumn == nil {
@ -586,11 +624,86 @@ message ` + TextRequest + ` {
return Otvet
}
// AddTextMessageRequestID - возвращает текст в.proto для таблицы
// AddTextMessageRequestID_ColumnType_ManyPK - в текст .proto добавляет message с RequestID_Int64, много PK
func AddTextMessageRequestID_ColumnType_ManyPK(Text string, Table1 *types.Table, Column1 *types.Column) string {
Otvet := Text
//найдём текст RequestID
PrimaryKeyColumns := create_files.FindPrimaryKeyColumns(Table1)
if len(PrimaryKeyColumns) == 0 {
return Otvet
}
//
TextRequest := create_files.FindTextProtobufRequest_Column_ManyPK(Table1, Column1)
//найдём уже есть message
TextFind := "message " + TextRequest + " {"
pos1 := strings.Index(Otvet, TextFind)
if pos1 >= 0 {
return Otvet
}
TextMessage := `
// ` + TextRequest + ` - параметры запроса на сервер
message ` + TextRequest + ` {
uint32 VersionModel= 1; //версия структуры модели`
//заполним строки про PrimaryKey
isPrimaryKey := false
Number := 1
for _, ColumnPK1 := range PrimaryKeyColumns {
Number = Number + 1
sNumber := strconv.Itoa(Number)
if Column1 == ColumnPK1 {
isPrimaryKey = true
}
//найдём ProtobufTypePK
MappingPK, ok := dbmeta.GetMappings()[ColumnPK1.Type]
if ok == false {
log.Error("Неизвестный тип столбца " + ColumnPK1.Type)
return Otvet
}
ProtobufTypePK := MappingPK.ProtobufType
_, FieldNamePK, _, _ := create_files.FindTextProtobufRequest_ID_Type(Table1, ColumnPK1, "")
//добавим message
TextMessage = TextMessage + `
` + ProtobufTypePK + ` ` + FieldNamePK + ` = ` + sNumber + `; //id записи в БД`
}
//заполним строку про Column1
if isPrimaryKey == false {
//найдём ProtobufTypeColumn
Mapping1, ok := dbmeta.GetMappings()[Column1.Type]
if ok == false {
log.Error("Неизвестный тип столбца " + Column1.Type)
return Otvet
}
ProtobufTypeColumn := Mapping1.ProtobufType
_, FieldName, _, _ := create_files.FindTextProtobufRequest_ID_Type(Table1, Column1, "")
Number = Number + 1
sNumber := strconv.Itoa(Number)
TextMessage = TextMessage + `
` + ProtobufTypeColumn + ` ` + FieldName + ` = ` + sNumber + `; //значение поиска`
}
TextMessage = TextMessage + `
}`
Otvet = Otvet + "\n" + TextMessage
return Otvet
}
// AddTextMessageRequestID - возвращает текст в .proto для таблицы
func AddTextMessageRequestID(TextProto string, Table1 *types.Table) string {
Otvet := TextProto //"\n\t//\n"
Otvet = AddTextMessageRequestID1(Otvet, Table1)
Otvet = AddTextMessageRequestID_ManyPK(Otvet, Table1)
//сортировка по названию колонок
keys := make([]string, 0, len(Table1.MapColumns))
@ -606,7 +719,7 @@ func AddTextMessageRequestID(TextProto string, Table1 *types.Table) string {
log.Panic("FindTextProtoTable1_UpdateEveryColumn() Table1.MapColumns[key1] = false")
}
Otvet = AddTextMessageRequestID_ColumnType(Otvet, Table1, Column1)
Otvet = AddTextMessageRequestID_ColumnType_ManyPK(Otvet, Table1, Column1)
}
return Otvet