1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2025-06-19 01:07:36 +02:00

сделал find_by_functions.json

This commit is contained in:
Nikitin Aleksandr
2024-08-15 15:16:34 +03:00
parent aa80ba91be
commit 7fc14b43ef
16 changed files with 1148 additions and 154 deletions

View File

@ -294,3 +294,30 @@ TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_FILENAME="crud_tables_findmassby_functi
#TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_TEST_FILENAME - short filename of "crud_tables_findmassby_function_test.go_" file #TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_TEST_FILENAME - short filename of "crud_tables_findmassby_function_test.go_" file
TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_TEST_FILENAME="crud_tables_findmassby_function_test.go_" TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_TEST_FILENAME="crud_tables_findmassby_function_test.go_"
#TEMPLATES_GRPC_SERVER_FINDBY_FILENAME - short filename of "server_grpc_table_findby.go_" file
TEMPLATES_GRPC_SERVER_FINDBY_FILENAME="server_grpc_table_findby.go_"
#TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_FILENAME - short filename of "server_grpc_table_findby_function.go_" file
TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_FILENAME="server_grpc_table_findby_function.go_"
#TEMPLATES_GRPC_SERVER_FINDBY_TEST_FILENAME - short filename of "server_grpc_table_findby_test.go_" file
TEMPLATES_GRPC_SERVER_FINDBY_TEST_FILENAME="server_grpc_table_findby_test.go_"
#TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_TEST_FILENAME - short filename of "server_grpc_table_findby_function_test.go_" file
TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_TEST_FILENAME="server_grpc_table_findby_function_test.go_"
#TEMPLATES_GRPC_SERVER_FINDMASSBY_FILENAME - short filename of "server_grpc_table_findmassby.go_" file
TEMPLATES_GRPC_SERVER_FINDMASSBY_FILENAME="server_grpc_table_findmassby.go_"
#TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_FILENAME - short filename of "server_grpc_table_findmassby_test.go_" file
TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_FILENAME="server_grpc_table_findmassby_function.go_"
#TEMPLATES_GRPC_SERVER_FINDMASSBY_TEST_FILENAME - short filename of "server_grpc_table_findmassby_test.go_" file
TEMPLATES_GRPC_SERVER_FINDMASSBY_TEST_FILENAME="server_grpc_table_findmassby_test.go_"
#TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_TEST_FILENAME - short filename of "server_grpc_table_findmassby_test.go_" file
TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_TEST_FILENAME="server_grpc_table_findmassby_function_test.go_"

View File

@ -0,0 +1,10 @@
package server_grpc
import (
"context"
"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/pkg/db/crud/crud_lawsuit_status_types"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types"
)

View File

@ -0,0 +1,32 @@
// LawsuitStatusType_FindByFieldNamesWithUnderline - находит lawsuit_status_types в БД по FieldNamesWithPlus
func (s *ServerGRPC) LawsuitStatusType_FindBy_FieldNamesWithUnderline(ctx context.Context, Request *grpc_proto.RequestName) (*grpc_proto.Response, error) {
var Otvet grpc_proto.Response
var err error
// проверим совпадения версии модели
VersionServer := lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
VersionClient := Request.VersionModel
if VersionServer != VersionClient {
err = ErrorModelVersion(lawsuit_status_types.LawsuitStatusType{})
return &Otvet, err
}
// запрос в БД
db := postgres_gorm.GetConnection()
Model := &lawsuit_status_types.LawsuitStatusType{}
Model.FieldName = Request.RequestFieldName
err = crud_lawsuit_status_types.FindBy_FieldNamesWithUnderline_ctx(ctx, db, Model)
if err != nil {
return &Otvet, err
}
// заполяем ответ
ModelString, err := Model.GetJSON()
if err != nil {
return &Otvet, err
}
Otvet.ModelString = ModelString
return &Otvet, err
}

View File

@ -0,0 +1,19 @@
func Test_server_LawsuitStatusType_FindBy_FieldNamesWithUnderline(t *testing.T) {
config_main.LoadEnv()
crud_starter.InitCrudTransport_DB()
ctx := context.Background()
Request := grpc_proto.RequestName{}
Request.RequestFieldName = 0
Request.VersionModel = lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
server1 := &ServerGRPC{}
Otvet, err := server1.LawsuitStatusType_FindBy_FieldNamesWithUnderline(ctx, &Request)
if err != nil {
t.Log("Test_server_LawsuitStatusType_FindBy_FieldNamesWithUnderline() error: ", err)
}
if Otvet.ModelString == "" {
t.Log("Test_server_LawsuitStatusType_FindBy_FieldNamesWithUnderline() error: ModelString=''")
}
}

View File

@ -0,0 +1,11 @@
package server_grpc
import (
"context"
"github.com/ManyakRus/starter/config_main"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/crud_starter"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/files"
"testing"
)

View File

@ -0,0 +1,10 @@
package server_grpc
import (
"context"
"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/pkg/db/crud/crud_lawsuit_status_types"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types"
)

View File

@ -0,0 +1,34 @@
// LawsuitStatusType_FindMassByFieldNamesWithUnderline - находит массив lawsuit_status_types в БД по FieldNamesWithPlus
func (s *ServerGRPC) LawsuitStatusType_FindMassBy_FieldNamesWithUnderline(ctx context.Context, Request *grpc_proto.RequestName) (*grpc_proto.ResponseMass, error) {
var Otvet grpc_proto.ResponseMass
var err error
// проверим совпадения версии модели
VersionServer := lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
VersionClient := Request.VersionModel
if VersionServer != VersionClient {
err = ErrorModelVersion(lawsuit_status_types.LawsuitStatusType{})
return &Otvet, err
}
// запрос в БД
db := postgres_gorm.GetConnection()
Model := &lawsuit_status_types.LawsuitStatusType{}
Model.FieldName = Request.RequestFieldName
Mass, err := crud_files.FindMassBy_FieldNamesWithUnderline_ctx(ctx, db, Model)
if err != nil {
return &Otvet, err
}
// заполяем ответ
for _, v := range Mass {
ModelString, err := v.GetJSON()
if err != nil {
return &Otvet, err
}
Otvet.MassModelString = append(Otvet.MassModelString, ModelString)
}
return &Otvet, err
}

View File

@ -0,0 +1,19 @@
func Test_server_LawsuitStatusType_FindMassBy_FieldNamesWithUnderline(t *testing.T) {
config_main.LoadEnv()
crud_starter.InitCrudTransport_DB()
ctx := context.Background()
Request := grpc_proto.RequestName{}
Request.RequestFieldName = 0
Request.VersionModel = lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
server1 := &ServerGRPC{}
Otvet, err := server1.LawsuitStatusType_FindMassBy_FieldNamesWithUnderline(ctx, &Request)
if err != nil {
t.Log("Test_server_LawsuitStatusType_FindMassBy_FieldNamesWithUnderline() error: ", err)
}
if Otvet.ModelString == "" {
t.Log("Test_server_LawsuitStatusType_FindMassBy_FieldNamesWithUnderline() error: ModelString=''")
}
}

View File

@ -0,0 +1,11 @@
package server_grpc
import (
"context"
"github.com/ManyakRus/starter/config_main"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/crud_starter"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/files"
"testing"
)

View File

@ -107,6 +107,14 @@ type SettingsINI struct {
TEMPLATES_CRUD_TABLE_FINDMASSBY_TEST_FILENAME string TEMPLATES_CRUD_TABLE_FINDMASSBY_TEST_FILENAME string
TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_FILENAME string TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_FILENAME string
TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_TEST_FILENAME string TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_TEST_FILENAME string
TEMPLATES_GRPC_SERVER_FINDBY_FILENAME string
TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_FILENAME string
TEMPLATES_GRPC_SERVER_FINDMASSBY_FILENAME string
TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_FILENAME string
TEMPLATES_GRPC_SERVER_FINDBY_TEST_FILENAME string
TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_TEST_FILENAME string
TEMPLATES_GRPC_SERVER_FINDMASSBY_TEST_FILENAME string
TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_TEST_FILENAME string
} }
func Getenv(Name string, IsRequired bool) string { func Getenv(Name string, IsRequired bool) string {
@ -598,6 +606,46 @@ func FillSettings() {
s = Getenv(Name, true) s = Getenv(Name, true)
Settings.TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_TEST_FILENAME = s Settings.TEMPLATES_CRUD_TABLE_FINDMASSBY_FUNCTION_TEST_FILENAME = s
//
Name = "TEMPLATES_GRPC_SERVER_FINDBY_FILENAME"
s = Getenv(Name, true)
Settings.TEMPLATES_GRPC_SERVER_FINDBY_FILENAME = s
//
Name = "TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_FILENAME"
s = Getenv(Name, true)
Settings.TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_FILENAME = s
//
Name = "TEMPLATES_GRPC_SERVER_FINDMASSBY_FILENAME"
s = Getenv(Name, true)
Settings.TEMPLATES_GRPC_SERVER_FINDMASSBY_FILENAME = s
//
Name = "TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_FILENAME"
s = Getenv(Name, true)
Settings.TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_FILENAME = s
//
Name = "TEMPLATES_GRPC_SERVER_FINDBY_TEST_FILENAME"
s = Getenv(Name, true)
Settings.TEMPLATES_GRPC_SERVER_FINDBY_TEST_FILENAME = s
//
Name = "TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_TEST_FILENAME"
s = Getenv(Name, true)
Settings.TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_TEST_FILENAME = s
//
Name = "TEMPLATES_GRPC_SERVER_FINDMASSBY_TEST_FILENAME"
s = Getenv(Name, true)
Settings.TEMPLATES_GRPC_SERVER_FINDMASSBY_TEST_FILENAME = s
//
Name = "TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_TEST_FILENAME"
s = Getenv(Name, true)
Settings.TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_TEST_FILENAME = s
} }
// CurrentDirectory - возвращает текущую директорию ОС // CurrentDirectory - возвращает текущую директорию ОС

View File

@ -327,7 +327,7 @@ func ReplacePrimaryKeyOtvetID1(Text string, Table1 *types.Table) string {
Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(ID)", "ID") Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(ID)", "ID")
} }
Value, GolangCode := ConvertProtobufTypeToGolangType(Table1, ColumnPK, "Request.") Value, GolangCode := ConvertProtobufVariableToGolangVariable(Table1, ColumnPK, "Request.")
if GolangCode == "" { if GolangCode == "" {
TextNew := "\t" + ColumnPK.NameGo + " := " + Value + "\n" TextNew := "\t" + ColumnPK.NameGo + " := " + Value + "\n"
Otvet = strings.ReplaceAll(Otvet, "\tID := Request.ID\n", TextNew) Otvet = strings.ReplaceAll(Otvet, "\tID := Request.ID\n", TextNew)
@ -389,16 +389,16 @@ func ReplacePrimaryKeyOtvetID_ManyPK1(Text string, Table1 *types.Table, Variable
continue continue
} }
TextOtvetIDID = TextOtvetIDID + "\t" + VariableName + "." + Column1.NameGo + " = " + Column1.NameGo + "\n" TextOtvetIDID = TextOtvetIDID + "\t" + VariableName + "." + Column1.NameGo + " = " + Column1.NameGo + "\n"
RequestColumnName := FindRequestColumnName(Table1, Column1) RequestColumnName := FindRequestFieldName(Table1, Column1)
Value, GolangCode := ConvertProtobufTypeToGolangType(Table1, Column1, "Request.") Value, GolangCode := ConvertProtobufVariableToGolangVariable(Table1, Column1, "Request.")
if GolangCode == "" { if GolangCode == "" {
TextIDRequestID = TextIDRequestID + "\t" + Column1.NameGo + " := " + Value + "\n" TextIDRequestID = TextIDRequestID + "\t" + Column1.NameGo + " := " + Value + "\n"
} else { } else {
TextIDRequestID = TextIDRequestID + "\t" + GolangCode + "\n" TextIDRequestID = TextIDRequestID + "\t" + GolangCode + "\n"
} }
TextM := ConvertGolangTypeToProtobufType(Table1, Column1, "m") TextM := ConvertGolangVariableToProtobufVariable(Column1, "m")
TextRequestIDmID = TextRequestIDmID + "\t" + VariableName + "." + RequestColumnName + " = " + TextM + "\n" TextRequestIDmID = TextRequestIDmID + "\t" + VariableName + "." + RequestColumnName + " = " + TextM + "\n"
TextInt64ID := ConvertGolangTypeToProtobufType(Table1, Column1, "") TextInt64ID := ConvertGolangVariableToProtobufVariable(Column1, "")
TextRequestIDInt64ID = TextRequestIDInt64ID + "\t" + VariableName + "." + RequestColumnName + " = " + TextInt64ID + "\n" TextRequestIDInt64ID = TextRequestIDInt64ID + "\t" + VariableName + "." + RequestColumnName + " = " + TextInt64ID + "\n"
TextOtvetIDmID = TextOtvetIDmID + "\t" + "Otvet." + Column1.NameGo + " = " + VariableName + "." + Column1.NameGo + "\n" TextOtvetIDmID = TextOtvetIDmID + "\t" + "Otvet." + Column1.NameGo + " = " + VariableName + "." + Column1.NameGo + "\n"
@ -423,7 +423,7 @@ func ReplacePrimaryKeyOtvetID_ManyPK1(Text string, Table1 *types.Table, Variable
Otvet = strings.ReplaceAll(Otvet, "\tm2.ID = int64(m.ID)", TextM2ID) Otvet = strings.ReplaceAll(Otvet, "\tm2.ID = int64(m.ID)", TextM2ID)
Otvet = strings.ReplaceAll(Otvet, "int64(m.ID) == 0", TextIfMId) Otvet = strings.ReplaceAll(Otvet, "int64(m.ID) == 0", TextIfMId)
Otvet = strings.ReplaceAll(Otvet, "int64(m.ID) != 0", TextIfMIdNot0) Otvet = strings.ReplaceAll(Otvet, "int64(m.ID) != 0", TextIfMIdNot0)
//Value := ConvertGolangTypeToProtobufType(Table1, ColumnPK, "m") //Value := ConvertGolangVariableToProtobufVariable(Table1, ColumnPK, "m")
//Otvet = strings.ReplaceAll(Otvet, "ProtoFromInt(m.ID)", Value) //protobuf //Otvet = strings.ReplaceAll(Otvet, "ProtoFromInt(m.ID)", Value) //protobuf
//заменим ID := Request.ID //заменим ID := Request.ID
@ -506,14 +506,14 @@ func ReplacePrimaryKeyM_ManyPK(Text string, Table1 *types.Table) string {
// Otvet = strings.ReplaceAll(Otvet, "IntFromAlias(m.ID)", ColumnTypeGoPK+"(m."+ColumnNamePK+")") // Otvet = strings.ReplaceAll(Otvet, "IntFromAlias(m.ID)", ColumnTypeGoPK+"(m."+ColumnNamePK+")")
// Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(m.ID)", OtvetColumnName) // Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(m.ID)", OtvetColumnName)
// Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(ID)", Alias+"("+ColumnNamePK+")") // Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(ID)", Alias+"("+ColumnNamePK+")")
// Value := ConvertGolangTypeToProtobufType(Table1, ColumnPK, "m") // Value := ConvertGolangVariableToProtobufVariable(Table1, ColumnPK, "m")
// Otvet = strings.ReplaceAll(Otvet, "ProtoFromInt(m.ID)", Value) //protobuf // Otvet = strings.ReplaceAll(Otvet, "ProtoFromInt(m.ID)", Value) //protobuf
// } else { // } else {
// DefaultValue := FindTextDefaultValue(ColumnTypeGoPK) // DefaultValue := FindTextDefaultValue(ColumnTypeGoPK)
// Otvet = strings.ReplaceAll(Otvet, "IntFromAlias(m.ID) == 0", "m."+ColumnNamePK+" == "+DefaultValue) // Otvet = strings.ReplaceAll(Otvet, "IntFromAlias(m.ID) == 0", "m."+ColumnNamePK+" == "+DefaultValue)
// //Value := ConvertGolangTypeToProtobufType(Table1, ColumnPK, "m") // //Value := ConvertGolangVariableToProtobufVariable(Table1, ColumnPK, "m")
// Otvet = strings.ReplaceAll(Otvet, "IntFromAlias(m.ID)", "m."+ColumnNamePK) //не protobuf // Otvet = strings.ReplaceAll(Otvet, "IntFromAlias(m.ID)", "m."+ColumnNamePK) //не protobuf
// Value := ConvertGolangTypeToProtobufType(Table1, ColumnPK, "m") // Value := ConvertGolangVariableToProtobufVariable(Table1, ColumnPK, "m")
// Otvet = strings.ReplaceAll(Otvet, "ProtoFromInt(m.ID)", Value) //protobuf // Otvet = strings.ReplaceAll(Otvet, "ProtoFromInt(m.ID)", Value) //protobuf
// Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(m.ID)", OtvetColumnName) // Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(m.ID)", OtvetColumnName)
// Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(ID)", "ID") // Otvet = strings.ReplaceAll(Otvet, "AliasFromInt(ID)", "ID")
@ -1926,8 +1926,8 @@ func DeleteCommentFromString(TextFrom string) string {
return Otvet return Otvet
} }
// ConvertGolangTypeToProtobufType - возвращает имя переменной + имя колонки, преобразованное в тип protobuf // ConvertGolangVariableToProtobufVariable - возвращает имя переменной + имя колонки, преобразованное в тип protobuf
func ConvertGolangTypeToProtobufType(Table1 *types.Table, Column1 *types.Column, VariableName string) string { func ConvertGolangVariableToProtobufVariable(Column1 *types.Column, VariableName string) string {
Otvet := "" Otvet := ""
if Column1 == nil { if Column1 == nil {
@ -1963,42 +1963,30 @@ func ConvertGolangTypeToProtobufType(Table1 *types.Table, Column1 *types.Column,
return Otvet return Otvet
} }
// ConvertVariableToProtobufType - возвращает имя переменной + имя колонки, преобразованное в тип protobuf //// ConvertVariableToProtobufType - возвращает имя переменной + имя колонки, преобразованное в тип protobuf
func ConvertVariableToProtobufType(Table1 *types.Table, Column1 *types.Column, VariableName string) string { //func ConvertVariableToProtobufType(Column1 *types.Column, VariableName string) string {
Otvet := "" // Otvet := ""
//
// if Column1 == nil {
// return Otvet
// }
//
// Otvet = VariableName
//
// switch Column1.TypeGo {
// case "time.Time":
// Otvet = "timestamppb.New(" + VariableName + ")"
// case "uuid.UUID":
// Otvet = VariableName + ".String()"
// }
//
// return Otvet
//}
if Column1 == nil { // ConvertProtobufVariableToGolangVariable - возвращает имя переменной + имя колонки, преобразованное в тип golang из protobuf
return Otvet func ConvertProtobufVariableToGolangVariable(Table1 *types.Table, Column1 *types.Column, VariableName string) (VariableColumn string, GolangCode string) {
} RequestColumnName := FindRequestFieldName(Table1, Column1)
Otvet = VariableName
switch Column1.TypeGo {
case "time.Time":
Otvet = "timestamppb.New(" + VariableName + ")"
case "uuid.UUID":
Otvet = VariableName + ".String()"
}
return Otvet
}
// ConvertProtobufTypeToGolangType - возвращает имя переменной + имя колонки, преобразованное в тип golang из protobuf
func ConvertProtobufTypeToGolangType(Table1 *types.Table, Column1 *types.Column, VariableName string) (VariableColumn string, GolangCode string) {
RequestColumnName := FindRequestColumnName(Table1, Column1)
VariableColumn = VariableName + RequestColumnName VariableColumn = VariableName + RequestColumnName
//GolangCode := ""
//TableName := Table1.Name
//IDName := Column1.Name
//alias в Int64
//TextConvert, ok := types.MapConvertID[TableName+"."+IDName]
//if ok == true {
// VariableColumn = TextConvert + "(" + VariableName + RequestColumnName + ")"
// return VariableColumn, GolangCode
//}
//time.Time в timestamppb //time.Time в timestamppb
switch Column1.TypeGo { switch Column1.TypeGo {
case "time.Time": case "time.Time":
@ -2023,7 +2011,7 @@ func ConvertProtobufTypeToGolangType(Table1 *types.Table, Column1 *types.Column,
// ConvertProtobufTypeToGolangAlias - возвращает имя переменной + имя колонки, преобразованное в тип golang(alias) из protobuf // ConvertProtobufTypeToGolangAlias - возвращает имя переменной + имя колонки, преобразованное в тип golang(alias) из protobuf
func ConvertProtobufTypeToGolangAlias(Table1 *types.Table, Column1 *types.Column, VariableName string) (VariableColumn string, GolangCode string) { func ConvertProtobufTypeToGolangAlias(Table1 *types.Table, Column1 *types.Column, VariableName string) (VariableColumn string, GolangCode string) {
RequestColumnName := FindRequestColumnName(Table1, Column1) RequestColumnName := FindRequestFieldName(Table1, Column1)
VariableColumn = VariableName + RequestColumnName VariableColumn = VariableName + RequestColumnName
//GolangCode := "" //GolangCode := ""
@ -2391,8 +2379,8 @@ func Replace_Model_ID_Test_ManyPK(Text string, Table1 *types.Table) string {
for _, Column1 := range MassPK { for _, Column1 := range MassPK {
Name := strings.ToUpper(Column1.NameGo) Name := strings.ToUpper(Column1.NameGo)
VariableName := Table1.NameGo + "_" + Name + "_Test" VariableName := Table1.NameGo + "_" + Name + "_Test"
Text1 := ConvertVariableToProtobufType(Table1, Column1, VariableName) Text1 := ConvertGolangVariableToProtobufVariable(Column1, VariableName)
RequestColumnName := FindRequestColumnName(Table1, Column1) RequestColumnName := FindRequestFieldName(Table1, Column1)
TextNew = TextNew + "\tRequest." + RequestColumnName + " = " + Text1 + "\n" TextNew = TextNew + "\tRequest." + RequestColumnName + " = " + Text1 + "\n"
} }
Otvet = strings.ReplaceAll(Otvet, TextFind, TextNew) Otvet = strings.ReplaceAll(Otvet, TextFind, TextNew)
@ -2403,8 +2391,8 @@ func Replace_Model_ID_Test_ManyPK(Text string, Table1 *types.Table) string {
for _, Column1 := range MassPK { for _, Column1 := range MassPK {
Name := strings.ToUpper(Column1.NameGo) Name := strings.ToUpper(Column1.NameGo)
VariableName := Table1.NameGo + "_" + Name + "_Test" VariableName := Table1.NameGo + "_" + Name + "_Test"
Text1 := ConvertVariableToProtobufType(Table1, Column1, VariableName) Text1 := ConvertGolangVariableToProtobufVariable(Column1, VariableName)
RequestColumnName := FindRequestColumnName(Table1, Column1) RequestColumnName := FindRequestFieldName(Table1, Column1)
TextNew = TextNew + "\tRequest2." + RequestColumnName + " = " + Text1 + "\n" TextNew = TextNew + "\tRequest2." + RequestColumnName + " = " + Text1 + "\n"
} }
Otvet = strings.ReplaceAll(Otvet, TextFind, TextNew) Otvet = strings.ReplaceAll(Otvet, TextFind, TextNew)
@ -2498,7 +2486,7 @@ func ReplaceTextRequestID_PrimaryKey1(Text string, Table1 *types.Table, Variable
TextRequestID, TextID := FindTextProtobufRequest(Table1) TextRequestID, TextID := FindTextProtobufRequest(Table1)
_, GolangCode := ConvertProtobufTypeToGolangType(Table1, ColumnPK, "Request.") _, GolangCode := ConvertProtobufVariableToGolangVariable(Table1, ColumnPK, "Request.")
if GolangCode != "" { if GolangCode != "" {
Otvet = strings.ReplaceAll(Otvet, "ID := "+VariableName+".ID", GolangCode) Otvet = strings.ReplaceAll(Otvet, "ID := "+VariableName+".ID", GolangCode)
Otvet = strings.ReplaceAll(Otvet, VariableName+".ID = ", VariableName+"."+TextID+" = ") Otvet = strings.ReplaceAll(Otvet, VariableName+".ID = ", VariableName+"."+TextID+" = ")
@ -2543,7 +2531,7 @@ func ReplaceIDtoID1(Text string, Table1 *types.Table) string {
Otvet := Text Otvet := Text
PrimaryKeyColumn := FindPrimaryKeyColumn(Table1) PrimaryKeyColumn := FindPrimaryKeyColumn(Table1)
OtvetColumnName := ConvertGolangTypeToProtobufType(Table1, PrimaryKeyColumn, "") OtvetColumnName := ConvertGolangVariableToProtobufVariable(PrimaryKeyColumn, "")
if OtvetColumnName == "" { if OtvetColumnName == "" {
return Otvet return Otvet
} }
@ -2566,7 +2554,7 @@ func FindTextIDMany(Table1 *types.Table) (TextNames, TextNamesTypes, TextProtoNa
//Comma := "" //Comma := ""
//MassPrimaryKey := FindPrimaryKeyColumns(Table1) //MassPrimaryKey := FindPrimaryKeyColumns(Table1)
//for _, PrimaryKey1 := range MassPrimaryKey { //for _, PrimaryKey1 := range MassPrimaryKey {
// OtvetColumnName := ConvertGolangTypeToProtobufType(Table1, PrimaryKey1, "") // OtvetColumnName := ConvertGolangVariableToProtobufVariable(Table1, PrimaryKey1, "")
// if OtvetColumnName == "" { // if OtvetColumnName == "" {
// continue // continue
// } // }
@ -2594,7 +2582,7 @@ func FindTextID_VariableName_Many(Table1 *types.Table, VariableName string) (Tex
Comma := "" Comma := ""
MassPrimaryKey := FindPrimaryKeyColumns(Table1) MassPrimaryKey := FindPrimaryKeyColumns(Table1)
for _, PrimaryKey1 := range MassPrimaryKey { for _, PrimaryKey1 := range MassPrimaryKey {
OtvetColumnName := ConvertGolangTypeToProtobufType(Table1, PrimaryKey1, "") OtvetColumnName := ConvertGolangVariableToProtobufVariable(PrimaryKey1, "")
if OtvetColumnName == "" { if OtvetColumnName == "" {
continue continue
} }
@ -2763,8 +2751,8 @@ func FindNegativeValue(TypeGo string) string {
return Otvet return Otvet
} }
// FindRequestColumnName - возвращает название колонки в Request // FindRequestFieldName - возвращает название колонки в Request
func FindRequestColumnName(Table1 *types.Table, Column1 *types.Column) string { func FindRequestFieldName(Table1 *types.Table, Column1 *types.Column) string {
Otvet := "" Otvet := ""
_, Otvet, _, _ = FindTextProtobufRequest_ID_Type(Table1, Column1, "") _, Otvet, _, _ = FindTextProtobufRequest_ID_Type(Table1, Column1, "")
@ -2882,7 +2870,7 @@ func ReplaceColumnNameM(Text string, Column *types.Column) string {
func ReplaceIntFromProtoRequest(Text string, Table1 *types.Table, Column *types.Column) string { func ReplaceIntFromProtoRequest(Text string, Table1 *types.Table, Column *types.Column) string {
Otvet := Text Otvet := Text
Variable, Golang_code := ConvertProtobufTypeToGolangType(Table1, Column, "Request.") Variable, Golang_code := ConvertProtobufVariableToGolangVariable(Table1, Column, "Request.")
TextNew := "Request." + Variable TextNew := "Request." + Variable
if Golang_code != "" { if Golang_code != "" {
@ -2891,3 +2879,141 @@ func ReplaceIntFromProtoRequest(Text string, Table1 *types.Table, Column *types.
return Otvet return Otvet
} }
// FindRequestFieldName_FromMass - возвращает имя поля для Request protobuf
func FindRequestFieldName_FromMass(Column *types.Column, MassColumns []*types.Column) string {
Otvet := ""
TypeProto := ConvertGolangTypeNameToProtobufTypeName(Column.TypeGo)
Number := 0
for _, Column1 := range MassColumns {
TypeProto1 := ConvertGolangTypeNameToProtobufTypeName(Column1.TypeGo)
if TypeProto == TypeProto1 {
Number = Number + 1
}
if Column == Column1 {
break
}
}
Suffix := "_" + strconv.Itoa(Number)
Otvet = ConvertGolangTypeNameToProtobufFieldName(Column.Type)
Otvet = Otvet + Suffix
return Otvet
}
// ConvertGolangTypeNameToProtobufFieldName - возвращает имя поля для protobuf
func ConvertGolangTypeNameToProtobufFieldName(TypeGo string) string {
Otvet := ""
switch TypeGo {
case "time.Time":
Otvet = "Date"
case "string":
Otvet = "String"
case "int64", "int":
Otvet = "Int64"
case "int32":
Otvet = "Int32"
case "int16":
Otvet = "Int32"
case "int8":
Otvet = "Int32"
case "uint64":
Otvet = "Uint64"
case "uint32":
Otvet = "Uint32"
case "uint16":
Otvet = "Uint32"
case "uint8":
Otvet = "Uint32"
case "bool":
Otvet = "Bool"
case "float32":
Otvet = "Float32"
case "float64":
Otvet = "Float64"
case "uuid.UUID":
Otvet = "String"
}
return Otvet
}
// ConvertGolangTypeNameToProtobufTypeName - возвращает имя типа для protobuf
func ConvertGolangTypeNameToProtobufTypeName(TypeGo string) string {
Otvet := ""
switch TypeGo {
case "time.Time":
Otvet = "google.protobuf.Timestamp"
case "string":
Otvet = "string"
case "int64", "int":
Otvet = "int64"
case "int32":
Otvet = "int32"
case "uint64":
Otvet = "uint64"
case "uint32":
Otvet = "uint32"
case "byte":
Otvet = "uint32"
case "[]byte":
Otvet = "bytes"
case "bool":
Otvet = "bool"
case "float32":
Otvet = "float"
case "float64":
Otvet = "double"
case "uuid.UUID":
Otvet = "string"
}
return Otvet
}
// FindMassColumns_from_MassColumnsString - преобразует массив строк названий колонок в массив столбцов
func FindMassColumns_from_MassColumnsString(Table1 *types.Table, MassColumnsString []string) []*types.Column {
Otvet := make([]*types.Column, len(MassColumnsString))
for i, ColumnName := range MassColumnsString {
Column1, ok := Table1.MapColumns[ColumnName]
if ok == false {
log.Panic(Table1.Name + " .MapColumns[" + ColumnName + "] = false")
}
Otvet[i] = Column1
}
return Otvet
}
// ConvertProtobufVariableToGolangVariable_with_MassColumns - возвращает имя переменной + имя колонки, преобразованное в тип golang из protobuf
func ConvertProtobufVariableToGolangVariable_with_MassColumns(Column *types.Column, MassColumns []*types.Column, VariableName string) (VariableField string, GolangCode string) {
RequestFieldName := FindRequestFieldName_FromMass(Column, MassColumns)
VariableField = VariableName + RequestFieldName
switch Column.TypeGo {
case "time.Time":
{
VariableField = VariableName + RequestFieldName + ".AsTime()"
return VariableField, GolangCode
}
case "uuid.UUID":
{
VariableField = "uuid.FromBytes([]byte(" + VariableName + RequestFieldName + "))"
GolangCode = Column.NameGo + `, err := uuid.FromBytes([]byte(Request.` + RequestFieldName + `))
if err != nil {
return &Otvet, err
}
`
return VariableField, GolangCode
}
}
return VariableField, GolangCode
}

View File

@ -1 +0,0 @@
package crud_tables

View File

@ -540,7 +540,7 @@ func FindTextUpdateEveryColumn1(TextGRPC_ClientUpdateFunc string, Table1 *types.
Otvet = create_files.ReplacePrimaryKeyM_ID(Otvet, Table1) Otvet = create_files.ReplacePrimaryKeyM_ID(Otvet, Table1)
// //
ColumnNameGolang := create_files.ConvertGolangTypeToProtobufType(Table1, Column1, "m") ColumnNameGolang := create_files.ConvertGolangVariableToProtobufVariable(Column1, "m")
_, IDTypeGo := create_files.FindPrimaryKeyNameTypeGo(Table1) _, IDTypeGo := create_files.FindPrimaryKeyNameTypeGo(Table1)

View File

@ -81,6 +81,33 @@ func CreateAllFiles(MapAll map[string]*types.Table) error {
} }
} }
//
err = CreateFilesFindBy(Table1)
if err != nil {
log.Error("CreateFilesFindBy() table: ", Table1.Name, " error: ", err)
return err
}
//
err = CreateFilesFindByTest(Table1)
if err != nil {
log.Error("CreateFilesFindByTest() table: ", Table1.Name, " error: ", err)
return err
}
//
err = CreateFilesFindMassBy(Table1)
if err != nil {
log.Error("CreateFilesFindMassBy() table: ", Table1.Name, " error: ", err)
return err
}
//
err = CreateFilesFindMassByTest(Table1)
if err != nil {
log.Error("CreateFilesFindMassByTest() table: ", Table1.Name, " error: ", err)
return err
}
} }
} }
return err return err
@ -537,7 +564,7 @@ func FindTextUpdateEveryColumn1(TextGRPCServerUpdateFunc string, Table1 *types.T
Otvet = create_files.ReplacePrimaryKeyOtvetID(Otvet, Table1) Otvet = create_files.ReplacePrimaryKeyOtvetID(Otvet, Table1)
Otvet = create_files.ReplacePrimaryKeyM_ID(Otvet, Table1) Otvet = create_files.ReplacePrimaryKeyM_ID(Otvet, Table1)
//ColumnNameGolang := create_files.ConvertGolangTypeToProtobufType(Table1, Column1, "m") //ColumnNameGolang := create_files.ConvertGolangVariableToProtobufVariable(Table1, Column1, "m")
Otvet = strings.ReplaceAll(Otvet, config.Settings.TEXT_TEMPLATE_MODEL+"_Update", ModelName+"_"+FuncName) 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_MODEL, ModelName)
@ -716,7 +743,7 @@ func FindTextUpdateEveryColumnTest1(TextGRPCServerUpdateFunc string, Table1 *typ
ColumnName := Column1.NameGo ColumnName := Column1.NameGo
FuncName := "Update_" + ColumnName FuncName := "Update_" + ColumnName
_, TextRequestField, TextRequestFieldGolang, _ := create_files.FindTextProtobufRequest_ID_Type(Table1, Column1, "Request2.") _, TextRequestField, TextRequestFieldGolang, _ := create_files.FindTextProtobufRequest_ID_Type(Table1, Column1, "Request2.")
TextModelColumnName := create_files.ConvertGolangTypeToProtobufType(Table1, Column1, "m") TextModelColumnName := create_files.ConvertGolangVariableToProtobufVariable(Column1, "m")
TextRequestID := create_files.FindTextProtobufRequest_ManyPK(Table1) TextRequestID := create_files.FindTextProtobufRequest_ManyPK(Table1)
//Postgres_ID_Test = ID Minimum //Postgres_ID_Test = ID Minimum

View File

@ -0,0 +1,313 @@
package server_grpc_tables
import (
"github.com/ManyakRus/crud_generator/internal/config"
"github.com/ManyakRus/crud_generator/internal/constants"
"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"
)
// CreateFilesFindBy - создаёт 1 файл в папке server_grpc
func CreateFilesFindBy(Table1 *types.Table) error {
var err error
if len(types.MassFindBy) == 0 {
return err
}
//чтение файлов
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 + config.Settings.TEMPLATES_GRPC_SERVER_FINDBY_FILENAME
TableName := strings.ToLower(Table1.Name)
DirReadyTable := DirReadyGRPCServer
FilenameReady := DirReadyTable + micro.SeparatorFile() + "server_grpc_" + TableName + "_findby.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(FilenameTemplateGRPCServer)
if err != nil {
log.Panic("ReadFile() ", FilenameTemplateGRPCServer, " error: ", err)
}
TextGRPCServer := string(bytes)
//загрузим шаблон файла функции
FilenameTemplateGRPCServerFunction := DirTemplatesGRPCServer + config.Settings.TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_FILENAME
bytes, err = os.ReadFile(FilenameTemplateGRPCServerFunction)
if err != nil {
log.Panic("ReadFile() ", FilenameTemplateGRPCServerFunction, " error: ", err)
}
TextTemplatedFunction := string(bytes)
//заменим имя пакета на новое
TextGRPCServer = create_files.ReplacePackageName(TextGRPCServer, DirReadyTable)
ModelName := Table1.NameGo
//заменим импорты
if config.Settings.USE_DEFAULT_TEMPLATE == true {
TextGRPCServer = create_files.DeleteTemplateRepositoryImports(TextGRPCServer)
ModelTableURL := create_files.FindModelTableURL(TableName)
TextGRPCServer = create_files.AddImport(TextGRPCServer, ModelTableURL)
CrudTableURL := create_files.FindCrudTableURL(TableName)
TextGRPCServer = create_files.AddImport(TextGRPCServer, CrudTableURL)
ProtoURL := create_files.FindProtoURL()
TextGRPCServer = create_files.AddImport(TextGRPCServer, ProtoURL)
}
//создание функций
TextServerGRPCFunc := CreateFilesFindByTable(Table1, TextTemplatedFunction)
if TextServerGRPCFunc == "" {
return err
}
TextGRPCServer = TextGRPCServer + TextServerGRPCFunc
//создание текста
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_MODEL, ModelName)
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
TextGRPCServer = config.Settings.TEXT_MODULE_GENERATED + TextGRPCServer
//замена импортов на новые URL
TextGRPCServer = create_files.ReplaceServiceURLImports(TextGRPCServer)
//uuid
TextGRPCServer = create_files.CheckAndAddImportUUID_FromText(TextGRPCServer)
//alias
TextGRPCServer = create_files.CheckAndAddImportAlias(TextGRPCServer)
//удаление пустого импорта
TextGRPCServer = create_files.DeleteEmptyImport(TextGRPCServer)
//удаление пустых строк
TextGRPCServer = create_files.DeleteEmptyLines(TextGRPCServer)
//запись файла
err = os.WriteFile(FilenameReady, []byte(TextGRPCServer), constants.FILE_PERMISSIONS)
return err
}
// CreateFilesFindByTable - создаёт текст всех функций
func CreateFilesFindByTable(Table1 *types.Table, TextTemplateFunction string) string {
Otvet := ""
for _, TableColumns1 := range types.MassFindBy {
if TableColumns1.TableName != Table1.Name {
continue
}
Otvet1 := CreateFilesFindByTable1(Table1, TextTemplateFunction, TableColumns1.MassColumnNames)
Otvet = Otvet + Otvet1
}
return Otvet
}
// CreateFilesFindByTable1 - создаёт текст всех функций
func CreateFilesFindByTable1(Table1 *types.Table, TextTemplateFunction string, MassColumnsString []string) string {
Otvet := TextTemplateFunction
//
FieldNamesWithUnderline := ""
FieldNamesWithComma := ""
TextAssign := ""
MassColumns := create_files.FindMassColumns_from_MassColumnsString(Table1, MassColumnsString)
//
TextFind := "\t" + `Model.FieldName = Request.RequestFieldName` + "\n"
Underline := ""
Plus := ""
for _, ColumnName1 := range MassColumnsString {
Column1, ok := Table1.MapColumns[ColumnName1]
if ok == false {
log.Panic(Table1.Name + " .MapColumns[" + ColumnName1 + "] = false")
}
//RequestFieldName := create_files.FindRequestFieldName_FromMass(Column1, MassColumns)
TextRequest, TextRequestCode := create_files.ConvertProtobufVariableToGolangVariable_with_MassColumns(Column1, MassColumns, "Request.")
if TextRequestCode != "" {
TextAssign = TextAssign + TextRequestCode + "\n"
} else {
TextAssign = TextAssign + "\t" + "Model." + Column1.NameGo + " = " + TextRequest + "\n"
}
FieldNamesWithUnderline = FieldNamesWithUnderline + Underline + Column1.NameGo
FieldNamesWithComma = FieldNamesWithComma + Plus + Column1.NameGo
Underline = "_"
Plus = "+"
}
Otvet = strings.ReplaceAll(Otvet, TextFind, TextAssign)
Otvet = strings.ReplaceAll(Otvet, "FieldNamesWithUnderline", FieldNamesWithUnderline)
Otvet = strings.ReplaceAll(Otvet, "FieldNamesWithPlus", FieldNamesWithComma)
return Otvet
}
// CreateFilesFindByTest - создаёт 1 файл в папке server_grpc
func CreateFilesFindByTest(Table1 *types.Table) error {
var err error
if len(types.MassFindBy) == 0 {
return err
}
//чтение файлов
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 + config.Settings.TEMPLATES_GRPC_SERVER_FINDBY_FILENAME
TableName := strings.ToLower(Table1.Name)
DirReadyTable := DirReadyGRPCServer
FilenameReady := DirReadyTable + micro.SeparatorFile() + "server_grpc_" + TableName + "_findby_test.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(FilenameTemplateGRPCServer)
if err != nil {
log.Panic("ReadFile() ", FilenameTemplateGRPCServer, " error: ", err)
}
TextGRPCServer := string(bytes)
//загрузим шаблон файла функции
FilenameTemplateGRPCServerFunction := DirTemplatesGRPCServer + config.Settings.TEMPLATES_GRPC_SERVER_FINDBY_FUNCTION_TEST_FILENAME
bytes, err = os.ReadFile(FilenameTemplateGRPCServerFunction)
if err != nil {
log.Panic("ReadFile() ", FilenameTemplateGRPCServerFunction, " error: ", err)
}
TextTemplatedFunction := string(bytes)
//заменим имя пакета на новое
TextGRPCServer = create_files.ReplacePackageName(TextGRPCServer, DirReadyTable)
ModelName := Table1.NameGo
//заменим импорты
if config.Settings.USE_DEFAULT_TEMPLATE == true {
TextGRPCServer = create_files.DeleteTemplateRepositoryImports(TextGRPCServer)
ModelTableURL := create_files.FindModelTableURL(TableName)
TextGRPCServer = create_files.AddImport(TextGRPCServer, ModelTableURL)
CrudStarterURL := create_files.FindCrudStarterURL()
TextGRPCServer = create_files.AddImport(TextGRPCServer, CrudStarterURL)
ProtoURL := create_files.FindProtoURL()
TextGRPCServer = create_files.AddImport(TextGRPCServer, ProtoURL)
}
//создание функций
TextGRPCServerFunc := CreateFilesFindByTestTable(Table1, TextTemplatedFunction)
if TextGRPCServerFunc == "" {
return err
}
TextGRPCServer = TextGRPCServer + TextGRPCServerFunc
//создание текста
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_MODEL, ModelName)
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
TextGRPCServer = config.Settings.TEXT_MODULE_GENERATED + TextGRPCServer
//замена импортов на новые URL
TextGRPCServer = create_files.ReplaceServiceURLImports(TextGRPCServer)
//uuid
TextGRPCServer = create_files.CheckAndAddImportUUID_FromText(TextGRPCServer)
//alias
TextGRPCServer = create_files.CheckAndAddImportAlias(TextGRPCServer)
//удаление пустого импорта
TextGRPCServer = create_files.DeleteEmptyImport(TextGRPCServer)
//удаление пустых строк
TextGRPCServer = create_files.DeleteEmptyLines(TextGRPCServer)
//запись файла
err = os.WriteFile(FilenameReady, []byte(TextGRPCServer), constants.FILE_PERMISSIONS)
return err
}
// CreateFilesFindByTestTable - создаёт текст всех функций
func CreateFilesFindByTestTable(Table1 *types.Table, TextTemplateFunction string) string {
Otvet := ""
for _, TableColumns1 := range types.MassFindBy {
if TableColumns1.TableName != Table1.Name {
continue
}
Otvet1 := CreateFilesFindByTestTable1(Table1, TextTemplateFunction, TableColumns1.MassColumnNames)
Otvet = Otvet + Otvet1
}
return Otvet
}
// CreateFilesFindByTestTable1 - создаёт текст всех функций
func CreateFilesFindByTestTable1(Table1 *types.Table, TextTemplateFunction string, MassColumns1 []string) string {
Otvet := TextTemplateFunction
//
FieldNamesWithUnderline := ""
FieldNamesWithComma := ""
//
TextAssignFind := "\t" + `Request.RequestFieldName = 0` + "\n"
TextAssign := ""
TextFieldName_TEST := ""
MassColumns := create_files.FindMassColumns_from_MassColumnsString(Table1, MassColumns1)
Underline := ""
Comma := ""
for _, ColumnName1 := range MassColumns1 {
Column1, ok := Table1.MapColumns[ColumnName1]
if ok == false {
log.Panic(Table1.Name + " .MapColumns[" + ColumnName1 + "] = false")
}
DefaultValue := create_files.FindTextDefaultValue(Column1.TypeGo)
RequestFieldName := create_files.FindRequestFieldName_FromMass(Column1, MassColumns)
TextAssign = TextAssign + "\t" + `Request.` + RequestFieldName + ` = ` + DefaultValue + "\n"
FieldNamesWithUnderline = FieldNamesWithUnderline + Underline + Column1.NameGo
FieldNamesWithComma = FieldNamesWithComma + Comma + Column1.NameGo
TextFieldName_TEST = TextFieldName_TEST + Comma + DefaultValue
Underline = "_"
Comma = ", "
}
Otvet = strings.ReplaceAll(Otvet, TextAssignFind, TextAssign)
Otvet = strings.ReplaceAll(Otvet, "FieldNamesWithUnderline", FieldNamesWithUnderline)
Otvet = strings.ReplaceAll(Otvet, "FieldNamesWithComma", FieldNamesWithComma)
Otvet = strings.ReplaceAll(Otvet, "FieldNamesDefault", TextFieldName_TEST)
return Otvet
}

View File

@ -0,0 +1,308 @@
package server_grpc_tables
import (
"github.com/ManyakRus/crud_generator/internal/config"
"github.com/ManyakRus/crud_generator/internal/constants"
"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"
)
// CreateFilesFindMassBy - создаёт 1 файл в папке server_grpc
func CreateFilesFindMassBy(Table1 *types.Table) error {
var err error
if len(types.MassFindMassBy) == 0 {
return err
}
//чтение файлов
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 + config.Settings.TEMPLATES_GRPC_SERVER_FINDMASSBY_FILENAME
TableName := strings.ToLower(Table1.Name)
DirReadyTable := DirReadyGRPCServer + "server_grpc_" + TableName
FilenameReady := DirReadyTable + micro.SeparatorFile() + "server_grpc_" + TableName + "_findmassby.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(FilenameTemplateGRPCServer)
if err != nil {
log.Panic("ReadFile() ", FilenameTemplateGRPCServer, " error: ", err)
}
TextGRPCServer := string(bytes)
//загрузим шаблон файла функции
FilenameTemplateGRPCServerFunction := DirTemplatesGRPCServer + config.Settings.TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_FILENAME
bytes, err = os.ReadFile(FilenameTemplateGRPCServerFunction)
if err != nil {
log.Panic("ReadFile() ", FilenameTemplateGRPCServerFunction, " error: ", err)
}
TextTemplatedFunction := string(bytes)
//заменим имя пакета на новое
TextGRPCServer = create_files.ReplacePackageName(TextGRPCServer, DirReadyTable)
ModelName := Table1.NameGo
//заменим импорты
if config.Settings.USE_DEFAULT_TEMPLATE == true {
TextGRPCServer = create_files.DeleteTemplateRepositoryImports(TextGRPCServer)
ModelTableURL := create_files.FindModelTableURL(TableName)
TextGRPCServer = create_files.AddImport(TextGRPCServer, ModelTableURL)
CrudTableURL := create_files.FindCrudTableURL(TableName)
TextGRPCServer = create_files.AddImport(TextGRPCServer, CrudTableURL)
ProtoURL := create_files.FindProtoURL()
TextGRPCServer = create_files.AddImport(TextGRPCServer, ProtoURL)
}
//создание функций
TextGRPCServerFunc := CreateFilesFindMassByTable(Table1, TextTemplatedFunction)
if TextGRPCServerFunc == "" {
return err
}
TextGRPCServer = TextGRPCServer + TextGRPCServerFunc
//создание текста
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_MODEL, ModelName)
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
TextGRPCServer = config.Settings.TEXT_MODULE_GENERATED + TextGRPCServer
//замена импортов на новые URL
TextGRPCServer = create_files.ReplaceServiceURLImports(TextGRPCServer)
//uuid
TextGRPCServer = create_files.CheckAndAddImportUUID_FromText(TextGRPCServer)
//alias
TextGRPCServer = create_files.CheckAndAddImportAlias(TextGRPCServer)
//удаление пустого импорта
TextGRPCServer = create_files.DeleteEmptyImport(TextGRPCServer)
//удаление пустых строк
TextGRPCServer = create_files.DeleteEmptyLines(TextGRPCServer)
//запись файла
err = os.WriteFile(FilenameReady, []byte(TextGRPCServer), constants.FILE_PERMISSIONS)
return err
}
// CreateFilesFindMassByTable - создаёт текст всех функций
func CreateFilesFindMassByTable(Table1 *types.Table, TextTemplateFunction string) string {
Otvet := ""
for _, TableColumns1 := range types.MassFindMassBy {
if TableColumns1.TableName != Table1.Name {
continue
}
Otvet1 := CreateFilesFindMassByTable1(Table1, TextTemplateFunction, TableColumns1.MassColumnNames)
Otvet = Otvet + Otvet1
}
return Otvet
}
// CreateFilesFindMassByTable1 - создаёт текст всех функций
func CreateFilesFindMassByTable1(Table1 *types.Table, TextTemplateFunction string, MassColumns1 []string) string {
Otvet := TextTemplateFunction
//
FieldNamesWithUnderline := ""
FieldNamesWithComma := ""
ColumnNamesWithComma := ""
//
TextFind := "\t" + `tx = tx.Where("ColumnName = ?", m.FieldName)` + "\n"
TextWhere := ""
Underline := ""
Plus := ""
Comma := ""
for _, ColumnName1 := range MassColumns1 {
Column1, ok := Table1.MapColumns[ColumnName1]
if ok == false {
log.Panic(Table1.Name + " .MapColumns[" + ColumnName1 + "] = false")
}
TextWhere = TextWhere + "\t" + `tx = tx.Where("` + ColumnName1 + ` = ?", m.` + Column1.NameGo + `)` + "\n"
FieldNamesWithUnderline = FieldNamesWithUnderline + Underline + Column1.NameGo
FieldNamesWithComma = FieldNamesWithComma + Plus + Column1.NameGo
ColumnNamesWithComma = ColumnNamesWithComma + Comma + Column1.Name
Underline = "_"
Plus = "+"
Comma = ", "
}
Otvet = strings.ReplaceAll(Otvet, TextFind, TextWhere)
Otvet = strings.ReplaceAll(Otvet, "FieldNamesWithUnderline", FieldNamesWithUnderline)
Otvet = strings.ReplaceAll(Otvet, "FieldNamesWithPlus", FieldNamesWithComma)
Otvet = strings.ReplaceAll(Otvet, "ColumnNamesWithComma", ColumnNamesWithComma)
return Otvet
}
// CreateFilesFindMassByTest - создаёт 1 файл в папке server_grpc
func CreateFilesFindMassByTest(Table1 *types.Table) error {
var err error
if len(types.MassFindMassBy) == 0 {
return err
}
//чтение файлов
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 + config.Settings.TEMPLATES_GRPC_SERVER_FINDMASSBY_FILENAME
TableName := strings.ToLower(Table1.Name)
DirReadyTable := DirReadyGRPCServer + "server_grpc_" + TableName
FilenameReady := DirReadyTable + micro.SeparatorFile() + "server_grpc_" + TableName + "_findmassby_test.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(FilenameTemplateGRPCServer)
if err != nil {
log.Panic("ReadFile() ", FilenameTemplateGRPCServer, " error: ", err)
}
TextGRPCServer := string(bytes)
//загрузим шаблон файла функции
FilenameTemplateGRPCServerFunction := DirTemplatesGRPCServer + config.Settings.TEMPLATES_GRPC_SERVER_FINDMASSBY_FUNCTION_TEST_FILENAME
bytes, err = os.ReadFile(FilenameTemplateGRPCServerFunction)
if err != nil {
log.Panic("ReadFile() ", FilenameTemplateGRPCServerFunction, " error: ", err)
}
TextTemplatedFunction := string(bytes)
//заменим имя пакета на новое
TextGRPCServer = create_files.ReplacePackageName(TextGRPCServer, DirReadyTable)
ModelName := Table1.NameGo
//заменим импорты
if config.Settings.USE_DEFAULT_TEMPLATE == true {
TextGRPCServer = create_files.DeleteTemplateRepositoryImports(TextGRPCServer)
ModelTableURL := create_files.FindModelTableURL(TableName)
TextGRPCServer = create_files.AddImport(TextGRPCServer, ModelTableURL)
CrudStarterURL := create_files.FindCrudStarterURL()
TextGRPCServer = create_files.AddImport(TextGRPCServer, CrudStarterURL)
ProtoURL := create_files.FindProtoURL()
TextGRPCServer = create_files.AddImport(TextGRPCServer, ProtoURL)
}
//создание функций
TextGRPCServerFunc := CreateFilesFindMassByTestTable(Table1, TextTemplatedFunction)
if TextGRPCServerFunc == "" {
return err
}
TextGRPCServer = TextGRPCServer + TextGRPCServerFunc
//создание текста
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_MODEL, ModelName)
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
TextGRPCServer = config.Settings.TEXT_MODULE_GENERATED + TextGRPCServer
//замена импортов на новые URL
TextGRPCServer = create_files.ReplaceServiceURLImports(TextGRPCServer)
//uuid
TextGRPCServer = create_files.CheckAndAddImportUUID_FromText(TextGRPCServer)
//alias
TextGRPCServer = create_files.CheckAndAddImportAlias(TextGRPCServer)
//удаление пустого импорта
TextGRPCServer = create_files.DeleteEmptyImport(TextGRPCServer)
//удаление пустых строк
TextGRPCServer = create_files.DeleteEmptyLines(TextGRPCServer)
//запись файла
err = os.WriteFile(FilenameReady, []byte(TextGRPCServer), constants.FILE_PERMISSIONS)
return err
}
// CreateFilesFindMassByTestTable - создаёт текст всех функций
func CreateFilesFindMassByTestTable(Table1 *types.Table, TextTemplateFunction string) string {
Otvet := ""
for _, TableColumns1 := range types.MassFindMassBy {
if TableColumns1.TableName != Table1.Name {
continue
}
Otvet1 := CreateFilesFindMassByTestTable1(Table1, TextTemplateFunction, TableColumns1.MassColumnNames)
Otvet = Otvet + Otvet1
}
return Otvet
}
// CreateFilesFindMassByTestTable1 - создаёт текст всех функций
func CreateFilesFindMassByTestTable1(Table1 *types.Table, TextTemplateFunction string, MassColumns1 []string) string {
Otvet := TextTemplateFunction
//
FieldNamesWithUnderline := ""
FieldNamesWithComma := ""
//
TextAssignFind := "\t" + `Otvet.FieldName = 0` + "\n"
TextAssign := ""
TextFieldName_TEST := ""
Underline := ""
Comma := ""
for _, ColumnName1 := range MassColumns1 {
Column1, ok := Table1.MapColumns[ColumnName1]
if ok == false {
log.Panic(Table1.Name + " .MapColumns[" + ColumnName1 + "] = false")
}
DefaultValue := create_files.FindTextDefaultValue(Column1.TypeGo)
TextAssign = TextAssign + "\t" + `Otvet.` + Column1.NameGo + ` = ` + DefaultValue + "\n"
FieldNamesWithUnderline = FieldNamesWithUnderline + Underline + Column1.NameGo
FieldNamesWithComma = FieldNamesWithComma + Comma + Column1.NameGo
TextFieldName_TEST = TextFieldName_TEST + Comma + DefaultValue
Underline = "_"
Comma = ", "
}
Otvet = strings.ReplaceAll(Otvet, TextAssignFind, TextAssign)
Otvet = strings.ReplaceAll(Otvet, "FieldNamesWithUnderline", FieldNamesWithUnderline)
Otvet = strings.ReplaceAll(Otvet, "FieldNamesWithComma", FieldNamesWithComma)
Otvet = strings.ReplaceAll(Otvet, "FieldNamesDefault", TextFieldName_TEST)
return Otvet
}